Bering-uClibc 4.3

From bering-uClibc
Revision as of 19:48, 6 May 2012 by Davidmbrooke (Talk | contribs) (Created initial stub as somewhere to capture Package Dependency help text)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Bering-uClibc 4.3
Prev Bering-uClibc 4.x - Overview


Note that Bering-uClibc 4.3 is not released yet! These notes are being written alongside the development of the software.


Release Notes

Package Dependency Auto-Loading

The long-awaited Package Dependency Auto-Loading enhancement requested in LEAF Trac ticket #2 has finally been implemented.

Notes for General Users

The new behaviour is that when loading a Package, either using apkg or by including a Package in the LRP variable in leaf.cfg, all those Packages required to successfully run the Package are also loaded, automatically.

Actually there are some exceptions to the "...all those Packages..." rule:

  • Some Packages rely on either one Package or another one. An example is webconf:
    • This needs a web server, but is happy with either an HTTP server (mhttpd) or an HTTPS server (mhttpds), and these are mutually exclusive - so which one to choose? The answer is neither; one or the other must be loaded manually.
  • Some Packages do not need extra Packages for their main operation but they do require shared libraries or similar in order to run some rarely-used utility programs. These "optional" Package dependencies are not included in the list to be loaded automatically.

One thing to be aware of is that each Package tries to load its own dependencies (after the requested Package is loaded), and this happens recursively. Where many Packages depend on the same library (libm is a good example) then they all try to load libm. After the dependency has been loaded once the Package loading code spots that the Package is already loaded and does not actually load it again, but you will see messages which show that there has been a repeated request to load a Package.

TODO - Add examples of apkg and boot-time (dup!) messages.

The lists of Packages dependencies have been populated from the free-text "Requires" lines in the Package help text. This is pretty reliable but not guaranteed to be 100% correct. If you find that a Package fails to work because of e.g. a missing shared library then please report it so that the problem can be fixed.

Notes for Advanced Users

This magic happens because each Package now has an extra data file called /usr/lib/lrpkg/package.deplrp which lists the names of the Packages which must also be loaded (though that file is not created if it would be empty). The code which loads Packages (/var/lib/lrpkg/root.linuxrc and /usr/sbin/apkg) check for the presence of that file once they have installed the requested Package and recursively process each entry listed. This file is populated by entries which the LEAF Developer places in buildtool.cfg, as described in the Developer Guide.


Change Log

TODO



Prev Up