* 1.6, Guile's shared libraries, Debian packaging, and versioning.
@ 2002-07-20 18:40 Rob Browning
2002-07-21 23:45 ` Han-Wen
0 siblings, 1 reply; 5+ messages in thread
From: Rob Browning @ 2002-07-20 18:40 UTC (permalink / raw)
It looks like I'll be releasing the next 1.5 beta today or tomorrow.
Note that this means that 1.6.1 will be released in about 2 weeks
unless there are release critical bugs.
One thing that had been holding me up for the past few days was trying
to think through versioning issues wrt guile itself, our shared libs,
and other external apps and libs linked against guile. In particular,
I was still trying to think through things enough to feel reasonably
comfortable that the way we have things now can be packaged (say via
.debs) for 1.6 in a way that won't cause trouble when we release 1.8.
The questions involved are ones like, "What are the actual
interdependencies between our scheme modules and our shared libs?"
"When is it OK to break API compatibility?" "Are shared libraries
allowed to depend on .scm modules? If so, then what policies are
required to make sure that new guile installations don't break apps
linked against older versions of guile?". i.e. it needs to be safe to
install guile 1.8 (or even later versions of 1.6.X) without breaking
all the apps linked against 1.6.1.
As a concrete example of a problem -- imagine we release guile-1.6.1
with libguile-12 and libguile-foo-1 and application app-bar links
against both, libguile because it needs to call scm_init_guile, and
libguile-foo-1 because it needs foo_frob. So we have:
app-bar
libguile.so.12 -> /usr/bin/libguile.so.12
libguile-foo-1.so.1 -> /usr/bin/libguile-foo-1.so.1.0.0
libguile-foo-1
libguile.so.12 -> /usr/bin/libguile.so.12
now imagine we release a guile with libguile-13. libguile-foo-1 has
to be recompiled because against libguile-13, but now that means that
without if we don't recompile app-bar at the same time, we'll have:
app-bar
libguile.so.12 -> /usr/bin/libguile.so.12
libguile-foo-1.so.1 -> /usr/bin/libguile-foo-1.so.1.0.0
libguile-foo-1
libguile.so.13 -> /usr/bin/libguile.so.13
Is that OK? If not, then what that says is that changing libguile's
major number means that we (and everyone else) has to bump the major
version numbers of all libraries linked against libguile whenever we
bump the major version number of libguile so you can have the old
app-bar and a new app-baz which is linked against libguile-13 on the
same system which would look like this:
app-bar
libguile.so.12 -> /usr/bin/libguile.so.12
libguile-foo-1.so.1 -> /usr/bin/libguile-foo-1.so.1.0.0
libguile-foo-1
libguile.so.12 -> /usr/bin/libguile.so.12
app-bar
libguile.so.12 -> /usr/bin/libguile.so.12
libguile-foo-2.so.1 -> /usr/bin/libguile-foo-2.so.1.0.0
libguile-foo-2
libguile.so.13 -> /usr/bin/libguile.so.13
If that's right, then there might be a lot less reason not to just
have something less complex.
/usr/lib/libguile.so.12.0.1
/usr/lib/guile/12/libsrfi-4.so
/usr/lib/guile/12/libpg-interface.so
/usr/lib/guile/12/libsomething-else.so
which makes the issue clear in the filesystem. At least this was the
other debian maintainer's suggestion -- though we don't have to do
that. We could just make a policy that all libs linked against a
particular version of libguile have to bump their major version
whenever a new libguile comes out. Not as explicit, and perhaps a
little harder to make sure it's enforced, but probably also correct.
Not sure which policy is better ATM, but I feel like we do need some
clear policies.
There are similar issues we have to decide regarding a shared
libraries acceptable use of .scm files, and how to package those .scm
files so they can stick with the versions of the libraries that depend
on them (if we decide that libraries can in fact depend on .scm files)
whenever multiple versions of the library are installed on the system.
In any case, I'm happy to let this lie for now -- I'm going to get
1.6.1 out, and get it packaged for Debian in a fairly simple-minded
way, but I'll want to revisit the topic in detail in 1.7.
Thanks.
--
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C 64AE 78FE E5FE F0CB A0AD
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* 1.6, Guile's shared libraries, Debian packaging, and versioning.
2002-07-20 18:40 1.6, Guile's shared libraries, Debian packaging, and versioning Rob Browning
@ 2002-07-21 23:45 ` Han-Wen
2002-07-22 10:15 ` Andreas Rottmann
0 siblings, 1 reply; 5+ messages in thread
From: Han-Wen @ 2002-07-21 23:45 UTC (permalink / raw)
Cc: guile-devel
rlb@defaultvalue.org writes:
> The questions involved are ones like, "What are the actual
> interdependencies between our scheme modules and our shared libs?"
> "When is it OK to break API compatibility?" "Are shared libraries
I don't where the special problem is. All extension languages have to
deal with this issue. If you want to be on the safe side, then GUILE
should install every non-versioned run-time file (i.e. .scm or
unversioned .so files), in a separate subdirectory bearing the version
number.
for example, for python
blauw:/tmp$ ls -ld /usr/lib/python*
drwxr-xr-x 8 root root 12288 May 14 22:03 /usr/lib/python1.5
drwxr-xr-x 3 root root 4096 Oct 30 2001 /usr/lib/python2.0
drwxr-xr-x 2 root root 12288 May 14 22:20 /usr/lib/python2.1
drwxr-xr-x 11 root root 12288 May 14 22:20 /usr/lib/python2.2
[..]
> If that's right, then there might be a lot less reason not to just
> have something less complex.
>
> /usr/lib/libguile.so.12.0.1
> /usr/lib/guile/12/libsrfi-4.so
> /usr/lib/guile/12/libpg-interface.so
> /usr/lib/guile/12/libsomething-else.so
>
> which makes the issue clear in the filesystem. At least this was the
Yes, this is the way to go, except that I would use the GUILE version
number, as it is more recognizable, i.e.
/usr/lib/guile-1.6/libguile.so.12
/usr/lib/guile-1.6/libsrfi-4.so
/usr/lib/guile-1.6/scm/frob.scm
etc. guile-config can return the proper -L flags for linking.
--
Han-Wen Nienhuys | hanwen@cs.uu.nl | http://www.cs.uu.nl/~hanwen
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 1.6, Guile's shared libraries, Debian packaging, and versioning.
2002-07-21 23:45 ` Han-Wen
@ 2002-07-22 10:15 ` Andreas Rottmann
2002-07-25 20:55 ` Han-Wen
0 siblings, 1 reply; 5+ messages in thread
From: Andreas Rottmann @ 2002-07-22 10:15 UTC (permalink / raw)
Cc: Rob Browning, guile-devel
Han-Wen <hanwen@cs.uu.nl> writes:
> /usr/lib/guile-1.6/libguile.so.12
> /usr/lib/guile-1.6/libsrfi-4.so
> /usr/lib/guile-1.6/scm/frob.scm
>
> etc. guile-config can return the proper -L flags for linking.
>
But how about the run-time linker? This would mean one has to mess
with LD_LIBRARY_PATH or /etc/ld.so.conf (on GNU/Linux). Furthermore it
makes no sense IMO to have versioned libraries in a subdir (like
libguile.so.12 in the example above). Note also that the srfi libs are
versioned, at least on my system.
Regards, Andy
--
Andreas Rottmann | Dru@ICQ | 118634484@ICQ | a.rottmann@gmx.at
http://www.8ung.at/rotty | GnuPG Key: http://www.8ung.at/rotty/gpg.asc
Fingerprint | DFB4 4EB4 78A4 5EEE 6219 F228 F92F CFC5 01FD 5B62
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 1.6, Guile's shared libraries, Debian packaging, and versioning.
2002-07-22 10:15 ` Andreas Rottmann
@ 2002-07-25 20:55 ` Han-Wen
2002-07-26 20:25 ` Gary Houston
0 siblings, 1 reply; 5+ messages in thread
From: Han-Wen @ 2002-07-25 20:55 UTC (permalink / raw)
Cc: Rob Browning, guile-devel
a.rottmann@gmx.at writes:
> Han-Wen <hanwen@cs.uu.nl> writes:
>
> > /usr/lib/guile-1.6/libguile.so.12
> > /usr/lib/guile-1.6/libsrfi-4.so
> > /usr/lib/guile-1.6/scm/frob.scm
> >
> > etc. guile-config can return the proper -L flags for linking.
> >
> But how about the run-time linker? This would mean one has to mess
> with LD_LIBRARY_PATH or /etc/ld.so.conf (on GNU/Linux). Furthermore it
> makes no sense IMO to have versioned libraries in a subdir (like
> libguile.so.12 in the example above). Note also that the srfi libs are
> versioned, at least on my system.
ok, point taken, but unversioned files should go into a version
directory, then.
--
Han-Wen Nienhuys | hanwen@cs.uu.nl | http://www.cs.uu.nl/~hanwen
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 1.6, Guile's shared libraries, Debian packaging, and versioning.
2002-07-25 20:55 ` Han-Wen
@ 2002-07-26 20:25 ` Gary Houston
0 siblings, 0 replies; 5+ messages in thread
From: Gary Houston @ 2002-07-26 20:25 UTC (permalink / raw)
Cc: a.rottmann, rlb, guile-devel
> From: Han-Wen <hanwen@cs.uu.nl>
> Date: Thu, 25 Jul 2002 22:55:49 +0200
>
> a.rottmann@gmx.at writes:
> > Han-Wen <hanwen@cs.uu.nl> writes:
> >
> > > /usr/lib/guile-1.6/libguile.so.12
> > > /usr/lib/guile-1.6/libsrfi-4.so
> > > /usr/lib/guile-1.6/scm/frob.scm
> > >
> > > etc. guile-config can return the proper -L flags for linking.
> > >
> > But how about the run-time linker? This would mean one has to mess
> > with LD_LIBRARY_PATH or /etc/ld.so.conf (on GNU/Linux). Furthermore it
> > makes no sense IMO to have versioned libraries in a subdir (like
> > libguile.so.12 in the example above). Note also that the srfi libs are
> > versioned, at least on my system.
>
> ok, point taken, but unversioned files should go into a version
> directory, then.
In this scheme, would leaving libguile in /usr/lib for easier linking
cause any problems?
Would it be reasonable to expect C code to always use libguile (module
system) to access modules, instead of linking dynamic libraries
directly? (Apart from this needing fixes to the module system, since
at present it doesn't retain the dynamic library handle after running
the library's init function.)
_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2002-07-26 20:25 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-07-20 18:40 1.6, Guile's shared libraries, Debian packaging, and versioning Rob Browning
2002-07-21 23:45 ` Han-Wen
2002-07-22 10:15 ` Andreas Rottmann
2002-07-25 20:55 ` Han-Wen
2002-07-26 20:25 ` Gary Houston
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).