|
@@ -433,6 +433,32 @@ fi
|
|
|
d.prependVar('pkg_postinst_%s' % pkg, postinst)
|
|
|
}
|
|
|
|
|
|
+pkg_postinst_${PN}_prepend () {
|
|
|
+ # Need path to saved utils, but they may have be removed on upgrade of busybox
|
|
|
+ # Only use shell to get paths. Also capture if busybox was saved.
|
|
|
+ BUSYBOX=""
|
|
|
+ if [ "x$D" = "x" ] ; then
|
|
|
+ for busybox_rmdir in /tmp/busyboxrm-*; do
|
|
|
+ if [ "$busybox_rmdir" != '/tmp/busyboxrm-*' ] ; then
|
|
|
+ export PATH=$busybox_rmdir:$PATH
|
|
|
+ if [ -e $busybox_rmdir/busybox* ] ; then
|
|
|
+ BUSYBOX="$busybox_rmdir/busybox*"
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+pkg_postinst_${PN}_append () {
|
|
|
+ # If busybox exists in the remove directory it is because it was the only shell left.
|
|
|
+ if [ "x$D" = "x" ] ; then
|
|
|
+ if [ "x$BUSYBOX" != "x" ] ; then
|
|
|
+ update-alternatives --remove sh $BUSYBOX
|
|
|
+ rm -f $BUSYBOX
|
|
|
+ fi
|
|
|
+ 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
|
|
@@ -453,9 +479,26 @@ pkg_prerm_${PN} () {
|
|
|
ln -s ${base_bindir}/busybox $tmpdir/grep
|
|
|
ln -s ${base_bindir}/busybox $tmpdir/tail
|
|
|
export PATH=$PATH:$tmpdir
|
|
|
+
|
|
|
+ # If busybox is the shell, we need to save it since its the lowest priority shell
|
|
|
+ # Register saved bitbake as the lowest priority shell possible as back up.
|
|
|
+ if [ -n "$(readlink -f /bin/sh | grep busybox)" ] ; then
|
|
|
+ BUSYBOX=$(readlink -f /bin/sh)
|
|
|
+ cp $BUSYBOX $tmpdir/$(basename $BUSYBOX)
|
|
|
+ update-alternatives --install /bin/sh sh $tmpdir/$(basename $BUSYBOX) 1
|
|
|
+ fi
|
|
|
}
|
|
|
|
|
|
pkg_postrm_${PN} () {
|
|
|
+ # Add path to remove dir in case we removed our only grep
|
|
|
+ if [ "x$D" = "x" ] ; then
|
|
|
+ for busybox_rmdir in /tmp/busyboxrm-*; do
|
|
|
+ if [ "$busybox_rmdir" != '/tmp/busyboxrm-*' ] ; then
|
|
|
+ export PATH=$busybox_rmdir:$PATH
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ fi
|
|
|
+
|
|
|
if grep -q "^${base_bindir}/bash$" $D${sysconfdir}/busybox.links* && [ ! -e $D${base_bindir}/bash ]; then
|
|
|
printf "$(grep -v "^${base_bindir}/bash$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
|
|
|
fi
|