Package: automake;
Reported by: Reuben Thomas <rrt <at> sc3d.org>
Date: Mon, 5 Dec 2011 22:55:02 UTC
Severity: normal
Tags: patch
Done: Stefano Lattarini <stefano.lattarini <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Stefano Lattarini <stefano.lattarini <at> gmail.com> To: Roumen Petrov <bugtrack <at> roumenpetrov.info> Cc: 10227 <at> debbugs.gnu.org, Reuben Thomas <rrt <at> sc3d.org> Subject: bug#10227: Python installation fails for Python 3 Date: Mon, 26 Nov 2012 13:00:28 +0100
tags 10227 + patch close 10227 thanks On 11/23/2012 10:26 AM, Stefano Lattarini wrote: > On 11/22/2012 11:35 PM, Roumen Petrov wrote: >> Stefano Lattarini wrote: >>> tags 10227 - moreinfo >>> thanks >>> >>> On 11/21/2012 06:58 PM, Reuben Thomas wrote: >>>> On 21 November 2012 13:41, Stefano Lattarini <stefano.lattarini <at> gmail.com>wrote: >>>> >>>>> tags 10227 + moreinfo >>>>> thanks >>>>> >>>>> Hi Roumen, Reuben. >>>>> >>>>> I'm going through old open bugs, and I've noticed this one. Is the >>>>> problem still present, after the recent updates to the python support? >> [SNIP] >>>>> on my Ubuntu 12.10 system). I'm sorry, I can't tell whether, as Roumen >>>>> suggests, this is an Ubuntu packaging bug, or an automake bug. >> It seems to me this is a feature as I found this one: >> >> http://patch-tracker.debian.org/patch/series/view/python2.6/2.6.6-8/distutils-install-layout.diff >> > The problem didn't lie in the Debian's use of 'dist-packages' instead > of 'site-packages' (as you noticed, that was present in python 2.6 > already, and Automake still worked nicely); the issue is that, with > Python 3 on Debian, the call to > > distutils.sysconfig.get_python_lib(0,0,prefix='/usr/local') > > returned: > > /usr/local/lib/python3/dist-packages > > that is *not* searched by default by the 'import' statement. > >>> OK, thanks for explaining it once again. I can now reproduce the same >>> issue on Debian. I think this is something we should try to work around, >>> since we cannot have our installation rules broken by default on both >>> Debian and Ubuntu ... >> >> Lets say platforms that use the "/posix_local/" installation scheme >> instead wrong or broken. >> > I failed to parse this, sorry. Care to rephrase? > >>>> It seems to me that this is the sort of thing the pyconfigure people >>>> ought to know about. >>>> >>> By peeking at their repository, I came up with the minimal patch below, >>> which should do the trick. Can you verify it works for you as well? >>> > >>> Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com> >>> --- >>> [SNIP] >>> >>> @@ -122,7 +141,14 @@ AC_DEFUN([AM_PATH_PYTHON], >>> else >>> am_py_prefix=$prefix >>> fi >>> - am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` >>> + am_cv_python_pythondir=`$PYTHON -c " >>> +$am_python_setup_sysconfig >>> +if can_use_sysconfig: >>> + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) >>> +else: >>> + from distutils import sysconfig >>> + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') >>> +sys.stdout.write(sitedir)"` >> >> Tested with python build from master branch on 2012-11-13 - both paths >> (sysconfig and distutils.sysconfig based) return same results. >> > Thanks for pointing that out. I've given the code a try with a python 3.2 > installed from sources, and I can confirm this happens for me as well. So > no regression for that kind of setup, at least. > > On the other hand, for a python 3.2 installed from Debian packages, the > results are different: > > # Code with distutils.sysconfig > ${prefix}/lib/python3/dist-packages > > # Code with sysconfig > ${prefix}/lib/python3.2/site-packages > > The second result is the correct one; in fact, the 'dist-packages' > directory is meant as the location of python modules installed from > Debian packages (reference: <http://wiki.debian.org/Python>), so we > shouldn't need to install into such a directory; and when ${prefix} > is /usr/local, the "${prefix}/lib/python3.2/site-packages" directory > is searched by default by the 'import' statement. > > At this point, I'm convinced my patch is quite correct. > >>> case $am_cv_python_pythondir in >>> $am_py_prefix*) >>> am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` >>> @@ -157,7 +183,14 @@ AC_DEFUN([AM_PATH_PYTHON], >>> else >>> am_py_exec_prefix=$exec_prefix >>> fi >>> - am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` >>> + am_cv_python_pyexecdir=`$PYTHON -c " >>> +$am_python_setup_sysconfig >>> +if can_use_sysconfig: >>> + sitedir = sysconfig.get_path('platlib', vars={'base':'$am_py_prefix'}) >> >> Stefano, please use platbase as variable - see Lib/sysconfig.py: >> .... >> INSTALL_SCHEMES = { >> 'posix_prefix': { >> ... >> 'purelib': '{base}/lib/python{py_version_short}/site-packages', >> 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', >> ... >> > Good catch! I will fix this. > >>> +else: >>> + from distutils import sysconfig >>> + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') >>> +sys.stdout.write(sitedir)"` >>> case $am_cv_python_pyexecdir in >>> $am_py_exec_prefix*) >>> am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` >> >> Also I think that python experts should confirm if patch is correct. >> > I'd love that. Feel free to ping any GNU python expert about giving > a look at this patch. > I've pushed this patch, since it seems quite correct to me (and I think we have correctly understood the underlying issue). I'm ready to revisit this change if anyone complains. I'm marking this issue as "done". Thanks, Stefano
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.