tags upstream fixed-upstream thanks [ adding automake-patches; see http://bugs.debian.org/524176 ]
Hello Matthias, and sorry for the delay, * Matthias Klose wrote on Wed, Apr 15, 2009 at 12:17:57PM CEST: > The current implementation of the AM_PATH_PYTHON passes the unexpanded > '${prefix} and ${exec_prefix} to get_python_lib(). The documentation of > get_python_lib() says: > > If 'prefix' is supplied, use it instead of sys.prefix or > sys.exec_prefix -- i.e., ignore 'plat_specific'. > > IMO the m4 macro assumes that get_python_lib() just passes this and doesn't > use > the prefix to do anything, which is at least wrong for Debian's python2.6 and > python3.1 in experimental, where we determine the name of the site directory > depending on the location ('dist-packages' for a prefix of '/usr' or > '/usr/local', 'site-packages' for anything else, like custom locations or > installations in python-virtualenv). Just passing the unexpanded value, > get_python_lib() cannot decide which name to use for the site directory. IIUC then the dist-packages vs. site-packages thing is not one distinguished by the second argument to get_python_lib (the "standard_lib" argument), right? Otherwise, please correct me. > The idea of this patch is to pass the real prefix, and then replace it again > with the unexpanded value, so that the unexpanded value ends up in the > automake > variables according to the documentation. Afaics this patch doesn't have an > effect on any standard python installation, but correctly determines the > location of the site directory on Debian. The patch looks good to me. There is a minor technical point that you shouldn't use arbitrary directory names as sed regexes, and temporary variables should be in the am_* namespace; both fixed in the version of your patch below. I've added a small NEWS entry, and you to THANKS, and applied it to git master of Automake (thus will be in 1.11), I'm probably going to backport to branch-1-10 soon too, unless I hear complaints. Thanks! Ralf 2009-05-17 Matthias Klose <d...@ubuntu.com> (tiny change) Ralf Wildenhues <ralf.wildenh...@gmx.de> Let AM_PATH_PYTHON honor python's idea about the site directory. * m4/python.m4 (AM_PATH_PYTHON): When computing pythondir and pyexecdir, pass the expanded prefix resp. exec_prefix as `prefix' to get_python_lib, so python can determine the name of the site directory depending on the install location. Afterwards, replace the directory names with the unexpanded values of $PYTHON_PREFIX resp. $PYTHON_EXEC_PREFIX again, to allow override according to the documentation. Fixes site directory computation for Debian and Ubuntu (`dist-packages' for a prefix of `/usr' or `/usr/local', `site-packages' elsewhere). * NEWS, THANKS: Update. diff --git a/NEWS b/NEWS index e806cf6..0389cca 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ New in 1.10c: - There is initial support for the Vala programming language, when using Vala 0.7.0 or later. + - AM_PATH_PYTHON honors python's idea about the site directory. + * Miscellaneous Changes: - In 1.10b, the `parallel-tests' driver introduced per-extension test diff --git a/m4/python.m4 b/m4/python.m4 index 3adf87b..239285f 100644 --- a/m4/python.m4 +++ b/m4/python.m4 @@ -3,7 +3,7 @@ ## From Andrew Dalke ## Updated by James Henstridge ## ------------------------ -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -115,8 +115,21 @@ python2.1 python2.0]) dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], - [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || - echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) + [if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + 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 || + echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + esac + ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was @@ -132,8 +145,21 @@ python2.1 python2.0]) dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], - [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || - echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`]) + [if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + 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 || + echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + esac + ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)