* [PATCH] busybox: fix upgrade problem with deb packages @ 2014-10-07 20:00 Aníbal Limón 2014-10-07 20:36 ` Andreas Oberritter 0 siblings, 1 reply; 8+ messages in thread From: Aníbal Limón @ 2014-10-07 20:00 UTC (permalink / raw) To: openembedded-core Busybox prerm scripts create temp directory and fill with symlinks to common utilities in order to upgrade itself, PATH is exported but dpkg didn't take a look of this links and fails. In order to fix, Changed temp directory to /usr/loca/bin in debian packages. Added missing links for utilities tar, find, tail, cut. Busybox syslog prerm script tries to stop the daemon but if already stopped returns 1 then causes that dpkg fails because it expects 0. In order to fix, Added workaround to exit 0 in debian packages. [YOCTO #6768] Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> --- meta/recipes-core/busybox/busybox.inc | 46 ++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc index bd66e4f..61f12b4 100644 --- a/meta/recipes-core/busybox/busybox.inc +++ b/meta/recipes-core/busybox/busybox.inc @@ -377,13 +377,46 @@ pkg_postinst_${PN} () { fi done fi + + # Workaround for deb packages, clean + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then + tmpdir='/usr/local/bin' + rm -f $tmpdir/[ + rm -f $tmpdir/test + rm -f $tmpdir/head + rm -f $tmpdir/sh + rm -f $tmpdir/basename + rm -f $tmpdir/echo + rm -f $tmpdir/mv + rm -f $tmpdir/ln + rm -f $tmpdir/dirname + rm -f $tmpdir/rm + rm -f $tmpdir/sed + rm -f $tmpdir/sort + rm -f $tmpdir/grep + rm -f $tmpdir/tar + rm -f $tmpdir/find + rm -f $tmpdir/tail + rm -f $tmpdir/cut + fi } pkg_prerm_${PN} () { # This is so you can make busybox commit suicide - removing busybox with no other packages # providing its files, this will make update-alternatives work, but the update-rc.d part # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh - tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` + + # Workaround for deb packages, dpkg don't take into account exported PATH variable, + # use instead local directory. + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x == x ]; then + tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` + else + tmpdir='/usr/local/bin' + if [ ! -e $tmpdir ]; then + mkdir -p $tmpdir + fi + fi + ln -s /bin/busybox $tmpdir/[ ln -s /bin/busybox $tmpdir/test ln -s /bin/busybox $tmpdir/head @@ -397,6 +430,11 @@ pkg_prerm_${PN} () { ln -s /bin/busybox $tmpdir/sed ln -s /bin/busybox $tmpdir/sort ln -s /bin/busybox $tmpdir/grep + ln -s /bin/busybox $tmpdir/tar + ln -s /bin/busybox $tmpdir/find + ln -s /bin/busybox $tmpdir/tail + ln -s /bin/busybox $tmpdir/cut + export PATH=$PATH:$tmpdir } @@ -405,6 +443,12 @@ pkg_prerm_${PN}-syslog () { if test "x$D" = "x"; then if test "$1" = "upgrade" -o "$1" = "remove"; then /etc/init.d/syslog stop + + # Workaround for deb packages, if syslog is already stopped returns + # 1 but dpkg expects 0 and then fails. + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then + exit 0 + fi fi fi } -- 1.9.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-07 20:00 [PATCH] busybox: fix upgrade problem with deb packages Aníbal Limón @ 2014-10-07 20:36 ` Andreas Oberritter 2014-10-07 22:49 ` Aníbal Limón 0 siblings, 1 reply; 8+ messages in thread From: Andreas Oberritter @ 2014-10-07 20:36 UTC (permalink / raw) To: openembedded-core Hello Aníbal, On 07.10.2014 22:00, Aníbal Limón wrote: > Busybox prerm scripts create temp directory and fill with > symlinks to common utilities in order to upgrade itself, PATH > is exported but dpkg didn't take a look of this links and fails. > > In order to fix, > > Changed temp directory to /usr/loca/bin in debian packages. > Added missing links for utilities tar, find, tail, cut. > > Busybox syslog prerm script tries to stop the daemon but if already > stopped returns 1 then causes that dpkg fails because it expects 0. > > In order to fix, > > Added workaround to exit 0 in debian packages. > > [YOCTO #6768] please don't overwrite files in /usr/local/bin! People may have their own tools there. This, and the creation of these symlinks in a tmpdir in the first place, looks wrong to me. I think you'd better get rid of update-alternatives-cworth and use an implementation written in C. See http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dora for many dpkg-related fixes including an offline-capable version of dpkg's update-alternatives. I couldn't test these with master, but this branch contains most if not all patches to dpkg backported from master to dora. Regards, Andreas > > Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> > --- > meta/recipes-core/busybox/busybox.inc | 46 ++++++++++++++++++++++++++++++++++- > 1 file changed, 45 insertions(+), 1 deletion(-) > > diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc > index bd66e4f..61f12b4 100644 > --- a/meta/recipes-core/busybox/busybox.inc > +++ b/meta/recipes-core/busybox/busybox.inc > @@ -377,13 +377,46 @@ pkg_postinst_${PN} () { > fi > done > fi > + > + # Workaround for deb packages, clean > + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then > + tmpdir='/usr/local/bin' > + rm -f $tmpdir/[ > + rm -f $tmpdir/test > + rm -f $tmpdir/head > + rm -f $tmpdir/sh > + rm -f $tmpdir/basename > + rm -f $tmpdir/echo > + rm -f $tmpdir/mv > + rm -f $tmpdir/ln > + rm -f $tmpdir/dirname > + rm -f $tmpdir/rm > + rm -f $tmpdir/sed > + rm -f $tmpdir/sort > + rm -f $tmpdir/grep > + rm -f $tmpdir/tar > + rm -f $tmpdir/find > + rm -f $tmpdir/tail > + rm -f $tmpdir/cut > + fi > } > > pkg_prerm_${PN} () { > # This is so you can make busybox commit suicide - removing busybox with no other packages > # providing its files, this will make update-alternatives work, but the update-rc.d part > # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh > - tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` > + > + # Workaround for deb packages, dpkg don't take into account exported PATH variable, > + # use instead local directory. > + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x == x ]; then > + tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` > + else > + tmpdir='/usr/local/bin' > + if [ ! -e $tmpdir ]; then > + mkdir -p $tmpdir > + fi > + fi > + > ln -s /bin/busybox $tmpdir/[ > ln -s /bin/busybox $tmpdir/test > ln -s /bin/busybox $tmpdir/head > @@ -397,6 +430,11 @@ pkg_prerm_${PN} () { > ln -s /bin/busybox $tmpdir/sed > ln -s /bin/busybox $tmpdir/sort > ln -s /bin/busybox $tmpdir/grep > + ln -s /bin/busybox $tmpdir/tar > + ln -s /bin/busybox $tmpdir/find > + ln -s /bin/busybox $tmpdir/tail > + ln -s /bin/busybox $tmpdir/cut > + > export PATH=$PATH:$tmpdir > } > > @@ -405,6 +443,12 @@ pkg_prerm_${PN}-syslog () { > if test "x$D" = "x"; then > if test "$1" = "upgrade" -o "$1" = "remove"; then > /etc/init.d/syslog stop > + > + # Workaround for deb packages, if syslog is already stopped returns > + # 1 but dpkg expects 0 and then fails. > + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then > + exit 0 > + fi > fi > fi > } > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-07 20:36 ` Andreas Oberritter @ 2014-10-07 22:49 ` Aníbal Limón 2014-10-07 23:39 ` Andreas Oberritter 0 siblings, 1 reply; 8+ messages in thread From: Aníbal Limón @ 2014-10-07 22:49 UTC (permalink / raw) To: openembedded-core HI Andreas, I reviewed the patches and looks good, only i have a comment in this file, http://git.openembedded.org/openembedded-core-contrib/commit/?h=obi/dora&id=a5f18409d1bf2877f898b902cafc317cbf7462e4 I didn't know if the same apply for rpm and ipk. There are a lot of patches, Do you have a plan to port them to master? I can help with that. Best regards. On 07/10/14 15:36, Andreas Oberritter wrote: > Hello Aníbal, > > On 07.10.2014 22:00, Aníbal Limón wrote: >> Busybox prerm scripts create temp directory and fill with >> symlinks to common utilities in order to upgrade itself, PATH >> is exported but dpkg didn't take a look of this links and fails. >> >> In order to fix, >> >> Changed temp directory to /usr/loca/bin in debian packages. >> Added missing links for utilities tar, find, tail, cut. >> >> Busybox syslog prerm script tries to stop the daemon but if already >> stopped returns 1 then causes that dpkg fails because it expects 0. >> >> In order to fix, >> >> Added workaround to exit 0 in debian packages. >> >> [YOCTO #6768] > please don't overwrite files in /usr/local/bin! People may have their > own tools there. > > This, and the creation of these symlinks in a tmpdir in the first place, > looks wrong to me. > > I think you'd better get rid of update-alternatives-cworth and use an > implementation written in C. > > See > http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dora > for many dpkg-related fixes including an offline-capable version of > dpkg's update-alternatives. I couldn't test these with master, but this > branch contains most if not all patches to dpkg backported from master > to dora. > > Regards, > Andreas > >> Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> >> --- >> meta/recipes-core/busybox/busybox.inc | 46 ++++++++++++++++++++++++++++++++++- >> 1 file changed, 45 insertions(+), 1 deletion(-) >> >> diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc >> index bd66e4f..61f12b4 100644 >> --- a/meta/recipes-core/busybox/busybox.inc >> +++ b/meta/recipes-core/busybox/busybox.inc >> @@ -377,13 +377,46 @@ pkg_postinst_${PN} () { >> fi >> done >> fi >> + >> + # Workaround for deb packages, clean >> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then >> + tmpdir='/usr/local/bin' >> + rm -f $tmpdir/[ >> + rm -f $tmpdir/test >> + rm -f $tmpdir/head >> + rm -f $tmpdir/sh >> + rm -f $tmpdir/basename >> + rm -f $tmpdir/echo >> + rm -f $tmpdir/mv >> + rm -f $tmpdir/ln >> + rm -f $tmpdir/dirname >> + rm -f $tmpdir/rm >> + rm -f $tmpdir/sed >> + rm -f $tmpdir/sort >> + rm -f $tmpdir/grep >> + rm -f $tmpdir/tar >> + rm -f $tmpdir/find >> + rm -f $tmpdir/tail >> + rm -f $tmpdir/cut >> + fi >> } >> >> pkg_prerm_${PN} () { >> # This is so you can make busybox commit suicide - removing busybox with no other packages >> # providing its files, this will make update-alternatives work, but the update-rc.d part >> # for syslog, httpd and/or udhcpd will fail if there is no other package providing sh >> - tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` >> + >> + # Workaround for deb packages, dpkg don't take into account exported PATH variable, >> + # use instead local directory. >> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x == x ]; then >> + tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` >> + else >> + tmpdir='/usr/local/bin' >> + if [ ! -e $tmpdir ]; then >> + mkdir -p $tmpdir >> + fi >> + fi >> + >> ln -s /bin/busybox $tmpdir/[ >> ln -s /bin/busybox $tmpdir/test >> ln -s /bin/busybox $tmpdir/head >> @@ -397,6 +430,11 @@ pkg_prerm_${PN} () { >> ln -s /bin/busybox $tmpdir/sed >> ln -s /bin/busybox $tmpdir/sort >> ln -s /bin/busybox $tmpdir/grep >> + ln -s /bin/busybox $tmpdir/tar >> + ln -s /bin/busybox $tmpdir/find >> + ln -s /bin/busybox $tmpdir/tail >> + ln -s /bin/busybox $tmpdir/cut >> + >> export PATH=$PATH:$tmpdir >> } >> >> @@ -405,6 +443,12 @@ pkg_prerm_${PN}-syslog () { >> if test "x$D" = "x"; then >> if test "$1" = "upgrade" -o "$1" = "remove"; then >> /etc/init.d/syslog stop >> + >> + # Workaround for deb packages, if syslog is already stopped returns >> + # 1 but dpkg expects 0 and then fails. >> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then >> + exit 0 >> + fi >> fi >> fi >> } >> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-07 22:49 ` Aníbal Limón @ 2014-10-07 23:39 ` Andreas Oberritter 2014-10-08 18:00 ` Aníbal Limón 0 siblings, 1 reply; 8+ messages in thread From: Andreas Oberritter @ 2014-10-07 23:39 UTC (permalink / raw) To: openembedded-core On 08.10.2014 00:49, Aníbal Limón wrote: > I reviewed the patches and looks good, only i have a comment > in this file, > > http://git.openembedded.org/openembedded-core-contrib/commit/?h=obi/dora&id=a5f18409d1bf2877f898b902cafc317cbf7462e4 > > > I didn't know if the same apply for rpm and ipk. I guess so. I'm pretty certain that opkg behaves just like dpkg in this regard. I never used rpm, though. To reproduce the problem, boot an image containing busybox, but not bash. Then install bash and deinstall it again. Deinstallation fails, resulting in a dangling symlink (/bin/sh -> /bin/bash). > There are a lot of patches, Do you have a plan to port them to master? > > I can help with that. I'd like to, but I won't have time to do any testing with master during the next weeks. I could rebase my patches onto master and provide a tree for you to test. Or you could cherry-pick whatever patches you like and submit them to the mailing list after testing. Most patches should apply without changes, but those touching rootfs_deb.bbclass and package_deb.bbclass will need some porting. What do you think? Regards, Andreas > Best regards. > > On 07/10/14 15:36, Andreas Oberritter wrote: >> Hello Aníbal, >> >> On 07.10.2014 22:00, Aníbal Limón wrote: >>> Busybox prerm scripts create temp directory and fill with >>> symlinks to common utilities in order to upgrade itself, PATH >>> is exported but dpkg didn't take a look of this links and fails. >>> >>> In order to fix, >>> >>> Changed temp directory to /usr/loca/bin in debian packages. >>> Added missing links for utilities tar, find, tail, cut. >>> >>> Busybox syslog prerm script tries to stop the daemon but if already >>> stopped returns 1 then causes that dpkg fails because it expects 0. >>> >>> In order to fix, >>> >>> Added workaround to exit 0 in debian packages. >>> >>> [YOCTO #6768] >> please don't overwrite files in /usr/local/bin! People may have their >> own tools there. >> >> This, and the creation of these symlinks in a tmpdir in the first place, >> looks wrong to me. >> >> I think you'd better get rid of update-alternatives-cworth and use an >> implementation written in C. >> >> See >> http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dora >> for many dpkg-related fixes including an offline-capable version of >> dpkg's update-alternatives. I couldn't test these with master, but this >> branch contains most if not all patches to dpkg backported from master >> to dora. >> >> Regards, >> Andreas >> >>> Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> >>> --- >>> meta/recipes-core/busybox/busybox.inc | 46 >>> ++++++++++++++++++++++++++++++++++- >>> 1 file changed, 45 insertions(+), 1 deletion(-) >>> >>> diff --git a/meta/recipes-core/busybox/busybox.inc >>> b/meta/recipes-core/busybox/busybox.inc >>> index bd66e4f..61f12b4 100644 >>> --- a/meta/recipes-core/busybox/busybox.inc >>> +++ b/meta/recipes-core/busybox/busybox.inc >>> @@ -377,13 +377,46 @@ pkg_postinst_${PN} () { >>> fi >>> done >>> fi >>> + >>> + # Workaround for deb packages, clean >>> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then >>> + tmpdir='/usr/local/bin' >>> + rm -f $tmpdir/[ >>> + rm -f $tmpdir/test >>> + rm -f $tmpdir/head >>> + rm -f $tmpdir/sh >>> + rm -f $tmpdir/basename >>> + rm -f $tmpdir/echo >>> + rm -f $tmpdir/mv >>> + rm -f $tmpdir/ln >>> + rm -f $tmpdir/dirname >>> + rm -f $tmpdir/rm >>> + rm -f $tmpdir/sed >>> + rm -f $tmpdir/sort >>> + rm -f $tmpdir/grep >>> + rm -f $tmpdir/tar >>> + rm -f $tmpdir/find >>> + rm -f $tmpdir/tail >>> + rm -f $tmpdir/cut >>> + fi >>> } >>> pkg_prerm_${PN} () { >>> # This is so you can make busybox commit suicide - removing >>> busybox with no other packages >>> # providing its files, this will make update-alternatives work, >>> but the update-rc.d part >>> # for syslog, httpd and/or udhcpd will fail if there is no >>> other package providing sh >>> - tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` >>> + >>> + # Workaround for deb packages, dpkg don't take into account >>> exported PATH variable, >>> + # use instead local directory. >>> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x == x ]; then >>> + tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` >>> + else >>> + tmpdir='/usr/local/bin' >>> + if [ ! -e $tmpdir ]; then >>> + mkdir -p $tmpdir >>> + fi >>> + fi >>> + >>> ln -s /bin/busybox $tmpdir/[ >>> ln -s /bin/busybox $tmpdir/test >>> ln -s /bin/busybox $tmpdir/head >>> @@ -397,6 +430,11 @@ pkg_prerm_${PN} () { >>> ln -s /bin/busybox $tmpdir/sed >>> ln -s /bin/busybox $tmpdir/sort >>> ln -s /bin/busybox $tmpdir/grep >>> + ln -s /bin/busybox $tmpdir/tar >>> + ln -s /bin/busybox $tmpdir/find >>> + ln -s /bin/busybox $tmpdir/tail >>> + ln -s /bin/busybox $tmpdir/cut >>> + >>> export PATH=$PATH:$tmpdir >>> } >>> @@ -405,6 +443,12 @@ pkg_prerm_${PN}-syslog () { >>> if test "x$D" = "x"; then >>> if test "$1" = "upgrade" -o "$1" = "remove"; then >>> /etc/init.d/syslog stop >>> + >>> + # Workaround for deb packages, if syslog is already >>> stopped returns >>> + # 1 but dpkg expects 0 and then fails. >>> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then >>> + exit 0 >>> + fi >>> fi >>> fi >>> } >>> > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-07 23:39 ` Andreas Oberritter @ 2014-10-08 18:00 ` Aníbal Limón 2014-10-08 18:57 ` Andreas Oberritter 0 siblings, 1 reply; 8+ messages in thread From: Aníbal Limón @ 2014-10-08 18:00 UTC (permalink / raw) To: openembedded-core On 07/10/14 18:39, Andreas Oberritter wrote: > On 08.10.2014 00:49, Aníbal Limón wrote: >> I reviewed the patches and looks good, only i have a comment >> in this file, >> >> http://git.openembedded.org/openembedded-core-contrib/commit/?h=obi/dora&id=a5f18409d1bf2877f898b902cafc317cbf7462e4 >> >> >> I didn't know if the same apply for rpm and ipk. > I guess so. I'm pretty certain that opkg behaves just like dpkg in this > regard. I never used rpm, though. > > To reproduce the problem, boot an image containing busybox, but not > bash. Then install bash and deinstall it again. Deinstallation fails, > resulting in a dangling symlink (/bin/sh -> /bin/bash). > >> There are a lot of patches, Do you have a plan to port them to master? >> >> I can help with that. > I'd like to, but I won't have time to do any testing with master during > the next weeks. I could rebase my patches onto master and provide a tree > for you to test. Or you could cherry-pick whatever patches you like and > submit them to the mailing list after testing. Most patches should apply > without changes, but those touching rootfs_deb.bbclass and > package_deb.bbclass will need some porting. What do you think? I think we need to port these patches in small changes in order to do a good review, I propose, 1. dpkg update-alternatives offline 2. apt-get upgrade version 3. another minor changes like pkg-config Makes sense? > > Regards, > Andreas > > >> Best regards. >> >> On 07/10/14 15:36, Andreas Oberritter wrote: >>> Hello Aníbal, >>> >>> On 07.10.2014 22:00, Aníbal Limón wrote: >>>> Busybox prerm scripts create temp directory and fill with >>>> symlinks to common utilities in order to upgrade itself, PATH >>>> is exported but dpkg didn't take a look of this links and fails. >>>> >>>> In order to fix, >>>> >>>> Changed temp directory to /usr/loca/bin in debian packages. >>>> Added missing links for utilities tar, find, tail, cut. >>>> >>>> Busybox syslog prerm script tries to stop the daemon but if already >>>> stopped returns 1 then causes that dpkg fails because it expects 0. >>>> >>>> In order to fix, >>>> >>>> Added workaround to exit 0 in debian packages. >>>> >>>> [YOCTO #6768] >>> please don't overwrite files in /usr/local/bin! People may have their >>> own tools there. >>> >>> This, and the creation of these symlinks in a tmpdir in the first place, >>> looks wrong to me. >>> >>> I think you'd better get rid of update-alternatives-cworth and use an >>> implementation written in C. >>> >>> See >>> http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dora >>> for many dpkg-related fixes including an offline-capable version of >>> dpkg's update-alternatives. I couldn't test these with master, but this >>> branch contains most if not all patches to dpkg backported from master >>> to dora. >>> >>> Regards, >>> Andreas >>> >>>> Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> >>>> --- >>>> meta/recipes-core/busybox/busybox.inc | 46 >>>> ++++++++++++++++++++++++++++++++++- >>>> 1 file changed, 45 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/meta/recipes-core/busybox/busybox.inc >>>> b/meta/recipes-core/busybox/busybox.inc >>>> index bd66e4f..61f12b4 100644 >>>> --- a/meta/recipes-core/busybox/busybox.inc >>>> +++ b/meta/recipes-core/busybox/busybox.inc >>>> @@ -377,13 +377,46 @@ pkg_postinst_${PN} () { >>>> fi >>>> done >>>> fi >>>> + >>>> + # Workaround for deb packages, clean >>>> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then >>>> + tmpdir='/usr/local/bin' >>>> + rm -f $tmpdir/[ >>>> + rm -f $tmpdir/test >>>> + rm -f $tmpdir/head >>>> + rm -f $tmpdir/sh >>>> + rm -f $tmpdir/basename >>>> + rm -f $tmpdir/echo >>>> + rm -f $tmpdir/mv >>>> + rm -f $tmpdir/ln >>>> + rm -f $tmpdir/dirname >>>> + rm -f $tmpdir/rm >>>> + rm -f $tmpdir/sed >>>> + rm -f $tmpdir/sort >>>> + rm -f $tmpdir/grep >>>> + rm -f $tmpdir/tar >>>> + rm -f $tmpdir/find >>>> + rm -f $tmpdir/tail >>>> + rm -f $tmpdir/cut >>>> + fi >>>> } >>>> pkg_prerm_${PN} () { >>>> # This is so you can make busybox commit suicide - removing >>>> busybox with no other packages >>>> # providing its files, this will make update-alternatives work, >>>> but the update-rc.d part >>>> # for syslog, httpd and/or udhcpd will fail if there is no >>>> other package providing sh >>>> - tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` >>>> + >>>> + # Workaround for deb packages, dpkg don't take into account >>>> exported PATH variable, >>>> + # use instead local directory. >>>> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x == x ]; then >>>> + tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX` >>>> + else >>>> + tmpdir='/usr/local/bin' >>>> + if [ ! -e $tmpdir ]; then >>>> + mkdir -p $tmpdir >>>> + fi >>>> + fi >>>> + >>>> ln -s /bin/busybox $tmpdir/[ >>>> ln -s /bin/busybox $tmpdir/test >>>> ln -s /bin/busybox $tmpdir/head >>>> @@ -397,6 +430,11 @@ pkg_prerm_${PN} () { >>>> ln -s /bin/busybox $tmpdir/sed >>>> ln -s /bin/busybox $tmpdir/sort >>>> ln -s /bin/busybox $tmpdir/grep >>>> + ln -s /bin/busybox $tmpdir/tar >>>> + ln -s /bin/busybox $tmpdir/find >>>> + ln -s /bin/busybox $tmpdir/tail >>>> + ln -s /bin/busybox $tmpdir/cut >>>> + >>>> export PATH=$PATH:$tmpdir >>>> } >>>> @@ -405,6 +443,12 @@ pkg_prerm_${PN}-syslog () { >>>> if test "x$D" = "x"; then >>>> if test "$1" = "upgrade" -o "$1" = "remove"; then >>>> /etc/init.d/syslog stop >>>> + >>>> + # Workaround for deb packages, if syslog is already >>>> stopped returns >>>> + # 1 but dpkg expects 0 and then fails. >>>> + if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then >>>> + exit 0 >>>> + fi >>>> fi >>>> fi >>>> } >>>> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-08 18:00 ` Aníbal Limón @ 2014-10-08 18:57 ` Andreas Oberritter 2014-10-09 22:42 ` Aníbal Limón 0 siblings, 1 reply; 8+ messages in thread From: Andreas Oberritter @ 2014-10-08 18:57 UTC (permalink / raw) To: openembedded-core On 08.10.2014 20:00, Aníbal Limón wrote: > > On 07/10/14 18:39, Andreas Oberritter wrote: >> On 08.10.2014 00:49, Aníbal Limón wrote: >>> I reviewed the patches and looks good, only i have a comment >>> in this file, >>> >>> http://git.openembedded.org/openembedded-core-contrib/commit/?h=obi/dora&id=a5f18409d1bf2877f898b902cafc317cbf7462e4 >>> >>> >>> >>> I didn't know if the same apply for rpm and ipk. >> I guess so. I'm pretty certain that opkg behaves just like dpkg in this >> regard. I never used rpm, though. >> >> To reproduce the problem, boot an image containing busybox, but not >> bash. Then install bash and deinstall it again. Deinstallation fails, >> resulting in a dangling symlink (/bin/sh -> /bin/bash). >> >>> There are a lot of patches, Do you have a plan to port them to master? >>> >>> I can help with that. >> I'd like to, but I won't have time to do any testing with master during >> the next weeks. I could rebase my patches onto master and provide a tree >> for you to test. Or you could cherry-pick whatever patches you like and >> submit them to the mailing list after testing. Most patches should apply >> without changes, but those touching rootfs_deb.bbclass and >> package_deb.bbclass will need some porting. What do you think? > > I think we need to port these patches in small changes in order to do > a good review, I already rebased all patches today, and just pushed it to this untested branch: http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/master > > I propose, > > 1. dpkg update-alternatives offline > 2. apt-get upgrade version > 3. another minor changes like pkg-config > > Makes sense? OK. Here are some topic branches: http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dpkg-ua http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/apt http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dpkg-misc Regards, Andreas ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-08 18:57 ` Andreas Oberritter @ 2014-10-09 22:42 ` Aníbal Limón 2014-10-09 23:31 ` Andreas Oberritter 0 siblings, 1 reply; 8+ messages in thread From: Aníbal Limón @ 2014-10-09 22:42 UTC (permalink / raw) To: openembedded-core Andreas, Now i'm testing dpkg-ua changes, my first impressions are, Some work in order to use dpkg-ua version instead of opkg-utils (default), files meta/conf/layer.con and meta/recipes-core/packagegroups/packagegroup-self-hosted.bb. Currently isn't created symlinks for tools in target image. Comments? Best regards. On 08/10/14 13:57, Andreas Oberritter wrote: > On 08.10.2014 20:00, Aníbal Limón wrote: >> On 07/10/14 18:39, Andreas Oberritter wrote: >>> On 08.10.2014 00:49, Aníbal Limón wrote: >>>> I reviewed the patches and looks good, only i have a comment >>>> in this file, >>>> >>>> http://git.openembedded.org/openembedded-core-contrib/commit/?h=obi/dora&id=a5f18409d1bf2877f898b902cafc317cbf7462e4 >>>> >>>> >>>> >>>> I didn't know if the same apply for rpm and ipk. >>> I guess so. I'm pretty certain that opkg behaves just like dpkg in this >>> regard. I never used rpm, though. >>> >>> To reproduce the problem, boot an image containing busybox, but not >>> bash. Then install bash and deinstall it again. Deinstallation fails, >>> resulting in a dangling symlink (/bin/sh -> /bin/bash). >>> >>>> There are a lot of patches, Do you have a plan to port them to master? >>>> >>>> I can help with that. >>> I'd like to, but I won't have time to do any testing with master during >>> the next weeks. I could rebase my patches onto master and provide a tree >>> for you to test. Or you could cherry-pick whatever patches you like and >>> submit them to the mailing list after testing. Most patches should apply >>> without changes, but those touching rootfs_deb.bbclass and >>> package_deb.bbclass will need some porting. What do you think? >> I think we need to port these patches in small changes in order to do >> a good review, > I already rebased all patches today, and just pushed it to this untested > branch: > > http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/master > >> I propose, >> >> 1. dpkg update-alternatives offline >> 2. apt-get upgrade version >> 3. another minor changes like pkg-config >> >> Makes sense? > OK. Here are some topic branches: > > http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dpkg-ua > http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/apt > http://git.openembedded.org/openembedded-core-contrib/log/?h=obi/dpkg-misc > > Regards, > Andreas ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] busybox: fix upgrade problem with deb packages 2014-10-09 22:42 ` Aníbal Limón @ 2014-10-09 23:31 ` Andreas Oberritter 0 siblings, 0 replies; 8+ messages in thread From: Andreas Oberritter @ 2014-10-09 23:31 UTC (permalink / raw) To: openembedded-core On 10.10.2014 00:42, Aníbal Limón wrote: > Now i'm testing dpkg-ua changes, my first impressions are, > > Some work in order to use dpkg-ua version instead of opkg-utils (default), > files meta/conf/layer.con and > meta/recipes-core/packagegroups/packagegroup-self-hosted.bb. > > Currently isn't created symlinks for tools in target image. > > Comments? Sounds like this problem: http://comments.gmane.org/gmane.comp.handhelds.openembedded.core/47626 Did update-alternatives get staged correctly into your native sysroot? If opkg-utils-native was built after dpkg-native, it may have overwritten update-alternatives. To avoid this I've put the following into my local.conf: INHERIT += "blacklist" PNBLACKLIST[opkg-utils-native] = "opkg-utils-native must not be built when using debian packages" I'm not sure whether this may cause a similar effect. Regards, Andreas ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-10-09 23:31 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-10-07 20:00 [PATCH] busybox: fix upgrade problem with deb packages Aníbal Limón 2014-10-07 20:36 ` Andreas Oberritter 2014-10-07 22:49 ` Aníbal Limón 2014-10-07 23:39 ` Andreas Oberritter 2014-10-08 18:00 ` Aníbal Limón 2014-10-08 18:57 ` Andreas Oberritter 2014-10-09 22:42 ` Aníbal Limón 2014-10-09 23:31 ` Andreas Oberritter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox