diff options
| -rw-r--r-- | core/Makefile | 92 | ||||
| -rw-r--r-- | core/config.mk | 1 | ||||
| -rw-r--r-- | core/soong_config.mk | 1 | ||||
| -rw-r--r-- | core/tasks/boot_jars_package_check.mk | 61 | ||||
| -rwxr-xr-x | core/tasks/check_boot_jars/check_boot_jars.py | 89 | ||||
| -rw-r--r-- | core/tasks/check_boot_jars/package_allowed_list.txt | 248 | ||||
| -rw-r--r-- | tools/releasetools/Android.bp | 1 | ||||
| -rwxr-xr-x | tools/releasetools/build_image.py | 13 |
8 files changed, 64 insertions, 442 deletions
diff --git a/core/Makefile b/core/Makefile index 8ca00ed826..df5c6b2ba4 100644 --- a/core/Makefile +++ b/core/Makefile @@ -711,6 +711,10 @@ else BUILT_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img endif +# kernel cmdline for GKI +GENERIC_KERNEL_CMDLINE := rw +.KATI_READONLY := GENERIC_KERNEL_CMDLINE + # $1: boot image target # returns the kernel used to make the bootimage define bootimage-to-kernel @@ -754,30 +758,27 @@ endif INTERNAL_KERNEL_CMDLINE := $(strip $(INTERNAL_KERNEL_CMDLINE) buildvariant=$(TARGET_BUILD_VARIANT) $(VERITY_KEYID)) -boot_uses_generic_kernel_image := -ifdef BUILDING_VENDOR_BOOT_IMAGE - # building vendor boot image, dtb/base/pagesize go there - boot_uses_generic_kernel_image := true -else ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) - boot_uses_generic_kernel_image := true -endif - -ifeq (true,$(boot_uses_generic_kernel_image)) +# kernel cmdline/base/pagesize in boot. +# - If using GKI, use GENERIC_KERNEL_CMDLINE. Remove kernel base and pagesize because they are +# device-specific. +# - If not using GKI: +# - If building vendor_boot, INTERNAL_KERNEL_CMDLINE, base and pagesize goes in vendor_boot. +# - Otherwise, put them in boot. +ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) ifdef GENERIC_KERNEL_CMDLINE INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(GENERIC_KERNEL_CMDLINE)" endif -else # boot_uses_generic_kernel_image != true -ifdef BOARD_KERNEL_BASE - INTERNAL_BOOTIMAGE_ARGS += --base $(BOARD_KERNEL_BASE) -endif -ifdef BOARD_KERNEL_PAGESIZE - INTERNAL_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) -endif -ifdef INTERNAL_KERNEL_CMDLINE - INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(INTERNAL_KERNEL_CMDLINE)" -endif -endif # boot_uses_generic_kernel_image == true -boot_uses_generic_kernel_image := +else ifndef BUILDING_VENDOR_BOOT_IMAGE # && BOARD_USES_GENERIC_KERNEL_IMAGE != true + ifdef INTERNAL_KERNEL_CMDLINE + INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(INTERNAL_KERNEL_CMDLINE)" + endif + ifdef BOARD_KERNEL_BASE + INTERNAL_BOOTIMAGE_ARGS += --base $(BOARD_KERNEL_BASE) + endif + ifdef BOARD_KERNEL_PAGESIZE + INTERNAL_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) + endif +endif # BUILDING_VENDOR_BOOT_IMAGE == "" && BOARD_USES_GENERIC_KERNEL_IMAGE != true INTERNAL_MKBOOTIMG_VERSION_ARGS := \ --os_version $(PLATFORM_VERSION_LAST_STABLE) \ @@ -1275,6 +1276,9 @@ DEFAULT_TARGET_RECOVERY_FSTYPE_MOUNT_OPTIONS := ext4=max_batch_time=0,commit=1,d ifneq (true,$(TARGET_USERIMAGES_SPARSE_EXT_DISABLED)) INTERNAL_USERIMAGES_SPARSE_EXT_FLAG := -s endif +ifneq (true,$(TARGET_USERIMAGES_SPARSE_EROFS_DISABLED)) + INTERNAL_USERIMAGES_SPARSE_EROFS_FLAG := -s +endif ifneq (true,$(TARGET_USERIMAGES_SPARSE_SQUASHFS_DISABLED)) INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG := -s endif @@ -1299,6 +1303,18 @@ ifneq ($(filter \ $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE) \ $(BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE) \ $(BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE) \ + ,erofs),) +INTERNAL_USERIMAGES_DEPS += $(MKEROFSUSERIMG) +endif + +ifneq ($(filter \ + $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE) \ + $(BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE) \ + $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE) \ + $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) \ + $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE) \ + $(BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE) \ + $(BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE) \ ,squashfs),) INTERNAL_USERIMAGES_DEPS += $(MKSQUASHFSUSERIMG) endif @@ -1471,6 +1487,7 @@ $(hide) echo "ext_mkuserimg=$(notdir $(MKEXTUSERIMG))" >> $(1) $(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1)) $(if $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG),$(hide) echo "extfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG)" >> $(1)) +$(if $(INTERNAL_USERIMAGES_SPARSE_EROFS_FLAG),$(hide) echo "erofs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EROFS_FLAG)" >> $(1)) $(if $(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG),$(hide) echo "squashfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG)" >> $(1)) $(if $(INTERNAL_USERIMAGES_SPARSE_F2FS_FLAG),$(hide) echo "f2fs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_F2FS_FLAG)" >> $(1)) $(if $(BOARD_EXT4_SHARE_DUP_BLOCKS),$(hide) echo "ext4_share_dup_blocks=$(BOARD_EXT4_SHARE_DUP_BLOCKS)" >> $(1)) @@ -1893,19 +1910,10 @@ $(INSTALLED_RECOVERY_RAMDISK_BUILD_PROP_TARGET): $(INSTALLED_RAMDISK_BUILD_PROP_ $(copy-file-to-target) endif -ifeq (truetrue,$(strip $(BUILDING_VENDOR_BOOT_IMAGE))$(strip $(AB_OTA_UPDATER))) - INTERNAL_RECOVERYIMAGE_ARGS := --ramdisk $(recovery_ramdisk) +INTERNAL_RECOVERYIMAGE_ARGS := --ramdisk $(recovery_ramdisk) -ifneq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)) -ifdef GENERIC_KERNEL_CMDLINE - INTERNAL_RECOVERYIMAGE_ARGS += --cmdline "$(GENERIC_KERNEL_CMDLINE)" -endif # GENERIC_KERNEL_CMDLINE != "" -endif # BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE != true - -else # not (BUILDING_VENDOR_BOOT_IMAGE and AB_OTA_UPDATER) - INTERNAL_RECOVERYIMAGE_ARGS := \ - $(addprefix --second ,$(INSTALLED_2NDBOOTLOADER_TARGET)) \ - --ramdisk $(recovery_ramdisk) +ifneq (truetrue,$(strip $(BUILDING_VENDOR_BOOT_IMAGE))$(strip $(BOARD_USES_RECOVERY_AS_BOOT))) +INTERNAL_RECOVERYIMAGE_ARGS += $(addprefix --second ,$(INSTALLED_2NDBOOTLOADER_TARGET)) # Assumes this has already been stripped ifneq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)) ifdef INTERNAL_KERNEL_CMDLINE @@ -1931,7 +1939,7 @@ endif ifdef BOARD_INCLUDE_DTB_IN_BOOTIMG INTERNAL_RECOVERYIMAGE_ARGS += --dtb $(INSTALLED_DTBIMAGE_TARGET) endif -endif # INSTALLED_VENDOR_BOOTIMAGE_TARGET not defined +endif # (BUILDING_VENDOR_BOOT_IMAGE and BOARD_USES_RECOVERY_AS_BOOT) ifndef BOARD_RECOVERY_MKBOOTIMG_ARGS BOARD_RECOVERY_MKBOOTIMG_ARGS := $(BOARD_MKBOOTIMG_ARGS) endif @@ -3927,6 +3935,8 @@ INTERNAL_OTATOOLS_MODULES := \ mkbootimg \ mke2fs \ mke2fs.conf \ + mkfs.erofs \ + mkerofsimage.sh \ mkf2fsuserimg.sh \ mksquashfs \ mksquashfsimage.sh \ @@ -4493,11 +4503,7 @@ else ifneq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)) cp $(firstword $(INSTALLED_KERNEL_TARGET)) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/kernel endif endif -ifeq (truetrue,$(strip $(BUILDING_VENDOR_BOOT_IMAGE))$(strip $(AB_OTA_UPDATER))) -ifneq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)) - echo "$(GENERIC_KERNEL_CMDLINE)" > $(zip_root)/$(PRIVATE_RECOVERY_OUT)/cmdline -endif # BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE != true -else # not (BUILDING_VENDOR_BOOT_IMAGE and AB_OTA_UPDATER) +ifneq (truetrue,$(strip $(BUILDING_VENDOR_BOOT_IMAGE))$(strip $(BOARD_USES_RECOVERY_AS_BOOT))) ifdef INSTALLED_2NDBOOTLOADER_TARGET cp $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/second endif @@ -4525,7 +4531,7 @@ endif ifdef BOARD_KERNEL_PAGESIZE echo "$(BOARD_KERNEL_PAGESIZE)" > $(zip_root)/$(PRIVATE_RECOVERY_OUT)/pagesize endif -endif # not (BUILDING_VENDOR_BOOT_IMAGE and AB_OTA_UPDATER) +endif # not (BUILDING_VENDOR_BOOT_IMAGE and BOARD_USES_RECOVERY_AS_BOOT) endif # INSTALLED_RECOVERYIMAGE_TARGET defined or BOARD_USES_RECOVERY_AS_BOOT is true @# Components of the boot image $(hide) mkdir -p $(zip_root)/BOOT @@ -4541,11 +4547,9 @@ endif ifdef INSTALLED_KERNEL_TARGET $(hide) cp $(INSTALLED_KERNEL_TARGET) $(zip_root)/BOOT/ endif -ifdef INSTALLED_VENDOR_BOOTIMAGE_TARGET - echo "$(GENERIC_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline -else ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) +ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) echo "$(GENERIC_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline -else # INSTALLED_VENDOR_BOOTIMAGE_TARGET == "" && BOARD_USES_GENERIC_KERNEL_IMAGE != true +else ifndef INSTALLED_VENDOR_BOOTIMAGE_TARGET # && BOARD_USES_GENERIC_KERNEL_IMAGE != true echo "$(INTERNAL_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline ifdef INSTALLED_2NDBOOTLOADER_TARGET cp $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/BOOT/second diff --git a/core/config.mk b/core/config.mk index e975214991..f860c431a0 100644 --- a/core/config.mk +++ b/core/config.mk @@ -555,6 +555,7 @@ APICHECK := $(HOST_OUT_JAVA_LIBRARIES)/metalava$(COMMON_JAVA_PACKAGE_SUFFIX) FS_GET_STATS := $(HOST_OUT_EXECUTABLES)/fs_get_stats$(HOST_EXECUTABLE_SUFFIX) MKEXTUSERIMG := $(HOST_OUT_EXECUTABLES)/mkuserimg_mke2fs MKE2FS_CONF := system/extras/ext4_utils/mke2fs.conf +MKEROFSUSERIMG := $(HOST_OUT_EXECUTABLES)/mkerofsimage.sh MKSQUASHFSUSERIMG := $(HOST_OUT_EXECUTABLES)/mksquashfsimage.sh MKF2FSUSERIMG := $(HOST_OUT_EXECUTABLES)/mkf2fsuserimg.sh SIMG2IMG := $(HOST_OUT_EXECUTABLES)/simg2img$(HOST_EXECUTABLE_SUFFIX) diff --git a/core/soong_config.mk b/core/soong_config.mk index c221c551ca..809a4d6046 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -42,6 +42,7 @@ $(call add_json_bool, Allow_missing_dependencies, $(ALLOW_MISSING_DEPENDE $(call add_json_bool, Unbundled_build, $(TARGET_BUILD_UNBUNDLED)) $(call add_json_bool, Unbundled_build_apps, $(TARGET_BUILD_APPS)) $(call add_json_bool, Always_use_prebuilt_sdks, $(TARGET_BUILD_USE_PREBUILT_SDKS)) +$(call add_json_bool, Skip_boot_jars_check, $(SKIP_BOOT_JARS_CHECK)) $(call add_json_bool, Debuggable, $(filter userdebug eng,$(TARGET_BUILD_VARIANT))) $(call add_json_bool, Eng, $(filter eng,$(TARGET_BUILD_VARIANT))) diff --git a/core/tasks/boot_jars_package_check.mk b/core/tasks/boot_jars_package_check.mk deleted file mode 100644 index baa378a71f..0000000000 --- a/core/tasks/boot_jars_package_check.mk +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (C) 2014 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. - -# -# Rules to check if classes in the boot jars are from the list of allowed packages. -# - -ifneq ($(SKIP_BOOT_JARS_CHECK),true) -ifdef PRODUCT_BOOT_JARS - -intermediates := $(call intermediates-dir-for, PACKAGING, boot-jars-package-check,,COMMON) -stamp := $(intermediates)/stamp - -# Convert the colon-separated components <apex>:<jar> to <jar>.<apex> names -# (e.g. com.android.media:updatable-media -> updatable-media.com.android.media). -# Special cases: -# - for the "platform" or "system_ext" apex drop the .<apex> suffix -boot_jars := $(foreach pair,$(PRODUCT_BOOT_JARS) $(PRODUCT_UPDATABLE_BOOT_JARS), \ - $(eval apex := $(call word-colon,1,$(pair))) \ - $(eval jar := $(call word-colon,2,$(pair))) \ - $(eval q := :) \ - $(eval sfx := $(q).$(apex)$(q)) \ - $(eval sfx := $(subst $(q).platform$(q),$(q)$(q),$(sfx))) \ - $(eval sfx := $(subst $(q).system_ext$(q),$(q)$(q),$(sfx))) \ - $(eval sfx := $(patsubst $(q)%$(q),%,$(sfx))) \ - $(jar)$(sfx)) - -# Convert boot jar names to build paths. -built_boot_jars := $(foreach j, $(boot_jars), \ - $(call intermediates-dir-for, JAVA_LIBRARIES, $(j),,COMMON)/classes.jar) - -script := build/make/core/tasks/check_boot_jars/check_boot_jars.py -allowed_file := build/make/core/tasks/check_boot_jars/package_allowed_list.txt - -$(stamp): PRIVATE_BOOT_JARS := $(built_boot_jars) -$(stamp): PRIVATE_SCRIPT := $(script) -$(stamp): PRIVATE_ALLOWED := $(allowed_file) -$(stamp) : $(built_boot_jars) $(script) $(allowed_file) - @echo "Check package name for $(PRIVATE_BOOT_JARS)" - $(hide) $(PRIVATE_SCRIPT) $(PRIVATE_ALLOWED) $(PRIVATE_BOOT_JARS) - $(hide) mkdir -p $(dir $@) && touch $@ - -.PHONY: check-boot-jars -check-boot-jars : $(stamp) - -# Run check-boot-jars by default -droidcore : check-boot-jars - -endif # PRODUCT_BOOT_JARS -endif # SKIP_BOOT_JARS_CHECK not true diff --git a/core/tasks/check_boot_jars/check_boot_jars.py b/core/tasks/check_boot_jars/check_boot_jars.py deleted file mode 100755 index cf4ef27825..0000000000 --- a/core/tasks/check_boot_jars/check_boot_jars.py +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env python - -""" -Check boot jars. - -Usage: check_boot_jars.py <package_allow_list_file> <jar1> <jar2> ... -""" -import logging -import os.path -import re -import subprocess -import sys - - -# The compiled allow list RE. -allow_list_re = None - - -def LoadAllowList(filename): - """ Load and compile allow list regular expressions from filename. - """ - lines = [] - with open(filename, 'r') as f: - for line in f: - line = line.strip() - if not line or line.startswith('#'): - continue - lines.append(line) - combined_re = r'^(%s)$' % '|'.join(lines) - global allow_list_re - try: - allow_list_re = re.compile(combined_re) - except re.error: - logging.exception( - 'Cannot compile package allow list regular expression: %r', - combined_re) - allow_list_re = None - return False - return True - - -def CheckJar(allow_list_path, jar): - """Check a jar file. - """ - # Get the list of files inside the jar file. - p = subprocess.Popen(args='jar tf %s' % jar, - stdout=subprocess.PIPE, shell=True) - stdout, _ = p.communicate() - if p.returncode != 0: - return False - items = stdout.split() - classes = 0 - for f in items: - if f.endswith('.class'): - classes += 1 - package_name = os.path.dirname(f) - package_name = package_name.replace('/', '.') - if not package_name or not allow_list_re.match(package_name): - print >> sys.stderr, ('Error: %s contains class file %s, whose package name %s is empty or' - ' not in the allow list %s of packages allowed on the bootclasspath.' - % (jar, f, package_name, allow_list_path)) - return False - if classes == 0: - print >> sys.stderr, ('Error: %s does not contain any class files.' % jar) - return False - return True - - -def main(argv): - if len(argv) < 2: - print __doc__ - return 1 - allow_list_path = argv[0] - - if not LoadAllowList(allow_list_path): - return 1 - - passed = True - for jar in argv[1:]: - if not CheckJar(allow_list_path, jar): - passed = False - if not passed: - return 1 - - return 0 - - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) diff --git a/core/tasks/check_boot_jars/package_allowed_list.txt b/core/tasks/check_boot_jars/package_allowed_list.txt deleted file mode 100644 index 18ab427b51..0000000000 --- a/core/tasks/check_boot_jars/package_allowed_list.txt +++ /dev/null @@ -1,248 +0,0 @@ -# Boot jar package name allowed list. -# Each line is interpreted as a regular expression. - -################################################### -# core-libart.jar & core-oj.jar -java\.awt\.font -java\.beans -java\.io -java\.lang -java\.lang\.annotation -java\.lang\.invoke -java\.lang\.ref -java\.lang\.reflect -java\.math -java\.net -java\.nio -java\.nio\.file -java\.nio\.file\.spi -java\.nio\.file\.attribute -java\.nio\.channels -java\.nio\.channels\.spi -java\.nio\.charset -java\.nio\.charset\.spi -java\.security -java\.security\.acl -java\.security\.cert -java\.security\.interfaces -java\.security\.spec -java\.sql -java\.text -java\.text\.spi -java\.time -java\.time\.chrono -java\.time\.format -java\.time\.temporal -java\.time\.zone -java\.util -java\.util\.concurrent -java\.util\.concurrent\.atomic -java\.util\.concurrent\.locks -java\.util\.function -java\.util\.jar -java\.util\.logging -java\.util\.prefs -java\.util\.regex -java\.util\.spi -java\.util\.stream -java\.util\.zip -# TODO: Remove javax.annotation.processing if possible, see http://b/132338110: -javax\.annotation\.processing -javax\.crypto -javax\.crypto\.interfaces -javax\.crypto\.spec -javax\.net -javax\.net\.ssl -javax\.security\.auth -javax\.security\.auth\.callback -javax\.security\.auth\.login -javax\.security\.auth\.x500 -javax\.security\.cert -javax\.sql -javax\.xml -javax\.xml\.datatype -javax\.xml\.namespace -javax\.xml\.parsers -javax\.xml\.transform -javax\.xml\.transform\.dom -javax\.xml\.transform\.sax -javax\.xml\.transform\.stream -javax\.xml\.validation -javax\.xml\.xpath -jdk\.internal\.util -jdk\.internal\.vm\.annotation -jdk\.net -org\.w3c\.dom -org\.w3c\.dom\.ls -org\.w3c\.dom\.traversal -# OpenJdk internal implementation. -sun\.invoke\.util -sun\.invoke\.empty -sun\.misc -sun\.util.* -sun\.text.* -sun\.security.* -sun\.reflect.* -sun\.nio.* -sun\.net.* -com\.sun\..* - -# TODO: Move these internal org.apache.harmony classes to libcore.* -org\.apache\.harmony\.crypto\.internal -org\.apache\.harmony\.dalvik -org\.apache\.harmony\.dalvik\.ddmc -org\.apache\.harmony\.luni\.internal\.util -org\.apache\.harmony\.security -org\.apache\.harmony\.security\.asn1 -org\.apache\.harmony\.security\.fortress -org\.apache\.harmony\.security\.pkcs10 -org\.apache\.harmony\.security\.pkcs7 -org\.apache\.harmony\.security\.pkcs8 -org\.apache\.harmony\.security\.provider\.crypto -org\.apache\.harmony\.security\.utils -org\.apache\.harmony\.security\.x501 -org\.apache\.harmony\.security\.x509 -org\.apache\.harmony\.security\.x509\.tsp -org\.apache\.harmony\.xml -org\.apache\.harmony\.xml\.dom -org\.apache\.harmony\.xml\.parsers - -org\.json -org\.xmlpull\.v1 -org\.xmlpull\.v1\.sax2 - -# TODO: jarjar org.kxml2.io to com.android org\.kxml2\.io -org\.kxml2\.io -org\.xml -org\.xml\.sax -org\.xml\.sax\.ext -org\.xml\.sax\.helpers - -dalvik\..* -libcore\..* -android\..* -com\.android\..* -################################################### -# android.test.base.jar -junit\.extensions -junit\.framework -android\.test -android\.test\.suitebuilder\.annotation - - -################################################### -# ext.jar -# TODO: jarjar javax.sip to com.android -javax\.sip -javax\.sip\.address -javax\.sip\.header -javax\.sip\.message - -# TODO: jarjar org.apache.commons to com.android -org\.apache\.commons\.codec -org\.apache\.commons\.codec\.binary -org\.apache\.commons\.codec\.language -org\.apache\.commons\.codec\.net -org\.apache\.commons\.logging -org\.apache\.commons\.logging\.impl -org\.apache\.http -org\.apache\.http\.auth -org\.apache\.http\.auth\.params -org\.apache\.http\.client -org\.apache\.http\.client\.entity -org\.apache\.http\.client\.methods -org\.apache\.http\.client\.params -org\.apache\.http\.client\.protocol -org\.apache\.http\.client\.utils -org\.apache\.http\.conn -org\.apache\.http\.conn\.params -org\.apache\.http\.conn\.routing -org\.apache\.http\.conn\.scheme -org\.apache\.http\.conn\.ssl -org\.apache\.http\.conn\.util -org\.apache\.http\.cookie -org\.apache\.http\.cookie\.params -org\.apache\.http\.entity -org\.apache\.http\.impl -org\.apache\.http\.impl\.auth -org\.apache\.http\.impl\.client -org\.apache\.http\.impl\.client -org\.apache\.http\.impl\.conn -org\.apache\.http\.impl\.conn\.tsccm -org\.apache\.http\.impl\.cookie -org\.apache\.http\.impl\.entity -org\.apache\.http\.impl\.io -org\.apache\.http\.impl\.io -org\.apache\.http\.io -org\.apache\.http\.message -org\.apache\.http\.params -org\.apache\.http\.protocol -org\.apache\.http\.util - -# TODO: jarjar gov.nist to com.android -gov\.nist\.core -gov\.nist\.core\.net -gov\.nist\.javax\.sip -gov\.nist\.javax\.sip\.address -gov\.nist\.javax\.sip\.clientauthutils -gov\.nist\.javax\.sip\.header -gov\.nist\.javax\.sip\.header\.extensions -gov\.nist\.javax\.sip\.header\.ims -gov\.nist\.javax\.sip\.message -gov\.nist\.javax\.sip\.parser -gov\.nist\.javax\.sip\.parser\.extensions -gov\.nist\.javax\.sip\.parser\.ims -gov\.nist\.javax\.sip\.stack - -org\.ccil\.cowan\.tagsoup -org\.ccil\.cowan\.tagsoup\.jaxp - -################################################### -# framework.jar -javax\.microedition\.khronos\.opengles -javax\.microedition\.khronos\.egl - -android - -################################################### -# apache-xml.jar -org\.apache\.xml\.res -org\.apache\.xml\.utils -org\.apache\.xml\.utils\.res -org\.apache\.xml\.dtm -org\.apache\.xml\.dtm\.ref -org\.apache\.xml\.dtm\.ref\.dom2dtm -org\.apache\.xml\.dtm\.ref\.sax2dtm -org\.apache\.xml\.serializer -org\.apache\.xml\.serializer\.utils -org\.apache\.xml\.serializer\.dom3 -org\.apache\.xpath -org\.apache\.xpath\.operations -org\.apache\.xpath\.domapi -org\.apache\.xpath\.functions -org\.apache\.xpath\.res -org\.apache\.xpath\.axes -org\.apache\.xpath\.objects -org\.apache\.xpath\.patterns -org\.apache\.xpath\.jaxp -org\.apache\.xpath\.compiler -org\.apache\.xalan -org\.apache\.xalan\.res -org\.apache\.xalan\.templates -org\.apache\.xalan\.serialize -org\.apache\.xalan\.extensions -org\.apache\.xalan\.processor -org\.apache\.xalan\.transformer -org\.apache\.xalan\.xslt - -################################################### -# Packages in the google namespace across all bootclasspath jars. -com\.google\.android\..* -com\.google\.vr\.platform.* -com\.google\.i18n\.phonenumbers\..* -com\.google\.i18n\.phonenumbers - -################################################### -# Packages used for Android in Chrome OS -org\.chromium\.arc -org\.chromium\.arc\..* diff --git a/tools/releasetools/Android.bp b/tools/releasetools/Android.bp index e1543e7d14..ca6c2b2853 100644 --- a/tools/releasetools/Android.bp +++ b/tools/releasetools/Android.bp @@ -49,6 +49,7 @@ python_defaults { required: [ "blk_alloc_to_base_fs", "e2fsck", + "mkerofsimage.sh", "mkuserimg_mke2fs", "simg2img", "tune2fs", diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py index 169a11224a..6487b9b8e2 100755 --- a/tools/releasetools/build_image.py +++ b/tools/releasetools/build_image.py @@ -296,6 +296,18 @@ def BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config): build_command.extend(["--inode_size", "256"]) if "selinux_fc" in prop_dict: build_command.append(prop_dict["selinux_fc"]) + elif fs_type.startswith("erofs"): + build_command = ["mkerofsimage.sh"] + build_command.extend([in_dir, out_file]) + if "erofs_sparse_flag" in prop_dict: + build_command.extend([prop_dict["erofs_sparse_flag"]]) + build_command.extend(["-m", prop_dict["mount_point"]]) + if target_out: + build_command.extend(["-d", target_out]) + if fs_config: + build_command.extend(["-C", fs_config]) + if "selinux_fc" in prop_dict: + build_command.extend(["-c", prop_dict["selinux_fc"]]) elif fs_type.startswith("squash"): build_command = ["mksquashfsimage.sh"] build_command.extend([in_dir, out_file]) @@ -532,6 +544,7 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): common_props = ( "extfs_sparse_flag", + "erofs_sparse_flag", "squashfs_sparse_flag", "f2fs_sparse_flag", "skip_fsck", |