Commit Graph

3738 Commits

Author SHA1 Message Date
Paul Duffin
b98aaf5200 Merge "Allow dex jars from prebuilt_apex to be used by hiddenapi" am: 320e170675 am: 915cb8c6d8 am: b6256e51cb
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1578285

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I7716a193d98d9005334b33f641906da6491dc6e4
2021-02-09 15:45:04 +00:00
Paul Duffin
01cc9163b0 Merge "Refactor the hiddenAPI() method for reusability" am: b71a8de0d5 am: 714a66dfdd am: 061c4657d7
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1578284

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I81dd9a89c4e77edbac1669a0fa2feaadd4c3064c
2021-02-09 15:44:59 +00:00
Paul Duffin
08df344e9f Merge "Extract initHiddenAPI() from hiddenapi()" am: abe1abd224 am: 36d3011783 am: fd7610df22
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1578283

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I99550ff783f029ba3dbf7ff2cd483a1c0b51b841
2021-02-09 15:44:47 +00:00
Paul Duffin
b6256e51cb Merge "Allow dex jars from prebuilt_apex to be used by hiddenapi" am: 320e170675 am: 915cb8c6d8
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1578285

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ic96272d781806b7afb5b4afb2e81130ac131b43d
2021-02-09 15:18:20 +00:00
Paul Duffin
061c4657d7 Merge "Refactor the hiddenAPI() method for reusability" am: b71a8de0d5 am: 714a66dfdd
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1578284

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I09df412275fbfaa1ac67a36d5fc3f6b4b5ba0418
2021-02-09 15:18:14 +00:00
Paul Duffin
fd7610df22 Merge "Extract initHiddenAPI() from hiddenapi()" am: abe1abd224 am: 36d3011783
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1578283

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I75aeebfbfc844b45bc99b3c395b82e7c148e4a5b
2021-02-09 15:18:08 +00:00
Paul Duffin
320e170675 Merge "Allow dex jars from prebuilt_apex to be used by hiddenapi" 2021-02-09 13:58:12 +00:00
Paul Duffin
b71a8de0d5 Merge "Refactor the hiddenAPI() method for reusability" 2021-02-09 13:57:52 +00:00
Paul Duffin
abe1abd224 Merge "Extract initHiddenAPI() from hiddenapi()" 2021-02-09 13:57:37 +00:00
Treehugger Robot
791a8f926b Merge "Turn missing jarjar output files into errors" am: ed7bfd9726 am: 5df2206de0 am: 5e33cdde3c
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1580883

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I5a9ccdbcd0ca601f9193cba12828e8133d13681d
2021-02-09 02:17:28 +00:00
Treehugger Robot
5e33cdde3c Merge "Turn missing jarjar output files into errors" am: ed7bfd9726 am: 5df2206de0
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1580883

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I73c739173cf091fb83a65f93ff91a25eb17223fc
2021-02-09 01:22:01 +00:00
Treehugger Robot
ed7bfd9726 Merge "Turn missing jarjar output files into errors" 2021-02-08 23:47:13 +00:00
Bill Peckham
5670d78e70 Merge "Enable android_app_import to supply framework-res." am: 5c2406bde9 am: 50b395b740 am: 6603b7ab73
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1543901

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I79683aa757a5ed1dea03f9deabaf436d46d8c3dd
2021-02-08 20:53:37 +00:00
Bill Peckham
6603b7ab73 Merge "Enable android_app_import to supply framework-res." am: 5c2406bde9 am: 50b395b740
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1543901

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia87c7583798ab5c053a154dd8d67b579dd65d8e7
2021-02-08 20:19:59 +00:00
Treehugger Robot
aa0c15feef Merge "Remove duplicate entries from hiddenapi files" am: c6fcf29872 am: d32e59bb54 am: 98812a68a5
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1575170

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I97ef153681eb786c143439a00545ccf95efc7404
2021-02-08 19:22:02 +00:00
Treehugger Robot
98812a68a5 Merge "Remove duplicate entries from hiddenapi files" am: c6fcf29872 am: d32e59bb54
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1575170

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: If31c8c3b53942a9880266fe3623ee7cff6cb7703
2021-02-08 19:19:03 +00:00
Bill Peckham
5c2406bde9 Merge "Enable android_app_import to supply framework-res." 2021-02-08 19:15:10 +00:00
Paul Duffin
9d67ca6ab7 Allow dex jars from prebuilt_apex to be used by hiddenapi
Invokes hiddenAPIExtractInformation() on the dex jar provided by the
deapexer (on behalf of prebuilt_apex) so that hiddenAPI can extract the
information it needs, if anything, from the dex file (and accompanying
classes implementation file).

