Commit Graph

804 Commits

Author SHA1 Message Date
Nicolas Geoffray
f343872a8d Align jar file after calling merge-zips when dex is uncompressed.
Noticed this while changing a some dex build rules.

Test: m
Change-Id: I9838e81e0e98be49d34554041a5a942b64259aaa
2019-01-24 06:38:14 +00:00
Colin Cross
3a3e94c09a Fix kotlin annotation processing after java_plugin
I37c1e80eba71ae2d6a06199fb102194a51994989 broke kotlin annotation
processing with a typo in the processors flag to kapt and by
passing -processor to javac with an empty processorpath.

Bug: 77284273
Bug: 122251693
Test: kotlin_test.go
Test: m checkbuild
Change-Id: I17c45d5b3f9df089231af5d2930646ad0e6bf9be
2019-01-23 16:14:21 -08:00
Colin Cross
be9cdb8d64 Replace annotation_processors with plugins
Follow bazel's modules for annotation processors by introducing
a java_plugin module type that can contain extra metadata about
the annotation processor, the processor class and a flag to
specify if the annotation processor is compatible with the
turbine optimization.  Deprecate the annotation_processors
property, which took a list of java_library_host modules, in
favor of the plugins property, which takes a list of java_plugin
modules.  The annotation_processors property will be removed
once all uses have been replaced with plugins.

Bug: 77284273
Test: plugin_test.go
Test: m caliper
Change-Id: I37c1e80eba71ae2d6a06199fb102194a51994989
2019-01-23 20:17:51 +00:00
Steven Moreland
c4efd9cb55 jarjar_rules: accept file-group
This allows a jarjar rule to be shared among multiple targets in
different directories.

Bug: 86259915
Test: use filegroup jarjar_rules
Change-Id: I3fa476c4e87e2460ab9fabfb34229f471c80e6b0
2019-01-23 18:05:18 +00:00
Nicolas Geoffray
65fd8ba2fe Always do zipalign with uncompressDex.
Also preserve the alignment with hiddenapi.

Test: conscrypt apex has its conscrypt.jar zipaligned.
Change-Id: I43cc0eadb9548c3d8055e12c077fb7bbe1935fe6
2019-01-23 06:36:48 +00:00
Colin Cross
e153382e17 Merge changes from topic "kapt"
* changes:
  Pass annotation processors to kotlinc
  Move kotlin to it's own file
2019-01-23 02:18:12 +00:00
Colin Cross
afbb1734f6 Pass annotation processors to kotlinc
Enable the kotlin-annotation-processing plugin and pass annotation
processors to it.

