On Tue, 2019-06-25 at 20:44 +0800, Robert Yang wrote: > 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 <[email protected]> > --- > 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)
We don't write classes like this. We could just keep piling special cases one on top of the other and it becomes a horrible unmaintainable mess. I therefore don't want to see recipes "special cased" like this in core code and we need to find another, better way to handle this. Cheers, Richard -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
