[Feature][YUKUAI_patch]add 18.02 code

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: I7f71153004f10fc0ea5adfa083866aaeeb1053ac
diff --git a/rootfs/usr/sbin/run-postinsts b/rootfs/usr/sbin/run-postinsts
new file mode 100755
index 0000000..cde2195
--- /dev/null
+++ b/rootfs/usr/sbin/run-postinsts
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# Copyright 2007 Openedhand Ltd.
+#
+# Author: Richard Purdie <rpurdie@openedhand.com>
+#
+
+# The following script will run all the scriptlets found in /etc/deb-postinsts,
+# /etc/ipk-postinsts or /etc/rpm-postinsts or the package manager in
+# case available.
+
+# the order of this list is important, do not change!
+backend_list="rpm deb ipk"
+
+pm_installed=false
+
+for pm in $backend_list; do
+	# found the package manager, it has postinsts
+	case $pm in
+		"deb")
+			if [ -s "/var/lib/dpkg/status" ]; then
+				pm_installed=true
+				break
+			fi
+			;;
+
+		"ipk")
+			if [ -s "/var/lib/opkg/status" ]; then
+				pm_installed=true
+				break
+			fi
+			;;
+	esac
+
+	pi_dir="/etc/$pm-postinsts"
+
+	# found postinsts directory
+	if [ -d $pi_dir ]; then
+		break
+	fi
+done
+
+remove_rcsd_link () {
+	if [ -n "`which update-rc.d`" ]; then
+		update-rc.d -f run-postinsts remove
+	fi
+}
+
+if ! [ -d $pi_dir ] && ! $pm_installed; then
+	remove_rcsd_link
+	exit 0
+fi
+
+echo "Configuring packages on first boot...."
+echo " (This may take several minutes. Please do not power off the machine.)"
+
+[ -e /etc/default/postinst ] && . /etc/default/postinst
+
+if [ "$POSTINST_LOGGING" = "1" ]; then
+	rm -f $LOGFILE
+	append_log=">>$LOGFILE 2>&1"
+fi
+
+exec_postinst_scriptlets() {
+	for i in `ls $pi_dir`; do
+		i=$pi_dir/$i
+		echo "Running postinst $i..."
+		[ "$POSTINST_LOGGING" = "1" ] && eval echo "Running postinst $i..." $append_log
+		if [ -x $i ]; then
+			(sh -c $i $append_log)
+			rm $i
+		else
+			echo "ERROR: postinst $i failed."
+			[ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log
+			remove_rcsd_link=0
+		fi
+	done
+}
+
+remove_rcsd_link=1
+if $pm_installed; then
+	case $pm in
+		"ipk")
+			eval opkg configure $append_log
+			;;
+
+		"deb")
+			eval dpkg --configure -a $append_log
+			;;
+	esac
+else
+	exec_postinst_scriptlets
+fi
+
+# since all postinstalls executed successfully, remove the rcS.d link
+if [ $remove_rcsd_link = 1 ]; then
+	remove_rcsd_link
+fi