On 2019-09-11 11:06:52 +0200 (+0200), Dominig ar Foll (Intel Open Source) wrote:
We have a error raised by the Open Build System from OpenSUSE (OBS) due to the use of "#!/usr/bin/env" as interpreter. This stops the OBS to correctly detect dependencies. The use of /usr/bin/env is tricky as it creates an undefined build/run dependency on the target.
Could someone explains why such trick is used ?
The short answer is that, historically, it was hard to guess what the full path to a particular script interpreter might be on any given system, but env is pretty much always at a known location so can be used to perform a dynamic path search for the named interpreter executable. This was a popular technique to improve script portability, but has also fallen victim to "cargo cult" behavior in the years since... developers just repeat the pattern without considering whether there's still any reason to do so.
I would need to get rid of it. Just want to find what will be required to be changed.
If this is just to call python2 then #!/usr/bin/python2 would do. [...]
Assuming the interpreter you want will always be available at /usr/bin/python2 on systems where these scripts are meant to be run, that's the recommended solution, yes. You can also use some distbuild-time routine to patch the shebang lines of all scripts to refer to the correct interpreter path for the target system if it differs from the norm. -- Jeremy Stanley