Revert "Remove vendor partition"

Revert submission 2625691

Reason for revert: b/287283650

Reverted changes: /q/submissionid:2625691

Change-Id: I974c2b96230507d4360f4333608c22e219af9667
diff --git a/apex/sign_virt_apex.py b/apex/sign_virt_apex.py
index a42f5ec..3f3600d 100644
--- a/apex/sign_virt_apex.py
+++ b/apex/sign_virt_apex.py
@@ -427,21 +427,23 @@
 
     # unpacked files (will be unpacked from super.img below)
     system_a_img = os.path.join(unpack_dir.name, 'system_a.img')
+    vendor_a_img = os.path.join(unpack_dir.name, 'vendor_a.img')
 
     # re-sign super.img
     # 1. unpack super.img
-    # 2. resign system
-    # 3. repack super.img out of resigned system
+    # 2. resign system and vendor
+    # 3. repack super.img out of resigned system and vendor
     UnpackSuperImg(args, files['super.img'], unpack_dir.name)
     system_a_f = Async(AddHashTreeFooter, args, key, system_a_img)
-    partitions = {"system_a": system_a_img}
+    vendor_a_f = Async(AddHashTreeFooter, args, key, vendor_a_img)
+    partitions = {"system_a": system_a_img, "vendor_a": vendor_a_img}
     Async(MakeSuperImage, args, partitions,
-          files['super.img'], wait=[system_a_f])
+          files['super.img'], wait=[system_a_f, vendor_a_f])
 
-    # re-generate vbmeta from re-signed system_a.img
+    # re-generate vbmeta from re-signed {system_a, vendor_a}.img
     vbmeta_f = Async(MakeVbmetaImage, args, key, files['vbmeta.img'],
-                     images=[system_a_img],
-                     wait=[system_a_f])
+                     images=[system_a_img, vendor_a_img],
+                     wait=[system_a_f, vendor_a_f])
 
     vbmeta_bc_f = None
     if not args.do_not_update_bootconfigs:
@@ -473,6 +475,7 @@
     # unpacked files
     UnpackSuperImg(args, files['super.img'], unpack_dir.name)
     system_a_img = os.path.join(unpack_dir.name, 'system_a.img')
+    vendor_a_img = os.path.join(unpack_dir.name, 'vendor_a.img')
 
     # Read pubkey digest from the input key
     with tempfile.NamedTemporaryFile() as pubkey_file:
@@ -492,6 +495,7 @@
             continue
         if f == files['super.img']:
             Async(check_avb_pubkey, system_a_img)
+            Async(check_avb_pubkey, vendor_a_img)
         else:
             # Check pubkey for other files using avbtool
             Async(check_avb_pubkey, f)
diff --git a/microdroid/Android.bp b/microdroid/Android.bp
index 1395d30..2d05c45 100644
--- a/microdroid/Android.bp
+++ b/microdroid/Android.bp
@@ -16,6 +16,7 @@
     "sys",
 
     "system",
+    "vendor",
     "debug_ramdisk",
     "mnt",
     "data",
@@ -205,6 +206,21 @@
         "echo ro.product.cpu.abi=arm64-v8a) > $(out)",
 }
 
+// TODO(b/285855150): remove.
+android_filesystem {
+    name: "microdroid_vendor",
+    partition_name: "vendor",
+    use_avb: true,
+    avb_private_key: ":microdroid_sign_key",
+    avb_algorithm: "SHA256_RSA4096",
+    avb_hash_algorithm: "sha256",
+    file_contexts: ":microdroid_vendor_file_contexts.gen",
+    // For deterministic output, use fake_timestamp, hard-coded uuid
+    fake_timestamp: "1611569676",
+    // python -c "import uuid; print(uuid.uuid5(uuid.NAMESPACE_URL, 'www.android.com/avf/microdroid/vendor'))"
+    uuid: "156d40d7-8d8e-5c99-8913-ec82de549a70",
+}
+
 logical_partition {
     name: "microdroid_super",
     sparse: true,
@@ -214,6 +230,10 @@
             name: "system_a",
             filesystem: ":microdroid",
         },
+        {
+            name: "vendor_a",
+            filesystem: ":microdroid_vendor",
+        },
     ],
 }
 
@@ -297,6 +317,7 @@
     partition_name: "vbmeta",
     private_key: ":microdroid_sign_key",
     partitions: [
+        "microdroid_vendor",
         "microdroid",
     ],
 }
diff --git a/microdroid/fstab.microdroid b/microdroid/fstab.microdroid
index 9478c7c..25d82cc 100644
--- a/microdroid/fstab.microdroid
+++ b/microdroid/fstab.microdroid
@@ -1 +1,2 @@
 system /system ext4 noatime,ro,errors=panic wait,slotselect,avb=vbmeta,first_stage_mount,logical
+vendor /vendor ext4 noatime,ro,errors=panic wait,slotselect,avb=vbmeta,first_stage_mount,logical