Merge "initial GKI boot.img support" into rvc-dev
diff --git a/core/Makefile b/core/Makefile
index 3affee8..1c39fe8 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -3683,8 +3683,12 @@
 check_vintf_has_vendor := true
 check_vintf_vendor_log := $(intermediates)/check_vintf_vendor_log
 check_vintf_all_deps += $(check_vintf_vendor_log)
+# Check vendor SKU=(empty) case when:
+# - DEVICE_MANIFEST_FILE is not empty; OR
+# - DEVICE_MANIFEST_FILE is empty AND DEVICE_MANIFEST_SKUS is empty (only vendor manifest fragments are used)
 $(check_vintf_vendor_log): PRIVATE_VENDOR_SKUS := \
-  $(if $(DEVICE_MANIFEST_FILE),EMPTY_VENDOR_SKU_PLACEHOLDER) \
+  $(if $(DEVICE_MANIFEST_FILE),EMPTY_VENDOR_SKU_PLACEHOLDER,\
+    $(if $(DEVICE_MANIFEST_SKUS),,EMPTY_VENDOR_SKU_PLACEHOLDER)) \
   $(DEVICE_MANIFEST_SKUS)
 $(check_vintf_vendor_log): $(HOST_OUT_EXECUTABLES)/checkvintf $(check_vintf_vendor_deps)
 	$(foreach vendor_sku,$(PRIVATE_VENDOR_SKUS), \
@@ -3784,11 +3788,19 @@
 
 $(check_vintf_compatible_log): PRIVATE_CHECK_VINTF_ARGS := $(check_vintf_compatible_args)
 $(check_vintf_compatible_log): PRIVATE_CHECK_VINTF_DEPS := $(check_vintf_compatible_deps)
+# Check ODM SKU=(empty) case when:
+# - ODM_MANIFEST_FILES is not empty; OR
+# - ODM_MANIFEST_FILES is empty AND ODM_MANIFEST_SKUS is empty (only ODM manifest fragments are used)
 $(check_vintf_compatible_log): PRIVATE_ODM_SKUS := \
-  $(if $(ODM_MANIFEST_FILES),EMPTY_ODM_SKU_PLACEHOLDER) \
+  $(if $(ODM_MANIFEST_FILES),EMPTY_ODM_SKU_PLACEHOLDER,\
+    $(if $(ODM_MANIFEST_SKUS),,EMPTY_ODM_SKU_PLACEHOLDER)) \
   $(ODM_MANIFEST_SKUS)
+# Check vendor SKU=(empty) case when:
+# - DEVICE_MANIFEST_FILE is not empty; OR
+# - DEVICE_MANIFEST_FILE is empty AND DEVICE_MANIFEST_SKUS is empty (only vendor manifest fragments are used)
 $(check_vintf_compatible_log): PRIVATE_VENDOR_SKUS := \
-  $(if $(DEVICE_MANIFEST_FILE),EMPTY_VENDOR_SKU_PLACEHOLDER) \
+  $(if $(DEVICE_MANIFEST_FILE),EMPTY_VENDOR_SKU_PLACEHOLDER,\
+    $(if $(DEVICE_MANIFEST_SKUS),,EMPTY_VENDOR_SKU_PLACEHOLDER)) \
   $(DEVICE_MANIFEST_SKUS)
 $(check_vintf_compatible_log): $(HOST_OUT_EXECUTABLES)/checkvintf $(check_vintf_compatible_deps)
 	@echo -n -e 'Deps: \n  ' > $@
diff --git a/rbesetup.sh b/rbesetup.sh
new file mode 100644
index 0000000..7e9b2ea
--- /dev/null
+++ b/rbesetup.sh
@@ -0,0 +1,25 @@
+source build/envsetup.sh
+
+# This function prefixes the given command with appropriate variables needed
+# for the build to be executed with RBE.
+function use_rbe() {
+  local RBE_LOG_DIR="/tmp"
+  local RBE_BINARIES_DIR="prebuilts/remoteexecution-client/latest/"
+  local DOCKER_IMAGE="gcr.io/androidbuild-re-dockerimage/android-build-remoteexec-image@sha256:582efb38f0c229ea39952fff9e132ccbe183e14869b39888010dacf56b360d62"
+
+  # Do not set an invocation-ID and let reproxy auto-generate one.
+  USE_RBE="true" \
+  FLAG_server_address="unix:///tmp/reproxy_$RANDOM.sock" \
+  FLAG_exec_root="$(gettop)" \
+  FLAG_platform="container-image=docker://${DOCKER_IMAGE}" \
+  RBE_use_application_default_credentials="true" \
+  RBE_log_dir="${RBE_LOG_DIR}" \
+  RBE_reproxy_wait_seconds="20" \
+  RBE_output_dir="${RBE_LOG_DIR}" \
+  RBE_log_path="text://${RBE_LOG_DIR}/reproxy_log.txt" \
+  RBE_CXX_EXEC_STRATEGY="remote_local_fallback" \
+  RBE_cpp_dependency_scanner_plugin="${RBE_BINARIES_DIR}/dependency_scanner_go_plugin.so" \
+  RBE_DIR=${RBE_BINARIES_DIR} \
+  RBE_re_proxy="${RBE_BINARIES_DIR}/reproxy" \
+  $@
+}
diff --git a/target/board/Android.mk b/target/board/Android.mk
index ffc9baf..9edc85c 100644
--- a/target/board/Android.mk
+++ b/target/board/Android.mk
@@ -72,9 +72,9 @@
 GEN := $$(local-generated-sources-dir)/manifest_$(1).xml
 $$(GEN): PRIVATE_SRC_FILES := $$(my_fragment_files)
 $$(GEN): $$(my_fragment_files) $$(HOST_OUT_EXECUTABLES)/assemble_vintf
-	BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \
-	PRODUCT_ENFORCE_VINTF_MANIFEST=$(PRODUCT_ENFORCE_VINTF_MANIFEST) \
-	PRODUCT_SHIPPING_API_LEVEL=$(PRODUCT_SHIPPING_API_LEVEL) \
+	BOARD_SEPOLICY_VERS=$$(BOARD_SEPOLICY_VERS) \
+	PRODUCT_ENFORCE_VINTF_MANIFEST=$$(PRODUCT_ENFORCE_VINTF_MANIFEST) \
+	PRODUCT_SHIPPING_API_LEVEL=$$(PRODUCT_SHIPPING_API_LEVEL) \
 	$$(HOST_OUT_EXECUTABLES)/assemble_vintf -o $$@ \
 		-i $$(call normalize-path-list,$$(PRIVATE_SRC_FILES))
 
diff --git a/tools/releasetools/check_target_files_vintf.py b/tools/releasetools/check_target_files_vintf.py
index 24c6dcb..b3d491f 100755
--- a/tools/releasetools/check_target_files_vintf.py
+++ b/tools/releasetools/check_target_files_vintf.py
@@ -68,11 +68,12 @@
 
 def GetArgsForSkus(info_dict):
   odm_skus = info_dict.get('vintf_odm_manifest_skus', '').strip().split()
-  if info_dict.get('vintf_include_empty_odm_sku', '') == "true":
+  if info_dict.get('vintf_include_empty_odm_sku', '') == "true" or not odm_skus:
     odm_skus += ['']
 
   vendor_skus = info_dict.get('vintf_vendor_manifest_skus', '').strip().split()
-  if info_dict.get('vintf_include_empty_vendor_sku', '') == "true":
+  if info_dict.get('vintf_include_empty_vendor_sku', '') == "true" or \
+      not vendor_skus:
     vendor_skus += ['']
 
   return [['--property', 'ro.boot.product.hardware.sku=' + odm_sku,