Bug: 122251693
Test: m checkbuild
Test: TestKapt in kotlin_test.go
Change-Id: I841df454beaaa7edd263eea714ca0d958a03c9de
2019-01-22 21:47:19 +00:00
Jaewoong Jung
de4c02f855 Minor code/comment cleanup for app.go.
1. We no longer need AndroidApp.extraLinkFlags.
(https://r.android.com/c/platform/build/soong/+/691332)
(https://r.android.com/c/platform/build/soong/+/792280)
2. Early break in the for loop to find --product flags.
3. Minor var name / comment updates for readability.

Test: app.go / TreeHugger
Change-Id: Iecea3e7cd319267c680422343ded5f7f8e69d0cd
2019-01-22 11:24:50 -08:00
Colin Cross
21fc9bbe19 Move kotlin to it's own file
kapt is going to make kotlin a little more complicated, move the
rules and tests to their own files.

Bug: 122251693
Test: m checkbuild
Change-Id: Ieed78b97995ced210b710bd50c357514cc8e3bc6
2019-01-22 16:32:11 +00:00
Nicolas Geoffray
f8c06c159e Merge "Don't install java libraries that are already in an apex." 2019-01-22 07:48:05 +00:00
Colin Cross
2c77ceba34 Build java_sdk_library modules when UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true
java_sdk_library modules are usually disabled in favor of prebuilts
when TARGET_BUILD_APPS is set.  Keep them enabled when
UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true, which is used by some unbundled
builds built from a full source tree like mainline modules.

Bug: 123183568
Test: m TARGET_PRODUCT=mainline_modules_arm UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true TARGET_BUILD_APPS=com.android.media
Change-Id: Ifa940769e467ca4b7ad3b95106e184c00680d2ae
2019-01-21 12:18:39 -08:00
David Brazdil
0f670a22df Replace hiddenapi-{public,private}-list.txt with a CSV file
`hiddenapi` is being refactored to work with a single CSV file as
opposued to a multitude of text files (one per flag). This patch
changes the singleton rule for listing public/private APIs from
stubs to expect a CSV as an output.

Bug: 119068555
Test: compiles, hiddenapi-flags.csv unchanged
Change-Id: I622521d59979a6b01ecc8065a278412fedf7b9bc
2019-01-21 14:30:49 +00:00
Nicolas Geoffray
4bdea39ad2 Don't install java libraries that are already in an apex.
This need to have -hostdex rules not look at the installFile.
In the near future, all -hostdex files come from jars that are in an apex.

bug: 119868597
Test: m
Change-Id: I4423626c5ced5d098ddd97c122fbfced54f817fc
2019-01-21 14:02:17 +00:00
Tor Norbye
76c875a796 Update signature files to the new format
The new format is described in tools/metalava/FORMAT.md.

Fixes: 116589402 Switch signature files over to the v2 format
Fixes: 112626813 Drop "synchronized" modifier from the signature format
Fixes: 122358225 Omit overriding methods that only differ in final [...]
Fixes: 73088715 API Review: Need doclava to output nullability
Fixes: 79739773 API Review: Metalava enforcing constants are constant
Exempt-From-Owner-Approval: Large-scale tooling change
Test: make sdk, make update-api, make checkapi
Merged-In: I8314f4e7099fa92e4f8ed7d283ccf836cc9a84a0
Change-Id: I828ec5ea2f879ebf8dd4ead651e9c9d2345f52e0
2019-01-19 21:36:07 -08:00
Colin Cross
cd964b3ea1 Maintain uncompressed dex through hiddenapi encode
hiddenapi encode unzips and rezips the dex jar.  Pass uncompressDex
into it so that it doesn't make classes.dex compressed in the dex
jar when it was previously uncompressed.

Bug: 123100239
Test: m checkbuild
Test: zipinfo $OUT/system/framework/conscrypt.jar shows uncompressed classes.dex
Change-Id: If36cde330eb0bcb1e1db3c582452c5faebc8ff29
2019-01-19 06:10:00 +00:00
David Brazdil
9fc36a68d0 Restore UNSAFE_DISABLE_HIDDENAPI_FLAGS functionality.
It got broken with the move to hiddenapi to Soong.

Test: UNSAFE_DISABLE_HIDDENAPI_FLAGS=true m -j32
Change-Id: Id369bfae8e118907b1f12faa7e4207494904edda
2019-01-18 11:12:33 +00:00
Colin Cross
5a1af88dd5 Use module name as intermediates name for android_app modules
Use foo.apk instead of package.apk for the intermediate package for
a module named foo.

Fixes: 122996822
Test: m checkbuild
Change-Id: I38058a54038e1c2eeaefc0f0e7f450a74a3e96a7
2019-01-17 14:57:50 -08:00
Colin Cross
8faf8fc060 Move hiddenapi to Soong
Perform hiddenapi CSV generation and dex encoding for Soong modules
in Soong.  This fixes an issue where dexpreopting was happening on
a different jar than was being installed.

Bug: 122856783
Test: m checkbuild
Test: no change out/target/common/obj/PACKAGING/hiddenapi-flags.csv
Test: only ordering change to out/target/common/obj/PACKAGING/hiddenapi-greylist.csv
Test: cts/tests/signature/runSignatureTests.sh
Change-Id: I4fc481efc29e73cb2bdaacf672e86d5f6f0075ae
2019-01-17 22:19:28 +00:00
Colin Cross
56abb83628 Set LOCAL_PREBUILT_MODULE_FILE for hostdex modules
Java modules with hostdex: true have to manually create an extra
androidmk entry, which was missing LOCAL_PREBUILT_MODULE_FILE.

Test: m checkbuild
Change-Id: I9ecb853e149c83282738178f74c1c3a263d203cc
2019-01-17 22:19:21 +00:00
Jaewoong Jung
a4d4570e91 Merge "Enable arch variant properties in prebuilt_etc." 2019-01-17 20:59:00 +00:00
Jaewoong Jung
b9a11518bc Enable arch variant properties in prebuilt_etc.
Bug: 122332178
Test: Soong unit tests + TreeHugger.
Change-Id: Ia8fab0add09478599398e8cbb703debc39f658f6
2019-01-17 09:02:34 -08:00
Ashley Rose
e36efcfa93 Relax restriction on sharded annotation processors
Bug: 77284273
Test: m framework
Change-Id: If617bcf65b5d04ecb81227a9a8b76bbd78ea8598
2019-01-17 11:29:09 -05:00
Sundong Ahn
054b19a131 Support core library
To support core library, "Openjdk9", "No_standard_libs" and metalava
properties are added to java_sdk_library.
If core_lib is true, dist paths are changed to
apistubs/core/....
impl library name is changed to {module_name}.jar instead of
{module_name}.impl.jar

Bug: 110404779
Test: m -j
Change-Id: Ieb6248ea714b4260333d8bf61573d4f3413f7f24
Merged-In: Ieb6248ea714b4260333d8bf61573d4f3413f7f24
(cherry picked from commit af4907fed7)
2019-01-16 22:00:17 -08:00
Colin Cross
03e785d272 Merge "Revert "Set LOCAL_PREBUILT_MODULE_FILE for hostdex modules"" 2019-01-16 01:41:01 +00:00
Colin Cross
ebb83dfdde Revert "Set LOCAL_PREBUILT_MODULE_FILE for hostdex modules"
This reverts commit 462963b513.

Reason for revert: broke emma turbine build

Change-Id: I2e49bb127e1eb5006e7e27a59c4e85efa63bb38e
2019-01-16 01:38:56 +00:00
Colin Cross
ca0083554b Merge "Set LOCAL_PREBUILT_MODULE_FILE for hostdex modules" 2019-01-15 23:39:25 +00:00
Neil Fuller
073941d780 Merge "Remove references to core-simple" 2019-01-15 19:04:26 +00:00
Treehugger Robot
afb23efc11 Merge "Export dex jars from java binaries" 2019-01-15 17:40:28 +00:00
Treehugger Robot
3ac875f1da Merge "Remove Metalava_enabled property" 2019-01-15 01:05:01 +00:00
Colin Cross
462963b513 Set LOCAL_PREBUILT_MODULE_FILE for hostdex modules
Java modules with hostdex: true have to manually create an extra
androidmk entry, which was missing LOCAL_PREBUILT_MODULE_FILE.

Test: m checkbuild
Change-Id: I0fb50196fe01ba9eb0c4aef446e7c8f28bbaec12
2019-01-14 14:13:51 -08:00
Colin Cross
12fc2af30c Export dex jars from java binaries
Set LOCAL_SOONG_DEX_JAR and LOCAL_SOONG_BUILT_INSTALLED for
java binaries to install the jar with classes.dex and the
preopted files.

Bug: 122831369
Test: m deployagent
Change-Id: I6018aee25491e0c77a5f6dc464668d2bf6c317c0
2019-01-14 12:46:44 -08:00
Neil Fuller
9b0d1f47fa Remove references to core-simple
core-simple was a demonstration jar and is being removed.

Bug: 119301609
Test: build
Change-Id: Ieb5e12ce0ce96f597da92660ea83dbf0e1860edb
2019-01-14 16:01:01 +00:00
Sundong Ahn
04ef8a3edd Remove Metalava_enabled property
Metalava_enabled property is no longer used and APIs format will be
changed. So sdk_library will not support docalva.

Test: m -j
Bug: 117127012
Change-Id: Id146d96413b2979ca903e854e00d4c7a0aa8d6e7
2019-01-14 13:47:44 +09:00
Vladimir Marko
e8b00d69c0 Preopt: Do not strip non-image boot class path jars.
Test: Pixel 2 XL boots.
Bug: 119868597
Change-Id: I7bd3b7655aecf1a8c26dd8d4d18d3eec685ece88
2019-01-11 10:26:17 +00:00
Treehugger Robot
9816749b90 Merge "Add Srcs_lib and Srcs_lib_whitelist_dirs properties" 2019-01-11 06:27:51 +00:00
Jeongik Cha
709a329451 Merge "Check system certificate violation for product apks" 2019-01-11 04:31:02 +00:00
Colin Cross
863ac187ce Merge changes Ice10d0cc,I83ef48cb
* changes:
  Use latest SDK version for current in PDK builds
  Split out sdk.go from java.go
2019-01-10 18:53:17 +00:00
Colin Cross
98fd57460f Use latest SDK version for current in PDK builds
PDK builds need to use the latest SDK version instead of "current"
to match the behavior of Make.

Bug: 118634643
Test: sdk_test.go
Change-Id: Ice10d0ccb4066f27ce5839fc96a4026510057121
2019-01-10 07:09:35 +00:00
Colin Cross
fb6d781202 Split out sdk.go from java.go
Split out SDK handling functions from java.go to sdk.go and tests
from java_test.go to sdk.go.

Test: sdk_test.go
Change-Id: I83ef48cbe5230572c1d4ecc0e89021d2f7c71b76
2019-01-10 07:09:29 +00:00
Colin Cross
8c6d250c0b Allow modules to disable stripping when dexpreopting
Add a no_stripping property and pass it to dexpreopt to disable
stripping for a module.

Bug: 122610462
Test: dexpreopt_test.go
Change-Id: I5a4b005633bb8b1ea373e9eeb420aa0999de17ab
2019-01-10 05:39:50 +00:00
Jeongik Cha
c9464144a8 Check system certificate violation for product apks
Only if enforcement option is enable, it makes build error when there is apk located at system partition but signed with system certificate.

Bug: 74699609

Test: m -j

Change-Id: I23c41f2665dd97abac3e77d1c82d81ff91b894eb
2019-01-10 11:40:45 +09:00
Jiyong Park
7f67f48cbb Add PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES
It is a list of <module_name>:<manifest_name> pairs. When the module
name of an APK or an APEX matches with <module_name>, then its app
manifest name is overridden to <manifest_name>.

<module_name> and <manifest_name> can be patterns as in
com.android.%:com.mycompany.android.%.release

Note that, in case of APEXes, the manifest name refers to the name of
the zip container. The apex manifest name (which is specified in
apex_manifest.json) is not overridden.

Test: m with PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES for
1) an APK in Android.mk
2) an APK in ANdroid.bp
3) an APEX
and check that manifest names are modified as specified

