Bug 27890 - [4.2 regression] lib/logging.properties pollutes common namespace
Summary: [4.2 regression] lib/logging.properties pollutes common namespace
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: libgcj (show other bugs)
Version: 4.2.0
: P1 normal
Target Milestone: 4.2.0
Assignee: Thomas Fitzsimmons
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-06-04 11:09 UTC by Gerald Pfeifer
Modified: 2006-08-22 20:41 UTC (History)
5 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2006-06-04 11:17:21


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gerald Pfeifer 2006-06-04 11:09:01 UTC
Now that I can build libgcj again on HEAD, I found that it pollutes the
common namespace by installing $PREFIX/lib/logging.properties.

This break the installation of several versions of GCC into the same $PREFIX
using --program-suffix=.
Comment 1 Gerald Pfeifer 2006-06-04 11:15:46 UTC
Also, does a configuration file, in text format, like this really belong
under /lib?
Comment 2 Richard Biener 2006-06-04 11:17:21 UTC
Also it should be beyond /usr/share, as it is not arch dependent.  Same problem
for /usr/lib/security/classpath.security and /usr/lib64/security/libgcj.security.
Comment 3 Mark Mitchell 2006-06-04 20:02:39 UTC
This is a critical installation problem.
Comment 4 Tom Tromey 2006-06-05 20:06:31 UTC
Installing in share -vs- lib is weird for libgcj.
Sometimes we install things in lib to be more "jdk-like".

logging.properties has been there since 4.0, at least.
I don't have 3.x install trees around to check earlier releases.

The security files also fall into this category.


That said, I'm not against moving them about.  I think Tom F.
should probably weigh in, he's more involved with how the
layout affects packaging and things like that.  (This is important
because it can have an effect on real applications.)

Comment 5 Richard Biener 2006-06-05 20:50:43 UTC
Note that f.i. classpath.security changed from $libdir to $prefix/lib from 4.1 to 4.2, which is now inconsistent which libgcj.security, which is still in $libdir.

Now, it is entirely unclear to me what these files are about anyway, and if it is safe f.i. to delete them, or move them to some other place.  Are they of documentation purpose?  Are they used by the library itself?
Comment 6 Thomas Fitzsimmons 2006-06-06 14:07:40 UTC
On the JDK lib files are stored in $JAVA_HOME/jre/lib.  I've recently moved some files, like libjawt.so, that would conflict for multiple, parallel libgcj installations to the same prefix, to $(libdir)/gcj-$(gcc_version).  I think we should move all such files there, and that directory should be libgcj's equivalent to the JDK's $JAVA_HOME/jre/lib.
Comment 7 Gerald Pfeifer 2006-06-06 21:04:17 UTC
That would be great.  I'd really love to see us support parallel 
libgcj installations into the same $prefix.
Comment 8 Debian GCC Maintainers 2006-08-14 00:01:31 UTC
Is this really the only problem? All .la, .a and .so files get overwritten as well.

  Matthias
