unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Greg Troxel <gdt@ir.bbn.com>
Cc: guile-devel@gnu.org
Subject: Re: Release now?
Date: 27 Feb 2003 15:54:23 -0500	[thread overview]
Message-ID: <rmin0khzbpc.fsf@fnord.ir.bbn.com> (raw)
In-Reply-To: <873cm9lcg2.fsf@raven.i.defaultvalue.org>

{list: I have received no hate mail for ranting so I presume this is
welcome; feel free to tell me otherwise!}

  > I hold up glib 1.2/2 as an example of a low-pain solution to what
  > would otherwise have been a very painful and chaotic transition.

  How do they handle it, and do they have the same dynamic-link issues?
  Also, how do they handle the app1 -> libfoo -> libgtk, and app1 ->
  libbar -> libbgtk with respect to upgrading, during the the period
  when libfoo has been recompiled against the new libgtk, but libbar on
  the system hasn't -- do they just require all libraries in the chain
  to mention the versions of all the other libs they're linked against?

libfoo stays with glib/gtk, and libfoo2 is built against glib2/gtk2.
For some things, the libraries have more substantial changes and have
entirely new names (see linc below, which is a 2-world thing only):

For foo = ORBit:

poblano gdt 997 ~ > ldd /usr/pkg/lib/libORBit.so
/usr/pkg/lib/libORBit.so:
         -lglib.13 => /usr/pkg/lib/libglib.so.13
         -lm.0 => /usr/lib/libm387.so.0
         -lm.0 => /usr/lib/libm.so.0
         -lintl.0 => /usr/lib/libintl.so.0

poblano gdt 1010 ~ > ldd /usr/pkg/bin/orbit-idl
/usr/pkg/bin/orbit-idl:
         -lglib.13 => /usr/pkg/lib/libglib.so.13
         -lIDL.0 => /usr/pkg/lib/libIDL.so.0
         -lgmodule.13 => /usr/pkg/lib/libgmodule.so.13
         -lm.0 => /usr/lib/libm387.so.0
         -lm.0 => /usr/lib/libm.so.0
         -lintl.0 => /usr/lib/libintl.so.0
         -lc.12 => /usr/lib/libc.so.12

poblano gdt 998 ~ > ldd /usr/pkg/lib/libORBit-2.so
/usr/pkg/lib/libORBit-2.so:
         -lm.0 => /usr/lib/libm387.so.0
         -lm.0 => /usr/lib/libm.so.0
         -liconv.3 => /usr/pkg/lib/libiconv.so.3
         -lintl.0 => /usr/lib/libintl.so.0
         -lglib-2.0.200 => /usr/pkg/lib/libglib-2.0.so.200
         -lgobject-2.0.200 => /usr/pkg/lib/libgobject-2.0.so.200
         -lpthread.14 => /usr/pkg/lib/libpthread.so.14
         -lgthread-2.0.200 => /usr/pkg/lib/libgthread-2.0.so.200
         -llinc.1 => /usr/pkg/lib/liblinc.so.1
         -lgmodule-2.0.200 => /usr/pkg/lib/libgmodule-2.0.so.200
         -lpopt.0 => /usr/pkg/lib/libpopt.so.0

poblano gdt 1011 ~ > ldd /usr/pkg/bin/orbit-idl-2
/usr/pkg/bin/orbit-idl-2:
         -lpopt.0 => /usr/pkg/lib/libpopt.so.0
         -lm.0 => /usr/lib/libm387.so.0
         -lm.0 => /usr/lib/libm.so.0
         -liconv.3 => /usr/pkg/lib/libiconv.so.3
         -lintl.0 => /usr/lib/libintl.so.0
         -lglib-2.0.200 => /usr/pkg/lib/libglib-2.0.so.200
         -lIDL-2.0 => /usr/pkg/lib/libIDL-2.so.0
         -lgobject-2.0.200 => /usr/pkg/lib/libgobject-2.0.so.200
         -lgmodule-2.0.200 => /usr/pkg/lib/libgmodule-2.0.so.200
         -lc.12 => /usr/lib/libc.so.12