The dex file provided by deapexer has already had the hiddenapi
information encoded into it so it does not need to do that again.

This change adds the primary parameter to hiddenAPIExtractInformation()
and checks it (and also the hiddenAPI.active property) before it does
anything. That ensures that it behaves correctly when called directly
as well as when called from hiddenAPIExtractAndEncode().

Bug: 178361284
Test: m droid
      Verified that hiddenapi files (both aggregated ones and for the
      individual modules) are not affected by this change.
      Also verified that the hiddenapi files created when using the
      prebuilts (using SOONG_CONFIG_art_module_source_build=false) are
      the same as when using the source. There is a slight difference
      in the order but otherwise identical.
Change-Id: I7abb63fd310bb94787ab7f4821e5fd283dc03046
2021-02-08 19:10:50 +00:00
Paul Duffin
4fd997bc13 Refactor the hiddenAPI() method for reusability
A follow up change needs to be able to contribute to the information
the hiddenapi process collates without having a dex file encoded. This
change pushes all the functionality related to information gathering
into the hiddenAPIGenerateCSV() method and then renames it and the
hiddenAPI() method to make it clearer what they do.

Bug: 178361284
Test: m droid
      Verified that hiddenapi files (both aggregated ones and for the
      individual modules) are not affected by this change.
Change-Id: I04417720216a0fbadcd88e6185e7de6570af6216
2021-02-08 19:10:50 +00:00
Paul Duffin
4103e92c4b Extract initHiddenAPI() from hiddenapi()
Previously, the hiddenapi() method combined both checks to determine
whether a module contributed to/was modified by the hiddenapi process
and logic to create ninja rules to perform those tasks. This change
separates the former out into a new initHiddenAPI() method.

The main purpose of this is to simplify the process of allowing the
CSV generation to be separated from the encoding. That is required
because when a java_import retrieves its dex file from the apex it
has already been encoded.

The initHiddenAPI() method is only called for java.Library (and
indirectly for java.SdkLibrary) and java.Import modules which means
that the hiddenapi() method does nothing for any other module type.
That is consistent with the previous behaviour because while the
hiddenapi() method is called for other module types they fail because
the boot image jars only support java_library, java_sdk_library,
and java_import at the moment. While it will need to support
java_sdk_library_import once any of the libraries that are currently
provided as java_sdk_library modules switches to providing prebuilts
that is outside the scope of this work.

Bug: 178361284
Test: m droid
      Verified that hiddenapi files (both aggregated ones and for the
      individual modules) are not affected by this change.
Change-Id: Iaa91e0a8e2bffec03296dd894e9662556f4464c0
2021-02-08 19:10:50 +00:00
Colin Cross
d97cf63cdf Turn missing jarjar output files into errors
Jarjar doesn't exit with a nonzero return code when there is a syntax
error in a rules file and doesn't write the output file.  Without a
nonzero return code ninja prints a warning but continues, which leads
to stale results on incremental builds where the output file already
exists, or delayed errors on clean builds whre the output file didn't
exist.

Delete the output file before running jarjar, and then check if it
exists after running jarjar.

