[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mklibs and global symbols for frontend plugins



On Tue, Aug 28, 2007 at 07:50:43PM +0200, Jérémy Bobbio wrote:
> Applying this patch will break the build of the installer though, even
> applied together with the relevant modifications to the entropy plugin
> due to an issue with mklibs.  More details to come in a separate mail.

mklibs is used by the debian-installer to remove any uneeded symbols
from libraries used by the most important required bits of the software.
This allows a significant gain in disk space, which is always a good
idea when one wants to fit everything on a floppy disk.

Unfortunately, the way mklibs currently works is a bit conflicting with
the idea of having dynamically loaded shared objects (cdebconf
frontends plugins) using symbols from dynamically loaded shared objects
(cdebconf frontends).  The former are not directly linked to the later,
and mklibs don't know that it should not strip symbols in use from the
later.

Another issue, but similar in its origin, is that frontends shared
objects are not in a standard library directory.  So mklibs does not
know where to find the files, even if told manually.  A possible
solution is to add an RPATH while building the plugin, but it is not
strictly needed for the plugin to work correctly.

Attached is a patch adding two hacks to the current mklibs in circumvent
these problems.  Bastian, it would be great if you have an idea on how
to work out this issues in a cleaner way. :)

Cheers,
-- 
Jérémy Bobbio                        .''`. 
lunar@debian.org                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
diff -Nru /tmp/w6hDdn1z9v/mklibs-0.1.24/debian/changelog /tmp/Ub0CwzXKwY/mklibs-0.1.25~lunar1/debian/changelog
--- /tmp/w6hDdn1z9v/mklibs-0.1.24/debian/changelog	2007-07-16 23:01:26.000000000 +0200
+++ /tmp/Ub0CwzXKwY/mklibs-0.1.25~lunar1/debian/changelog	2007-08-28 18:41:56.000000000 +0200
@@ -1,3 +1,9 @@
+mklibs (0.1.25) UNRELEASED; urgency=low
+
+  * Add a workaround for frontend plugins using frontend symbols.
+
+ -- Jérémy Bobbio <lunar@debian.org>  Tue, 28 Aug 2007 18:35:12 +0200
+
 mklibs (0.1.24) unstable; urgency=low
 
   * Also check for symboles without type. (closes: #433388)
diff -Nru /tmp/w6hDdn1z9v/mklibs-0.1.24/src/mklibs.py /tmp/Ub0CwzXKwY/mklibs-0.1.25~lunar1/src/mklibs.py
--- /tmp/w6hDdn1z9v/mklibs-0.1.24/src/mklibs.py	2007-06-11 09:58:05.000000000 +0200
+++ /tmp/Ub0CwzXKwY/mklibs-0.1.25~lunar1/src/mklibs.py	2007-08-28 19:07:57.000000000 +0200
@@ -334,6 +334,8 @@
             print "warning: " + obj + " may need rpath, but --root not specified"
 
 lib_path.extend(lib_rpath)
+# WORKAROUND: frontend plugins
+lib_path.append(root + '/usr/lib/cdebconf/frontend')
 
 passnr = 1
 available_libs = []
@@ -368,6 +370,10 @@
     libraries = set()
     for obj in objects.values():
         needed_symbols.update(undefined_symbols(obj))
+        # WORKAROUND: frontend plugins
+        r = re.search(r'/lib/cdebconf/frontend/([^/]*)/[^.]*\.so$', obj)
+        if r:
+            libraries.add('%s.so' % r.groups(1))
         libraries.update(library_depends(obj))
 
     # calculate what symbols are present in small_libs and available_libs

Attachment: signature.asc
Description: Digital signature


Reply to: