summaryrefslogtreecommitdiff
path: root/debian/patches/libjava-jnipath.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/libjava-jnipath.diff')
-rw-r--r--debian/patches/libjava-jnipath.diff129
1 files changed, 129 insertions, 0 deletions
diff --git a/debian/patches/libjava-jnipath.diff b/debian/patches/libjava-jnipath.diff
new file mode 100644
index 0000000..9663f9c
--- /dev/null
+++ b/debian/patches/libjava-jnipath.diff
@@ -0,0 +1,129 @@
+# DP: - Add /usr/lib/jni and /usr/lib/<multiarch>/jni to java.library.path.
+# DP: - When running the i386 binaries on amd64, look in
+# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+
+Index: b/src/libjava/configure.ac
+===================================================================
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -1475,6 +1475,9 @@ AC_CHECK_SIZEOF(void *)
+
+ AC_C_BIGENDIAN
+
++MULTIARCH_DIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
++AC_SUBST(MULTIARCH_DIR)
++
+ ZLIBS=
+ SYS_ZLIBS=
+ ZINCS=
+Index: b/src/libjava/Makefile.am
+===================================================================
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -364,6 +364,7 @@ AM_CXXFLAGS = \
+ $(WARNINGS) \
+ -D_GNU_SOURCE \
+ -DPREFIX="\"$(prefix)\"" \
++ -DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
+ -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
+ -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
+ -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
+Index: b/src/libjava/Makefile.in
+===================================================================
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -667,6 +667,7 @@ MAINT = @MAINT@
+ MAKE = @MAKE@
+ MAKEINFO = @MAKEINFO@
+ MKDIR_P = @MKDIR_P@
++MULTIARCH_DIR = @MULTIARCH_DIR@
+ NM = nm
+ NMEDIT = @NMEDIT@
+ OBJDUMP = @OBJDUMP@
+@@ -1050,6 +1051,7 @@ AM_CXXFLAGS = \
+ $(WARNINGS) \
+ -D_GNU_SOURCE \
+ -DPREFIX="\"$(prefix)\"" \
++ -DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
+ -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
+ -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
+ -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
+Index: b/src/libjava/gnu/classpath/natSystemProperties.cc
+===================================================================
+--- a/src/libjava/gnu/classpath/natSystemProperties.cc
++++ b/src/libjava/gnu/classpath/natSystemProperties.cc
+@@ -141,6 +141,44 @@ PrependVersionedLibdir (::java::lang::St
+ return retval;
+ }
+
++static char*
++AppendJniLibdir (char *path, struct utsname *u)
++{
++ char* retval;
++ const char* jnilibdir = "/usr/lib/jni";
++#ifdef MULTIARCH_DIR
++ const char* jnilibdir2 = "/usr/lib/" MULTIARCH_DIR "/jni";
++ jsize len2 = strlen (jnilibdir2) + 2;
++#else
++ jsize len2 = 0;
++#endif
++
++#if defined(__linux__) && defined (__i386__)
++ if (! strcmp ("x86_64", u->machine))
++ jnilibdir = "/usr/lib32/jni";
++#endif
++
++ if (path)
++ {
++ jsize total = strlen (path)
++ + (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) +len2 + 1;
++ retval = (char*) _Jv_Malloc (total);
++ strcpy (retval, path);
++ strcat (retval, PATH_SEPARATOR);
++ strcat (retval, jnilibdir);
++ }
++ else
++ {
++ retval = (char*) _Jv_Malloc (strlen (jnilibdir) + len2 + 1);
++ strcpy (retval, jnilibdir);
++ }
++#ifdef MULTIARCH_DIR
++ strcat (retval, PATH_SEPARATOR);
++ strcat (retval, jnilibdir2);
++#endif
++ return retval;
++}
++
+ void
+ gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properties *newprops)
+ {
+@@ -373,8 +411,13 @@ gnu::classpath::SystemProperties::insert
+ // Prepend GCJ_VERSIONED_LIBDIR to the module load path so that
+ // libgcj will find its own JNI libraries, like libgtkpeer.so.
+ char* val = PrependVersionedLibdir (path);
+- _Jv_SetDLLSearchPath (val);
++
++ // Append jnilibdir
++ char* val2 = AppendJniLibdir (val, &u);
++
++ _Jv_SetDLLSearchPath (val2);
+ _Jv_Free (val);
++ _Jv_Free (val2);
+ }
+ else
+ {
+@@ -382,9 +425,12 @@ gnu::classpath::SystemProperties::insert
+ #ifdef USE_LTDL
+ char *libpath = getenv (LTDL_SHLIBPATH_VAR);
+ char* val = _Jv_PrependVersionedLibdir (libpath);
+- SET ("java.library.path", val);
+- _Jv_SetDLLSearchPath (val);
++ // Append jnilibdir
++ char* val2 = AppendJniLibdir (val, &u);
++ SET ("java.library.path", val2);
++ _Jv_SetDLLSearchPath (val2);
+ _Jv_Free (val);
++ _Jv_Free (val2);
+ #else
+ SET ("java.library.path", "");
+ #endif