Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Mar 2008 01:33:51 -0300
From:      User Lenzi <lenzi@k1.com.br>
To:        freebsd-questions@freebsd.org
Subject:   Re: EVOLUTION  SLOW START , a workaround
Message-ID:  <1205728431.3323.0.camel@k2.cwb.casa>
In-Reply-To: <20080315010138.ddec4e8e.ejcerejo@optonline.net>
References:  <94136a2c0803101454l6ca76c99ma1fa1083d7ea2137@mail.gmail.com> <20080310231502.V7454@wojtek.tensor.gdynia.pl> <1205268305.52059.16.camel@localhost> <20080315010138.ddec4e8e.ejcerejo@optonline.net>

next in thread | previous in thread | raw e-mail | index | archive | help


> I'm trying to use your patch but it fails to apply patch.
> It results in:
> 
> ecerejo# patch -uspl </usr/home/webdude/patch.b
> File to patch: patch-gmodule::gmodule-dl.c
> 4 out of 4 hunks failed--saving rejects to patch-gmodule::gmodule-dl.c.rej
> 
> 

OK, probably, it is because you did not put the module (the patch in the
correct place)

the patch I publish on the email is to replace the glib patch that is
located in:
/usr/ports/devel/glib20/files/patch-gmodule::gmodule-dl.c

the idea is:
you copy the code from the email, and replace the file in the 
/usr/ports/devel/glib20/files/patch-gmodule::gmodule-dl.c

and then just build glib20 again. either by the comand
(cd /usr/ports/devel/glib20;make clean deinstall install)  or
portupgrade -fp devel/glib20

should work....

There is no need to rebuild evolution.

the patch works with glib versions 2 
tested on glib2.12 till 2.16 (the last one).

================cut===========================
--- gmodule/gmodule-dl.c.orig 2008-02-07 03:24:53.000000000 -0200
+++ gmodule/gmodule-dl.c 2008-03-11 18:53:44.000000000 -0300
@@ -73,6 +73,14 @@
#endif /* RTLD_GLOBAL */


+static char *special_names[]={
+ "g_module_check_init",
+ "g_module_unload",
+ "e_plugin_lib_enable",
+ NULL
+};
+ 
+
/* --- functions --- */
static gchar*
fetch_dlerror (gboolean replace_null)
@@ -106,6 +114,7 @@
static gpointer
_g_module_self (void)
{
+#ifndef __FreeBSD__
   gpointer handle;
   
   /* to query symbols from the program itself, special link options
@@ -117,6 +126,9 @@
     g_module_set_error (fetch_dlerror (TRUE));
   
   return handle;
+#else
+  return RTLD_DEFAULT;
+#endif
}

static void
@@ -141,9 +153,19 @@
{
   gpointer p;
   gchar *msg;
+  char **pn;

   fetch_dlerror (FALSE);
-  p = dlsym (handle, symbol_name);
+
+  for (pn=special_names;*pn;pn++) {
+ if (!strcmp(*pn,symbol_name)) {
+ p=dlsym(RTLD_NEXT,symbol_name);
+ break;
+ }
+  }
+
+  if (! *pn)
+      p = dlsym (handle, symbol_name);
   msg = fetch_dlerror (FALSE);
   if (msg)
     g_module_set_error (msg);
===============================cut==========================



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1205728431.3323.0.camel>