Change-Id: Ie58882d90884695e893944c43d9c8803b283e93d
2019-01-09 21:12:27 +09:00
Colin Cross
2fc72f66d0 Remove duplicated shouldUncompressDex logic
shouldUncompressDex has already been computed and stored in
deviceProperties.UncompressDex, pass it to dexpreopter instead
of recomputing it.

Also add a stub for java libraries to set UncompressDex.

Test: no change to build.ninja
Change-Id: I663d9fbbe768a8dc9a97c7d456dd7a010f43162d
2019-01-09 08:31:48 +00:00
Sundong Ahn
b952ba018f Add Srcs_lib and Srcs_lib_whitelist_dirs properties
After fixing --stub-packages handling, some modules needs Srcs_lib and
Srcs_lib_whitelist_dirs properties. So Add these two properties

Bug: 117127012
Test: m -j

Change-Id: I1345f22e7e1dd9d0ee7779720004e6eba77eeff5
2019-01-08 16:35:47 +09:00
Colin Cross
dc2da916fb Don't dexpreopt when compile_dex but not installable
Modules shouldn't be dexpreopted and possibly stripped when
compile_dex is set but installable is not set.  This matches the
previous behavior when the dexpreopt rules were in Make.

Bug: 121317615
Test: dexpreopt_test.go
Change-Id: I6f80b7b37a990c475b91aa5d98a19a3baa85eb1b
2019-01-06 08:50:36 -08:00
Colin Cross
e302687ea4 Don't dexpreopt or strip java_test modules
I6bb2c971cee65d2338839753aa0d84939f335b1b accidentally caused
java_test modules to be dexpreopted and possibly stripped.

