Skip to contentSkip to conversation

busybox: fix upgrade problem with deb packages

PATCH In review Aníbal Limón 2 participants 8 messages Oct 7, 2014 – Oct 9, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 busybox: fix upgrade problem with deb packages

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]

---
 meta/recipes-core/busybox/busybox.inc | 46 ++++++++++++++++++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)
meta/recipes-core/busybox/busybox.inc +45 -1
index bd66e4f..61f12b4 100644
@@ -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
 }
Signature · 1 line
1.9.1
#1 lore raw

Hello Aníbal,

Quoted 9 lines · Aníbal Limón

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.

Quoted 8 lines

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

Quoted 84 lines
---
 meta/recipes-core/busybox/busybox.inc | 46 ++++++++++++++++++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)
meta/recipes-core/busybox/busybox.inc +45 -1
index bd66e4f..61f12b4 100644
@@ -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
 }
#2 lore raw

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.

Quoted 122 lines · Andreas Oberritter

Hello Aníbal,

Quoted 9 lines · Aníbal Limón

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.

Quoted 8 lines

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

Quoted 83 lines
---
  meta/recipes-core/busybox/busybox.inc | 46 ++++++++++++++++++++++++++++++++++-
  1 file changed, 45 insertions(+), 1 deletion(-)
meta/recipes-core/busybox/busybox.inc +45 -1
index bd66e4f..61f12b4 100644
@@ -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
  }
#3 lore raw
Quoted 7 lines · Aníbal Limón

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).

Quoted 3 lines

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

Quoted 131 lines

Best regards.

Quoted 127 lines · Andreas Oberritter

Hello Aníbal,

Quoted 9 lines · Aníbal Limón

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.

Quoted 8 lines

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

Quoted 88 lines
---
  meta/recipes-core/busybox/busybox.inc | 46
++++++++++++++++++++++++++++++++++-
  1 file changed, 45 insertions(+), 1 deletion(-)
meta/recipes-core/busybox/busybox.inc +22 -0
index bd66e4f..61f12b4 100644
@@ -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
meta/recipes-core/busybox/busybox.inc +2 -1
-    tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
+
+        # Workaround for deb packages, dpkg don't take into account

exported PATH variable,

meta/recipes-core/busybox/busybox.inc +15 -0
+        # 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
meta/recipes-core/busybox/busybox.inc +2 -0
+
+            # Workaround for deb packages, if syslog is already

stopped returns

meta/recipes-core/busybox/busybox.inc +4 -0
+            # 1 but dpkg expects 0 and then fails.
+            if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then
+                exit 0
+            fi
          fi
      fi
  }
#4 lore raw
Quoted 17 lines · Andreas Oberritter
Quoted 7 lines · Aníbal Limón

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).

Quoted 2 lines

There are a lot of patches, Do you have a plan to port them to master?

Quoted 7 lines
Quoted 1 line

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?

Quoted 135 lines

Regards,
Andreas

Quoted 130 lines

Best regards.

Quoted 127 lines · Andreas Oberritter

Hello Aníbal,

Quoted 9 lines · Aníbal Limón

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.

Quoted 8 lines

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

Quoted 88 lines
---
   meta/recipes-core/busybox/busybox.inc | 46
++++++++++++++++++++++++++++++++++-
   1 file changed, 45 insertions(+), 1 deletion(-)
meta/recipes-core/busybox/busybox.inc +22 -0
index bd66e4f..61f12b4 100644
@@ -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
meta/recipes-core/busybox/busybox.inc +2 -1
-    tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
+
+        # Workaround for deb packages, dpkg don't take into account

exported PATH variable,

meta/recipes-core/busybox/busybox.inc +15 -0
+        # 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
meta/recipes-core/busybox/busybox.inc +2 -0
+
+            # Workaround for deb packages, if syslog is already

stopped returns

meta/recipes-core/busybox/busybox.inc +4 -0
+            # 1 but dpkg expects 0 and then fails.
+            if [ "$DPKG_MAINTSCRIPT_PACKAGE"x != x ]; then
+                exit 0
+            fi
           fi
       fi
   }
#5 lore raw
Quoted 28 lines · Aníbal Limón
Quoted 18 lines · Andreas Oberritter
Quoted 8 lines · Aníbal Limón

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).

Quoted 2 lines

There are a lot of patches, Do you have a plan to port them to master?

Quoted 7 lines
Quoted 1 line

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?

Quoted 2 lines

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

Quoted 8 lines

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

#6 lore raw

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.

Quoted 49 lines · Andreas Oberritter
Quoted 20 lines · Aníbal Limón
Quoted 19 lines · Andreas Oberritter
Quoted 8 lines · Aníbal Limón

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).

Quoted 3 lines

There are a lot of patches, Do you have a plan to port them to master?

I can help with that.

Quoted 8 lines
Quoted 6 lines

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

Quoted 7 lines

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

#7 lore raw
Quoted 9 lines · Aníbal Limón

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