Bug#876901: QFINDTESTDATA uses __FILE__

Ximin Luo infinity0 at debian.org
Wed Nov 15 12:09:00 UTC 2017

Lisandro Damián Nicanor Pérez Meyer:
> [..]
> Xi: you also mentioned that having to file hundreds of patchs seems 
> impossible. Well, it seems so, but it is actually not that necessary. Please 
> allow me to explain the idea.

Thanks for being less inflammatory than Pino.

I agree that eventually all projects should move away from using __FILE__. This BUILD_PATH_PREFIX_MAP variable is only a stepping stone to that, just like SOURCE_DATE_EPOCH was a stepping stone to less projects using __DATE__ and __TIME__. It allows people to see the obvious benefit of a reproducible build, by actually achieving a large amount of reproductions, today. We did not need to file mass bug reports for __DATE__ and __TIME__ with SOURCE_DATE_EPOCH.

> What you can do here is starting by documenting/blogging about bad use cases 
> so people have something to read when bugs arrive.
> [..]

You're implying that QT's use of __FILE__ for tests, as being discussed in this thread, is a "good use case" - and that it is *other people* with "bad use cases" that we should be spending a lot of time and effort to reach out to.

That's not how I see it. As I pointed out various times already, the use of __FILE__ here is *also not appropriate*. You can consider these emails from me now, as "documenting/blogging" about "bad use cases".

In summary: in no document or standard, does it guarantee or imply that __FILE__ can be taken to represent a real filesystem path. Applications relying on this behaviour are broken and should not be upset when things don't work. As documented in multiple places, __FILE__ only has a very loose meaning, my patch fits within this loose meaning, and it is intended mostly for error messages.

The BUILD_PATH_PREFIX_MAP variable works around a lot of "bad use cases", but it doesn't cover this particular case. Some minor tweaks are needed to cover it, and I suggested them already. But you guys continue to push the position "we're doing nothing wrong, it's other people doing stuff wrong, go talk to them instead".

I'm sorry but it's not a convincing position for me to agree with.

At the end of the day, all of these cases, including yours, ought to be fixed to not use __FILE__ at all. BUILD_PATH_PREFIX_MAP doesn't prevent the fix, it just means we can achieve many many real reproductions today without having to wait. That's a good thing.


GPG: ed25519/56034877E1F87C35
GPG: rsa4096/1318EFAC5FBBDBCE

More information about the Reproducible-builds mailing list