Ian Jackson iwj at ubuntu.com
Thu Nov 24 10:21:19 CST 2005


We've had an IRC conversation about what to do about mozilla/firefox's
depedents and libraries.

There are two classes of other programs which depend on stuff
currently provided by firefox or mozilla:

  I.  Packages which embed the browser (eg, epiphany, oo.o.)

  II. Packages which use libnspr as generally useful libraries
      (there are lots of these).  (libnspr is the Netscape
      Portable Runtime; I will use `libnpr' to include libnss, the
      Netscape Security Services library, too.)

Currently, class II packages get libnss from mozilla, both at
build-time and at run-time.  Class I packages get everything from
firefox.  They Build-Depend on firefox-dev, and the resulting binaries
Depend on firefox.

This has at least two bad properties:

 * The mozilla suite cannot be relegated to universe because of the
   many (class II) packages in main which depend on it for libnspr.

 * There are two different (but supposedly functionally equivalent)
   versions of libnss on the system.  It is quite possible that some
   programs may accidentally confuse the two versions which might lead
   to incorrectly-linked programs.

We propose to change the situation as follows:

 * The firefox source package will ship libnspr{4,-dev} packages which
   will look just like the ones currently shipped by mozilla.

 * The firefox.deb will be changed to Depend libnspr4 rather than
   including a copy of the libraries.

 * The situation with firefox-dev will remain unchanged.  Class I
   programs (embedders of firefox) will contine to use firefox-dev and
   build in the usual way.

This will solve the two problems identified without needing
significant changes anywhere outside firefox's build system, and even
there the changes should be relatively well-contained (even if we need
to have a symlink or two).

Possible trouble will be handled as follows:

* ABI change to libnss:

  We can if we choose just upgrade the firefox package and the
  relevant sonames, breaking compatibility.  Alternatively, we could
  choose to fork the firefox source package to make a
  firefox-old-libs.  firefox-old-libs would have a build system hit
  over the head to generate only only the libnspr4.deb.

* ABI change to embeddable firefox:

  This will definitely be a pain.  Since any embedder will Depend on
  exactly the right ABI version, and since you can't coinstall two
  firefox packages, you won't be able to coinstall
  oo.o-built-against-ff1 and epiphany-built-against-ff2.  We hope that
  this will only occur during distribution-upgrade and we have given
  up on incremental upgradeability anyway.  So we will just take the
  hit here.  Only class I packages are affected; luckily there are
  only a few of them (although they're usually big in themselves).

* Bugs in libnspr which mean we want to have different libnspr
  versions for firefox and for applications in general:

  If this happens and we can't fix it easily so we don't have that
  requirement, we can either revert to the previous arrangement (ie,
  using the mozilla package), or create a separate libnspr source
  package built from upstream libnspr.

Ian.



More information about the ubuntu-devel-announce mailing list