Commit Graph

5543 Commits

Author SHA1 Message Date
Paul Duffin
c2d7c036e1 Merge "Simplify deapexer support" am: 0d7f2d30b5 am: fd198583f0
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1740316

Change-Id: Ic9fffd50e5550cbdaa4731270b1f66b5bde2fde8
2021-06-20 18:43:17 +00:00
Paul Duffin
8ee224c159 Merge "Remove javalib special case in createDeapexerModuleIfNeeded" am: 6b592bdcdc am: 5349528f57
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1740315

Change-Id: Idef64da43b738b9f51c2e2ec1b563281eab4a60f
2021-06-20 18:43:11 +00:00
Paul Duffin
fd198583f0 Merge "Simplify deapexer support" am: 0d7f2d30b5
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1740316

Change-Id: I69b8e53916f848e9cb15f58756efba0b76c2bedd
2021-06-20 18:29:09 +00:00
Paul Duffin
5349528f57 Merge "Remove javalib special case in createDeapexerModuleIfNeeded" am: 6b592bdcdc
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1740315

Change-Id: I7af2d5bcae9bf96bbf555b11feba2f48010405a4
2021-06-20 18:28:26 +00:00
Paul Duffin
d061d40eb6 Fix monolithic hidden API processing with prebuilts
Prebuilt modules do not provide classesJars containing annotations.
Previously, the monolithic hidden API processing just used classesJars
from all the modules that provided them so when building against
prebuilts would have fewer classesJars than when building against
sources and so would produce different hidden API flags.

This change will generate the monolithic files from both classesJars
and files previously generated from hidden API processing. A fragment
that has performed hidden API processing will contribute its generated
files whereas standalone libraries and fragments which have not
performed hidden API processing will contribute classesJars.

Bug: 177892522
Test: m out/soong/hiddenapi/hiddenapi-flags.csv
      m SOONG_CONFIG_art_module_source_build=false out/soong/hiddenapi/hiddenapi-flags.csv
      - verify that the files are identical whether built from
        source or prebuilts.
Change-Id: I06f3c7df49626bec21a452bc9abf1bb9e7545e5c
2021-06-20 19:09:09 +01:00
Paul Duffin
51d7da2c4e Make CheckHiddenAPIRuleInputs more reusable
Adds a message parameter and allows leading spaces in the expected file
string to allow them to be nicely indented.

Bug: 177892522
Test: m nothing
Change-Id: I33df26610738c48879fa0b8250dc377dd04bb07d
2021-06-20 19:09:09 +01:00
Paul Duffin
89f570ac44 Use classpath elements in platform_bootclasspath
Use classpath elements in newMonolithicHiddenAPIInfo. That means the
method can collate information from both fragments and libraries rather
than just fragments. So, this change moves the collation of the
classesJars into the method.

Bug: 177892522
Test: m out/soong/hiddenapi/hiddenapi-flags.csv out/soong/hiddenapi/hiddenapi-index.csv
      - make sure that this change does not affect the contents.
Change-Id: I7c2a229fab60d02bd211438735a8d7303ed83386
2021-06-20 19:09:09 +01:00
Paul Duffin
0d7f2d30b5 Merge "Simplify deapexer support" 2021-06-20 18:08:41 +00:00
Paul Duffin
6b592bdcdc Merge "Remove javalib special case in createDeapexerModuleIfNeeded" 2021-06-20 18:08:29 +00:00
Xin Li
4a5f1256e8 DO NOT MERGE - Merge RQ3A.210605.005
Bug: 190855093
Merged-In: Ie1f9147e02f79062d1a17dca5f61ff518a2ae5a6
Change-Id: I34d36eeeef40d372c0585b90685a2cee7e37a1a8
2021-06-18 15:41:15 -07:00
TreeHugger Robot
9c98aa887c Merge "Reland aosp/1535007:" into stage-aosp-master 2021-06-18 22:35:59 +00:00
Treehugger Robot
f830560979 Merge "Allow disabling errorprone even when RUN_ERROR_PRONE is true" am: d430ddd0c5 am: 15d73e9a88
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1741654

