Re: Merging gio into glib



On Wed, 2007-11-07 at 21:46 +0100, Alexander Larsson wrote:
> On Wed, 2007-11-07 at 13:32 -0500, Behdad Esfahbod wrote:
> > On Wed, 2007-11-07 at 11:06 -0500, Ryan Lortie wrote:
> > > 
> > > One library, one .so file, one pkg-config file. 
> > 
> > I'd say do a hybrid: separate pkg-config files, single .so.  You can
> > even create .so symlinks, making it a build-time option to include a
> > "feature" in the gwhatever.so or build a separate .so for it, and
> > applications simply don't care.  When that infrastructure is added, you
> > can even have glib, gobject, and gmodule in the same .so too, or have
> > separate ones.  It's similar to what Qt does these days btw.
> 
> This is a very interesting idea. And in fact, I think we could implement
> this in a backward and forwards compatible way, at least on linux.
> 
> I did a simple test (see attached file) with creating libstuff1.so and
> libstuff2.so then linking test1 against these with -lstuff1 -lstuff2.
> Then i created a libstuff1.so containing the code from both stuff1 and
> stuff2 and made libstuff2.so be a symlink to libstuff1 and linked test2
> in the same way.
> 
> It looks to me like:
> 1) test1 and test2 look the same, at least wrt shared library
> dependencies
> 2) both binaries work in both the two separate libs and one lib +
> symlink case
> 3) in the one lib + symlink case we only load the one lib once
> 
> This leads me to belive it should be possible to create a configure
> option for glib such that libglib, libgmodule, libgobject are in the
> same libglib.so file, and with symlinks for gmodule and gobject. This
> setup should allow all old binaries to work as they used to, plus apps
> linked against this setup will continue to work in systems using the old
> setup.
> 
> Pretty sweet! 

Yep.  Thanks for the test case.  The actual implementation would be a
bit more involved, because of all the symlinks that ldconfig creates,
but I'm sure it can be made to work.

> As behdad said, there is a risk of people not linking to all the libs
> they need, but that could be fixed by splitting out the headers into
> separate dirs, enforcing correct use of the pkg-config files.


-- 
behdad
http://behdad.org/

"Those who would give up Essential Liberty to purchase a little
 Temporary Safety, deserve neither Liberty nor Safety."
        -- Benjamin Franklin, 1759





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