On Wed, Aug 22, 2018 at 10:02 PM Ben Cotton <bcotton@redhat.com> wrote:

== Summary ==
The <code>/usr/lib/rpm/redhat/brp-mangle-shebangs</code> buildroot
policy script will be changed to make the build fail when it sees an
ambiguous python shebang, such as <code>#!/usr/bin/python</code> or
<code>#!/usr/bin/env python</code>. (The script has been warning in
these cases for 2 Fedora releases already, saying ''This will become
an ERROR''.)

Why can't we add something like `MANGLE_UNVERSIONED_PYTHON_TO=%{__python3}`?
== Owner ==
* Name: Miro Hrončok (churchyard)
* Email: <mhroncok@redhat.com>

== Detailed Description ==
The buildroot policy script in
<code>/usr/lib/rpm/redhat/brp-mangle-shebangs</code> currently changes
all python shebangs to python2 with a message like:

     *** WARNING: mangling shebang in /usr/bin/taskotron_result from
#!/usr/bin/python to #!/usr/bin/python2. This will become an ERROR,
fix it manually!

We will change it to:

      *** ERROR: ambiguous python shebang in
/usr/bin/taskotron_result: #!/usr/bin/python. Change it to python3 (or
python2) explicitly.

The script will exit with nonzero exit code, rendering the build failed.

The warning and a promise of the error was there for 2 releases (28
and 29). Taskotron check was also present.

There are standard mechanics to avoid this buildroot policy script or
to block certain files form it. Those remain intact by this change.
For details see
https://fedoraproject.org/wiki/Packaging:Guidelines#Shebang_lines and
sections of the packaging guidelines.

== Benefit to Fedora ==
Packagers will be notified by build error if they accidentally have
python2 shebangs (and python2 dependency) they didn't anticipate. It's
up to them to decide what to do with such files, no automation can

== Scope ==
* Proposal owners: change the script, change Python Packaging
Guidelines (https://fedoraproject.org/wiki/Packaging:Python#Multiple_Python_Runtimes)

* Other developers: fix their packages if they fail because of this
* Policies and guidelines: Adjust Python Packaging Guidelines

* Trademark approval: N/A (not needed for this Change)

== How To Test ==
Have an RPM package that tries to ship files with ambiguous python
shebang. Observe the warning on Fedora 29 and the error on Fedora 30.

== User Experience ==
Users should not notice this, expect there might be less unneeded
python2 dependencies created by accident.

Ben Cotton
Fedora Program Manager
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-leave@lists.fedoraproject.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/OLB7SKYB4HEHEX4CRPOYPETWD766CT64/

-Igor Gnatenko