All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Jansa <martin.jansa@gmail.com>
To: Laurentiu Palcu <laurentiu.palcu@intel.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH v2] dpkg, opkg, rpm-postinst: fix overwriting the run-postinstall script
Date: Thu, 11 Apr 2013 14:35:41 +0200	[thread overview]
Message-ID: <20130411123541.GE2477@jama> (raw)
In-Reply-To: <1365678565-20714-1-git-send-email-laurentiu.palcu@intel.com>

[-- Attachment #1: Type: text/plain, Size: 5553 bytes --]

On Thu, Apr 11, 2013 at 02:09:25PM +0300, Laurentiu Palcu wrote:
> If multiple package managers are installed in the image, they will
> overwrite each other's run-postinsts script, resulting in postinstalls
> not beeing run at all at first boot.
> 
> What this patch does:
>  * checks whether opkg/dpks/rpm is actually used to install
>    the packages and, only after, creates the run-postinsts script;
>  * brings dpkg recipe in sync with opkg: moves the script creation from
>    do_install to postinstall;
>  * move creation of run-postinsts script (rpm-postinsts recipe) to the
>    postinstall scriptlet in order to better control the creation of the
>    script according to the package manager used;
> 
> [YOCTO #4231]
> [YOCTO #4179]
> 
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
> ---
> Changes in v2:
>  * addressed Richard's comment and, instead of using ${IMAGE_PKGTYPE}, check for the
>    existence of 'status' file for opkg/dpkg and 'Packages' file, for rpm;
> 
> I did tests with all backends as default package managers and another one installed
> with CORE_IMAGE_EXTRA_INSTALL. I saw no issues. The default's PM run-postinsts script
> is not overwritten.
> 
> Thanks,
> Laurentiu
> 
>  meta/recipes-devtools/dpkg/dpkg.inc        |   23 ++++++++++++++---------
>  meta/recipes-devtools/opkg/opkg.inc        |    3 ++-
>  meta/recipes-devtools/rpm/rpm-postinsts.bb |   19 ++++++++++++-------
>  3 files changed, 28 insertions(+), 17 deletions(-)
> 
> diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc
> index 6bb1e16..5554920 100644
> --- a/meta/recipes-devtools/dpkg/dpkg.inc
> +++ b/meta/recipes-devtools/dpkg/dpkg.inc
> @@ -39,15 +39,6 @@ POSTLOG ?= "/var/log/postinstall.log"
>  REDIRECT_CMD = "${@base_contains('IMAGE_FEATURES', 'debug-tweaks', '>${POSTLOG} 2>&1', '', d)}"
>  
>  DPKG_INIT_POSITION ?= "98"
> -do_install_prepend () {
> -	install -d ${D}/${sysconfdir}/rcS.d
> -	# this happens at S98 where our good 'ole packages script used to run
> -	echo "#!/bin/sh
> -dpkg --configure -a ${REDIRECT_CMD}
> -rm -f ${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}run-postinsts
> -" > ${D}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}run-postinsts
> -	chmod 0755 ${D}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}run-postinsts
> -}
>  
>  do_install_append () {
>  	if [ "${PN}" = "dpkg-native" ]; then
> @@ -67,6 +58,20 @@ do_install_append_class-native () {
>  	done
>  }
>  
> +pkg_postinst_${PN} () {
> +#!/bin/sh
> +if [ "x$D" != "x" ] && [ -f $D/var/lib/dpkg/status ]; then
> +	install -d ${D}/${sysconfdir}/rcS.d
> +
> +	# this happens at S98 where our good 'ole packages script used to run
> +	echo "#!/bin/sh
> +dpkg --configure -a ${REDIRECT_CMD}
> +rm -f ${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}run-postinsts
> +" > ${D}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}run-postinsts
> +	chmod 0755 ${D}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}run-postinsts
> +fi
> +}
> +
>  PROV = "virtual/update-alternatives"
>  PROV_class-native = ""
>  
> diff --git a/meta/recipes-devtools/opkg/opkg.inc b/meta/recipes-devtools/opkg/opkg.inc
> index f9c1202..ff26b04 100644
> --- a/meta/recipes-devtools/opkg/opkg.inc
> +++ b/meta/recipes-devtools/opkg/opkg.inc
> @@ -62,8 +62,9 @@ REDIRECT_CMD = "${@base_contains('IMAGE_FEATURES', 'debug-tweaks', '>${POSTLOG}
>  
>  pkg_postinst_${PN} () {
>  #!/bin/sh
> -if [ "x$D" != "x" ]; then
> +if [ "x$D" != "x" ] && [ -f $D/var/lib/opkg/status ]; then

Don't hardcode '/var/lib/opkg' we have variable for that.
http://git.openembedded.org/openembedded-core/commit/?id=cf0aa9c4fdae8855803e96b1922d54a2431795d3

>  	install -d $D${sysconfdir}/rcS.d
> +
>  	# this happens at S98 where our good 'ole packages script used to run
>  	echo "#!/bin/sh
>  opkg-cl configure ${REDIRECT_CMD}
> diff --git a/meta/recipes-devtools/rpm/rpm-postinsts.bb b/meta/recipes-devtools/rpm/rpm-postinsts.bb
> index fb05ad6..b551c8d 100644
> --- a/meta/recipes-devtools/rpm/rpm-postinsts.bb
> +++ b/meta/recipes-devtools/rpm/rpm-postinsts.bb
> @@ -27,15 +27,17 @@ do_compile() {
>  }
>  
>  do_install() {
> -	install -d ${D}/${sysconfdir}/rcS.d
> -	# Stop $i getting expanded below...
> -	i=\$i
> -	cat > ${D}${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts << EOF
> -#!/bin/sh
> +	:
> +}
>  
> +pkg_postinst_${PN} () {
> +if [ "x$D" != "x" ] && [ -f $D/var/lib/rpm/Packages ]; then
> +	install -d $D/${sysconfdir}/rcS.d
> +	cat > $D${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts << "EOF"
> +#!/bin/sh
>  . /etc/default/rcS
>  
> -[ -d /etc/rpm-postinsts ] && for i in \`ls /etc/rpm-postinsts/ \`; do
> +[ -d /etc/rpm-postinsts ] && for i in `ls /etc/rpm-postinsts/`; do
>  	i=/etc/rpm-postinsts/$i
>  	echo "Running postinst $i..."
>  	if [ -f $i ] && $i ${REDIRECT_CMD}; then
> @@ -46,5 +48,8 @@ do_install() {
>  done
>  rm -f ${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts 2>/dev/null
>  EOF
> -	chmod 0755 ${D}${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts
> +	chmod 0755 $D${sysconfdir}/rcS.d/S${POSTINSTALL_INITPOSITION}run-postinsts
> +fi
>  }
> +
> +ALLOW_EMPTY_${PN} = "1"
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

      reply	other threads:[~2013-04-11 12:53 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-11  6:42 [PATCH] dpkg, opkg, rpm-postinst: fix overwriting the run-postinstall script Laurentiu Palcu
2013-04-11  7:06 ` ChenQi
2013-04-11  7:33 ` Richard Purdie
2013-04-11  8:44   ` Laurentiu Palcu
2013-04-11 11:09 ` [PATCH v2] " Laurentiu Palcu
2013-04-11 12:35   ` Martin Jansa [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130411123541.GE2477@jama \
    --to=martin.jansa@gmail.com \
    --cc=laurentiu.palcu@intel.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.