[OE-core] [PATCH] update-rc.d.bbclass: remove preinst and remove -f for postinst

Changqing Li changqing.li at windriver.com
Thu Dec 27 03:02:14 UTC 2018


ping

On 11/9/18 5:42 PM, changqing.li at windriver.com wrote:
> From: Changqing Li <changqing.li at windriver.com>
>
> *preinst use "-f remove" to remove any links in the /etc/rcrunlevel.d
>   but this will make user cannot keep previous config by default after
>   upgrade
>
>   eg: user disable one service before upgrade, after upgrade, service
>   could be started since during preinst, all link have been deleted, so
>   postinst may create the link to start service.
>
>   remove preinst to keep previous links, so that after upgrade, if any
>   link existed for the package, postinst will not create new start/stop
>   links.
>
>   (note: patch of support enable/disable function of update-rc.d send
>   to yocto mail list today)
>
> *remove -f for postinst, previously, recipe keepalived use remove during
>   postinst, so need this -f, but remove in postinst is not proper, recipe
>   keepalived have fixed this problem, so remove -f.
>
> Signed-off-by: Changqing Li <changqing.li at windriver.com>
> ---
>   meta/classes/update-rc.d.bbclass | 28 ++++------------------------
>   1 file changed, 4 insertions(+), 24 deletions(-)
>
> diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
> index 265c4be..1366fee 100644
> --- a/meta/classes/update-rc.d.bbclass
> +++ b/meta/classes/update-rc.d.bbclass
> @@ -20,28 +20,14 @@ def use_updatercd(d):
>           return '[ -n "$D" -o ! -d /run/systemd/system ]'
>       return 'true'
>   
> -updatercd_preinst() {
> -if ${@use_updatercd(d)} && [ -z "$D" -a -f "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
> -	${INIT_D_DIR}/${INITSCRIPT_NAME} stop || :
> -fi
> -if ${@use_updatercd(d)} && type update-rc.d >/dev/null 2>/dev/null; then
> -	if [ -n "$D" ]; then
> -		OPT="-f -r $D"
> -	else
> -		OPT="-f"
> -	fi
> -	update-rc.d $OPT ${INITSCRIPT_NAME} remove
> -fi
> -}
> -
>   PACKAGE_WRITE_DEPS += "update-rc.d-native"
>   
>   updatercd_postinst() {
>   if ${@use_updatercd(d)} && type update-rc.d >/dev/null 2>/dev/null; then
>   	if [ -n "$D" ]; then
> -		OPT="-f -r $D"
> +		OPT="-r $D"
>   	else
> -		OPT="-f -s"
> +		OPT="-s"
>   	fi
>   	update-rc.d $OPT ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS}
>   fi
> @@ -79,7 +65,7 @@ python __anonymous() {
>   PACKAGESPLITFUNCS_prepend = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'populate_packages_updatercd ', '', d)}"
>   PACKAGESPLITFUNCS_remove_class-nativesdk = "populate_packages_updatercd "
>   
> -populate_packages_updatercd[vardeps] += "updatercd_prerm updatercd_postrm updatercd_preinst updatercd_postinst"
> +populate_packages_updatercd[vardeps] += "updatercd_prerm updatercd_postrm updatercd_postinst"
>   populate_packages_updatercd[vardepsexclude] += "OVERRIDES"
>   
>   python populate_packages_updatercd () {
> @@ -95,7 +81,7 @@ python populate_packages_updatercd () {
>               d.appendVar('RDEPENDS_' + pkg, ' %sinitd-functions' % (mlprefix))
>   
>       def update_rcd_package(pkg):
> -        bb.debug(1, 'adding update-rc.d calls to preinst/postinst/prerm/postrm for %s' % pkg)
> +        bb.debug(1, 'adding update-rc.d calls to postinst/prerm/postrm for %s' % pkg)
>   
>           localdata = bb.data.createCopy(d)
>           overrides = localdata.getVar("OVERRIDES")
> @@ -103,12 +89,6 @@ python populate_packages_updatercd () {
>   
>           update_rcd_auto_depend(pkg)
>   
> -        preinst = d.getVar('pkg_preinst_%s' % pkg)
> -        if not preinst:
> -            preinst = '#!/bin/sh\n'
> -        preinst += localdata.getVar('updatercd_preinst')
> -        d.setVar('pkg_preinst_%s' % pkg, preinst)
> -
>           postinst = d.getVar('pkg_postinst_%s' % pkg)
>           if not postinst:
>               postinst = '#!/bin/sh\n'

-- 
BRs

Sandy(Li Changqing)



More information about the Openembedded-core mailing list