Fixes: 119516143
Test: m out/target/common/obj/APPS/TeleService_intermediates/classes.jar
Change-Id: I7e9f7ff34de565a986ab0dc6e375f606c91c3846
2021-02-08 10:14:04 -08:00
Paul Duffin
7ef6c2b45c Add test for hiddenAPI index file generation am: 01289a2407 am: e510de2f58 am: 2229b27740
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1575169

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2dcb98a9a0c197a8f347c51f4e663e3c150aa2ac
2021-02-08 13:34:14 +00:00
Paul Duffin
2229b27740 Add test for hiddenAPI index file generation am: 01289a2407 am: e510de2f58
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1575169

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I7aa50863bc76dfb8f9a790b824da7fcc087626c9
2021-02-08 12:59:16 +00:00
Paul Duffin
5ce9f42f5a Merge changes I9e94662d,I4b4e0dc8 am: 254aee4843 am: 3c4acc4279 am: fbd6af6226
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574746

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I81f78f2f4e54864be1dec87b2157f32428c54201
2021-02-07 15:52:30 +00:00
Paul Duffin
fbd6af6226 Merge changes I9e94662d,I4b4e0dc8 am: 254aee4843 am: 3c4acc4279
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574746

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I4321f7fb64832e85399a20bea30a5a07ca6e93eb
2021-02-07 15:29:20 +00:00
Paul Duffin
219b177279 Remove duplicate entries from hiddenapi files
Prevents the hiddenapi files index and metadata files from including
duplicate entries.

Bug: 178361284
Test: m droid
      Compared hiddenapi files before and after change
      Verified that the only differences were due to the removal of duplicates
      Used sort -u to remove duplicates from before file and compared with after file
Change-Id: I0b9e420aec42cdcf4584099a7ffd2ed9c3715d6d
2021-02-07 10:58:24 +00:00
Paul Duffin
01289a2407 Add test for hiddenAPI index file generation
The index file and the metadata file both currently include duplicate
entries due to them including both the <x> and <x>.impl libraries
created by java_sdk_library in their inputs, plus including both source
and prebuilt versions of the same named module. This change adds a test
to illustrate that behavior. A follow up change will correct the problem
and update the test accordingly.

This change only adds a test for the index file because the metadata
file depends on files from frameworks/base which makes it difficult to
test. Bug 177317659 will fix that and allow the metadata file
generation to be tested too.

Bug: 178361284
Test: m nothing
Change-Id: I33921d7267c9f4bb42726343d73f8a396d536aaa
2021-02-07 10:58:24 +00:00
Paul Duffin
254aee4843 Merge changes I9e94662d,I4b4e0dc8
* changes:
  Export implementation class jars for java_boot_libs
  Improve module filtering in hiddenapi stubFlagsRule()
2021-02-07 10:52:01 +00:00
Bill Peckham
a036da9b27 Enable android_app_import to supply framework-res.
By enabling an android_app_import module to supply the
special framework-res module, it becomes possible to
create a split build that excludes the source of over
10,000 files under frameworks/base/core/res, replacing
this source with a prebuilt. However, since other parts
of a monolithic build use the source of framework-res,
this scheme works only if your split build manifest
excludes modules that depend on framework-res source.

Bug: 176851898
Test: lunch aosp_arm64-userdebug && m nothing
Test: new TestAndroidAppImportExportPackageResources
Test: local build without prebuilt framework-res
Test: local build with prebuilt framework-res
Change-Id: If00d9dbc656c8406c038448d09f93f767c1e06d1
2021-02-05 14:30:46 -08:00
Liz Kammer
73f2874a87 Merge "bp2build: convert paths/module refs to Bazel label" am: b7eab01167 am: 6d5454d0f9 am: 595abf120a
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1564272

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I51fd926cdae810906a75ed132dc70fa2f2c74240
2021-02-05 15:40:11 +00:00
Liz Kammer
595abf120a Merge "bp2build: convert paths/module refs to Bazel label" am: b7eab01167 am: 6d5454d0f9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1564272

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I850a7a72980cd003afbb696ff0ae1beba110995a
2021-02-05 15:00:27 +00:00
Liz Kammer
b7eab01167 Merge "bp2build: convert paths/module refs to Bazel label" 2021-02-05 13:39:08 +00:00
Paul Duffin
22ff0aaf51 Export implementation class jars for java_boot_libs
Hiddenapi processing currently requires access to the class
implementation jars for libraries on the bootclasspath which means that
they need to be provided as part of the prebuilts. This change modifies
the java_boot_libs property on the sdk to make those files available.

