aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OWNERS3
-rw-r--r--core/jacoco.mk2
-rw-r--r--core/python_binary_host_test_config_template.xml21
-rw-r--r--core/soong_java_prebuilt.mk5
-rw-r--r--target/product/base_system.mk1
-rw-r--r--target/product/gsi/current.txt1
-rw-r--r--target/product/runtime_libart.mk4
-rwxr-xr-xtools/releasetools/add_img_to_target_files.py53
8 files changed, 60 insertions, 30 deletions
diff --git a/OWNERS b/OWNERS
index b9fee4e1a..7bc9fe09f 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,8 +1,7 @@
1ccross@android.com 1ccross@android.com
2dwillemsen@google.com 2dwillemsen@google.com
3nanzhang@google.com
4 3
5per-file * = ccross@android.com,dwillemsen@google.com,nanzhang@google.com 4per-file * = ccross@android.com,dwillemsen@google.com
6 5
7# for version updates 6# for version updates
8per-file version_defaults.mk = aseaton@google.com,elisapascual@google.com 7per-file version_defaults.mk = aseaton@google.com,elisapascual@google.com
diff --git a/core/jacoco.mk b/core/jacoco.mk
index 6406df45a..148bb045e 100644
--- a/core/jacoco.mk
+++ b/core/jacoco.mk
@@ -51,7 +51,7 @@ $(my_unzipped_timestamp_path): $(LOCAL_FULL_CLASSES_PRE_JACOCO_JAR)
51 -d $(PRIVATE_UNZIPPED_PATH) \ 51 -d $(PRIVATE_UNZIPPED_PATH) \
52 $(PRIVATE_INCLUDE_ARGS) 52 $(PRIVATE_INCLUDE_ARGS)
53 (cd $(PRIVATE_UNZIPPED_PATH) && rm -rf $(PRIVATE_EXCLUDE_ARGS)) 53 (cd $(PRIVATE_UNZIPPED_PATH) && rm -rf $(PRIVATE_EXCLUDE_ARGS))
54 (cd $(PRIVATE_UNZIPPED_PATH) && find -not -name "*.class" -type f | xargs --no-run-if-empty rm) 54 (cd $(PRIVATE_UNZIPPED_PATH) && find -not -name "*.class" -type f -exec rm {} \;)
55 touch $(PRIVATE_UNZIPPED_TIMESTAMP_PATH) 55 touch $(PRIVATE_UNZIPPED_TIMESTAMP_PATH)
56# Unfortunately in the previous task above, 56# Unfortunately in the previous task above,
57# 'rm -rf $(PRIVATE_EXCLUDE_ARGS)' needs to be a separate 57# 'rm -rf $(PRIVATE_EXCLUDE_ARGS)' needs to be a separate
diff --git a/core/python_binary_host_test_config_template.xml b/core/python_binary_host_test_config_template.xml
new file mode 100644
index 000000000..0f63953d9
--- /dev/null
+++ b/core/python_binary_host_test_config_template.xml
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2018 The Android Open Source Project
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15-->
16<configuration description="Config to run {MODULE} unittests">
17 <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" >
18 <option name="par-file-name" value="{MODULE}" />
19 <option name="test-timeout" value="5m" />
20 </test>
21</configuration>
diff --git a/core/soong_java_prebuilt.mk b/core/soong_java_prebuilt.mk
index a62590d84..cfda44e0e 100644
--- a/core/soong_java_prebuilt.mk
+++ b/core/soong_java_prebuilt.mk
@@ -121,6 +121,11 @@ ifdef LOCAL_SOONG_DEX_JAR
121 java-dex : $(common_javalib.jar) 121 java-dex : $(common_javalib.jar)
122 endif # LOCAL_UNINSTALLABLE_MODULE 122 endif # LOCAL_UNINSTALLABLE_MODULE
123else # LOCAL_SOONG_DEX_JAR 123else # LOCAL_SOONG_DEX_JAR
124 ifndef LOCAL_UNINSTALLABLE_MODULE
125 ifndef LOCAL_IS_HOST_MODULE
126 $(call pretty-error,Installable device module must have LOCAL_SOONG_DEX_JAR set)
127 endif
128 endif
124 $(eval $(call copy-one-file,$(full_classes_jar),$(LOCAL_BUILT_MODULE))) 129 $(eval $(call copy-one-file,$(full_classes_jar),$(LOCAL_BUILT_MODULE)))
125endif # LOCAL_SOONG_DEX_JAR 130endif # LOCAL_SOONG_DEX_JAR
126 131
diff --git a/target/product/base_system.mk b/target/product/base_system.mk
index 7c3ac3b3d..df793bff1 100644
--- a/target/product/base_system.mk
+++ b/target/product/base_system.mk
@@ -259,6 +259,7 @@ PRODUCT_PACKAGES += \
259 uncrypt \ 259 uncrypt \
260 usbd \ 260 usbd \
261 vdc \ 261 vdc \
262 viewcompiler \
262 voip-common \ 263 voip-common \
263 vold \ 264 vold \
264 WallpaperBackup \ 265 WallpaperBackup \
diff --git a/target/product/gsi/current.txt b/target/product/gsi/current.txt
index 17d2f1bd5..9eff6b6ca 100644
--- a/target/product/gsi/current.txt
+++ b/target/product/gsi/current.txt
@@ -70,6 +70,7 @@ VNDK-core: android.hardware.automotive.evs@1.0.so
70VNDK-core: android.hardware.automotive.vehicle@2.0.so 70VNDK-core: android.hardware.automotive.vehicle@2.0.so
71VNDK-core: android.hardware.biometrics.fingerprint@2.1.so 71VNDK-core: android.hardware.biometrics.fingerprint@2.1.so
72VNDK-core: android.hardware.bluetooth.a2dp@1.0.so 72VNDK-core: android.hardware.bluetooth.a2dp@1.0.so
73VNDK-core: android.hardware.bluetooth.audio@2.0.so
73VNDK-core: android.hardware.bluetooth@1.0.so 74VNDK-core: android.hardware.bluetooth@1.0.so
74VNDK-core: android.hardware.boot@1.0.so 75VNDK-core: android.hardware.boot@1.0.so
75VNDK-core: android.hardware.broadcastradio@1.0.so 76VNDK-core: android.hardware.broadcastradio@1.0.so
diff --git a/target/product/runtime_libart.mk b/target/product/runtime_libart.mk
index 71834aa5e..f1b09c163 100644
--- a/target/product/runtime_libart.mk
+++ b/target/product/runtime_libart.mk
@@ -52,9 +52,7 @@ PRODUCT_PACKAGES += art-runtime
52# ART/dex helpers. 52# ART/dex helpers.
53PRODUCT_PACKAGES += art-tools 53PRODUCT_PACKAGES += art-tools
54# Android Runtime APEX module. 54# Android Runtime APEX module.
55ifneq ($(DONT_INCLUDE_RUNTIME_APEX), true) 55PRODUCT_PACKAGES += com.android.runtime
56 PRODUCT_PACKAGES += com.android.runtime
57endif
58 56
59# Certificates. 57# Certificates.
60PRODUCT_PACKAGES += \ 58PRODUCT_PACKAGES += \
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index da5ea4aa1..e75b3b768 100755
--- a/tools/releasetools/add_img_to_target_files.py
+++ b/tools/releasetools/add_img_to_target_files.py
@@ -82,18 +82,23 @@ FIXED_FILE_TIMESTAMP = int((
82 82
83 83
84class OutputFile(object): 84class OutputFile(object):
85 """A helper class to write a generated file to the given dir or zip.
86
87 When generating images, we want the outputs to go into the given zip file, or
88 the given dir.
89
90 Attributes:
91 name: The name of the output file, regardless of the final destination.
92 """
93
85 def __init__(self, output_zip, input_dir, prefix, name): 94 def __init__(self, output_zip, input_dir, prefix, name):
95 # We write the intermediate output file under the given input_dir, even if
96 # the final destination is a zip archive.
97 self.name = os.path.join(input_dir, prefix, name)
86 self._output_zip = output_zip 98 self._output_zip = output_zip
87 self.input_name = os.path.join(input_dir, prefix, name)
88
89 if self._output_zip: 99 if self._output_zip:
90 self._zip_name = os.path.join(prefix, name) 100 self._zip_name = os.path.join(prefix, name)
91 101
92 root, suffix = os.path.splitext(name)
93 self.name = common.MakeTempFile(prefix=root + '-', suffix=suffix)
94 else:
95 self.name = self.input_name
96
97 def Write(self): 102 def Write(self):
98 if self._output_zip: 103 if self._output_zip:
99 common.ZipWrite(self._output_zip, self.name, self._zip_name) 104 common.ZipWrite(self._output_zip, self.name, self._zip_name)
@@ -129,9 +134,9 @@ def AddSystem(output_zip, recovery_img=None, boot_img=None):
129 output_zip. Returns the name of the system image file.""" 134 output_zip. Returns the name of the system image file."""
130 135
131 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system.img") 136 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system.img")
132 if os.path.exists(img.input_name): 137 if os.path.exists(img.name):
133 logger.info("system.img already exists; no need to rebuild...") 138 logger.info("system.img already exists; no need to rebuild...")
134 return img.input_name 139 return img.name
135 140
136 def output_sink(fn, data): 141 def output_sink(fn, data):
137 ofile = open(os.path.join(OPTIONS.input_tmp, "SYSTEM", fn), "w") 142 ofile = open(os.path.join(OPTIONS.input_tmp, "SYSTEM", fn), "w")
@@ -161,7 +166,7 @@ def AddSystemOther(output_zip):
161 and store it in output_zip.""" 166 and store it in output_zip."""
162 167
163 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system_other.img") 168 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "system_other.img")
164 if os.path.exists(img.input_name): 169 if os.path.exists(img.name):
165 logger.info("system_other.img already exists; no need to rebuild...") 170 logger.info("system_other.img already exists; no need to rebuild...")
166 return 171 return
167 172
@@ -173,9 +178,9 @@ def AddVendor(output_zip):
173 output_zip.""" 178 output_zip."""
174 179
175 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vendor.img") 180 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vendor.img")
176 if os.path.exists(img.input_name): 181 if os.path.exists(img.name):
177 logger.info("vendor.img already exists; no need to rebuild...") 182 logger.info("vendor.img already exists; no need to rebuild...")
178 return img.input_name 183 return img.name
179 184
180 block_list = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vendor.map") 185 block_list = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "vendor.map")
181 CreateImage(OPTIONS.input_tmp, OPTIONS.info_dict, "vendor", img, 186 CreateImage(OPTIONS.input_tmp, OPTIONS.info_dict, "vendor", img,
@@ -188,9 +193,9 @@ def AddProduct(output_zip):
188 output_zip.""" 193 output_zip."""
189 194
190 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "product.img") 195 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "product.img")
191 if os.path.exists(img.input_name): 196 if os.path.exists(img.name):
192 logger.info("product.img already exists; no need to rebuild...") 197 logger.info("product.img already exists; no need to rebuild...")
193 return img.input_name 198 return img.name
194 199
195 block_list = OutputFile( 200 block_list = OutputFile(
196 output_zip, OPTIONS.input_tmp, "IMAGES", "product.map") 201 output_zip, OPTIONS.input_tmp, "IMAGES", "product.map")
@@ -206,9 +211,9 @@ def AddProductServices(output_zip):
206 211
207 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", 212 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES",
208 "product_services.img") 213 "product_services.img")
209 if os.path.exists(img.input_name): 214 if os.path.exists(img.name):
210 logger.info("product_services.img already exists; no need to rebuild...") 215 logger.info("product_services.img already exists; no need to rebuild...")
211 return img.input_name 216 return img.name
212 217
213 block_list = OutputFile( 218 block_list = OutputFile(
214 output_zip, OPTIONS.input_tmp, "IMAGES", "product_services.map") 219 output_zip, OPTIONS.input_tmp, "IMAGES", "product_services.map")
@@ -222,9 +227,9 @@ def AddOdm(output_zip):
222 """Turn the contents of ODM into an odm image and store it in output_zip.""" 227 """Turn the contents of ODM into an odm image and store it in output_zip."""
223 228
224 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "odm.img") 229 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "odm.img")
225 if os.path.exists(img.input_name): 230 if os.path.exists(img.name):
226 logger.info("odm.img already exists; no need to rebuild...") 231 logger.info("odm.img already exists; no need to rebuild...")
227 return img.input_name 232 return img.name
228 233
229 block_list = OutputFile( 234 block_list = OutputFile(
230 output_zip, OPTIONS.input_tmp, "IMAGES", "odm.map") 235 output_zip, OPTIONS.input_tmp, "IMAGES", "odm.map")
@@ -241,9 +246,9 @@ def AddDtbo(output_zip):
241 image under PREBUILT_IMAGES/, signs it as needed, and returns the image name. 246 image under PREBUILT_IMAGES/, signs it as needed, and returns the image name.
242 """ 247 """
243 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "dtbo.img") 248 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "dtbo.img")
244 if os.path.exists(img.input_name): 249 if os.path.exists(img.name):
245 logger.info("dtbo.img already exists; no need to rebuild...") 250 logger.info("dtbo.img already exists; no need to rebuild...")
246 return img.input_name 251 return img.name
247 252
248 dtbo_prebuilt_path = os.path.join( 253 dtbo_prebuilt_path = os.path.join(
249 OPTIONS.input_tmp, "PREBUILT_IMAGES", "dtbo.img") 254 OPTIONS.input_tmp, "PREBUILT_IMAGES", "dtbo.img")
@@ -344,7 +349,7 @@ def AddUserdata(output_zip):
344 """ 349 """
345 350
346 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "userdata.img") 351 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "userdata.img")
347 if os.path.exists(img.input_name): 352 if os.path.exists(img.name):
348 logger.info("userdata.img already exists; no need to rebuild...") 353 logger.info("userdata.img already exists; no need to rebuild...")
349 return 354 return
350 355
@@ -418,9 +423,9 @@ def AddVBMeta(output_zip, partitions, name, needed_partitions):
418 423
419 img = OutputFile( 424 img = OutputFile(
420 output_zip, OPTIONS.input_tmp, "IMAGES", "{}.img".format(name)) 425 output_zip, OPTIONS.input_tmp, "IMAGES", "{}.img".format(name))
421 if os.path.exists(img.input_name): 426 if os.path.exists(img.name):
422 logger.info("%s.img already exists; not rebuilding...", name) 427 logger.info("%s.img already exists; not rebuilding...", name)
423 return img.input_name 428 return img.name
424 429
425 avbtool = os.getenv('AVBTOOL') or OPTIONS.info_dict["avb_avbtool"] 430 avbtool = os.getenv('AVBTOOL') or OPTIONS.info_dict["avb_avbtool"]
426 cmd = [avbtool, "make_vbmeta_image", "--output", img.name] 431 cmd = [avbtool, "make_vbmeta_image", "--output", img.name]
@@ -497,7 +502,7 @@ def AddCache(output_zip):
497 """Create an empty cache image and store it in output_zip.""" 502 """Create an empty cache image and store it in output_zip."""
498 503
499 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "cache.img") 504 img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "cache.img")
500 if os.path.exists(img.input_name): 505 if os.path.exists(img.name):
501 logger.info("cache.img already exists; no need to rebuild...") 506 logger.info("cache.img already exists; no need to rebuild...")
502 return 507 return
503 508