Patchwork Another Python namespace pollution (was: r147958 - in /trunk/libstdc++-v3: ChangeLog Mak...)

login
register
mail settings
Submitter Gary Benson
Date Feb. 2, 2011, 2:59 p.m.
Message ID <20110202145959.GA28926@redhat.com>
Download mbox | patch
Permalink /patch/81460/
State New
Headers show

Comments

Gary Benson - Feb. 2, 2011, 2:59 p.m.
Gary Benson wrote:
> Richard Guenther wrote:
> > On Thu, Jan 27, 2011 at 11:38 AM, Gary Benson <gbenson@redhat.com> 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
Gerald Pfeifer - Feb. 18, 2011, 2:20 p.m.
On Wed, 2 Feb 2011, Gary Benson wrote:
> Ok, attached is a patch that causes the two Python modules to be
> installed in a versioned directory.

Thanks, Gary!  I see you committed this to HEAD; any chance you could
also push this to the GCC 4.5 branch which is our latest release(d)
branch?

Gerald

Patch

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; };