Change-Id: Id616b4237e74e382ac7fc7902cbc43950875fc91
2021-06-18 22:09:04 +00:00
Treehugger Robot
15d73e9a88 Merge "Allow disabling errorprone even when RUN_ERROR_PRONE is true" am: d430ddd0c5
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1741654

Change-Id: I8666e08ac5c4cb6f88a245f8f489bbbfbbe4370a
2021-06-18 21:57:45 +00:00
Ulya Trafimovich
55ff4a557d Reland aosp/1535007:
Enforce <uses-library> checks for android_app and android_app_import.

Bug: 132357300
Test: lunch aosp_cf_x86_phone-userdebug && m
Merged-In: I50911f727ba98df1035500dbbf467b849be8d6c2
Change-Id: Ief02df2afe56e58189e3165fbb6dbb75f6ff6384
2021-06-18 14:25:19 -07:00
Paul Duffin
f23512fa58 Add ClasspathElement support
The configuration of the bootclasspath, e.g. PRODUCT_BOOT_JARS,
includes libraries that are standalone and libraries that are part of
an APEX. All libraries that are part of an APEX must also be part of a
bootclasspath_fragment. Currently, the libraries and fragments are
handled separately but that is limiting as it does not make it easy to
process all the libraries while treating those from fragments
differently to standalone libraries. That is needed for hidden API
processing as it needs to use classesJars from standalone libraries
but pre-generated flag files from fragments.

This change adds support for ClasspathElements which is represents the
classpath as a whole while differentiating between standalone libraries
and fragments.

Bug: 177892522
Test: m nothing
Merged-In: I7a4adc67164a46079eb8ec0a17fc755044b4949d
Change-Id: I7a4adc67164a46079eb8ec0a17fc755044b4949d
(cherry picked from commit e245b61aa2)
2021-06-18 21:02:10 +01:00
Cole Faust
2b1536e4db Allow disabling errorprone even when RUN_ERROR_PRONE is true
Some modules use -XepDisableAllChecks to disable errorprone.
However, this still causes them to be compiled twice when
RUN_ERROR_PRONE is true. Allow the new enabled property to
be set to false to disable errorprone entirely, so that those
modules are only compiled once.

Bug: 190944875
Test: New unit tests
Change-Id: Ie68695db762fffcaf11bbbcb0509c4fcab73f5c5
2021-06-18 12:34:51 -07:00
Paul Duffin
082e9c0dde Merge "Add ClasspathElement support" am: e6aefedeba am: 10a66e1dee
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1738974

Change-Id: Ic917f108fa2189a033373740bdaa959119c67c5c
2021-06-18 18:47:43 +00:00
Paul Duffin
10a66e1dee Merge "Add ClasspathElement support" am: e6aefedeba
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1738974

Change-Id: I96319f285755414f01b24a65686399452c2797ab
2021-06-18 18:30:56 +00:00
Paul Duffin
b508405e08 Export boot image files from prebuilt_apex/apex_set
Previously, the prebuilt art-bootclasspath-fragment did not provide any
boot image files. That meant it was impossible to build any module that
requires access to those files from prebuilts, e.g. any module that
needs to be dexpreopt-ed.

This change enables that module to retrieve those files from the
prebuilt_apex.

Bug: 177892522
Bug: 189298093
Test: m nothing
      m droid SOONG_CONFIG_art_module_source_build=false SKIP_BOOT_JARS_CHECK=true
      - the previous command does not work but this change does fix one
        of the issues reported.
Merged-In: I1d4d9545172d79282918130df6b9aa55471bffc1
Change-Id: I1d4d9545172d79282918130df6b9aa55471bffc1
(cherry picked from commit 5466a3699c)
2021-06-18 12:11:17 +01:00
Paul Duffin
a0089ec78c Copy boot dex jars from prebuilt art-bootclasspath-fragment if preferred
Previously, the boot dex jars were only copied to the predefined
locations used by the build from the source art-bootclasspath-fragment
if it was preferred, otherwise no files were copied. That caused build
failures when attempting to build with ART prebuilts. This change
copies the files from prebuilts too.

Bug: 177892522
Bug: 189298093
Test: m nothing
      m droid SOONG_CONFIG_art_module_source_build=false SKIP_BOOT_JARS_CHECK=true
      - the previous command does not work but this change does fix one
        of the issues reported.