Comment 9 Thomas Fitzsimmons 2006-08-14 19:41:42 UTC
(In reply to comment #8)
> Is this really the only problem? All .la, .a and .so files get overwritten as
> well.

I'm not sure what you mean by this.
Comment 10 Tom Tromey 2006-08-21 22:19:42 UTC
See also PR 28775
Comment 11 David Walluck 2006-08-22 18:03:24 UTC
I am just voicing my support for comment #2.

In practice, we see a problem when installing both classpath and gcj on the same system, since they both install classpath.security and logging.properties files.

Ideally, both classpath and gcj could share these files, or perhaps not and each JVM should be able to have its own configuration. Even if that's the case, these files look like global configuration files, that apply to any JVM using classpath or classpath derivatives.

The location should likely be changed in either case. These are configuration files and likely need to be writable, so they should not be placed under /usr.
Comment 12 fitzsim@gcc.gnu.org 2006-08-22 20:37:46 UTC
Subject: Bug 27890

Author: fitzsim
Date: Tue Aug 22 20:37:36 2006
New Revision: 116332

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116332
Log:
2006-08-22  Thomas Fitzsimmons  <fitzsim@redhat.com>

	PR libgcj/27890
	* gnu/classpath/natSystemProperties.cc (insertSystemProperties):
	Set gnu.classpath.home.url to TOOLEXECLIBDIR.
	* configure.ac: Do not add --with-native-libdir to
	ac_configure_args.
	* java/security/libgcj.security: Remove file.
	* java/util/logging/logging.properties: Likewise.
	* classpath/m4/acinclude.m4 (CLASSPATH_TOOLEXECLIBDIR): New macro.
	* classpath/resource/Makefile.am (loggingdir): Define to
	toolexeclibdir.
	(securitydir): Likewise.
	* classpath/configure.ac: Call CLASSPATH_TOOLEXECLIBDIR.
	Set default nativeexeclibdir using toolexeclibdir.
	* HACKING: Fix classpath aclocal arguments.
	* Makefile.am (secdir): Remove variable.
	(propdir): Likewise.
	(AM_CXXFLAGS): Replace LIBDIR definition with TOOLEXECLIBDIR
	definition.
	(all_property_files): Remove variable.
	(install-data-local): Do not install libgcj.security or
	logging.properties.
	* configure, Makefile.in, classpath/configure,
	classpath/Makefile.in, classpath/native/jni/java-lang/Makefile.in,
	classpath/native/jni/midi-alsa/Makefile.in,
	classpath/native/jni/classpath/Makefile.in,
	classpath/native/jni/midi-dssi/Makefile.in,
	classpath/native/jni/Makefile.in,
	classpath/native/jni/java-nio/Makefile.in,
	classpath/native/jni/java-net/Makefile.in,
	classpath/native/jni/gconf-peer/Makefile.in,
	classpath/native/jni/java-io/Makefile.in,
	classpath/native/jni/xmlj/Makefile.in,
	classpath/native/jni/java-util/Makefile.in,
	classpath/native/jni/qt-peer/Makefile.in,
	classpath/native/jni/gtk-peer/Makefile.in,
	classpath/native/Makefile.in, classpath/native/jawt/Makefile.in,
	classpath/native/target/Linux/Makefile.in,
	classpath/native/target/Makefile.in,
	classpath/native/target/generic/Makefile.in,
	classpath/native/fdlibm/Makefile.in,
	classpath/native/plugin/Makefile.in,
	classpath/resource/Makefile.in, classpath/scripts/Makefile.in,
	classpath/tools/Makefile.in, classpath/doc/Makefile.in,
	classpath/doc/api/Makefile.in, classpath/lib/Makefile.in,
	classpath/external/Makefile.in,
	classpath/external/sax/Makefile.in,
	classpath/external/w3c_dom/Makefile.in,
	classpath/external/relaxngDatatype/Makefile.in,
	classpath/include/Makefile.in, classpath/aclocal.m4,
	classpath/examples/Makefile.in, aclocal.m4: Regenerate.


Removed:
    trunk/libjava/java/security/libgcj.security
    trunk/libjava/java/util/logging/logging.properties
Modified:
    trunk/libjava/ChangeLog
    trunk/libjava/HACKING
    trunk/libjava/Makefile.am
    trunk/libjava/Makefile.in
    trunk/libjava/aclocal.m4
    trunk/libjava/classpath/Makefile.in
    trunk/libjava/classpath/aclocal.m4
    trunk/libjava/classpath/configure
    trunk/libjava/classpath/configure.ac
    trunk/libjava/classpath/doc/Makefile.in
    trunk/libjava/classpath/doc/api/Makefile.in
    trunk/libjava/classpath/examples/Makefile.in
    trunk/libjava/classpath/external/Makefile.in
    trunk/libjava/classpath/external/relaxngDatatype/Makefile.in
    trunk/libjava/classpath/external/sax/Makefile.in
    trunk/libjava/classpath/external/w3c_dom/Makefile.in
    trunk/libjava/classpath/include/Makefile.in
    trunk/libjava/classpath/lib/Makefile.in
    trunk/libjava/classpath/m4/acinclude.m4
    trunk/libjava/classpath/native/Makefile.in
    trunk/libjava/classpath/native/fdlibm/Makefile.in
    trunk/libjava/classpath/native/jawt/Makefile.in
    trunk/libjava/classpath/native/jni/Makefile.in
    trunk/libjava/classpath/native/jni/classpath/Makefile.in
    trunk/libjava/classpath/native/jni/gconf-peer/Makefile.in
    trunk/libjava/classpath/native/jni/gtk-peer/Makefile.in
    trunk/libjava/classpath/native/jni/java-io/Makefile.in
    trunk/libjava/classpath/native/jni/java-lang/Makefile.in
    trunk/libjava/classpath/native/jni/java-net/Makefile.in
    trunk/libjava/classpath/native/jni/java-nio/Makefile.in
    trunk/libjava/classpath/native/jni/java-util/Makefile.in
    trunk/libjava/classpath/native/jni/midi-alsa/Makefile.in
    trunk/libjava/classpath/native/jni/midi-dssi/Makefile.in
    trunk/libjava/classpath/native/jni/qt-peer/Makefile.in
    trunk/libjava/classpath/native/jni/xmlj/Makefile.in
    trunk/libjava/classpath/native/plugin/Makefile.in
    trunk/libjava/classpath/native/target/Linux/Makefile.in
    trunk/libjava/classpath/native/target/Makefile.in
    trunk/libjava/classpath/native/target/generic/Makefile.in
    trunk/libjava/classpath/resource/Makefile.am
    trunk/libjava/classpath/resource/Makefile.in
    trunk/libjava/classpath/scripts/Makefile.in
    trunk/libjava/classpath/tools/Makefile.in
    trunk/libjava/configure
    trunk/libjava/configure.ac
    trunk/libjava/gnu/classpath/natSystemProperties.cc

Comment 13 Thomas Fitzsimmons 2006-08-22 20:41:04 UTC
Fixed by installing logging.properties and classpath.security in both lib and lib64, in the multilib case.  This means that 32- and 64-bit property and module lists can be manipulated separately.  Doing so will also fix PR28775.