With redhat-rpm-config-91-1.fc28 which is currently in rawhide comes
automatic munging of the "#!" (shebang) line in executable scripts, as
well as several additional checks. The following changes will be
applied the shebang line of executables:
1) "#!/usr/bin/env foo" will be replaced with "#!/usr/bin/foo".
2) "#!/usr/bin/python" will be replaced with "#!/usr/bin/python2".
Both might happen, so /usr/bin/env python will get fixed properly. The
second will generate a warning in the build log, and may become an error
at some point.
Since use of env has been banned in Fedora for a while, this frees
packagers from needing to do extra work to fix those up. And
eliminating all shebangs which reference the unversioned python
executable will pave the way for the python team to do more work on
moving to python3.
The script will also make one other change: an executable script with no
shebang will have its executable permission automatically removed.
Finally, the script will error (causing a build failure) if an
executable script is encountered which uses a shebang line that does not
use an absolute path to an executable.
Note that, like all of the various brp-* executables which many
packagers have probably never had to worry about, this runs near the end
of the package build process so if you need to fix something, you can do
that in whichever of %prep, %build or %install works best for your spec.
If this breaks your package, you should of course fix your package but
because nothing is foolproof you can disable it completely by adding the
following to your spec:
This specific change will only require brief mention in the guidelines,
but I will draft an additional section which covers all of these brp-*
scripts since rawhide also now has a uniform means of disabling them.