Message ID | 1377609161-25108-1-git-send-email-sw@weilnetz.de |
---|---|
State | Accepted |
Headers | show |
27.08.2013 17:12, Stefan Weil wrote: > When a Python script is run, Python normally writes bytecode into a .pyc file. > QEMU's build process uses several Python scripts which are called from > configure or make. > > The generated .pyc files take disk space without being of much use, because > those scripts are short, not time critical and only called a few times. > > Python's option -B disables writing of .pyc files. QEMU now uses "python -B" > as default, but it is still possible to choose a different call by passing > --python=PYTHON to configure. Yay, thank you for this! Applied to the trivial-patches queue. /mjt
On Tue, Aug 27, 2013 at 3:12 PM, Stefan Weil <sw@weilnetz.de> wrote: > When a Python script is run, Python normally writes bytecode into a .pyc file. > QEMU's build process uses several Python scripts which are called from > configure or make. > > The generated .pyc files take disk space without being of much use, because > those scripts are short, not time critical and only called a few times. > > Python's option -B disables writing of .pyc files. QEMU now uses "python -B" > as default, but it is still possible to choose a different call by passing > --python=PYTHON to configure. > > Signed-off-by: Stefan Weil <sw@weilnetz.de> > --- > > It was necessary to change from "$python" to simply $python in the > Python test. This should not matter: we already have a simple $python > in configure, and Python wants to be installed in a path without > spaces. > > Stefan > > configure | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/configure b/configure > index 0a55c20..db69327 100755 > --- a/configure > +++ b/configure > @@ -568,7 +568,7 @@ fi > > : ${make=${MAKE-make}} > : ${install=${INSTALL-install}} > -: ${python=${PYTHON-python}} > +: ${python=${PYTHON-python -B}} > : ${smbd=${SMBD-/usr/sbin/smbd}} > > # Default objcc to clang if available, otherwise use CC > @@ -1348,7 +1348,7 @@ fi > > # Note that if the Python conditional here evaluates True we will exit > # with status 1 which is a shell 'false' value. > -if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then > +if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then > error_exit "Cannot use '$python', Python 2.4 or later is required." \ > "Note that Python 3 or later is not yet supported." \ > "Use --python=/path/to/python to specify a supported Python." > -- > 1.7.10.4 This patch breaks ./configure on RHEL 5 and other older distros that use Python 2.4. The version test in ./configure fails because the python interpreter does not accept the -B option: http://buildbot.b1-systems.de/qemu/builders/default_x86_64_rhel5/builds/762/steps/configure/logs/stdio Can you add -B after version detection, if available? (No .pyc is generated for statements evaluated on the command-line during version detection.) Stefan
Am 14.11.2013 15:45, schrieb Stefan Hajnoczi: > On Tue, Aug 27, 2013 at 3:12 PM, Stefan Weil <sw@weilnetz.de> wrote: >> When a Python script is run, Python normally writes bytecode into a .pyc file. >> QEMU's build process uses several Python scripts which are called from >> configure or make. >> >> The generated .pyc files take disk space without being of much use, because >> those scripts are short, not time critical and only called a few times. >> >> Python's option -B disables writing of .pyc files. QEMU now uses "python -B" >> as default, but it is still possible to choose a different call by passing >> --python=PYTHON to configure. >> >> Signed-off-by: Stefan Weil <sw@weilnetz.de> >> --- >> >> It was necessary to change from "$python" to simply $python in the >> Python test. This should not matter: we already have a simple $python >> in configure, and Python wants to be installed in a path without >> spaces. >> >> Stefan [...] >> This patch breaks ./configure on RHEL 5 and other older distros that >> use Python 2.4. >> >> The version test in ./configure fails because the python interpreter >> does not accept the -B option: >> http://buildbot.b1-systems.de/qemu/builders/default_x86_64_rhel5/builds/762/steps/configure/logs/stdio >> >> Can you add -B after version detection, if available? (No .pyc is >> generated for statements evaluated on the command-line during version >> detection.) >> >> Stefan I'm sorry that I did not notice this regression in the buildbot report. We have several possibilities how we can handle this incompatibility for old versions of Python. According to http://docs.python.org/2/whatsnew/2.6.html, the -B option was introduced with Python 2.6 which was released on October 1 2008. Solution 1: We don't modify the current configure script because it works with Python versions since 5 years. For older versions there is a very simple workaround: call configure with --python=python. This additional parameter would also be needed for the buildbots running with Python 2.4. Solution 2: I modify the configure script to set -B only if it is supported. This makes it marginally longer (more lines of code, one more Python execution). Would 1 be sufficient, or do you prefer getting a patch with solution 2? In any case, I don't think this is a must for QEMU 1.7. Stefan
On Thu, Nov 14, 2013 at 06:43:48PM +0100, Stefan Weil wrote: > Am 14.11.2013 15:45, schrieb Stefan Hajnoczi: > > On Tue, Aug 27, 2013 at 3:12 PM, Stefan Weil <sw@weilnetz.de> wrote: > >> When a Python script is run, Python normally writes bytecode into a .pyc file. > >> QEMU's build process uses several Python scripts which are called from > >> configure or make. > >> > >> The generated .pyc files take disk space without being of much use, because > >> those scripts are short, not time critical and only called a few times. > >> > >> Python's option -B disables writing of .pyc files. QEMU now uses "python -B" > >> as default, but it is still possible to choose a different call by passing > >> --python=PYTHON to configure. > >> > >> Signed-off-by: Stefan Weil <sw@weilnetz.de> > >> --- > >> > >> It was necessary to change from "$python" to simply $python in the > >> Python test. This should not matter: we already have a simple $python > >> in configure, and Python wants to be installed in a path without > >> spaces. > >> > >> Stefan > [...] > >> This patch breaks ./configure on RHEL 5 and other older distros that > >> use Python 2.4. > >> > >> The version test in ./configure fails because the python interpreter > >> does not accept the -B option: > >> http://buildbot.b1-systems.de/qemu/builders/default_x86_64_rhel5/builds/762/steps/configure/logs/stdio > >> > >> Can you add -B after version detection, if available? (No .pyc is > >> generated for statements evaluated on the command-line during version > >> detection.) > >> > >> Stefan > > I'm sorry that I did not notice this regression in the buildbot report. > > We have several possibilities how we can handle this incompatibility for > old versions of Python. > > According to http://docs.python.org/2/whatsnew/2.6.html, the -B option > was introduced with > Python 2.6 which was released on October 1 2008. > > Solution 1: We don't modify the current configure script because it > works with Python versions > since 5 years. For older versions there is a very simple workaround: > call configure with > --python=python. This additional parameter would also be needed for the > buildbots running > with Python 2.4. > > Solution 2: I modify the configure script to set -B only if it is > supported. This makes it marginally > longer (more lines of code, one more Python execution). > > Would 1 be sufficient, or do you prefer getting a patch with solution 2? > In any case, I don't think > this is a must for QEMU 1.7. Thanks, the patch you sent looks good. Stefan
diff --git a/configure b/configure index 0a55c20..db69327 100755 --- a/configure +++ b/configure @@ -568,7 +568,7 @@ fi : ${make=${MAKE-make}} : ${install=${INSTALL-install}} -: ${python=${PYTHON-python}} +: ${python=${PYTHON-python -B}} : ${smbd=${SMBD-/usr/sbin/smbd}} # Default objcc to clang if available, otherwise use CC @@ -1348,7 +1348,7 @@ fi # Note that if the Python conditional here evaluates True we will exit # with status 1 which is a shell 'false' value. -if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then +if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then error_exit "Cannot use '$python', Python 2.4 or later is required." \ "Note that Python 3 or later is not yet supported." \ "Use --python=/path/to/python to specify a supported Python."
When a Python script is run, Python normally writes bytecode into a .pyc file. QEMU's build process uses several Python scripts which are called from configure or make. The generated .pyc files take disk space without being of much use, because those scripts are short, not time critical and only called a few times. Python's option -B disables writing of .pyc files. QEMU now uses "python -B" as default, but it is still possible to choose a different call by passing --python=PYTHON to configure. Signed-off-by: Stefan Weil <sw@weilnetz.de> --- It was necessary to change from "$python" to simply $python in the Python test. This should not matter: we already have a simple $python in configure, and Python wants to be installed in a path without spaces. Stefan configure | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)