classification
Title: "make sharedinstall" ignores ./configure settings
Type: behavior Stage: resolved
Components: Build Versions: Python 2.7
process
Status: closed Resolution: duplicate
Dependencies: Superseder: during Python installation, setup.py should not use .pydistutils.cfg
View: 4655
Assigned To: Nosy List: Michael.Kuhn, ned.deily
Priority: normal Keywords:

Created on 2013-02-19 10:20 by Michael.Kuhn, last changed 2013-02-20 09:13 by Michael.Kuhn. This issue is now closed.

Messages (3)
msg182372 - (view) Author: Michael Kuhn (Michael.Kuhn) Date: 2013-02-19 10:20
I need to install Python 2.7 in two architectures, but under one file system. I thus configure:

/home/cellnet/michaelk/SRC/Python-2.7.3> ./configure --prefix=/home/cellnet/michaelk/biocluster --exec-prefix=/home/cellnet/michaelk/biocluster -q

When I compile and then run "make install", it will try to copy libraries to "/home/cellnet/michaelk/lib64/python", i.e. it will try to copy files outside the specified prefixes. The step is "make sharedinstall", which fails because I've temporarily made the lib64 directory read-only: 

[michaelk@biocluster2] /home/cellnet/michaelk/SRC/Python-2.7.3> make sharedinstall
running build
running build_ext
building dbm using bdb

Python build finished, but the necessary bits to build these modules were not found:
bsddb185           dl                 gdbm            
imageop            sunaudiodev                        
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

running build_scripts
./python -E ./setup.py install \
                --prefix=/home/cellnet/michaelk/biocluster \
                --install-scripts=/home/cellnet/michaelk/biocluster/bin \
                --install-platlib=/home/cellnet/michaelk/biocluster/lib/python2.7/lib-dynload \
                --root=/
running install
running build
running build_ext
building dbm using bdb

Python build finished, but the necessary bits to build these modules were not found:
bsddb185           dl                 gdbm            
imageop            sunaudiodev                        
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

running build_scripts
running install_lib
copying build/lib.linux-x86_64-2.7/_ctypes.so -> /home/cellnet/michaelk/lib64/python
error: could not delete '/home/cellnet/michaelk/lib64/python/_ctypes.so': Permission denied
make: *** [sharedinstall] Error 1
msg182481 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-02-20 08:50
Sorry, I'm unable to reproduce your results and they look rather suspicious.  Keep in mind that the Python build uses its copy of Distutils to build and install the interpreter's shared extension modules, like _ctypes.so.  My guess is that your "make install" is being influenced by settings in a Distutils configuration file, such as ~/.pydistutils.cfg.  If so, this is a duplicate of Issue4655.

http://docs.python.org/2/install/index.html#distutils-configuration-files
msg182484 - (view) Author: Michael Kuhn (Michael.Kuhn) Date: 2013-02-20 09:13
Thanks a lot Ned: you're right, the unexpected path was indeed set in ~/.pydistutils.cfg. So I agree with what has been written in the other issues, that the installation should detect the clash between the command line configuration and the configuration file to alert the unsuspecting user.
History
Date User Action Args
2013-02-20 09:13:53Michael.Kuhnsetstatus: pending -> closed

messages: + msg182484
2013-02-20 08:50:44ned.deilysetstatus: open -> pending

superseder: during Python installation, setup.py should not use .pydistutils.cfg

nosy: + ned.deily
messages: + msg182481
resolution: duplicate
stage: resolved
2013-02-19 10:20:25Michael.Kuhncreate