This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: make frameworkinstall fails for non-default location
Type: Stage:
Components: macOS Versions:
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: jackjansen Nosy List: jackjansen, mitchchapman
Priority: normal Keywords:

Created on 2005-06-09 14:54 by mitchchapman, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (2)
msg25516 - (view) Author: Mitch Chapman (mitchchapman) Date: 2005-06-09 14:54
Mac OS X 10.3.8, Python 2.4.1.  Attempts to 'make 
frameworkinstall' to a non-default prefix and framework location fail:

$ ./configure --prefix=<someplace> 
--enable-framework=<someplace>/Frameworks
$ make
$ make frameworkinstall

The last step always attempts to create /usr/local/bin/python, 
instead of <someplace>/bin/python.

The immediate cause appears to be line 20 of 
Mac/OSX/Makefile:

bindir=/usr/local/bin

The problem is easier to spot if the 'make frameworkinstall' step is 
performed without root permissions:

$ ./configure --prefix=${HOME}/tmp/py241 --enable-
framework=${HOME}/tmp/py241/Frameworks
...
$ make
...
$ make frameworkinstall
...
make -f ./Mac/OSX/Makefile installunixtools \
        DIRMODE=755 FILEMODE=644 \
        srcdir=. builddir=. DESTDIR= prefix=/Users/myself/tmp/py241/
Frameworks/Python.framework/Versions/2.4
/usr/bin/install -c -d /usr/local/bin
install: chmod 755 /usr/local/bin: Operation not permitted
ln -fsn /Users/myself/tmp/py241/Frameworks/Python.framework/
Versions/2.4/bin/python /usr/local/bin/python2.4
ln: /usr/local/bin/python2.4: Permission denied
make[1]: *** [installunixtools] Error 1
make: *** [frameworkinstallunixtools] Error 2
msg25517 - (view) Author: Jack Jansen (jackjansen) * (Python committer) Date: 2005-07-17 21:57
Logged In: YES 
user_id=45365

The bad news is that this is difficult to fix: the whole "frameworkinstall" 
sequence is a bit of a hack, and it works by overriding prefix to point 
into the bowels of the framework and then doing the equivalent of a 
"make install".

The good news is that if I understand correctly what you're trying to do, 
building to a staging area so you can package things for distribution 
later, there's another way to do this that does work: use the DESTROOT 
environment variable. If you do "DESTROOT=/tmp/py241 configure --
enable-frameworks" you'll get a tree ready for installation in /tmp/py241. 
But that assumes you can live with /tmp/py241/usr/local/bin.

If your needs are different reopen the bug and explain your use case and 
I'll think harder about a solution:-)
History
Date User Action Args
2022-04-11 14:56:11adminsetgithub: 42068
2005-06-09 14:54:39mitchchapmancreate