GNU bug report logs - #10227
Python installation fails for Python 3

Previous Next

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.

Full log


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: Fri, 23 Nov 2012 10:26:54 +0100
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.

Thanks,
  Stefano




This bug report was last modified 12 years and 180 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.