diff options
author | David Malcolm <dmalcolm@redhat.com> | 2012-06-26 18:06:23 (GMT) |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2012-06-26 18:06:23 (GMT) |
commit | b83719287d6be9fede9c7dc17ab8494f296a8f86 (patch) | |
tree | 79345f677550d88dc0ea2568120912ba2f43050b | |
parent | 72a80e85a8035d6049950d701f9f5dc5bac4f14f (diff) | |
download | cpython-b83719287d6be9fede9c7dc17ab8494f296a8f86.zip cpython-b83719287d6be9fede9c7dc17ab8494f296a8f86.tar.gz cpython-b83719287d6be9fede9c7dc17ab8494f296a8f86.tar.bz2 |
Issue #14443: ensure that brp-python-bytecompile is invoked with the correct
python executable
The __os_install_macro defines some post-processing activities during an rpm
build; one of the scripts it calls is brp-python-bytecompile, which can take
an argument: the python executable with which to byte-compile .py files in the
package payload.
In some older versions of rpm (e.g. in RHEL 6), this invocation doesn't pass
in an argument, and brp-python-bytecompile defaults to using /usr/bin/python,
which can lead to the .py files being byte-compiled for the wrong version of
python. This has been fixed in later versions of rpm by passing in
%{__python} as an argument to brp-python-bytecompile.
Workaround this by detecting if __os_install_post has a 0-argument invocation
of brp-python-bytecompile, and if so generating an equivalent macro that has
the argument, and explicitly provide the new definition within the specfile.
-rw-r--r-- | Lib/distutils/command/bdist_rpm.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/distutils/command/bdist_rpm.py b/Lib/distutils/command/bdist_rpm.py index 401bc41..ac46217 100644 --- a/Lib/distutils/command/bdist_rpm.py +++ b/Lib/distutils/command/bdist_rpm.py @@ -3,7 +3,7 @@ Implements the Distutils 'bdist_rpm' command (create RPM source and binary distributions).""" -import sys, os +import subprocess, sys, os from distutils.core import Command from distutils.debug import DEBUG from distutils.util import get_platform @@ -406,6 +406,21 @@ class bdist_rpm(Command): 'Summary: ' + self.distribution.get_description(), ] + # Workaround for #14443 which affects some RPM based systems such as + # RHEL6 (and probably derivatives) + vendor_hook = subprocess.getoutput('rpm --eval %{__os_install_post}') + # Generate a potential replacement value for __os_install_post (whilst + # normalizing the whitespace to simplify the test for whether the + # invocation of brp-python-bytecompile passes in __python): + vendor_hook = '\n'.join([' %s \\' % line.strip() + for line in vendor_hook.splitlines()]) + problem = "brp-python-bytecompile \\\n" + fixed = "brp-python-bytecompile %{__python} \\\n" + fixed_hook = vendor_hook.replace(problem, fixed) + if fixed_hook != vendor_hook: + spec_file.append('# Workaround for http://bugs.python.org/issue14443') + spec_file.append('%define __os_install_post ' + fixed_hook + '\n') + # put locale summaries into spec file # XXX not supported for now (hard to put a dictionary # in a config file -- arg!) @@ -1138,6 +1138,9 @@ Library - Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead of the text mode (using the locale encoding) to avoid encoding issues. +- Issue #14443: Ensure that .py files are byte-compiled with the correct Python + executable within bdist_rpm even on older versions of RPM + Extension Modules ----------------- |