vendor: create omnipreopt_script

without dexopt

Change-Id: I8323f36154f28f5514f7ef076e1e333b89c02b61
diff --git a/prebuilt/postinst/Android.bp b/prebuilt/postinst/Android.bp
new file mode 100644
index 0000000..fe6ab7d
--- /dev/null
+++ b/prebuilt/postinst/Android.bp
@@ -0,0 +1,12 @@
+sh_binary {
+    name: "omnipreopt_script",
+    src: "omnipreopt_script.sh",
+    // Let this depend on otapreopt, the chroot tool and the slot script,
+    // so we just have to mention one in a configuration.
+    required: [
+        "otapreopt",
+        "otapreopt_chroot",
+        "otapreopt_slot",
+    ],
+}
+
diff --git a/prebuilt/postinst/omnipreopt_script.sh b/prebuilt/postinst/omnipreopt_script.sh
new file mode 100644
index 0000000..1dbf84e
--- /dev/null
+++ b/prebuilt/postinst/omnipreopt_script.sh
@@ -0,0 +1,64 @@
+#!/system/bin/sh
+
+#
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This script will run as a postinstall step to drive otapreopt.
+
+TARGET_SLOT="$1"
+STATUS_FD="$2"
+
+# Maximum number of packages/steps.
+MAXIMUM_PACKAGES=1000
+
+# First ensure the system is booted. This is to work around issues when cmd would
+# infinitely loop trying to get a service manager (which will never come up in that
+# mode). b/30797145
+BOOT_PROPERTY_NAME="dev.bootcomplete"
+
+BOOT_COMPLETE=$(getprop $BOOT_PROPERTY_NAME)
+if [ "$BOOT_COMPLETE" != "1" ] ; then
+  echo "Error: boot-complete not detected."
+  # We must return 0 to not block sideload.
+  exit 0
+fi
+
+
+# Compute target slot suffix.
+# TODO: Once bootctl is not restricted, we should query from there. Or get this from
+#       update_engine as a parameter.
+if [ "$TARGET_SLOT" = "0" ] ; then
+  TARGET_SLOT_SUFFIX="_a"
+elif [ "$TARGET_SLOT" = "1" ] ; then
+  TARGET_SLOT_SUFFIX="_b"
+else
+  echo "Unknown target slot $TARGET_SLOT"
+  exit 1
+fi
+
+
+PREPARE=$(cmd otadexopt prepare)
+# Note: Ignore preparation failures. Step and done will fail and exit this.
+#       This is necessary to support suspends - the OTA service will keep
+#       the state around for us.
+
+PROGRESS=$(cmd otadexopt progress)
+print -u${STATUS_FD} "global_progress $PROGRESS"
+
+print -u${STATUS_FD} "global_progress 1.0"
+cmd otadexopt cleanup
+
+exit 0