Modularization of the hiddenapi processing will hopefully remove the
need for these to be exported so this should be temporary.

Bug: 178361284
Test: m art-module-sdk
      check generated snapshot zip contains implementation jars
Change-Id: I9e94662dddb0ddb85a477ae6d27e533085147e88
2021-02-05 13:35:25 +00:00
Paul Duffin
dd63d6d7bd Improve module filtering in hiddenapi stubFlagsRule()
Previously, it ignored any module that was not a platform apex variant
however that required every module that was referenced from the boot
jars to have a platform variant which is not the case when building
from prebuilts.

This change switches it to explicitly check that the variant is for
either the appropriate apex or the platform depending on what is
configured in the BootJars or UpdatableBootJars.

It partially duplicates some logic from the getBootImageJar() function.
It intentionally does not refactor the getBootImageJar() to allow for
reuse because coupling the hiddenapi and dexpreopt logic would make
refactoring either of them more difficult. Any duplicated code will be
deduped once they have both been refactored.

Bug: 178361284
Test: m droid
Change-Id: I4b4e0dc8ee40c1ba1713d7ef72df13d175e84af6
2021-02-05 13:33:25 +00:00
Ulyana Trafimovich
eceb8ff9f0 Merge "Don't write nonexistent DEX file paths to dexpreopt.config files." am: 9b91082452 am: 1fdefc2c57 am: 8c723918ee
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574745

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I55cac496bdcaa4dc83a92c50b013812e616da8b7
2021-02-05 12:51:32 +00:00
Ulyana Trafimovich
8c723918ee Merge "Don't write nonexistent DEX file paths to dexpreopt.config files." am: 9b91082452 am: 1fdefc2c57
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574745

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I9f39d40678f0d818403c2ab2c6d015e34860e928
2021-02-05 12:24:15 +00:00
Paul Duffin
cee3a2a610 Merge "Detect empty apex in ConfiguredJarList" am: b8887127ba am: 6664c04ce9 am: b00bde6fb0
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574743

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2f05ec97a66a4d238fa3df89f3dc64ab07dae5cd
2021-02-05 11:23:35 +00:00
Ulyana Trafimovich
9b91082452 Merge "Don't write nonexistent DEX file paths to dexpreopt.config files." 2021-02-05 11:10:03 +00:00
Paul Duffin
b00bde6fb0 Merge "Detect empty apex in ConfiguredJarList" am: b8887127ba am: 6664c04ce9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574743

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I42edc356e4a6cc4ec548c36a023a4fee6d5d94dd
2021-02-05 10:50:07 +00:00
Paul Duffin
b8887127ba Merge "Detect empty apex in ConfiguredJarList" 2021-02-05 09:30:15 +00:00
Treehugger Robot
cbd43544e2 Merge "data dependency of java_test_host can be arch-specific" am: f860a2ab66 am: 685daa0dd9 am: ef8d0e264a
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574806

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ie564d402e593ef04e17e7e78ebb54754e6f6a20d
2021-02-05 05:49:34 +00:00
Treehugger Robot
ef8d0e264a Merge "data dependency of java_test_host can be arch-specific" am: f860a2ab66 am: 685daa0dd9
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1574806

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib39fd01d7c7f0a3360d71262e9d9819fca576090
2021-02-05 05:01:57 +00:00
Liz Kammer
356f7d45c1 bp2build: convert paths/module refs to Bazel label
This currently expands all globs, still need to support converting glob
syntax.