Merged-In: I35b37355170546daf6ecac2134d1ca9a73d0e3bc
Change-Id: I35b37355170546daf6ecac2134d1ca9a73d0e3bc
(cherry picked from commit ce918b0278)
2021-06-18 12:11:17 +01:00
Paul Duffin
4fd7dc7de0 Exclude jacocoagent from boot jars package check
This replicates the previous behavior when the boot jars package check
was performed by a singleton. When the singleton was removed and the
check was performed by the platform-bootclasspath the logic to exclude
jacocoagent from the list was lost. This change replaces it.

Bug: 191377804
Test: m EMMA_INSTRUMENT=true EMMA_INSTRUMENT_FRAMEWORK=true check-boot-jars
      - fails without this change passes with this change.
Merged-In: If9eae254045bef9a0c0963213721fc12a9f463cb
Change-Id: If9eae254045bef9a0c0963213721fc12a9f463cb
(cherry picked from commit 7f8721618c)
2021-06-18 12:11:17 +01:00
Paul Duffin
e11254793d Move boot jars package check into platform_bootclasspath
Bug: 177892522
Bug: 189298093
Test: m check-boot-jars
      m SOONG_CONFIG_art_module_source_build=false check-boot-jars
      - Ran both commands with and without java.lang in the
        package_allowed_list.txt
Merged-In: Iba1a881c8f6b6919d5c0c0520eb3073658f3b8d2
Change-Id: Iba1a881c8f6b6919d5c0c0520eb3073658f3b8d2
(cherry picked from commit c8ead41ba9)
2021-06-18 12:11:17 +01:00
Paul Duffin
360f8359f3 Cleanup bootclasspathFragmentInitContentsFromImage
Removes some unnecessary logic left over from previous changes.

Bug: 177892522
Test: m nothing
Merged-In: Id11e2ea8a647283af1b152b33757132e44dcd6c3
Change-Id: Id11e2ea8a647283af1b152b33757132e44dcd6c3
(cherry picked from commit 58e7586b3d)
2021-06-18 12:11:17 +01:00
Paul Duffin
c75bbcecdb Combine hidden API encoding with flag generation
Previously, the rules to perform hidden API encoding were generated
separately to the rules to perform hidden API flag generation. This
change combines them within the (renamed) produceHiddenAPIOutput()
method and makes the paths to the encoded dex files an output of the
generateHiddenAPIBuildActions method alongside the paths to the
generated flag files.

As encoded dex jars are now an output of the produceHiddenAPIOutput()
method which is implemented for both prebuilts and source
bootclasspath_fragment modules that necessitated the prebuilt also
providing paths to encoded dex files. That in turn required updates to
some of the tests to provide dex files from prebuilt_apex modules.

Similarly, as the produceHiddenAPIOutput() method may not be called
for some bootclasspath_fragment modules as they do not yet provide all
the information needed to perform hidden API encoding then it is
necessary to extract the encoded dex files produced by the modules
themselves. That also required a few changes to tests that did not
previously provide dex files.

Bug: 177892522
Test: m com.android.art
      - check that this change does not change the contents of the apex
        file, i.e. is byte-for-byte identical.
Merged-In: I60996a34d06ed1c87ed244ab3509621999ad86ec
Change-Id: I60996a34d06ed1c87ed244ab3509621999ad86ec
(cherry picked from commit e521881bd4)
2021-06-18 12:11:17 +01:00
Paul Duffin
e245b61aa2 Add ClasspathElement support
The configuration of the bootclasspath, e.g. PRODUCT_BOOT_JARS,
includes libraries that are standalone and libraries that are part of
an APEX. All libraries that are part of an APEX must also be part of a
bootclasspath_fragment. Currently, the libraries and fragments are
handled separately but that is limiting as it does not make it easy to
process all the libraries while treating those from fragments
differently to standalone libraries. That is needed for hidden API
processing as it needs to use classesJars from standalone libraries
but pre-generated flag files from fragments.

This change adds support for ClasspathElements which is represents the
classpath as a whole while differentiating between standalone libraries
and fragments.

