]> code.ossystems Code Review - openembedded-core.git/commitdiff
busybox: Enhance to add dynamic per-file provides
authorMark Hatle <mark.hatle@windriver.com>
Mon, 19 Sep 2011 19:53:02 +0000 (14:53 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 21 Sep 2011 12:32:33 +0000 (13:32 +0100)
When using the RPM package backend, we need a full list of per-file
provides (and requires).  The busybox package provides a number of
command line utilities, such as /usr/bin/env.  However, because
the utilities are created at post install time via scripting the
provide of each of the links was never made.  So any programs,
such as python, that require /usr/bin/env were unable to resolve
the dependency and failed.

This change only affects packaging backends that use per-file
dependency data.  Currently RPM is the only packaging backend
with this ability.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
meta/recipes-core/busybox/busybox.inc
meta/recipes-core/busybox/busybox_1.18.5.bb

index 3f9335892cd2cfd99693f0c1c33f136a8694c55b..acd635b1e3a027d6bef0e5fea88b9a7b99212fca 100644 (file)
@@ -205,6 +205,38 @@ do_install () {
        install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
 }
 
+python package_do_filedeps_append () {
+       # We need to load the full set of busybox provides from the /etc/busybox.links
+       # The pkg_postinst_ is what creates the actual links
+
+       pkg = d.getVar('PN', True)
+       f_busybox = "/bin/busybox"
+       f_busybox_links = "/etc/busybox.links"
+
+       requires_files = []
+       provides_files = []
+
+       # Load/backup original set
+       filerprovides = d.getVar('FILERPROVIDES_%s_%s' % (f_busybox, pkg), True) or ""
+
+       dep_pipe = os.popen('sed -e "s,^,Provides: ," %s/%s%s' % (pkgdest, pkg, f_busybox_links))
+
+       process_deps(dep_pipe, pkg, "%s/%s%s" % (pkgdest, pkg, f_busybox), provides_files, requires_files)
+
+       # Add the new set
+       filerprovides += d.getVar('FILERPROVIDES_%s_%s' % (f_busybox, pkg), True) or ""
+
+       # Make sure there is an entry for this item in the FILERPROVIDESFLIST...
+       filerprovidesflist = (d.getVar('FILERPROVIDESFLIST_%s' % pkg, True) or "").split()
+       for file in provides_files:
+               if file not in filerprovidesflist:
+                       filerprovidesflist.append(file)
+       d.setVar('FILERPROVIDESFLIST_%s' % pkg, " ".join(filerprovidesflist))
+
+       # Store the new provides
+       d.setVar('FILERPROVIDES_%s_%s' % (f_busybox, pkg), filerprovides)
+}
+
 pkg_postinst_${PN} () {
        # If we are not making an image we create links for the utilities that doesn't exist
        # so the update-alternatives script will get the utilities it needs
index c0dc1d4997108179fc11c229fd377ac4fea8b495..bdafb316a5edf63da16d511bdd1751326b1c2b2f 100644 (file)
@@ -1,5 +1,5 @@
 require busybox.inc
-PR = "r0"
+PR = "r1"
 
 SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
            file://udhcpscript.patch \