Re: Another Python namespace pollution (was: r147958 - in /trunk/libstdc++-v3: ChangeLog Mak...)
Gary Benson <[email protected]>
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
Gary Benson wrote: > Richard Guenther wrote: > > On Thu, Jan 27, 2011 at 11:38 AM, Gary Benson <[email protected]> wrote: > > > Gerald Pfeifer wrote: > > > > I noticed that coming from the Java side of things we also > > > > have two files that are installed in common namespace: > > > > > > > > share/python/aotcompile.py > > > > share/python/classfile.py > > > > > > I'm on the hook to fix this, but it's been a while since I > > > worked on this stuff so I'm a little out of touch with GCC. > > > Can you tell me what you mean by "common namespace", and > > > what the alternative should be? > > > > The files should reside in a directory that is private to gcc or > > at least mangled with the gcc version it comes from. Otherwise > > multiple parallel gcc installations conflict. > > Ah, ok, that shouldn't be too hard. I'll get working on a patch. Ha ha, famous last words, I've been fighting this for days. Ok, attached is a patch that causes the two Python modules to be installed in a versioned directory. Also attached is a separate patch, orthogonal to the first, which changes how the modules are made available to the aot-compile scripts. What is currently in svn adds the directory to the _end_ of the path, so if the modules exist elsewhere then the other versions will take priority. The attached patch changes it to add the directory to the start of the path. If the patches are ok then could someone please commit them for me? I thought I had commit access, but I couldn't seem to check out a tree using ssh, so maybe it was revoked for inactivity :) Cheers, Gary -- http://gbenson.net/
aot-compile-fix-take-1.patch
(text/plain, 2.7 KB)
Index: libjava/configure.ac
===================================================================
--- libjava/configure.ac (revision 169331)
+++ libjava/configure.ac (working copy)
@@ -1842,21 +1842,18 @@
# We get this from the environment.
AC_SUBST(GCJFLAGS)
+default_python_dir="/share/gcc-`cat ${srcdir}/../gcc/BASE-VER`/python/libjava"
AC_ARG_WITH([python-dir],
AS_HELP_STRING([--with-python-dir],
[the location to install Python modules. This path should NOT include the prefix.]),
- [with_python_dir=$withval], [with_python_dir=""])
+ [with_python_dir=$withval], [with_python_dir="${default_python_dir}"])
-if test "x${with_python_dir}" = "x"
-then
- # Needed for installing Python modules during make install.
- python_mod_dir="\${prefix}/share/python"
- # Needed for substituting into aot-compile*
- python_mod_dir_expanded="${expanded_prefix}/share/python"
-else
- python_mod_dir="\${prefix}${with_python_dir}"
- python_mod_dir_expanded="${expanded_prefix}${with_python_dir}"
-fi
+# Needed for installing Python modules during make install.
+python_mod_dir="\${prefix}${with_python_dir}"
+
+# Needed for substituting into aot-compile*
+python_mod_dir_expanded="${expanded_prefix}${with_python_dir}"
+
AC_MSG_RESULT(Python modules dir: ${python_mod_dir_expanded});
AC_SUBST(python_mod_dir)
AC_SUBST(python_mod_dir_expanded)
Index: libjava/configure
===================================================================
--- libjava/configure (revision 169331)
+++ libjava/configure (working copy)
@@ -24649,25 +24649,22 @@
# We get this from the environment.
+default_python_dir="/share/gcc-`cat ${srcdir}/../gcc/BASE-VER`/python/libjava"
# Check whether --with-python-dir was given.
if test "${with_python_dir+set}" = set; then :
withval=$with_python_dir; with_python_dir=$withval
else
- with_python_dir=""
+ with_python_dir="${default_python_dir}"
fi
-if test "x${with_python_dir}" = "x"
-then
- # Needed for installing Python modules during make install.
- python_mod_dir="\${prefix}/share/python"
- # Needed for substituting into aot-compile*
- python_mod_dir_expanded="${expanded_prefix}/share/python"
-else
- python_mod_dir="\${prefix}${with_python_dir}"
- python_mod_dir_expanded="${expanded_prefix}${with_python_dir}"
-fi
+# Needed for installing Python modules during make install.
+python_mod_dir="\${prefix}${with_python_dir}"
+
+# Needed for substituting into aot-compile*
+python_mod_dir_expanded="${expanded_prefix}${with_python_dir}"
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Python modules dir: ${python_mod_dir_expanded}" >&5
$as_echo "Python modules dir: ${python_mod_dir_expanded}" >&6; };
aot-compile-improvement.patch
(text/plain, 1.4 KB)
Index: libjava/contrib/aot-compile.in =================================================================== --- libjava/contrib/aot-compile.in (revision 169331) +++ libjava/contrib/aot-compile.in (working copy) @@ -1,6 +1,6 @@ #!/usr/bin/env python -## Copyright (C) 2006 Free Software Foundation +## Copyright (C) 2006, 2011 Free Software Foundation ## Written by Gary Benson <[email protected]> ## ## This program is free software; you can redistribute it and/or modify @@ -14,7 +14,7 @@ ## GNU General Public License for more details. import sys -sys.path.append("@python_mod_dir_expanded@") +sys.path.insert(0, "@python_mod_dir_expanded@") import aotcompile import getopt import os Index: libjava/contrib/aot-compile-rpm.in =================================================================== --- libjava/contrib/aot-compile-rpm.in (revision 169331) +++ libjava/contrib/aot-compile-rpm.in (working copy) @@ -1,6 +1,6 @@ #!/usr/bin/env python -## Copyright (C) 2005, 2006, 2007 Free Software Foundation +## Copyright (C) 2005, 2006, 2007, 2011 Free Software Foundation ## Written by Gary Benson <[email protected]> ## ## This program is free software; you can redistribute it and/or modify @@ -14,7 +14,7 @@ ## GNU General Public License for more details. import sys -sys.path.append("@python_mod_dir_expanded@") +sys.path.insert(0, "@python_mod_dir_expanded@") import aotcompile import os