Bug: 177892522
Test: m nothing
Change-Id: I7a4adc67164a46079eb8ec0a17fc755044b4949d
2021-06-18 11:46:52 +01:00
satayev
cbe33a0233 Merge "Add classpath fragment property to skip proto generation." am: f45966f35b am: 6ea9e45d9c
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1738336

Change-Id: I8382015b96a37117e62735a6d5a682c3645c397f
2021-06-18 10:45:32 +00:00
satayev
6ea9e45d9c Merge "Add classpath fragment property to skip proto generation." am: f45966f35b
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1738336

Change-Id: I153af3111b835ce3bbfb56b9d91cf43269285ee4
2021-06-18 10:29:26 +00:00
satayev
f45966f35b Merge "Add classpath fragment property to skip proto generation." 2021-06-18 10:17:50 +00:00
Paul Duffin
3d052d1495 Export boot image files from prebuilt_apex/apex_set am: 5466a3699c am: c4a3e6d2f3
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1736777

Change-Id: I45874db42b8d17e0893d5e1c4b9aca6356066221
2021-06-18 07:05:13 +00:00
Paul Duffin
e59c339a43 Copy boot dex jars from prebuilt art-bootclasspath-fragment if preferred am: ce918b0278 am: 56a6834640
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1736226

Change-Id: I33abc58165d9ae42f5d567f7c77de5a9fe4bb187
2021-06-18 07:05:07 +00:00
Paul Duffin
c4a3e6d2f3 Export boot image files from prebuilt_apex/apex_set am: 5466a3699c
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1736777

Change-Id: I1cf84ff519ca6865d3a87ae75b1f48fc6ed1e3f4
2021-06-18 06:48:21 +00:00
Paul Duffin
56a6834640 Copy boot dex jars from prebuilt art-bootclasspath-fragment if preferred am: ce918b0278
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1736226

Change-Id: I116ef8467e180b691ba6e6f2bcf38cd275f6ecba
2021-06-18 06:47:41 +00:00
TreeHugger Robot
aee99b3a13 Merge "DO NOT MERGE - Merge ab/7272582" into stage-aosp-master 2021-06-18 00:30:18 +00:00
Paul Duffin
5466a3699c Export boot image files from prebuilt_apex/apex_set
Previously, the prebuilt art-bootclasspath-fragment did not provide any
boot image files. That meant it was impossible to build any module that
requires access to those files from prebuilts, e.g. any module that
needs to be dexpreopt-ed.

This change enables that module to retrieve those files from the
prebuilt_apex.

Bug: 177892522
Bug: 189298093
Test: m nothing
      m droid SOONG_CONFIG_art_module_source_build=false SKIP_BOOT_JARS_CHECK=true
      - the previous command does not work but this change does fix one
        of the issues reported.
Change-Id: I1d4d9545172d79282918130df6b9aa55471bffc1
2021-06-17 23:05:43 +01:00
Paul Duffin
ce918b0278 Copy boot dex jars from prebuilt art-bootclasspath-fragment if preferred
Previously, the boot dex jars were only copied to the predefined
locations used by the build from the source art-bootclasspath-fragment
if it was preferred, otherwise no files were copied. That caused build
failures when attempting to build with ART prebuilts. This change
copies the files from prebuilts too.

Bug: 177892522
Bug: 189298093
Test: m nothing
      m droid SOONG_CONFIG_art_module_source_build=false SKIP_BOOT_JARS_CHECK=true
      - the previous command does not work but this change does fix one
        of the issues reported.
Change-Id: I35b37355170546daf6ecac2134d1ca9a73d0e3bc
2021-06-17 23:05:43 +01:00
Xin Li
007875cd10 DO NOT MERGE - Merge ab/7272582
Bug: 190855093
Merged-In: I0f5da13644fd2ec7b0472fe82918e3c6a72d953c
Change-Id: I33b074204ffba5aa2bf83bbbe350d744ee9d8c57
2021-06-17 21:41:17 +00:00
Paul Duffin
e50050657d Exclude jacocoagent from boot jars package check am: 7f8721618c am: eaae506467
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1739993

