Merge "Create trendy team for ravenwood" into main
diff --git a/ci/build_metadata b/ci/build_metadata
index a8eb65d..cd011c8 100755
--- a/ci/build_metadata
+++ b/ci/build_metadata
@@ -20,6 +20,9 @@
export TARGET_RELEASE=trunk_staging
export TARGET_BUILD_VARIANT=eng
-build/soong/bin/m dist \
+TARGETS=(
all_teams
+ release_config_metadata
+)
+build/soong/bin/m dist ${TARGETS[@]}
diff --git a/core/Makefile b/core/Makefile
index 96d0357..81ae6f7 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -3567,14 +3567,24 @@
file_list_diff := $(HOST_OUT_EXECUTABLES)/file_list_diff$(HOST_EXECUTABLE_SUFFIX)
system_file_diff_timestamp := $(systemimage_intermediates)/file_diff.timestamp
+# The build configuration to build the REL version may have more files to allow.
+# Use allowlist_next in addition to the allowlist in this case.
+system_file_diff_allowlist_next :=
+ifeq (REL,$(PLATFORM_VERSION_CODENAME))
+system_file_diff_allowlist_next := $(ALL_MODULES.system_image_diff_allowlist_next.INSTALLED)
+$(system_file_diff_timestamp): PRIVATE_ALLOWLIST_NEXT := $(system_file_diff_allowlist_next)
+endif
$(system_file_diff_timestamp): \
$(systemimage_intermediates)/file_list.txt \
$(ALL_MODULES.$(PRODUCT_SOONG_DEFINED_SYSTEM_IMAGE).FILESYSTEM_FILELIST) \
$(ALL_MODULES.system_image_diff_allowlist.INSTALLED) \
+ $(system_file_diff_allowlist_next) \
$(file_list_diff)
$(file_list_diff) $(systemimage_intermediates)/file_list.txt \
$(ALL_MODULES.$(PRODUCT_SOONG_DEFINED_SYSTEM_IMAGE).FILESYSTEM_FILELIST) \
- $(ALL_MODULES.system_image_diff_allowlist.INSTALLED) $(PRODUCT_SOONG_DEFINED_SYSTEM_IMAGE)
+ $(PRODUCT_SOONG_DEFINED_SYSTEM_IMAGE) \
+ --allowlists $(ALL_MODULES.system_image_diff_allowlist.INSTALLED) \
+ $(PRIVATE_ALLOWLIST_NEXT)
touch $@
$(BUILT_SYSTEMIMAGE): $(system_file_diff_timestamp)
@@ -4000,6 +4010,21 @@
$(filter $(TARGET_OUT_PRODUCT)/%,\
$(ALL_DEFAULT_INSTALLED_MODULES))
+# Install product/etc/linker.config.pb with PRODUCT_PRODUCT_LINKER_CONFIG_FRAGMENTS
+product_linker_config_file := $(TARGET_OUT_PRODUCT)/etc/linker.config.pb
+$(product_linker_config_file): private_linker_config_fragments := $(PRODUCT_PRODUCT_LINKER_CONFIG_FRAGMENTS)
+$(product_linker_config_file): $(INTERNAL_PRODUCTIMAGE_FILES) | $(HOST_OUT_EXECUTABLES)/conv_linker_config
+ @echo Creating linker config: $@
+ @mkdir -p $(dir $@)
+ @rm -f $@
+ $(HOST_OUT_EXECUTABLES)/conv_linker_config proto \
+ --source $(call normalize-path-list,$(private_linker_config_fragments)) \
+ --output $@
+$(call define declare-1p-target,$(product_linker_config_file),)
+INTERNAL_PRODUCTIMAGE_FILES += $(product_linker_config_file)
+ALL_DEFAULT_INSTALLED_MODULES += $(product_linker_config_file)
+
+
INSTALLED_FILES_FILE_PRODUCT := $(PRODUCT_OUT)/installed-files-product.txt
INSTALLED_FILES_JSON_PRODUCT := $(INSTALLED_FILES_FILE_PRODUCT:.txt=.json)
$(INSTALLED_FILES_FILE_PRODUCT): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_PRODUCT)
@@ -7975,9 +8000,14 @@
# Desktop pack update image hook.
ifneq (,$(strip $(PACK_DESKTOP_UPDATE_IMAGE)))
PACK_UPDATE_IMAGE_TARGET := $(PRODUCT_OUT)/android-desktop_update_image.bin
+PACK_UPDATE_IMAGE_ARGS := --noarchive --update
+
+ifneq (,$(strip $(PACK_UPDATE_IMAGE_EXPERIMENTAL)))
+PACK_UPDATE_IMAGE_ARGS += --experimental
+endif # PACK_UPDATE_IMAGE_EXPERIMENTAL
$(PACK_UPDATE_IMAGE_TARGET): $(IMAGES) $(PACK_IMAGE_SCRIPT)
- $(PACK_IMAGE_SCRIPT) --out_dir $(PRODUCT_OUT) --noarchive --update
+ $(PACK_IMAGE_SCRIPT) --out_dir $(PRODUCT_OUT) $(PACK_UPDATE_IMAGE_ARGS)
PACKED_UPDATE_IMAGE_ARCHIVE_TARGET := $(PACK_UPDATE_IMAGE_TARGET).gz
diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk
index f66bdd9..fccc2a5 100644
--- a/core/android_soong_config_vars.mk
+++ b/core/android_soong_config_vars.mk
@@ -30,9 +30,12 @@
$(call soong_config_set_bool,ANDROID,BOARD_USES_RECOVERY_AS_BOOT,$(BOARD_USES_RECOVERY_AS_BOOT))
$(call soong_config_set_bool,ANDROID,BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT,$(BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT))
$(call add_soong_config_var,ANDROID,CHECK_DEV_TYPE_VIOLATIONS)
+$(call soong_config_set_bool,ANDROID,HAS_BOARD_SYSTEM_EXT_PREBUILT_DIR,$(if $(BOARD_SYSTEM_EXT_PREBUILT_DIR),true,false))
+$(call soong_config_set_bool,ANDROID,HAS_BOARD_PRODUCT_PREBUILT_DIR,$(if $(BOARD_PRODUCT_PREBUILT_DIR),true,false))
$(call add_soong_config_var,ANDROID,PLATFORM_SEPOLICY_VERSION)
$(call add_soong_config_var,ANDROID,PLATFORM_SEPOLICY_COMPAT_VERSIONS)
$(call add_soong_config_var,ANDROID,PRODUCT_INSTALL_DEBUG_POLICY_TO_SYSTEM_EXT)
+$(call soong_config_set_bool,ANDROID,RELEASE_BOARD_API_LEVEL_FROZEN,$(RELEASE_BOARD_API_LEVEL_FROZEN))
$(call add_soong_config_var,ANDROID,TARGET_DYNAMIC_64_32_DRMSERVER)
$(call add_soong_config_var,ANDROID,TARGET_ENABLE_MEDIADRM_64)
$(call add_soong_config_var,ANDROID,TARGET_DYNAMIC_64_32_MEDIASERVER)
@@ -204,3 +207,15 @@
# Export target_board_platform to soong for hardware/google/graphics/common/libmemtrack:memtrack.$(TARGET_BOARD_PLATFORM)
$(call soong_config_set,ANDROID,target_board_platform,$(TARGET_BOARD_PLATFORM))
+
+# Export board_uses_scaler_m2m1shot and board_uses_align_restriction to soong for hardware/google/graphics/common/libscaler:libexynosscaler
+$(call soong_config_set_bool,google_graphics,board_uses_scaler_m2m1shot,$(if $(filter true,$(BOARD_USES_SCALER_M2M1SHOT)),true,false))
+$(call soong_config_set_bool,google_graphics,board_uses_align_restriction,$(if $(filter true,$(BOARD_USES_ALIGN_RESTRICTION)),true,false))
+
+# Export video_codec variables to soong for exynos modules
+$(call soong_config_set,video_codec,target_soc_name,$(TARGET_SOC_NAME))
+$(call soong_config_set_bool,video_codec,board_use_codec2_hidl_1_2,$(if $(filter true,$(BOARD_USE_CODEC2_HIDL_1_2)),true,false))
+$(call soong_config_set_bool,video_codec,board_support_mfc_enc_bt2020,$(if $(filter true,$(BOARD_SUPPORT_MFC_ENC_BT2020)),true,false))
+$(call soong_config_set_bool,video_codec,board_support_flexible_p010,$(if $(filter true,$(BOARD_SUPPORT_FLEXIBLE_P010)),true,false))
+$(call soong_config_set,video_codec,board_support_mfc_version,$(BOARD_SUPPORT_MFC_VERSION))
+$(call soong_config_set_bool,video_codec,board_use_codec2_aidl,$(if $(BOARD_USE_CODEC2_AIDL),true,false))
diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk
index c0f2c68..ab2d5c1 100644
--- a/core/config_sanitizers.mk
+++ b/core/config_sanitizers.mk
@@ -284,9 +284,9 @@
ifneq ($(filter memtag_stack,$(my_sanitize)),)
my_cflags += -fsanitize=memtag-stack
my_ldflags += -fsanitize=memtag-stack
- my_cflags += -Xclang -target-feature -Xclang +mte
- my_ldflags += -Xclang -target-feature -Xclang +mte
- my_asflags += -Xclang -target-feature -Xclang +mte
+ my_cflags += -march=armv8a+memtag
+ my_ldflags += -march=armv8a+memtag
+ my_asflags += -march=armv8a+memtag
my_sanitize := $(filter-out memtag_stack,$(my_sanitize))
endif
diff --git a/core/main.mk b/core/main.mk
index 5bbe1b1..c59de8e 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -981,7 +981,8 @@
# Returns modules included automatically as a result of certain BoardConfig
# variables being set.
define auto-included-modules
- llndk_in_system \
+ $(filter-out $(LLNDK_MOVED_TO_APEX_LIBRARIES),$(LLNDK_LIBRARIES)) \
+ llndk.libraries.txt \
$(if $(DEVICE_MANIFEST_FILE),vendor_manifest.xml) \
$(if $(DEVICE_MANIFEST_SKUS),$(foreach sku, $(DEVICE_MANIFEST_SKUS),vendor_manifest_$(sku).xml)) \
$(if $(ODM_MANIFEST_FILES),odm_manifest.xml) \
diff --git a/core/product.mk b/core/product.mk
index 93a656d..8fc40f8 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -422,8 +422,9 @@
# If true, the cgroup v2 hierarchy will be split into apps/system subtrees
_product_single_value_vars += PRODUCT_CGROUP_V2_SYS_APP_ISOLATION_ENABLED
-# List of .json files to be merged/compiled into vendor/etc/linker.config.pb
+# List of .json files to be merged/compiled into vendor/etc/linker.config.pb and product/etc/linker.config.pb
_product_list_vars += PRODUCT_VENDOR_LINKER_CONFIG_FRAGMENTS
+_product_list_vars += PRODUCT_PRODUCT_LINKER_CONFIG_FRAGMENTS
# Whether to use userfaultfd GC.
# Possible values are:
diff --git a/core/project_definitions.mk b/core/project_definitions.mk
index 5728b67..184b03e 100644
--- a/core/project_definitions.mk
+++ b/core/project_definitions.mk
@@ -22,3 +22,6 @@
# Include definitions for prebuilt SDK, if present.
#
-include prebuilts/sdk/current/definitions.mk
+
+# SDV-specific config.
+-include system/software_defined_vehicle/platform/config.mk
diff --git a/core/robolectric_test_config_template.xml b/core/robolectric_test_config_template.xml
index b1d0c2f..257c820 100644
--- a/core/robolectric_test_config_template.xml
+++ b/core/robolectric_test_config_template.xml
@@ -33,5 +33,15 @@
<option name="java-flags" value="--add-opens=java.base/jdk.internal.util.random=ALL-UNNAMED"/>
<!-- b/251387255 -->
<option name="java-flags" value="--add-opens=java.base/java.io=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=java.base/java.net=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=java.base/java.nio=ALL-UNNAMED"/> <!-- required for ShadowVMRuntime -->
+ <option name="java-flags" value="--add-opens=java.base/java.security=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=java.base/java.text=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=java.base/java.util=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=java.base/jdk.internal.access=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=java.desktop/java.awt.font=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED"/>
+ <option name="java-flags" value="--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"/>
</test>
</configuration>
diff --git a/core/soong_config.mk b/core/soong_config.mk
index 0421e19..8c57ce6 100644
--- a/core/soong_config.mk
+++ b/core/soong_config.mk
@@ -316,6 +316,8 @@
$(call add_json_str, ProductManufacturer, $(PRODUCT_MANUFACTURER))
$(call add_json_str, ProductBrand, $(PRODUCT_BRAND))
+$(call add_json_str, ProductDevice, $(PRODUCT_DEVICE))
+$(call add_json_str, ProductModel, $(PRODUCT_MODEL))
$(call add_json_str, ReleaseVersion, $(_RELEASE_VERSION))
$(call add_json_list, ReleaseAconfigValueSets, $(RELEASE_ACONFIG_VALUE_SETS))
@@ -348,6 +350,8 @@
$(call add_json_list, ProductPropFiles, $(TARGET_PRODUCT_PROP))
$(call add_json_list, OdmPropFiles, $(TARGET_ODM_PROP))
+$(call add_json_str, ExtraAllowedDepsTxt, $(EXTRA_ALLOWED_DEPS_TXT))
+
# Do not set ArtTargetIncludeDebugBuild into any value if PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD is not set,
# to have the same behavior from runtime_libart.mk.
ifneq ($(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD),)
@@ -364,6 +368,8 @@
$(call add_json_list, BoardAvbSystemAddHashtreeFooterArgs, $(BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS))
$(call add_json_bool, BoardAvbEnable, $(filter true,$(BOARD_AVB_ENABLE)))
+$(call add_json_str, AdbKeys, $(PRODUCT_ADB_KEYS))
+
$(call add_json_map, PartitionVarsForSoongMigrationOnlyDoNotUse)
$(call add_json_str, ProductDirectory, $(dir $(INTERNAL_PRODUCT)))
diff --git a/core/tasks/prebuilt_tradefed.mk b/core/tasks/prebuilt_tradefed.mk
new file mode 100644
index 0000000..96c57d5
--- /dev/null
+++ b/core/tasks/prebuilt_tradefed.mk
@@ -0,0 +1,22 @@
+# Copyright (C) 2020 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.
+
+ifeq (,$(wildcard tools/tradefederation/core))
+.PHONY: tradefed-core
+tradefed-core: tradefed atest_tradefed.sh
+.PHONY: tradefed-all
+tradefed-all: tradefed atest_tradefed.sh
+
+$(call dist-for-goals, tradefed, $(HOST_OUT)/etc/tradefed.zip)
+endif
diff --git a/core/tasks/tools/update_bootloader_radio_image.mk b/core/tasks/tools/update_bootloader_radio_image.mk
index 0ebf247..adb86ea 100644
--- a/core/tasks/tools/update_bootloader_radio_image.mk
+++ b/core/tasks/tools/update_bootloader_radio_image.mk
@@ -15,3 +15,12 @@
ifeq ($(USES_DEVICE_GOOGLE_ZUMA),true)
-include vendor/google_devices/zuma/prebuilts/misc_bins/update_bootloader_radio_image.mk
endif
+ifeq ($(USES_DEVICE_GOOGLE_ZUMAPRO),true)
+ -include vendor/google_devices/zumapro/prebuilts/misc_bins/update_bootloader_radio_image.mk
+endif
+ifeq ($(USES_DEVICE_GOOGLE_LAGUNA),true)
+ -include vendor/google_devices/laguna/prebuilts/misc_bins/update_bootloader_radio_image.mk
+endif
+ifeq ($(USES_DEVICE_GOOGLE_MALIBU),true)
+ -include vendor/google_devices/malibu/prebuilts/misc_bins/update_bootloader_radio_image.mk
+endif
diff --git a/shell_utils.sh b/shell_utils.sh
index c4a6756..9053c42 100644
--- a/shell_utils.sh
+++ b/shell_utils.sh
@@ -178,11 +178,11 @@
echo -n "${color_failed}#### failed to build some targets "
fi
if [ $hours -gt 0 ] ; then
- printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
+ printf "(%02d:%02d:%02d (hh:mm:ss))" $hours $mins $secs
elif [ $mins -gt 0 ] ; then
- printf "(%02g:%02g (mm:ss))" $mins $secs
+ printf "(%02d:%02d (mm:ss))" $mins $secs
elif [ $secs -gt 0 ] ; then
- printf "(%s seconds)" $secs
+ printf "(%d seconds)" $secs
fi
echo " ####${color_reset}"
echo
diff --git a/target/product/base_system.mk b/target/product/base_system.mk
index 563511f..74ed82d 100644
--- a/target/product/base_system.mk
+++ b/target/product/base_system.mk
@@ -504,6 +504,10 @@
unwind_reg_info \
unwind_symbols \
+# For Remotely Provisioned Certificate Processor
+PRODUCT_SYSTEM_PROPERTIES += \
+ remote_provisioning.use_cert_processor=false
+
# The set of packages whose code can be loaded by the system server.
PRODUCT_SYSTEM_SERVER_APPS += \
SettingsProvider \
diff --git a/target/product/base_vendor.mk b/target/product/base_vendor.mk
index a80e0b3..3f85941 100644
--- a/target/product/base_vendor.mk
+++ b/target/product/base_vendor.mk
@@ -17,7 +17,6 @@
# Base modules and settings for recovery.
PRODUCT_PACKAGES += \
adbd.recovery \
- android.hardware.health@2.0-impl-default.recovery \
build_flag_vendor \
cgroups.recovery.json \
charger.recovery \
diff --git a/target/product/generic/Android.bp b/target/product/generic/Android.bp
index bf82ff1..f86774b 100644
--- a/target/product/generic/Android.bp
+++ b/target/product/generic/Android.bp
@@ -72,6 +72,53 @@
target: "/storage/self/primary",
name: "sdcard",
},
+ {
+ target: "/product/etc/security/adb_keys",
+ name: "adb_keys",
+ },
+ // For Treble Generic System Image (GSI), system-as-root GSI needs to work on both devices with
+ // and without /odm partition. Those symlinks are for devices without /odm partition. For
+ // devices with /odm partition, mount odm.img under /odm will hide those symlinks.
+ {
+ target: "/vendor/odm/app",
+ name: "odm/app",
+ },
+ {
+ target: "/vendor/odm/bin",
+ name: "odm/bin",
+ },
+ {
+ target: "/vendor/odm/etc",
+ name: "odm/etc",
+ },
+ {
+ target: "/vendor/odm/firmware",
+ name: "odm/firmware",
+ },
+ {
+ target: "/vendor/odm/framework",
+ name: "odm/framework",
+ },
+ {
+ target: "/vendor/odm/lib",
+ name: "odm/lib",
+ },
+ {
+ target: "/vendor/odm/lib64",
+ name: "odm/lib64",
+ },
+ {
+ target: "/vendor/odm/overlay",
+ name: "odm/overlay",
+ },
+ {
+ target: "/vendor/odm/priv-app",
+ name: "odm/priv-app",
+ },
+ {
+ target: "/vendor/odm/usr",
+ name: "odm/usr",
+ },
]
filegroup {
@@ -314,6 +361,11 @@
],
libs: [":framework-res{.export-package.apk}"],
},
+ type: "erofs",
+ erofs: {
+ compressor: "lz4hc,9",
+ compress_hints: "erofs_compress_hints.txt",
+ },
build_logtags: true,
gen_aconfig_flags_pb: true,
@@ -401,7 +453,6 @@
"init.zygote32.rc",
"init.zygote64.rc",
"init.zygote64_32.rc",
- "init_first_stage", // for boot partition
"initial-package-stopped-states.xml",
"input",
"installd",
@@ -415,7 +466,6 @@
"ld.mc",
"llkd", // base_system
"lmkd", // base_system
- "local_time.default", // handheld_vendo
"locksettings", // base_system
"logcat", // base_system
"logd", // base_system
@@ -477,7 +527,6 @@
"sm", // base_system
"snapshotctl", // base_system
"snapuserd", // base_system
- "snapuserd_ramdisk", // ramdisk
"storaged", // base_system
"surfaceflinger", // base_system
"svc", // base_system
@@ -577,6 +626,7 @@
"ContactsProvider", // base_system
"CredentialManager", // handheld_system
"DeviceAsWebcam", // handheld_system
+ "DeviceDiagnostics", // handheld_system - internal
"DocumentsUI", // handheld_system
"DownloadProvider", // base_system
"DownloadProviderUi", // handheld_system
@@ -602,7 +652,6 @@
"PacProcessor", // handheld_system
"PackageInstaller", // base_system
"PartnerBookmarksProvider", // generic_system
- "PhotoTable", // full_base
"PrintRecommendationService", // handheld_system
"PrintSpooler", // handheld_system
"ProxyHandler", // handheld_system
diff --git a/target/product/generic/erofs_compress_hints.txt b/target/product/generic/erofs_compress_hints.txt
new file mode 100644
index 0000000..8b2a711
--- /dev/null
+++ b/target/product/generic/erofs_compress_hints.txt
@@ -0,0 +1 @@
+0 .*\.apex$
\ No newline at end of file
diff --git a/target/product/generic_system.mk b/target/product/generic_system.mk
index 0a09eb1..b9a623d 100644
--- a/target/product/generic_system.mk
+++ b/target/product/generic_system.mk
@@ -152,4 +152,5 @@
$(call require-artifacts-in-path, $(_my_paths), $(_my_allowed_list))
# Product config map to toggle between sources and prebuilts of required mainline modules
+PRODUCT_RELEASE_CONFIG_MAPS += $(wildcard build/release/gms_mainline/required/release_config_map.textproto)
PRODUCT_RELEASE_CONFIG_MAPS += $(wildcard vendor/google_shared/build/release/gms_mainline/required/release_config_map.textproto)
diff --git a/target/product/go_defaults.mk b/target/product/go_defaults.mk
index c928530..ccc4f36 100644
--- a/target/product/go_defaults.mk
+++ b/target/product/go_defaults.mk
@@ -18,6 +18,7 @@
$(call inherit-product, build/make/target/product/go_defaults_common.mk)
# Product config map to toggle between sources and prebuilts of required mainline modules
+PRODUCT_RELEASE_CONFIG_MAPS += $(wildcard build/release/gms_mainline_go/required/release_config_map.textproto)
PRODUCT_RELEASE_CONFIG_MAPS += $(wildcard vendor/google_shared/build/release/gms_mainline_go/required/release_config_map.textproto)
# Add the system properties.
diff --git a/target/product/gsi/Android.bp b/target/product/gsi/Android.bp
index 45ba143..f18f35a 100644
--- a/target/product/gsi/Android.bp
+++ b/target/product/gsi/Android.bp
@@ -46,3 +46,18 @@
installed_location: "etc/init/config",
symlink_target: "/system/system_ext/etc/init/config",
}
+
+// init.gsi.rc, GSI-specific init script.
+prebuilt_etc {
+ name: "init.gsi.rc",
+ src: "init.gsi.rc",
+ system_ext_specific: true,
+ relative_install_path: "init",
+}
+
+prebuilt_etc {
+ name: "init.vndk-nodef.rc",
+ src: "init.vndk-nodef.rc",
+ system_ext_specific: true,
+ relative_install_path: "gsi",
+}
diff --git a/target/product/gsi/Android.mk b/target/product/gsi/Android.mk
index 36897fe..cdd5008 100644
--- a/target/product/gsi/Android.mk
+++ b/target/product/gsi/Android.mk
@@ -121,48 +121,3 @@
LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
LOCAL_REQUIRED_MODULES := $(foreach vndk_ver,$(PRODUCT_EXTRA_VNDK_VERSIONS),com.android.vndk.v$(vndk_ver))
include $(BUILD_PHONY_PACKAGE)
-
-#####################################################################
-# Define Phony module to install LLNDK modules which are installed in
-# the system image
-include $(CLEAR_VARS)
-LOCAL_MODULE := llndk_in_system
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
-
-# Filter LLNDK libs moved to APEX to avoid pulling them into /system/LIB
-LOCAL_REQUIRED_MODULES := \
- $(filter-out $(LLNDK_MOVED_TO_APEX_LIBRARIES),$(LLNDK_LIBRARIES)) \
- llndk.libraries.txt
-
-
-include $(BUILD_PHONY_PACKAGE)
-
-#####################################################################
-# init.gsi.rc, GSI-specific init script.
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := init.gsi.rc
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-LOCAL_MODULE_CLASS := ETC
-LOCAL_SYSTEM_EXT_MODULE := true
-LOCAL_MODULE_RELATIVE_PATH := init
-
-include $(BUILD_PREBUILT)
-
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := init.vndk-nodef.rc
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-LOCAL_MODULE_CLASS := ETC
-LOCAL_SYSTEM_EXT_MODULE := true
-LOCAL_MODULE_RELATIVE_PATH := gsi
-
-include $(BUILD_PREBUILT)
diff --git a/target/product/security/Android.bp b/target/product/security/Android.bp
index 0d7b35e..69d19a3 100644
--- a/target/product/security/Android.bp
+++ b/target/product/security/Android.bp
@@ -37,3 +37,7 @@
relative_install_path: "security",
filename: "otacerts.zip",
}
+
+adb_keys {
+ name: "adb_keys",
+}
diff --git a/target/product/security/Android.mk b/target/product/security/Android.mk
deleted file mode 100644
index 138e5bb..0000000
--- a/target/product/security/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-#######################################
-# adb key, if configured via PRODUCT_ADB_KEYS
-ifdef PRODUCT_ADB_KEYS
- ifneq ($(filter eng userdebug,$(TARGET_BUILD_VARIANT)),)
- include $(CLEAR_VARS)
- LOCAL_MODULE := adb_keys
- LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
- LOCAL_LICENSE_CONDITIONS := notice
- LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
- LOCAL_MODULE_CLASS := ETC
- LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_ETC)/security
- LOCAL_PREBUILT_MODULE_FILE := $(PRODUCT_ADB_KEYS)
- include $(BUILD_PREBUILT)
- endif
-endif
diff --git a/tools/aconfig/aconfig/src/codegen/java.rs b/tools/aconfig/aconfig/src/codegen/java.rs
index a34166d..47d4042 100644
--- a/tools/aconfig/aconfig/src/codegen/java.rs
+++ b/tools/aconfig/aconfig/src/codegen/java.rs
@@ -531,15 +531,16 @@
private static boolean enabledRw = true;
private void init() {
StorageInternalReader reader = null;
+ boolean foundPackage = true;
try {
reader = new StorageInternalReader("system", "com.android.aconfig.test");
- disabledRw = reader.getBooleanFlagValue(1);
- disabledRwExported = reader.getBooleanFlagValue(2);
- enabledRw = reader.getBooleanFlagValue(8);
- disabledRwInOtherNamespace = reader.getBooleanFlagValue(3);
} catch (Exception e) {
- throw new RuntimeException("Cannot read flag in codegen", e);
+ foundPackage = false;
}
+ disabledRw = foundPackage ? reader.getBooleanFlagValue(1) : false;
+ disabledRwExported = foundPackage ? reader.getBooleanFlagValue(2) : false;
+ enabledRw = foundPackage ? reader.getBooleanFlagValue(8) : true;
+ disabledRwInOtherNamespace = foundPackage ? reader.getBooleanFlagValue(3) : false;
isCached = true;
}
private void load_overrides_aconfig_test() {
diff --git a/tools/aconfig/aconfig/src/codegen/rust.rs b/tools/aconfig/aconfig/src/codegen/rust.rs
index 7bc34d6..d318b96 100644
--- a/tools/aconfig/aconfig/src/codegen/rust.rs
+++ b/tools/aconfig/aconfig/src/codegen/rust.rs
@@ -295,7 +295,10 @@
get_boolean_flag_value(&flag_val_map, offset + 1)
.map_err(|err| format!("failed to get flag: {err}"))
},
- None => Err("no context found for package 'com.android.aconfig.test'".to_string())
+ None => {
+ log!(Level::Error, "no context found for package com.android.aconfig.test");
+ Ok(false)
+ }
}
})
});
@@ -339,7 +342,10 @@
get_boolean_flag_value(&flag_val_map, offset + 2)
.map_err(|err| format!("failed to get flag: {err}"))
},
- None => Err("no context found for package 'com.android.aconfig.test'".to_string())
+ None => {
+ log!(Level::Error, "no context found for package com.android.aconfig.test");
+ Ok(false)
+ }
}
})
});
@@ -383,7 +389,10 @@
get_boolean_flag_value(&flag_val_map, offset + 3)
.map_err(|err| format!("failed to get flag: {err}"))
},
- None => Err("no context found for package 'com.android.aconfig.test'".to_string())
+ None => {
+ log!(Level::Error, "no context found for package com.android.aconfig.test");
+ Ok(false)
+ }
}
})
});
@@ -428,7 +437,10 @@
get_boolean_flag_value(&flag_val_map, offset + 8)
.map_err(|err| format!("failed to get flag: {err}"))
},
- None => Err("no context found for package 'com.android.aconfig.test'".to_string())
+ None => {
+ log!(Level::Error, "no context found for package com.android.aconfig.test");
+ Ok(true)
+ }
}
})
});
diff --git a/tools/aconfig/aconfig/templates/FeatureFlags.java.template b/tools/aconfig/aconfig/templates/FeatureFlags.java.template
index 38c8f13..d2799b2 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlags.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlags.java.template
@@ -19,4 +19,4 @@
{{ -endif }}
boolean {item.method_name}();
{{ -endfor }}
-}
\ No newline at end of file
+}
diff --git a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
index d1cf191..26d3069 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
@@ -36,18 +36,19 @@
{{ if not library_exported }}
private void init() \{
StorageInternalReader reader = null;
+ boolean foundPackage = true;
try \{
reader = new StorageInternalReader("{container}", "{package_name}");
-{{ for namespace_with_flags in namespace_flags }}
-{{ -for flag in namespace_with_flags.flags }}
-{{ if flag.is_read_write }}
- {flag.method_name} = reader.getBooleanFlagValue({flag.flag_offset});
-{{ endif }}
-{{ -endfor }}
-{{ -endfor }}
} catch (Exception e) \{
- throw new RuntimeException("Cannot read flag in codegen", e);
+ foundPackage = false;
}
+ {{ for namespace_with_flags in namespace_flags }}
+ {{ -for flag in namespace_with_flags.flags }}
+ {{ if flag.is_read_write }}
+ {flag.method_name} = foundPackage ? reader.getBooleanFlagValue({flag.flag_offset}) : {flag.default_value};
+ {{ endif }}
+ {{ -endfor }}
+ {{ -endfor }}
isCached = true;
}
{{ endif }}
diff --git a/tools/aconfig/aconfig/templates/cpp_source_file.template b/tools/aconfig/aconfig/templates/cpp_source_file.template
index 852b905..eaaf86f 100644
--- a/tools/aconfig/aconfig/templates/cpp_source_file.template
+++ b/tools/aconfig/aconfig/templates/cpp_source_file.template
@@ -76,7 +76,8 @@
: boolean_start_index_()
{{ -endif }}
, flag_value_file_(nullptr)
- , read_from_new_storage_(false) \{
+ , read_from_new_storage_(false)
+ , package_exists_in_storage_(true) \{
if (access("/metadata/aconfig/boot/enable_only_new_storage", F_OK) == 0) \{
read_from_new_storage_ = true;
@@ -99,6 +100,11 @@
ALOGE("error: failed to get package read context: %s", context.error().c_str());
}
+ if (!(context->package_exists)) \{
+ package_exists_in_storage_ = false;
+ return;
+ }
+
// cache package boolean flag start index
boolean_start_index_ = context->boolean_start_index;
@@ -126,6 +132,10 @@
if (cache_[{item.readwrite_idx}] == -1) \{
{{ if allow_instrumentation- }}
if (read_from_new_storage_) \{
+ if (!package_exists_in_storage_) \{
+ return {item.default_value};
+ }
+
auto value = aconfig_storage::get_boolean_flag_value(
*flag_value_file_,
boolean_start_index_ + {item.flag_offset});
@@ -168,6 +178,8 @@
std::unique_ptr<aconfig_storage::MappedStorageFile> flag_value_file_;
bool read_from_new_storage_;
+
+ bool package_exists_in_storage_;
{{ -endif }}
{{ -endif }}
diff --git a/tools/aconfig/aconfig/templates/rust.template b/tools/aconfig/aconfig/templates/rust.template
index c2f162f..6456360 100644
--- a/tools/aconfig/aconfig/templates/rust.template
+++ b/tools/aconfig/aconfig/templates/rust.template
@@ -51,7 +51,10 @@
get_boolean_flag_value(&flag_val_map, offset + {flag.flag_offset})
.map_err(|err| format!("failed to get flag: \{err}"))
},
- None => Err("no context found for package '{package}'".to_string())
+ None => \{
+ log!(Level::Error, "no context found for package {package}");
+ Ok({flag.default_value})
+ }
}
})
});
diff --git a/tools/aconfig/aconfig_device_paths/Android.bp b/tools/aconfig/aconfig_device_paths/Android.bp
index dda7a55..bdf96ed 100644
--- a/tools/aconfig/aconfig_device_paths/Android.bp
+++ b/tools/aconfig/aconfig_device_paths/Android.bp
@@ -61,8 +61,12 @@
name: "libaconfig_java_host_device_paths_src",
srcs: ["src/HostDeviceProtosTemplate.java"],
out: ["HostDeviceProtos.java"],
- tool_files: ["partition_aconfig_flags_paths.txt"],
- cmd: "sed -e '/TEMPLATE/{r$(location partition_aconfig_flags_paths.txt)' -e 'd}' $(in) > $(out)",
+ tool_files: [
+ "partition_aconfig_flags_paths.txt",
+ "mainline_aconfig_flags_paths.txt",
+ ],
+ cmd: "sed -e '/TEMPLATE/{r$(location partition_aconfig_flags_paths.txt)' -e 'd}' $(in) > $(out).tmp && " +
+ "sed -e '/MAINLINE_T/{r$(location mainline_aconfig_flags_paths.txt)' -e 'd}' $(out).tmp > $(out)",
}
java_library_host {
diff --git a/tools/aconfig/aconfig_device_paths/mainline_aconfig_flags_paths.txt b/tools/aconfig/aconfig_device_paths/mainline_aconfig_flags_paths.txt
new file mode 100644
index 0000000..af73a84
--- /dev/null
+++ b/tools/aconfig/aconfig_device_paths/mainline_aconfig_flags_paths.txt
@@ -0,0 +1,20 @@
+"/apex/com.android.adservices/etc/aconfig_flags.pb",
+"/apex/com.android.appsearch/etc/aconfig_flags.pb",
+"/apex/com.android.art/etc/aconfig_flags.pb",
+"/apex/com.android.btservices/etc/aconfig_flags.pb",
+"/apex/com.android.cellbroadcast/etc/aconfig_flags.pb",
+"/apex/com.android.configinfrastructure/etc/aconfig_flags.pb",
+"/apex/com.android.conscrypt/etc/aconfig_flags.pb",
+"/apex/com.android.devicelock/etc/aconfig_flags.pb",
+"/apex/com.android.healthfitness/etc/aconfig_flags.pb",
+"/apex/com.android.ipsec/etc/aconfig_flags.pb",
+"/apex/com.android.media/etc/aconfig_flags.pb",
+"/apex/com.android.mediaprovider/etc/aconfig_flags.pb",
+"/apex/com.android.ondevicepersonalization/etc/aconfig_flags.pb",
+"/apex/com.android.os.statsd/etc/aconfig_flags.pb",
+"/apex/com.android.permission/etc/aconfig_flags.pb",
+"/apex/com.android.profiling/etc/aconfig_flags.pb",
+"/apex/com.android.tethering/etc/aconfig_flags.pb",
+"/apex/com.android.uwb/etc/aconfig_flags.pb",
+"/apex/com.android.virt/etc/aconfig_flags.pb",
+"/apex/com.android.wifi/etc/aconfig_flags.pb",
diff --git a/tools/aconfig/aconfig_device_paths/src/HostDeviceProtosTemplate.java b/tools/aconfig/aconfig_device_paths/src/HostDeviceProtosTemplate.java
index e2ad40a..e7d0a76 100644
--- a/tools/aconfig/aconfig_device_paths/src/HostDeviceProtosTemplate.java
+++ b/tools/aconfig/aconfig_device_paths/src/HostDeviceProtosTemplate.java
@@ -40,6 +40,10 @@
TEMPLATE
};
+ static final String[] MAINLINE_PATHS = {
+ MAINLINE_T
+ };
+
private static final String APEX_DIR = "/apex";
private static final String RECURSIVELY_LIST_APEX_DIR_COMMAND =
"shell su 0 find /apex | grep aconfig_flags";
@@ -55,7 +59,8 @@
String adbCommandOutput = adbCommandExecutor.executeAdbCommand(
RECURSIVELY_LIST_APEX_DIR_COMMAND);
- if (adbCommandOutput == null) {
+ if (adbCommandOutput == null || adbCommandOutput.isEmpty()) {
+ paths.addAll(Arrays.asList(MAINLINE_PATHS));
return paths;
}
diff --git a/tools/aconfig/aconfig_storage_file/tests/Android.bp b/tools/aconfig/aconfig_storage_file/tests/Android.bp
index 12e4aca..13d3214 100644
--- a/tools/aconfig/aconfig_storage_file/tests/Android.bp
+++ b/tools/aconfig/aconfig_storage_file/tests/Android.bp
@@ -10,10 +10,10 @@
"libbase",
],
data: [
- "package.map",
- "flag.map",
- "flag.val",
- "flag.info",
+ "data/v1/package.map",
+ "data/v1/flag.map",
+ "data/v1/flag.val",
+ "data/v1/flag.info",
],
test_suites: [
"device-tests",
@@ -35,10 +35,10 @@
test_config: "AndroidStorageJaveTest.xml",
sdk_version: "test_current",
data: [
- "package.map",
- "flag.map",
- "flag.val",
- "flag.info",
+ "data/v1/package.map",
+ "data/v1/flag.map",
+ "data/v1/flag.val",
+ "data/v1/flag.info",
],
test_suites: [
"general-tests",
diff --git a/tools/aconfig/aconfig_storage_file/tests/flag.info b/tools/aconfig/aconfig_storage_file/tests/data/v1/flag.info
similarity index 100%
rename from tools/aconfig/aconfig_storage_file/tests/flag.info
rename to tools/aconfig/aconfig_storage_file/tests/data/v1/flag.info
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_file/tests/flag.map b/tools/aconfig/aconfig_storage_file/tests/data/v1/flag.map
similarity index 100%
rename from tools/aconfig/aconfig_storage_file/tests/flag.map
rename to tools/aconfig/aconfig_storage_file/tests/data/v1/flag.map
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_file/tests/flag.val b/tools/aconfig/aconfig_storage_file/tests/data/v1/flag.val
similarity index 100%
rename from tools/aconfig/aconfig_storage_file/tests/flag.val
rename to tools/aconfig/aconfig_storage_file/tests/data/v1/flag.val
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_file/tests/package.map b/tools/aconfig/aconfig_storage_file/tests/data/v1/package.map
similarity index 100%
rename from tools/aconfig/aconfig_storage_file/tests/package.map
rename to tools/aconfig/aconfig_storage_file/tests/data/v1/package.map
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_file/tests/storage_file_test.cpp b/tools/aconfig/aconfig_storage_file/tests/storage_file_test.cpp
index ebd1dd8..3626f72 100644
--- a/tools/aconfig/aconfig_storage_file/tests/storage_file_test.cpp
+++ b/tools/aconfig/aconfig_storage_file/tests/storage_file_test.cpp
@@ -53,7 +53,8 @@
}
TEST(AconfigStorageFileTest, test_list_flag) {
- auto const test_dir = GetExecutableDirectory();
+ auto const test_base_dir = GetExecutableDirectory();
+ auto const test_dir = test_base_dir + "/data/v1";
auto const package_map = test_dir + "/package.map";
auto const flag_map = test_dir + "/flag.map";
auto const flag_val = test_dir + "/flag.val";
@@ -82,7 +83,8 @@
}
TEST(AconfigStorageFileTest, test_list_flag_with_info) {
- auto const test_dir = GetExecutableDirectory();
+ auto const base_test_dir = GetExecutableDirectory();
+ auto const test_dir = base_test_dir + "/data/v1";
auto const package_map = test_dir + "/package.map";
auto const flag_map = test_dir + "/flag.map";
auto const flag_val = test_dir + "/flag.val";
diff --git a/tools/aconfig/aconfig_storage_read_api/Android.bp b/tools/aconfig/aconfig_storage_read_api/Android.bp
index 6ae34f3..80b8ece 100644
--- a/tools/aconfig/aconfig_storage_read_api/Android.bp
+++ b/tools/aconfig/aconfig_storage_read_api/Android.bp
@@ -36,10 +36,10 @@
"librand",
],
data: [
- "tests/package.map",
- "tests/flag.map",
- "tests/flag.val",
- "tests/flag.info",
+ "tests/data/v1/package.map",
+ "tests/data/v1/flag.map",
+ "tests/data/v1/flag.val",
+ "tests/data/v1/flag.info",
],
}
diff --git a/tools/aconfig/aconfig_storage_read_api/src/lib.rs b/tools/aconfig/aconfig_storage_read_api/src/lib.rs
index 988ce63..884f148 100644
--- a/tools/aconfig/aconfig_storage_read_api/src/lib.rs
+++ b/tools/aconfig/aconfig_storage_read_api/src/lib.rs
@@ -412,10 +412,10 @@
let flag_map = storage_dir.clone() + "/maps/mockup.flag.map";
let flag_val = storage_dir.clone() + "/boot/mockup.val";
let flag_info = storage_dir.clone() + "/boot/mockup.info";
- fs::copy("./tests/package.map", &package_map).unwrap();
- fs::copy("./tests/flag.map", &flag_map).unwrap();
- fs::copy("./tests/flag.val", &flag_val).unwrap();
- fs::copy("./tests/flag.info", &flag_info).unwrap();
+ fs::copy("./tests/data/v1/package.map", &package_map).unwrap();
+ fs::copy("./tests/data/v1/flag.map", &flag_map).unwrap();
+ fs::copy("./tests/data/v1/flag.val", &flag_val).unwrap();
+ fs::copy("./tests/data/v1/flag.info", &flag_info).unwrap();
return storage_dir;
}
@@ -507,9 +507,9 @@
#[test]
// this test point locks down flag storage file version number query api
fn test_storage_version_query() {
- assert_eq!(get_storage_file_version("./tests/package.map").unwrap(), 1);
- assert_eq!(get_storage_file_version("./tests/flag.map").unwrap(), 1);
- assert_eq!(get_storage_file_version("./tests/flag.val").unwrap(), 1);
- assert_eq!(get_storage_file_version("./tests/flag.info").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./tests/data/v1/package.map").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./tests/data/v1/flag.map").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./tests/data/v1/flag.val").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./tests/data/v1/flag.info").unwrap(), 1);
}
}
diff --git a/tools/aconfig/aconfig_storage_read_api/src/mapped_file.rs b/tools/aconfig/aconfig_storage_read_api/src/mapped_file.rs
index 5a16645..32dbed8 100644
--- a/tools/aconfig/aconfig_storage_read_api/src/mapped_file.rs
+++ b/tools/aconfig/aconfig_storage_read_api/src/mapped_file.rs
@@ -97,10 +97,10 @@
let flag_map = storage_dir.clone() + "/maps/mockup.flag.map";
let flag_val = storage_dir.clone() + "/boot/mockup.val";
let flag_info = storage_dir.clone() + "/boot/mockup.info";
- fs::copy("./tests/package.map", &package_map).unwrap();
- fs::copy("./tests/flag.map", &flag_map).unwrap();
- fs::copy("./tests/flag.val", &flag_val).unwrap();
- fs::copy("./tests/flag.info", &flag_info).unwrap();
+ fs::copy("./tests/data/v1/package.map", &package_map).unwrap();
+ fs::copy("./tests/data/v1/flag.map", &flag_map).unwrap();
+ fs::copy("./tests/data/v1/flag.val", &flag_val).unwrap();
+ fs::copy("./tests/data/v1/flag.info", &flag_info).unwrap();
return storage_dir;
}
@@ -108,9 +108,9 @@
#[test]
fn test_mapped_file_contents() {
let storage_dir = create_test_storage_files();
- map_and_verify(&storage_dir, StorageFileType::PackageMap, "./tests/package.map");
- map_and_verify(&storage_dir, StorageFileType::FlagMap, "./tests/flag.map");
- map_and_verify(&storage_dir, StorageFileType::FlagVal, "./tests/flag.val");
- map_and_verify(&storage_dir, StorageFileType::FlagInfo, "./tests/flag.info");
+ map_and_verify(&storage_dir, StorageFileType::PackageMap, "./tests/data/v1/package.map");
+ map_and_verify(&storage_dir, StorageFileType::FlagMap, "./tests/data/v1/flag.map");
+ map_and_verify(&storage_dir, StorageFileType::FlagVal, "./tests/data/v1/flag.val");
+ map_and_verify(&storage_dir, StorageFileType::FlagInfo, "./tests/data/v1/flag.info");
}
}
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/Android.bp b/tools/aconfig/aconfig_storage_read_api/tests/Android.bp
index ed0c728..b8e510d 100644
--- a/tools/aconfig/aconfig_storage_read_api/tests/Android.bp
+++ b/tools/aconfig/aconfig_storage_read_api/tests/Android.bp
@@ -1,9 +1,10 @@
filegroup {
name: "read_api_test_storage_files",
- srcs: ["package.map",
- "flag.map",
- "flag.val",
- "flag.info"
+ srcs: [
+ "data/v1/package.map",
+ "data/v1/flag.map",
+ "data/v1/flag.val",
+ "data/v1/flag.info",
],
}
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/flag.info b/tools/aconfig/aconfig_storage_read_api/tests/data/v1/flag.info
similarity index 100%
rename from tools/aconfig/aconfig_storage_read_api/tests/flag.info
rename to tools/aconfig/aconfig_storage_read_api/tests/data/v1/flag.info
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/flag.map b/tools/aconfig/aconfig_storage_read_api/tests/data/v1/flag.map
similarity index 100%
rename from tools/aconfig/aconfig_storage_read_api/tests/flag.map
rename to tools/aconfig/aconfig_storage_read_api/tests/data/v1/flag.map
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/flag.val b/tools/aconfig/aconfig_storage_read_api/tests/data/v1/flag.val
similarity index 100%
rename from tools/aconfig/aconfig_storage_read_api/tests/flag.val
rename to tools/aconfig/aconfig_storage_read_api/tests/data/v1/flag.val
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/package.map b/tools/aconfig/aconfig_storage_read_api/tests/data/v1/package.map
similarity index 100%
rename from tools/aconfig/aconfig_storage_read_api/tests/package.map
rename to tools/aconfig/aconfig_storage_read_api/tests/data/v1/package.map
Binary files differ
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.cpp b/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.cpp
index 6d29045..7537643 100644
--- a/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.cpp
+++ b/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.cpp
@@ -45,7 +45,8 @@
}
void SetUp() override {
- auto const test_dir = android::base::GetExecutableDirectory();
+ auto const test_base_dir = android::base::GetExecutableDirectory();
+ auto const test_dir = test_base_dir + "/data/v1";
storage_dir = std::string(root_dir.path);
auto maps_dir = storage_dir + "/maps";
auto boot_dir = storage_dir + "/boot";
diff --git a/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.rs b/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.rs
index afc44d4..0d943f8 100644
--- a/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.rs
+++ b/tools/aconfig/aconfig_storage_read_api/tests/storage_read_api_test.rs
@@ -26,10 +26,10 @@
let flag_map = storage_dir.clone() + "/maps/mockup.flag.map";
let flag_val = storage_dir.clone() + "/boot/mockup.val";
let flag_info = storage_dir.clone() + "/boot/mockup.info";
- fs::copy("./package.map", package_map).unwrap();
- fs::copy("./flag.map", flag_map).unwrap();
- fs::copy("./flag.val", flag_val).unwrap();
- fs::copy("./flag.info", flag_info).unwrap();
+ fs::copy("./data/v1/package.map", package_map).unwrap();
+ fs::copy("./data/v1/flag.map", flag_map).unwrap();
+ fs::copy("./data/v1/flag.val", flag_val).unwrap();
+ fs::copy("./data/v1/flag.info", flag_info).unwrap();
storage_dir
}
@@ -200,9 +200,9 @@
#[test]
fn test_storage_version_query() {
- assert_eq!(get_storage_file_version("./package.map").unwrap(), 1);
- assert_eq!(get_storage_file_version("./flag.map").unwrap(), 1);
- assert_eq!(get_storage_file_version("./flag.val").unwrap(), 1);
- assert_eq!(get_storage_file_version("./flag.info").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./data/v1/package.map").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./data/v1/flag.map").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./data/v1/flag.val").unwrap(), 1);
+ assert_eq!(get_storage_file_version("./data/v1/flag.info").unwrap(), 1);
}
}
diff --git a/tools/aconfig/aflags/Android.bp b/tools/aconfig/aflags/Android.bp
index 56c4ec0..a7aceee 100644
--- a/tools/aconfig/aflags/Android.bp
+++ b/tools/aconfig/aflags/Android.bp
@@ -12,7 +12,7 @@
"libaconfig_device_paths",
"libaconfig_flags",
"libaconfig_protos",
- "libaconfigd_protos",
+ "libaconfigd_protos_rust",
"libaconfig_storage_read_api",
"libaconfig_storage_file",
"libanyhow",
diff --git a/tools/aconfig/aflags/Cargo.toml b/tools/aconfig/aflags/Cargo.toml
index 7efce6d..d31e232 100644
--- a/tools/aconfig/aflags/Cargo.toml
+++ b/tools/aconfig/aflags/Cargo.toml
@@ -9,10 +9,10 @@
protobuf = "3.2.0"
regex = "1.10.3"
aconfig_protos = { path = "../aconfig_protos" }
-aconfigd_protos = { version = "0.1.0", path = "../../../../../system/server_configurable_flags/aconfigd"}
+aconfigd_protos = { version = "0.1.0", path = "../../../../../packages/modules/ConfigInfrastructure/aconfigd/proto"}
nix = { version = "0.28.0", features = ["user"] }
aconfig_storage_file = { version = "0.1.0", path = "../aconfig_storage_file" }
aconfig_storage_read_api = { version = "0.1.0", path = "../aconfig_storage_read_api" }
clap = {version = "4.5.2" }
aconfig_device_paths = { version = "0.1.0", path = "../aconfig_device_paths" }
-aconfig_flags = { version = "0.1.0", path = "../aconfig_flags" }
\ No newline at end of file
+aconfig_flags = { version = "0.1.0", path = "../aconfig_flags" }
diff --git a/tools/compliance/go.work b/tools/compliance/go.work
index a24d2ea..506e619 100644
--- a/tools/compliance/go.work
+++ b/tools/compliance/go.work
@@ -1,4 +1,4 @@
-go 1.22
+go 1.23
use (
.
diff --git a/tools/edit_monitor/Android.bp b/tools/edit_monitor/Android.bp
index 08ca155..3497821 100644
--- a/tools/edit_monitor/Android.bp
+++ b/tools/edit_monitor/Android.bp
@@ -52,3 +52,15 @@
unit_test: true,
},
}
+
+python_binary_host {
+ name: "edit_monitor",
+ pkg_path: "edit_monitor",
+ srcs: [
+ "main.py",
+ ],
+ libs: [
+ "edit_monitor_lib",
+ ],
+ main: "main.py",
+}
diff --git a/tools/edit_monitor/daemon_manager.py b/tools/edit_monitor/daemon_manager.py
index 445d849..892c292 100644
--- a/tools/edit_monitor/daemon_manager.py
+++ b/tools/edit_monitor/daemon_manager.py
@@ -70,6 +70,10 @@
logging.warning("Block sign found, exiting...")
return
+ if self.binary_path.startswith('/google/cog/'):
+ logging.warning("Edit monitor for cog is not supported, exiting...")
+ return
+
self._stop_any_existing_instance()
self._write_pid_to_pidfile()
self._start_daemon_process()
diff --git a/tools/edit_monitor/daemon_manager_test.py b/tools/edit_monitor/daemon_manager_test.py
index d62eade..72442c6 100644
--- a/tools/edit_monitor/daemon_manager_test.py
+++ b/tools/edit_monitor/daemon_manager_test.py
@@ -131,6 +131,13 @@
# Verify no daemon process is started.
self.assertIsNone(dm.daemon_process)
+ def test_start_return_directly_if_in_cog_env(self):
+ dm = daemon_manager.DaemonManager(
+ '/google/cog/cloud/user/workspace/edit_monitor')
+ dm.start()
+ # Verify no daemon process is started.
+ self.assertIsNone(dm.daemon_process)
+
@mock.patch('os.kill')
def test_start_failed_to_kill_existing_instance(self, mock_kill):
mock_kill.side_effect = OSError('Unknown OSError')
diff --git a/tools/edit_monitor/main.py b/tools/edit_monitor/main.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tools/edit_monitor/main.py
diff --git a/tools/filelistdiff/Android.bp b/tools/filelistdiff/Android.bp
index ab766d6..3826e50 100644
--- a/tools/filelistdiff/Android.bp
+++ b/tools/filelistdiff/Android.bp
@@ -24,4 +24,9 @@
prebuilt_etc_host {
name: "system_image_diff_allowlist",
src: "allowlist",
-}
\ No newline at end of file
+}
+
+prebuilt_etc_host {
+ name: "system_image_diff_allowlist_next",
+ src: "allowlist_next",
+}
diff --git a/tools/filelistdiff/allowlist b/tools/filelistdiff/allowlist
index ae8a662..eb78587 100644
--- a/tools/filelistdiff/allowlist
+++ b/tools/filelistdiff/allowlist
@@ -1,9 +1,3 @@
-# Known diffs only in the KATI system image
-framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.odex
-framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.odex.fsv_meta
-framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.vdex
-framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.vdex.fsv_meta
-
# Known diffs that are installed in either system image with the configuration
# b/353429422
init.environ.rc
diff --git a/tools/filelistdiff/allowlist_next b/tools/filelistdiff/allowlist_next
new file mode 100644
index 0000000..8f91c9f
--- /dev/null
+++ b/tools/filelistdiff/allowlist_next
@@ -0,0 +1,9 @@
+# Allowlist only for the next release configuration.
+# TODO(b/369678122): The list will be cleared when the trunk configurations are
+# available to the next.
+
+# KATI only installed files
+framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.odex
+framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.odex.fsv_meta
+framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.vdex
+framework/oat/x86_64/apex@com.android.compos@javalib@service-compos.jar@classes.vdex.fsv_meta
diff --git a/tools/filelistdiff/file_list_diff.py b/tools/filelistdiff/file_list_diff.py
index 30ed107..fbbfedf 100644
--- a/tools/filelistdiff/file_list_diff.py
+++ b/tools/filelistdiff/file_list_diff.py
@@ -19,19 +19,26 @@
COLOR_ERROR = '\033[91m'
COLOR_NORMAL = '\033[0m'
-def find_unique_items(kati_installed_files, soong_installed_files, allowlist, system_module_name):
+def find_unique_items(kati_installed_files, soong_installed_files, system_module_name, allowlists):
with open(kati_installed_files, 'r') as kati_list_file, \
- open(soong_installed_files, 'r') as soong_list_file, \
- open(allowlist, 'r') as allowlist_file:
+ open(soong_installed_files, 'r') as soong_list_file:
kati_files = set(kati_list_file.read().split())
soong_files = set(soong_list_file.read().split())
- allowed_files = set(filter(lambda x: len(x), map(lambda x: x.lstrip().split('#',1)[0].rstrip() , allowlist_file.read().split('\n'))))
+
+ allowed_files = set()
+ for allowlist in allowlists:
+ with open(allowlist, 'r') as allowlist_file:
+ allowed_files.update(set(filter(lambda x: len(x), map(lambda x: x.lstrip().split('#',1)[0].rstrip() , allowlist_file.read().split('\n')))))
def is_unknown_diff(filepath):
- return not filepath in allowed_files
+ return filepath not in allowed_files
+
+ def is_unnecessary_allowlist(filepath):
+ return filepath not in kati_files.symmetric_difference(soong_files)
unique_in_kati = set(filter(is_unknown_diff, kati_files - soong_files))
unique_in_soong = set(filter(is_unknown_diff, soong_files - kati_files))
+ unnecessary_allowlists = set(filter(is_unnecessary_allowlist, allowed_files))
if unique_in_kati:
print('')
@@ -50,7 +57,15 @@
for item in sorted(unique_in_soong):
print(' '+item)
- if unique_in_kati or unique_in_soong:
+ if unnecessary_allowlists:
+ print('')
+ print(f'{COLOR_ERROR}Unnecessary files in allowlist.{COLOR_NORMAL}')
+ print('Please remove these entries from build/make/tools/filelistdiff/allowlist')
+ for item in sorted(unnecessary_allowlists):
+ print(' '+item)
+
+
+ if unique_in_kati or unique_in_soong or unnecessary_allowlists:
print('')
sys.exit(1)
@@ -60,8 +75,8 @@
parser.add_argument('kati_installed_file_list')
parser.add_argument('soong_installed_file_list')
- parser.add_argument('allowlist')
parser.add_argument('system_module_name')
+ parser.add_argument('--allowlists', nargs='+')
args = parser.parse_args()
- find_unique_items(args.kati_installed_file_list, args.soong_installed_file_list, args.allowlist, args.system_module_name)
\ No newline at end of file
+ find_unique_items(args.kati_installed_file_list, args.soong_installed_file_list, args.system_module_name, args.allowlists)
\ No newline at end of file
diff --git a/tools/ide_query/ide_query.go b/tools/ide_query/ide_query.go
index 89ac78f..ec937fe 100644
--- a/tools/ide_query/ide_query.go
+++ b/tools/ide_query/ide_query.go
@@ -341,6 +341,8 @@
Id: moduleName,
Language: pb.Language_LANGUAGE_JAVA,
SourceFilePaths: m.Srcs,
+ GeneratedFiles: genFiles(env, m),
+ DependencyIds: m.Deps,
}
unitsById[u.Id] = u
@@ -355,14 +357,10 @@
continue
}
- var paths []string
- paths = append(paths, mod.Srcs...)
- paths = append(paths, mod.SrcJars...)
- paths = append(paths, mod.Jars...)
unitsById[name] = &pb.BuildableUnit{
Id: name,
SourceFilePaths: mod.Srcs,
- GeneratedFiles: genFiles(env, paths),
+ GeneratedFiles: genFiles(env, mod),
DependencyIds: mod.Deps,
}
@@ -380,8 +378,13 @@
}
// genFiles returns the generated files (paths that start with outDir/) for the
-// given paths. Generated files that do not exist are ignored.
-func genFiles(env Env, paths []string) []*pb.GeneratedFile {
+// given module. Generated files that do not exist are ignored.
+func genFiles(env Env, mod *javaModule) []*pb.GeneratedFile {
+ var paths []string
+ paths = append(paths, mod.Srcs...)
+ paths = append(paths, mod.SrcJars...)
+ paths = append(paths, mod.Jars...)
+
prefix := env.OutDir + "/"
var ret []*pb.GeneratedFile
for _, p := range paths {