Test: go build_conversion_test
Test: GENERATE_BAZEL_FILES=true m nothing
Test: m nothing
Bug: 165114590
Change-Id: If7b26e8e663d17566fad9614ca87a8da1f095284
2021-02-04 13:45:56 -05:00
Jiyong Park
cdd9b8392d data dependency of java_test_host can be arch-specific
This allows java_test_host to have arch-specific data files. Currently,
VirtualizationHostTestCases needs this to have arch-specific kernels as
its data.

Bug: N/A
Test: m VirtualizationHostTestCases
Change-Id: Ib5680ef48b613955ad92c9bc212184ac75900d3e
2021-02-05 00:29:47 +09:00
Ulya Trafimovich
c0f64799da Don't write nonexistent DEX file paths to dexpreopt.config files.
A path to an nonexistent file caused dex2oat to write an empty path in
the class loader context stored inside of the OAT/ODEX file, which
resulted in class loader context mistmatch and a failure to load
dexpreopt code on device.

An example of a faulty class loader context for GoogleDialer, can be
seen either with oatdump or by grepping logcat for class loader context
mimatch messages (the first empty PCL[] is expected, note the second
empty PCL[] in the subcontext for shared libraries):

  PCL[]{PCL[]#PCL[/system/framework/org.apache.http.legacy.jar*22205474]

This CL removes the nonexistent path from the generated dexpreopt.config
file, which works in conjunction with a change in makefiles that stops
using the removed config field. This is possible because makefiles can
access DEX files using a module name and "intermediates-dir-for" macro.

Bug: 132357300
Test: lunch cf_x86_64_phone-userdebug && m && launch_cvd \
      adb wait-for-device && adb root && adb logcat \
      | grep -E 'ClassLoaderContext [a-z ]+ mismatch'
      # empty grep output, no errors
Change-Id: I8d16f77c6f76ad6234cc4114ad3545cbe572ef13
2021-02-04 12:14:51 +00:00
Paul Duffin
9c3ac96f1f Detect empty apex in ConfiguredJarList
Previously, ConfiguredJarList would accept an empty apex name,
e.g. ":jar" which makes no sense as every apex has to have a non-empty
name. This change makes an empty apex invalid.

In order to improve the test coverage of the TestConfiguredJarList test
this change also changes the implementation of
CreateTestConfiguredJarList([]string) to marshal the supplied strings
into a json list and then unmarshal into a ConfiguredJarList which more
closely matches how it is used at runtime.

Bug: 178361284
Test: m nothing
Change-Id: I7dfec6b4cc1923aa99746e976da0393922ef0791
2021-02-04 10:07:41 +00:00
Paul Duffin
b0fabd99c9 Merge "Switch hiddenapi to use OutputPath instead of ModuleOutPath" am: e1f9b35d92 am: 5a648cf0df am: f553a9f40d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1571202

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I4746791f889525597a5e3266b17973882f3fb361
2021-02-03 11:54:23 +00:00
Paul Duffin
f553a9f40d Merge "Switch hiddenapi to use OutputPath instead of ModuleOutPath" am: e1f9b35d92 am: 5a648cf0df
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1571202

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I9a1e1890545da1fd16918831567f22f03e73cf65
2021-02-03 11:10:01 +00:00
Paul Duffin
e1f9b35d92 Merge "Switch hiddenapi to use OutputPath instead of ModuleOutPath" 2021-02-03 10:02:36 +00:00
Tobias Thierer
00da5c60fb Merge "go/Android.bp: Clarify sdk_version documentation." am: dadc62cdb4 am: 922e7f941a am: dec7caec15
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1518598

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0723ce5d973138b5dbc14688c8b22beb065d15c6
2021-02-02 20:17:54 +00:00