backout 23417736 - wrong branch s11-update
authorMike Sullivan <Mike.Sullivan@Oracle.COM>
Mon, 13 Jun 2016 09:49:47 -0700
branchs11-update
changeset 6167 96fd76701d53
parent 6165 87519cb407e4
child 6170 2aebde66b24a
backout 23417736 - wrong branch
components/guile/patches/fix-extensions.patch
--- a/components/guile/patches/fix-extensions.patch	Sun Jun 12 20:03:47 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-Correctly load guile extensions from /usr/lib or /usr/lib/[amd64,sparcv9]
-depending upon whether we are running the 32-bit or 64-bit version of guile.
-
-Changes taken from the guile version 2.X source code and wedged back into
-the legacy guile version 1.8.X that we have in Userland/Solaris.
-
---- guile-1.8.6/libguile/Makefile.in.orig	2016-06-03 14:20:49.001764609 -0700
-+++ guile-1.8.6/libguile/Makefile.in	2016-06-03 14:29:55.294211108 -0700
-@@ -2020,6 +2020,8 @@
- 	@echo '#define SCM_PKGDATA_DIR "$(pkgdatadir)"' >> libpath.tmp
- 	@echo '#define SCM_LIBRARY_DIR "$(pkgdatadir)/$(GUILE_EFFECTIVE_VERSION)"'>>libpath.tmp
- 	@echo '#define SCM_SITE_DIR "$(pkgdatadir)/site"' >> libpath.tmp
-+	@echo '#define SCM_LIB_DIR "$(libdir)"' >> libpath.tmp
-+	@echo '#define SCM_EXTENSIONS_DIR "$(pkglibdir)/$(GUILE_EFFECTIVE_VERSION)/extensions"' >> libpath.tmp
- 	@echo '#define SCM_BUILD_INFO { \' >> libpath.tmp
- 	@echo '	{ "srcdir", "'"`cd @srcdir@; pwd`"'" }, \' >> libpath.tmp
- 	@echo ' { "top_srcdir",    "@top_srcdir_absolute@" }, \' >> libpath.tmp
---- guile-1.8.6/libguile/dynl.c.orig	2016-06-03 14:11:35.474790875 -0700
-+++ guile-1.8.6/libguile/dynl.c	2016-06-03 14:11:15.816688183 -0700
-@@ -47,6 +47,7 @@
- #include <string.h>
- 
- #include "libguile/_scm.h"
-+#include "libguile/libpath.h"
- #include "libguile/dynl.h"
- #include "libguile/smob.h"
- #include "libguile/keywords.h"
-@@ -70,12 +71,76 @@
- */
- /* njrev: not threadsafe, protection needed as described above */
- 
-+/* LT_PATH_SEP-separated extension library search path, searched last */
-+static char *system_extensions_path;
-+
- static void *
- sysdep_dynl_link (const char *fname, const char *subr)
- {
-   lt_dlhandle handle;
--  handle = lt_dlopenext (fname);
--  if (NULL == handle)
-+  if (fname == NULL)
-+    /* Return a handle for the program as a whole.  */
-+    handle = lt_dlopen (NULL);
-+  else
-+    {
-+      handle = lt_dlopenext (fname);
-+
-+      if (handle == NULL
-+#ifdef LT_DIRSEP_CHAR
-+          && strchr (fname, LT_DIRSEP_CHAR) == NULL
-+#endif
-+          && strchr (fname, '/') == NULL)
-+        {
-+          /* FNAME contains no directory separators and was not in the
-+             usual library search paths, so now we search for it in
-+             SYSTEM_EXTENSIONS_PATH. */
-+          char *fname_attempt
-+            = scm_gc_malloc (strlen (system_extensions_path)
-+                             + strlen (fname) + 2,
-+                             "dynl fname_attempt");
-+          char *path;  /* remaining path to search */
-+          char *end;   /* end of current path component */
-+          char *s;
-+
-+          /* Iterate over the components of SYSTEM_EXTENSIONS_PATH */
-+          for (path = system_extensions_path;
-+               *path != '\0';
-+               path = (*end == '\0') ? end : (end + 1))
-+            {
-+              /* Find end of path component */
-+              end = strchr (path, LT_PATHSEP_CHAR);
-+              if (end == NULL)
-+                end = strchr (path, '\0');
-+
-+              /* Skip empty path components */
-+              if (path == end)
-+                continue;
-+
-+              /* Construct FNAME_ATTEMPT, starting with path component */
-+              s = fname_attempt;
-+              memcpy (s, path, end - path);
-+              s += end - path;
-+
-+              /* Append directory separator, but avoid duplicates */
-+              if (s[-1] != '/'
-+#ifdef LT_DIRSEP_CHAR
-+                  && s[-1] != LT_DIRSEP_CHAR
-+#endif
-+                  )
-+                *s++ = '/';
-+
-+              /* Finally, append FNAME (including null terminator) */
-+              strcpy (s, fname);
-+
-+              /* Try to load it, and terminate the search if successful */
-+              handle = lt_dlopenext (fname_attempt);
-+              if (handle != NULL)
-+                break;
-+            }
-+        }
-+    }
-+
-+  if (handle == NULL)
-     {
-       SCM fn;
-       SCM msg;
-@@ -112,7 +177,37 @@
- static void
- sysdep_dynl_init ()
- {
-+  char *env;
-+
-   lt_dlinit ();
-+
-+  /* Initialize 'system_extensions_path' from
-+     $GUILE_SYSTEM_EXTENSIONS_PATH, or if that's not set:
-+     <SCM_LIB_DIR> <LT_PATHSEP_CHAR> <SCM_EXTENSIONS_DIR>.
-+
-+     'lt_dladdsearchdir' can't be used because it is searched before
-+     the system-dependent search path, which is the one 'libtool
-+     --mode=execute -dlopen' fiddles with (info "(libtool) Libltdl
-+     Interface").  See
-+     <http://lists.gnu.org/archive/html/guile-devel/2010-11/msg00095.html>.
-+
-+     The environment variables $LTDL_LIBRARY_PATH and $LD_LIBRARY_PATH
-+     can't be used because they would be propagated to subprocesses
-+     which may cause problems for other programs.  See
-+     <http://lists.gnu.org/archive/html/guile-devel/2012-09/msg00037.html> */
-+
-+  env = getenv ("GUILE_SYSTEM_EXTENSIONS_PATH");
-+  if (env)
-+    system_extensions_path = env;
-+  else
-+    {
-+      system_extensions_path
-+        = scm_gc_malloc (strlen (SCM_LIB_DIR)
-+                         + strlen (SCM_EXTENSIONS_DIR) + 2,
-+                         "system_extensions_path");
-+      sprintf (system_extensions_path, "%s%c%s",
-+               SCM_LIB_DIR, LT_PATHSEP_CHAR, SCM_EXTENSIONS_DIR);
-+    }
- }
- 
- scm_t_bits scm_tc16_dynamic_obj;