Test: dexpreopt_test.go
Change-Id: Ida8f046c509c97e38bd3bce66944d32f01530db4
2019-01-06 08:50:32 -08:00
Colin Cross
638149e650 Add dexpreopt enabled tests
Add tests that verify when dexpreopt is enabled or disabled.

Test: dexpreopt_test.go
Change-Id: Ideba9c0dac30eb31e7ae29e46d1d1590202b8369
2019-01-05 22:36:13 -08:00
Jaewoong Jung
38e4fb2ce6 Add buildDir to java patch-module paths.
This solves a problem where javac fails to find patch-module targets
when a build diretory is not under the project root.

Bug: 117770838
Test: java_test.go + manual build
Change-Id: If70d0d388a3f6c87b3f78a927df2063616d50c8a
2019-01-04 15:37:20 +00:00
Nan Zhang
e7968b192c Merge "Pass --merge-qualifier-annotations to check-api" 2019-01-04 00:53:45 +00:00
Nan Zhang
dee152bfa3 Pass --merge-qualifier-annotations to check-api
As tnorbye@ mentioned, the check-API comptibility needs the annotations
that were merged in so that the behavior will be consistent with
signature file.

Test: check the ninja file.
Bug: N/A
Change-Id: I0c06c838cf7ddfd43f583fc8c1b1ad999a4cc066
2019-01-03 11:28:47 -08:00