[OE-core] [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script

Robert Yang liezhi.yang at windriver.com
Tue Jun 25 12:44:50 UTC 2019


Recipes like postfix run command newaliases in postinst, but newaliases is
installed as newaliases.postfix, it needs run update-alternatives to update it
to newaliases, so there was an error when installed postinst on target.

Fixed:
$ opkg install postfix
Configuring postfix.
///var/lib/opkg/info/postfix.postinst: line 4: newaliases: command not found

Run update-alternatives firstly will fix the problem. And handle busybox as an
exception since it needs set basic tools such as sed command firstly, otherwise
update-alternatives doesn't work.

Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
---
 meta/classes/update-alternatives.bbclass | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
index b702e77..9ab9298 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -265,6 +265,7 @@ python populate_packages_updatealternatives () {
     if not update_alternatives_enabled(d):
         return
 
+    bpn = d.getVar('BPN')
     # Do actual update alternatives processing
     for pkg in (d.getVar('PACKAGES') or "").split():
         # Create post install/removal scripts
@@ -284,8 +285,16 @@ python populate_packages_updatealternatives () {
 
             bb.note('adding update-alternatives calls to postinst/prerm for %s' % pkg)
             bb.note('%s' % alt_setup_links)
-            postinst = d.getVar('pkg_postinst_%s' % pkg) or '#!/bin/sh\n'
-            postinst += alt_setup_links
+            postinst = d.getVar('pkg_postinst_%s' % pkg)
+            if postinst:
+                # Busybox needs handle basic tools such as sed command
+                # firstly, otherwise, update-alternatives doesn't work.
+                if bpn == 'busybox':
+                    postinst += alt_setup_links
+                else:
+                    postinst = alt_setup_links + postinst
+            else:
+                postinst = '#!/bin/sh\n' + alt_setup_links
             d.setVar('pkg_postinst_%s' % pkg, postinst)
 
             bb.note('%s' % alt_remove_links)
-- 
2.7.4



More information about the Openembedded-core mailing list