Change-Id: I9ad0a03bc1c2922ee2e4bad2a654b83b6fed6bbd
2021-06-17 21:37:36 +00:00
Paul Duffin
7f8721618c Exclude jacocoagent from boot jars package check
This replicates the previous behavior when the boot jars package check
was performed by a singleton. When the singleton was removed and the
check was performed by the platform-bootclasspath the logic to exclude
jacocoagent from the list was lost. This change replaces it.

Bug: 191377804
Test: m EMMA_INSTRUMENT=true EMMA_INSTRUMENT_FRAMEWORK=true check-boot-jars
      - fails without this change passes with this change.
Change-Id: If9eae254045bef9a0c0963213721fc12a9f463cb
2021-06-17 19:33:24 +01:00
Paul Duffin
d69575cd8c Merge "Move boot jars package check into platform_bootclasspath" am: 4aea00ec18 am: 55e9321255
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1737753

Change-Id: If40ca43057eac8569d1e69fa0e64b334507f9d38
2021-06-17 16:37:01 +00:00
Paul Duffin
0a212b3dd5 Merge "Cleanup bootclasspathFragmentInitContentsFromImage" am: 909a2fd055 am: 57f3d6c870
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1737754

Change-Id: I3ffe996a766ff50a938486a425aef4f293467685
2021-06-17 16:36:53 +00:00
Paul Duffin
fd609b6bb0 Merge "Combine hidden API encoding with flag generation" am: 975e757232 am: b9b5bcf0e3
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1736225

Change-Id: I3197f3def4688fdeaeddc920cc55fc6364599b9a
2021-06-17 16:36:40 +00:00
Paul Duffin
4aea00ec18 Merge "Move boot jars package check into platform_bootclasspath" 2021-06-17 16:06:51 +00:00
Orion Hodson
6a540c4e48 Update dex_preopt related OWNERS
Bug: none
Test: none
Change-Id: I1e6c69b6e3abb54fd37f5b59dad4ced5ce761289
2021-06-17 17:05:39 +01:00
Paul Duffin
909a2fd055 Merge "Cleanup bootclasspathFragmentInitContentsFromImage" 2021-06-17 16:03:51 +00:00
Paul Duffin
975e757232 Merge "Combine hidden API encoding with flag generation" 2021-06-17 16:03:22 +00:00
Paul Duffin
b4bbf2ca10 Simplify deapexer support
Uses the apex relative path to the file as the identifier that is used
to obtain the path to the corresponding file extracted from the apex.
That is instead of a special constructed string id.

Bug: 177892522
Test: m nothing
Change-Id: I5dc77c8fb272bac289b8891d1eac801e541af1f5
2021-06-17 15:59:07 +01:00
Paul Duffin
fef5500a76 Remove javalib special case in createDeapexerModuleIfNeeded
Removes the special case in createDeapexerModuleIfNeeded for handling
java libraries and just get the Import and SdkLibraryImport module
types to implement RequiredFilesFromPrebuiltApex instead.

Bug: 177892522
Test: m nothing
Change-Id: I5cc341b5b4168b8eb196f72273a00d498de6856f
2021-06-17 14:56:05 +01:00
satayev
ec005143de Merge "Rename ClasspathFragmentToConfiguredJarList methods to configuredJars." am: 68c8dd019c am: 46a327565f
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1738335

Change-Id: Ia3c53337ba7ebd0742e39c091da834824f5da556
2021-06-17 12:12:48 +00:00
satayev
b98371cc13 Add classpath fragment property to skip proto generation.
This must always be true for updatable apexes, but is not necessary
for non-updatable apexes like com.android.i18n.

In a follow up this will be used to figure out whether apex boot jars
should be bundled into platform_bootclasspath.

Bug: 191127295
Test: atest CtsClasspathsTestCases derive_classpath_test
Change-Id: Ib7dc5b057cb24955222fb97f3ff9da079f30ed77
2021-06-17 12:59:33 +01:00
Paul Duffin
c8ead41ba9 Move boot jars package check into platform_bootclasspath
Bug: 177892522
Bug: 189298093
Test: m check-boot-jars
      m SOONG_CONFIG_art_module_source_build=false check-boot-jars
      - Ran both commands with and without java.lang in the
        package_allowed_list.txt
Change-Id: Iba1a881c8f6b6919d5c0c0520eb3073658f3b8d2
2021-06-17 10:54:27 +01:00