There are 2 parallel worlds, one rooted on glib 1.2, and one on
glib-2.0.
This indeed doesn't scale, but it's the underlying interface changes
that break compiling that don't scale.  But it isn't quite that bad,
since in the guile world one would have the last guile-gtk version
that worked with guile 14, and one that works with 16.  Then there is
gnome-guile that does glib2/gtk2/ORBit2, and probably that would be
built for the new guile only.

  Well it's actually the major numbers that are required to indicate
  binary compatibility, so they're the most "correct" indicator in
  general.  However in guile, we've committed to changing all the lib
  major numbers with each major release, so they're effectively
  equivalent.

Consider a change that breaks binary compatibility but not compile
compatibility, say because there was a function and now it's a macro
and invokes some compatibility glue.  You have to bump the so number,
but upgrading the guile version doesn't require upstream maintainers
to do anything different, except maybe recompile.  This kind of change
doesn't hurt that badly in the package maintainer viewpoint, since it
doesn't force having to be able to compile against two versions at once.

  One thing to keep in mind is that with a source-based distribution
  like bsd or gentoo, many of these problems go away.  Having to support
  multiple versions of installed binary packages definitely complicates
  things.

It does, but named versions does this.  It looks ugly, but that's
because with a chain of n libs, you have 2^n versions.

Perhaps this is all a red herring and we can preserve compile-time
compatibility adequately.  Keeping the old libs around seems to be a
good solution for running old binaries.  In the specific case of
Gnucash, what about 1.6 made gnucash 1.6.8 not buildable, and was that
something that wasn't deprecated in 1.4?  We may be solving the wrong
problem.

        Greg Troxel <gdt@ir.bbn.com>


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/guile-devel


  reply	other threads:[~2003-02-27 20:54 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-24 12:37 Release now? Mikael Djurfeldt
2003-02-24 13:08 ` Dale P. Smith
2003-02-24 13:21   ` Mikael Djurfeldt
2003-02-24 13:32 ` Greg Troxel
2003-02-25 13:34   ` Marius Vollmer
2003-02-25 16:08     ` Greg Troxel
2003-02-25 18:38       ` Rob Browning
2003-02-26  1:51         ` Greg Troxel
2003-02-26  2:27           ` Rob Browning
2003-02-27 14:25             ` Greg Troxel
2003-02-27 15:21               ` pkg-config support for guile Greg Troxel
2003-03-22 23:31                 ` Marius Vollmer
2003-04-23 21:22                   ` Greg Troxel
2003-05-16 23:21                     ` Marius Vollmer
2003-02-27 16:54               ` Release now? Rob Browning
2003-02-27 18:07                 ` Greg Troxel
2003-02-27 18:45                   ` Rob Browning
2003-02-27 19:25                     ` Greg Troxel
2003-02-27 20:14                       ` Rob Browning
2003-02-27 19:06                 ` Rob Browning
2003-02-27 19:13                   ` Rob Browning
2003-02-27 19:36                     ` Greg Troxel
2003-02-27 20:02                       ` Rob Browning
2003-02-27 20:54                         ` Greg Troxel [this message]
2003-02-27 21:07                           ` Dale P. Smith
2003-02-27 21:30                             ` Dale P. Smith
2003-02-27 21:47                           ` Rob Browning
2003-04-25 19:26                           ` Neil Jerram
2003-02-25 16:28     ` Andreas Rottmann
2003-02-24 18:35 ` Rob Browning
2003-02-25 13:20 ` Marius Vollmer
2003-03-03 14:06   ` Mikael Djurfeldt
2003-04-25 19:28   ` Neil Jerram
2003-04-25 22:59     ` Marius Vollmer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=rmin0khzbpc.fsf@fnord.ir.bbn.com \
    --to=gdt@ir.bbn.com \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).