INSTALLDIR="/opt/busybox-power"
EXECPWR="$INSTALLDIR/busybox.power"
-DISTBIN="/bin/busybox.distrib"
+DISTBIN="$INSTALLDIR/busybox.distrib"
VERBOSE="0"
+SYMLINK="1"
INSTBINARY_SHA1=`$EXECPWR sha1sum $EXECPWR | $EXECPWR awk '{ print $1 }'`
ORIGBINARY_SHA1=`$EXECPWR sha1sum /bin/busybox | $EXECPWR awk '{ print $1 }'`
# Check whether symlinks have been made before
CHECK_SYMLINKSFILE() {
if test -e $INSTALLDIR/busybox-power.symlinks; then
- echo "error: symlinks already seem to be made?"
- echo " this script is not supposed to be ran twice"
- exit 1
+ ECHO_VERBOSE "symlinks are already made, skipping creation"
+ SYMLINK="0"
fi
}
fi
}
+# Rollback procedure for Harmattan based devices
+ROLLBACK_HARMATTAN() {
+ echo -e "\nWarning: an error has occured! Rolling back..."
+ $EXECPWR cp -af $TMPBINBAK /bin/busybox
+ $EXECPWR cp -a $TMPHASHBAK /var/lib/aegis/refhashlist
+ echo "End of roll-back"
+ exit 1
+}
+
# Overwrite the installed binary with the enhanced binary
+# dpkg-divert is disallowed on Harmattan, do not use it there!
INSTALL() {
- /usr/sbin/dpkg-divert --local --divert $DISTBIN /bin/busybox
- $EXECPWR cp -f $EXECPWR /bin/busybox
+ case $ENVIRONMENT in
+ SDK|DIABLO|FREMANTLE)
+ # Divert in postinst instead of preinst, we don't want to leave Maemo
+ # without /bin/busybox for a short period of time
+ /usr/sbin/dpkg-divert --package busybox-power --add \
+ --divert $DISTBIN /bin/busybox
+ $EXECPWR cp -f $EXECPWR /bin/busybox
+ ;;
+ HARMATTAN)
+ TMPHASHBAK=`$EXECPWR mktemp`
+ TMPBINBAK=`$EXECPWR mktemp`
+ ORIGINCHECK=`GETORIGINCHECK_STATUS`
+
+ # Useful information for Harmattan-based devices
+ ECHO_VERBOSE "refhashlist backup: $TMPHASHBAK"
+ ECHO_VERBOSE "busybox backup: $TMPBINBAK"
+ ECHO_VERBOSE "instbinary: $INSTBINARY_SHA1"
+ ECHO_VERBOSE "origbinary: $ORIGBINARY_SHA1"
+ ECHO_VERBOSE "device mode: $DEVICEMODE"
+ ECHO_VERBOSE "origincheck: $ORIGINCHECK"
+
+ if test $ORIGINCHECK -eq 1; then
+ SETORIGINCHECK_STATUS 0; fi
+
+ $EXECPWR cp -a /bin/busybox $TMPBINBAK || exit 1
+ $EXECPWR cp -a /var/lib/aegis/refhashlist $TMPHASHBAK || exit 1
+ $EXECPWR cp -af $EXECPWR /bin/busybox || ROLLBACK_HARMATTAN
+ $EXECPWR sed -i "s/$ORIGBINARY_SHA1/$INSTBINARY_SHA1/" /var/lib/aegis/refhashlist || ROLLBACK_HARMATTAN
+ /usr/bin/accli -c tcb-sign -F /var/lib/aegis/refhashlist < /var/lib/aegis/refhashlist || ROLLBACK_HARMATTAN
+ /usr/sbin/validator-init
+
+ if test $ORIGINCHECK -eq 1; then
+ SETORIGINCHECK_STATUS 1; fi
+
+ $EXECPWR rm $TMPBINBAK
+ $EXECPWR rm $TMPHASHBAK
+ ;;
+ esac
}
# Create missing symlinks to the enhanced binary
ECHO_VERBOSE " version string: `$EXECPWR | $EXECPWR head -n 1`"
CHECK_ENV && ECHO_VERBOSE " environment: $ENVIRONMENT"
-CHECK_STANDALONE
CHECK_APPLETSFILE
CHECK_SYMLINKSFILE
if test "$ENVIRONMENT" != "SDK"; then
- CHECK_ROOT; fi
+ CHECK_ROOT
+fi
BACKUP
INSTALL
-SYMLINK
+if test $SYMLINK == 1; then
+ SYMLINK
+fi