Merge "Revert "Better error for missing LOCAL_SRC_FILES in prebuilts""
diff --git a/core/Makefile b/core/Makefile
index f46ab11..136690f 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -2480,7 +2480,7 @@
# $1: root directory
# $2: add prefix
define fs_config
-(cd $(1); find . -type d | sed 's,$$,/,'; find . \! -type d) | cut -c 3- | sort | sed 's,^,$(2),' | $(HOST_OUT_EXECUTABLES)/fs_config -C -D $(TARGET_OUT) -S $(SELINUX_FC)
+(cd $(1); find . -type d | sed 's,$$,/,'; find . \! -type d) | cut -c 3- | sort | sed 's,^,$(2),' | $(HOST_OUT_EXECUTABLES)/fs_config -C -D $(TARGET_OUT) -S $(SELINUX_FC) -R "$(2)"
endef
# Depending on the various images guarantees that the underlying
diff --git a/core/config.mk b/core/config.mk
index 295644c..7448623 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -89,15 +89,6 @@
dist_goal := $(strip $(filter dist,$(MAKECMDGOALS)))
MAKECMDGOALS := $(strip $(filter-out dist,$(MAKECMDGOALS)))
-# Tell python not to spam the source tree with .pyc files. This
-# only has an effect on python 2.6 and above.
-export PYTHONDONTWRITEBYTECODE := 1
-
-ifneq ($(filter --color=always, $(GREP_OPTIONS)),)
-$(warning The build system needs unmodified output of grep.)
-$(error Please remove --color=always from your $$GREP_OPTIONS)
-endif
-
UNAME := $(shell uname -sm)
SRC_TARGET_DIR := $(TOPDIR)build/target
@@ -894,12 +885,6 @@
$(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default
endif
-# These will come from Soong, drop the environment versions
-unexport CLANG
-unexport CLANG_CXX
-unexport CCC_CC
-unexport CCC_CXX
-
# ###############################################################
# Collect a list of the SDK versions that we could compile against
# For use with the LOCAL_SDK_VERSION variable for include $(BUILD_PACKAGE)
diff --git a/target/board/generic/sepolicy/OWNERS b/target/board/generic/sepolicy/OWNERS
index 4bd7e34..3828988 100644
--- a/target/board/generic/sepolicy/OWNERS
+++ b/target/board/generic/sepolicy/OWNERS
@@ -1,6 +1,4 @@
-nnk@google.com
jeffv@google.com
-klyubin@google.com
dcashman@google.com
jbires@google.com
sspatil@google.com
diff --git a/target/board/generic_arm64_ab/sepolicy/OWNERS b/target/board/generic_arm64_ab/sepolicy/OWNERS
index 4bd7e34..3828988 100644
--- a/target/board/generic_arm64_ab/sepolicy/OWNERS
+++ b/target/board/generic_arm64_ab/sepolicy/OWNERS
@@ -1,6 +1,4 @@
-nnk@google.com
jeffv@google.com
-klyubin@google.com
dcashman@google.com
jbires@google.com
sspatil@google.com
diff --git a/target/board/generic_x86/sepolicy/OWNERS b/target/board/generic_x86/sepolicy/OWNERS
index 4bd7e34..3828988 100644
--- a/target/board/generic_x86/sepolicy/OWNERS
+++ b/target/board/generic_x86/sepolicy/OWNERS
@@ -1,6 +1,4 @@
-nnk@google.com
jeffv@google.com
-klyubin@google.com
dcashman@google.com
jbires@google.com
sspatil@google.com
diff --git a/target/product/core_base.mk b/target/product/core_base.mk
index 151e8de..7dc0010 100644
--- a/target/product/core_base.mk
+++ b/target/product/core_base.mk
@@ -62,9 +62,4 @@
mdnsd \
requestsync \
-# Wifi modules
-PRODUCT_PACKAGES += \
- wifi-service \
- wificond \
-
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_minimal.mk)
diff --git a/tools/fs_config/fs_config.c b/tools/fs_config/fs_config.c
index 48f300b..2952875 100644
--- a/tools/fs_config/fs_config.c
+++ b/tools/fs_config/fs_config.c
@@ -67,17 +67,18 @@
}
static void usage() {
- fprintf(stderr, "Usage: fs_config [-D product_out_path] [-S context_file] [-C]\n");
+ fprintf(stderr, "Usage: fs_config [-D product_out_path] [-S context_file] [-R root] [-C]\n");
}
int main(int argc, char** argv) {
char buffer[1024];
const char* context_file = NULL;
const char* product_out_path = NULL;
+ char* root_path = NULL;
struct selabel_handle* sehnd = NULL;
int print_capabilities = 0;
int opt;
- while((opt = getopt(argc, argv, "CS:D:")) != -1) {
+ while((opt = getopt(argc, argv, "CS:R:D:")) != -1) {
switch(opt) {
case 'C':
print_capabilities = 1;
@@ -85,6 +86,9 @@
case 'S':
context_file = optarg;
break;
+ case 'R':
+ root_path = optarg;
+ break;
case 'D':
product_out_path = optarg;
break;
@@ -98,6 +102,14 @@
sehnd = get_sehnd(context_file);
}
+ if (root_path != NULL) {
+ size_t root_len = strlen(root_path);
+ /* Trim any trailing slashes from the root path. */
+ while (root_len && root_path[--root_len] == '/') {
+ root_path[root_len] = '\0';
+ }
+ }
+
while (fgets(buffer, 1023, stdin) != NULL) {
int is_dir = 0;
int i;
@@ -122,6 +134,10 @@
unsigned uid = 0, gid = 0, mode = 0;
uint64_t capabilities;
fs_config(buffer, is_dir, product_out_path, &uid, &gid, &mode, &capabilities);
+ if (root_path != NULL && strcmp(buffer, root_path) == 0) {
+ /* The root of the filesystem needs to be an empty string. */
+ strcpy(buffer, "");
+ }
printf("%s %d %d %o", buffer, uid, gid, mode);
if (sehnd != NULL) {
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index bbb5abd..fcbc6bf 100755
--- a/tools/releasetools/add_img_to_target_files.py
+++ b/tools/releasetools/add_img_to_target_files.py
@@ -120,13 +120,13 @@
return [which, care_map_ranges.to_string_raw()]
-def AddSystem(output_zip, prefix="IMAGES/", recovery_img=None, boot_img=None):
+def AddSystem(output_zip, recovery_img=None, boot_img=None):
"""Turn the contents of SYSTEM into a system image and store it in
output_zip. Returns the name of the system image file."""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "system.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system.img")
if os.path.exists(img.input_name):
- print("system.img already exists in %s, no need to rebuild..." % (prefix,))
+ print("system.img already exists; no need to rebuild...")
return img.input_name
def output_sink(fn, data):
@@ -145,65 +145,66 @@
common.MakeRecoveryPatch(OPTIONS.input_tmp, output_sink, recovery_img,
boot_img, info_dict=OPTIONS.info_dict)
- block_list = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "system.map")
+ block_list = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system.map")
CreateImage(OPTIONS.input_tmp, OPTIONS.info_dict, "system", img,
block_list=block_list)
return img.name
-def AddSystemOther(output_zip, prefix="IMAGES/"):
+def AddSystemOther(output_zip):
"""Turn the contents of SYSTEM_OTHER into a system_other image
and store it in output_zip."""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "system_other.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system_other.img")
if os.path.exists(img.input_name):
- print("system_other.img already exists in %s, no need to rebuild..." % (
- prefix,))
+ print("system_other.img already exists; no need to rebuild...")
return
CreateImage(OPTIONS.input_tmp, OPTIONS.info_dict, "system_other", img)
-def AddVendor(output_zip, prefix="IMAGES/"):
+def AddVendor(output_zip):
"""Turn the contents of VENDOR into a vendor image and store in it
output_zip."""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "vendor.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vendor.img")
if os.path.exists(img.input_name):
- print("vendor.img already exists in %s, no need to rebuild..." % (prefix,))
+ print("vendor.img already exists; no need to rebuild...")
return img.input_name
- block_list = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "vendor.map")
+ block_list = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vendor.map")
CreateImage(OPTIONS.input_tmp, OPTIONS.info_dict, "vendor", img,
block_list=block_list)
return img.name
-def AddProduct(output_zip, prefix="IMAGES/"):
- """Turn the contents of PRODUCT into a product image and store it in output_zip."""
+def AddProduct(output_zip):
+ """Turn the contents of PRODUCT into a product image and store it in
+ output_zip."""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "product.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "product.img")
if os.path.exists(img.input_name):
- print("product.img already exists in %s, no need to rebuild..." % (prefix,))
+ print("product.img already exists; no need to rebuild...")
return img.input_name
- block_list = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "product.map")
- CreateImage(OPTIONS.input_tmp, OPTIONS.info_dict, "product", img,
- block_list=block_list)
+ block_list = OutputFile(
+ output_zip, OPTIONS.input_tmp, "IMAGES", "product.map")
+ CreateImage(
+ OPTIONS.input_tmp, OPTIONS.info_dict, "product", img,
+ block_list=block_list)
return img.name
-def AddDtbo(output_zip, prefix="IMAGES/"):
+def AddDtbo(output_zip):
"""Adds the DTBO image.
- Uses the image under prefix if it already exists. Otherwise looks for the
+ Uses the image under IMAGES/ if it already exists. Otherwise looks for the
image under PREBUILT_IMAGES/, signs it as needed, and returns the image name.
"""
-
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "dtbo.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "dtbo.img")
if os.path.exists(img.input_name):
- print("dtbo.img already exists in %s, no need to rebuild..." % (prefix,))
+ print("dtbo.img already exists; no need to rebuild...")
return img.input_name
dtbo_prebuilt_path = os.path.join(
@@ -297,7 +298,7 @@
info_dict[adjusted_blocks_key] = int(adjusted_blocks_value)/4096 - 1
-def AddUserdata(output_zip, prefix="IMAGES/"):
+def AddUserdata(output_zip):
"""Create a userdata image and store it in output_zip.
In most case we just create and store an empty userdata.img;
@@ -306,10 +307,9 @@
in OPTIONS.info_dict.
"""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "userdata.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "userdata.img")
if os.path.exists(img.input_name):
- print("userdata.img already exists in %s, no need to rebuild..." % (
- prefix,))
+ print("userdata.img already exists; no need to rebuild...")
return
# Skip userdata.img if no size.
@@ -365,7 +365,7 @@
cmd.extend(["--include_descriptors_from_image", img_path])
-def AddVBMeta(output_zip, partitions, prefix="IMAGES/"):
+def AddVBMeta(output_zip, partitions):
"""Creates a VBMeta image and store it in output_zip.
Args:
@@ -374,9 +374,9 @@
values. Only valid partition names are accepted, which include 'boot',
'recovery', 'system', 'vendor', 'dtbo'.
"""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "vbmeta.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vbmeta.img")
if os.path.exists(img.input_name):
- print("vbmeta.img already exists in %s; not rebuilding..." % (prefix,))
+ print("vbmeta.img already exists; not rebuilding...")
return img.input_name
avbtool = os.getenv('AVBTOOL') or OPTIONS.info_dict["avb_avbtool"]
@@ -421,11 +421,13 @@
img.Write()
-def AddPartitionTable(output_zip, prefix="IMAGES/"):
+def AddPartitionTable(output_zip):
"""Create a partition table image and store it in output_zip."""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "partition-table.img")
- bpt = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "partition-table.bpt")
+ img = OutputFile(
+ output_zip, OPTIONS.input_tmp, "IMAGES", "partition-table.img")
+ bpt = OutputFile(
+ output_zip, OPTIONS.input_tmp, "IMAGES", "partition-table.bpt")
# use BPTTOOL from environ, or "bpttool" if empty or not set.
bpttool = os.getenv("BPTTOOL") or "bpttool"
@@ -450,12 +452,12 @@
bpt.Write()
-def AddCache(output_zip, prefix="IMAGES/"):
+def AddCache(output_zip):
"""Create an empty cache image and store it in output_zip."""
- img = OutputFile(output_zip, OPTIONS.input_tmp, prefix, "cache.img")
+ img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "cache.img")
if os.path.exists(img.input_name):
- print("cache.img already exists in %s, no need to rebuild..." % (prefix,))
+ print("cache.img already exists; no need to rebuild...")
return
image_props = build_image.ImagePropFromGlobalDict(OPTIONS.info_dict, "cache")