summaryrefslogtreecommitdiff
path: root/java/base.go
AgeCommit message (Collapse)Author
2024-08-23Merge "Remove suffix based stub matching logic" into main am: 65c530c17e Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3235808 Change-Id: Iad8c5a6fc68dc6e8cc2770a4f3f57a9fac18d3be Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-22Remove suffix based stub matching logic Jihoon Kang
This change prevents non-stub modules with stub suffix from being determined as the stub module, and instead makes the check more robust by determining the condition based on the user-hidden `Stub_contributing_api` property, which is only set for the stub submodules generated by `java_sdk_library`. Test: m nothing --no-skip-soong-tests Bug: 361179822 Change-Id: I28a599c5b4fe1e8460e60580c0535aaf19e39ba3
2024-08-17Merge changes Ia0e1b307,I63c7c33e into main am: a5289ac9ef Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3216639 Change-Id: I5de31ae329756b4fd028e58e1bf9299eb3ad8347 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-17Merge changes Ia0e1b307,I63c7c33e into main Treehugger Robot
* changes: Define unstable container Define additional exception functions for container enforcement
2024-08-16Define additional exception functions for container enforcement Jihoon Kang
These exception functions allow restriction to be loosened for some inter-container dependencies. Note that these functions are still no-op. Restriction enforcement will be done in the child change. Test: m nothing Bug: 338660802 Change-Id: I63c7c33e33f271d4c2a84cc6070eb4896e030ab4
2024-08-16Merge "Run "ravenizer" on ravenwood jars" into main am: 08e76d9591 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3225782 Change-Id: I1c9c6faadae080fd32d769b1acafc090ed1d85e4 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-16Merge "Run "ravenizer" on ravenwood jars" into main Treehugger Robot
2024-08-16Merge "Move kotlin stdlib to normal dependency tag" into main am: f0df94a76d Colin Cross
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3216738 Change-Id: Ib86bb51550db89f2e926229610b969fa98e2a79a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-16Merge "Move kotlin stdlib to normal dependency tag" into main Colin Cross
2024-08-16Run "ravenizer" on ravenwood jars Makoto Onuki
Ravenizer is a new tool to preprocess ravenwood tests. It can optionally be applied to other java targets (for analyzing them, etc). The actual tool is being implemented internally, so in AOSP, we just use a script that copies the jar file as a replacement. Test: manual -- run `m RavenwoodBivalentTest` and make sure the ravenizer log message shows up. Flag: EXEMPT host test change only Bug: 360390999 Change-Id: I6d1f81e7c425397b16c37e7c30267957097387fd
2024-08-14Move kotlin stdlib to normal dependency tag Colin Cross
The kotlin standard library was added with a custom dependency tag, which then required special handling later. We know up front whether it will be treated the same as a static_libs or libs dependency, so just reuse staticLibTag or libTag, and remove all the special handling. Bug: 308016794 Test: TestKotlin Flag: exempt REFACTOR Change-Id: I2c5601faec284d88f28e13378d9cbffc24560efa
2024-08-12Merge changes If313580b,I68d50d68 into main am: 08b6061539 Colin Cross
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3214342 Change-Id: I301643cc587ff80e243115b8f729eba4e0cd3e02 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-12Merge changes Ib4581079,Ia3887bae into main am: 9dfccb91a5 Spandan Das
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3214336 Change-Id: I03e42b30ce41cdadee05041afc717bf8fee36d8d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-12Merge changes If313580b,I68d50d68 into main Colin Cross
* changes: Use a provider for systems modules Add PrepareForTestWithBuildFlag
2024-08-09Use a provider for systems modules Colin Cross
Replace the SystemModulesProvider interface with Provider Test: all soong tests Flag: EXEMPT refactor Change-Id: If313580b28094d55b71f1635259bafa850ef7af5
2024-08-09Make IdeInfo aware of jarjar-ing Spandan Das
jarjar can be used to repackage a java_library. e.g. Foo.java in package com.android might get repackaged to prefix.com.android.Foo in the resultant jar. To allow code completion of rdeps, we should use the repackaged jar instead of the src files. This CL sets dpInfo.Jars to the header jar _only_ when jarjar_rules is not empty. We could probably set `Jars` to the header jar even for non jarjar-d libraries and get rid of `Srcs`, `SrcJars` altogether, but that would likely slow down any tools that index out/soong/module_bp_java_deps.json for code completion. Test: go test ./java Bug: 356572093 Change-Id: Ib45810799a479cb315aed011a34351d386a21357
2024-08-09Merge changes Iab6efe78,I73affae8 into main am: 788f69722c Spandan Das
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3214777 Change-Id: I6ea2dc099a65c623271f3abe4eb9f76db7f38aac Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-09Register versioned sdk dependency in module_bp_java_deps.json Spandan Das
java modules that link against a versioned sdk (sdk_version: <num>) get the appropriate stub jar on its classpath, but the dependency is not registered in its build graph. This CL registers this dependency for module_bp_java_deps.json. Ideally, we should move this to `decodeSdkDep` so that this dependendency becomes known to other tools that analyze soong's module graph (e.g. soongdbg) Test: go test ./java Bug: 358608607 Bug: 356572093 Change-Id: Iab6efe7826d18dedfadbe4d34d78e7eb2888bd8d
2024-08-08Merge changes Ib238a83a,I9ed6a649 into main am: 82201c2db1 Colin Cross
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3212336 Change-Id: I3499299e5069555bb3b7df1fcd712fc4aea7e3f7 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-08Merge changes I2b182cd3,Ibf6d9b79 into main am: 8c844e0b8f Colin Cross
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3198494 Change-Id: If9cd85e3ae2c51007a0884ada2dfe9207208f242 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-07Split jarjarIfNecessary out of compileJavaHeader Colin Cross
A future CL is going to change transitive classpath behavior when jarjar is enabled. In preparation, split the jarjar rules out of compileJavaHeader into a separate jarjarIfNecessary method, and use it on the classes and resource jars too. Also tweak the naming of the output files in repackageFlagsIfNecessary to be prettier. Bug: 308016794 Test: all soong tests pass Flag: EXEMPT refactor Change-Id: I2b182cd30631f2bd7925341b9171e6b3c0e8d450
2024-08-07Move kotlin stdlib after javac jars Colin Cross
A future CL is going to treat local jars separately from dependency jars. Rearrange the order of the kotlin standard library jars to come after the local jars produced by javac, which will better match the future ordering and ease ninja file comparisions. Bug: 308016794 Test: all soong tests pass Flag: EXEMPT refactor Change-Id: I9ed6a649350451bf1788077752db5222f50c0247
2024-08-07Convert JavaInfoProvider to *JavaInfo Colin Cross
Convert JavaInfoProvider to return a *JavaInfo instead of a JavaInfo. This will reduce copying when reading the provider, and also allows JavaInfo to recursively contain a depset of JavaInfos from dependencies. Bug: 308016794 Test: go test ./java/... Flag: EXEMPT refactor Change-Id: Ibf6d9b797f760ad1fe815d59839839fdfad91733
2024-08-07Merge "Don't hold on to WritablePath" into main am: d40aac1340 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3198492 Change-Id: I4fdf37dbd48d995efc26f6784e61f5af57538f11 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-07Merge "Don't hold on to WritablePath" into main Treehugger Robot
2024-07-30Don't hold on to WritablePath Colin Cross
Since only a single rule can write to a given WritablePath, it is unecessary to hold on to the WritablePath once the rule has been created. Keeping a WritablePath causes complications, as it prevents using the input Path as the output when no modifications to the input file are necessary. The normal pattern should be to create a WritablePath using PathForModuleOut, build the rule that writes to the WritablePath, and then store the WritablePath as a Path for use as an input to any future rules. WithoutRel previously only existed on OutputPath, which required keeping the output path of the module as an OutputPath for as long as possible in order to call WithoutRel on it at the end of the module. Add WithoutRel to Path, make it always return a Path type, and implement it on all the types that implement Path by using a helper in basePath. Replace long-lived WritablePaths with Paths. Test: all soong tests pass Flag: EXEMPT refactor Change-Id: I40f28075ce151e4be80d6cfc7ec173dfa46f9bbf
2024-07-22Merge "Add jarjar_rename property to java modules." into main am: e69b3218f3 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3186139 Change-Id: Ia8d7068b8026dd26808242e80f51a969a0007b61 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-20Add jarjar_rename property to java modules. Joe Onorato
It's the same mechanism that aconfig uses, but now it's exposed directly to Android.bp files. (I had wanted to test it out there before making it a property just in case it didn't work well) Bug: 352385368 Test: go test -v -run TestJarJar.* Change-Id: I72d797d08a250be93779ee4b038a1b8fc62123b7
2024-07-19Merge "Add all compile deps to module_bp_java_deps.json" into main am: ↵ Spandan Das
ad2aa3d220 Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3183819 Change-Id: I9e697860a14ba9e09f0bbb9031bab73f90bf0b29 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-19Add all compile deps to module_bp_java_deps.json Spandan Das
`Dependencies` in module_bp_java_deps.json currently only contains the `libs` and `static_libs` of the corresponding module. This is only a subset of the dependencies which are required to compile the java module. Most notably, the SDK deps (determined using `sdk_version`) are missing. This CL adds all the compile dependencies to the json file. Implementation details: 1. Add a `compileDepNames` to java.Module in base.go. Almost all the module types in java package are composed with the java.Module struct. 2. Populate this property in java.Module.collectDeps. This function is used by java.Module.compile to determine the classpath used for compilation. 3. Return `compileDepNames` in java.Module.CompilerDeps. Since `compileDepNames` is populated in `GenerateAndroidBuildActions`, update existing unit tests that check for correctness of IDEInfo.Deps Bug: 353811607 Test: m nothing --no-skip-soong-tests Test: cat out/soong/module_bp_java_deps.json | jq '."DebuggingRestrictionController".dependencies' [ "android_system_stubs_current", <-- missing previously "core-lambda-stubs", <-- missing previously "core-public-stubs-system-modules", <-- missing previously "com.google.android.material_material", ... ... ] Change-Id: I166c0eaf6e87ca7adc98bb4e21447cf82612d103
2024-07-16Merge changes I861a60e1,I01bf99fa,I9d16dfec into main am: 9678733731 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3150116 Change-Id: I3745d3347b71ef589a74366f449041b0391d64a5 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-16Merge changes I861a60e1,I01bf99fa,I9d16dfec into main Treehugger Robot
* changes: Add util method HasIntersection(...) Implement InstallableModule for Java modules Collect container informations
2024-07-15Implement InstallableModule for Java modules Jihoon Kang
This change enables the container information to be collected for Java modules. Test: m nothing --no-skip-soong-tests Bug: 338660802 Change-Id: I01bf99fa274275a608601ad6248d577ae8f6dffc
2024-07-11Merge "Use OutputFilesProvider on java modules" into main am: 256772f02c Zi Wang
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3165563 Change-Id: Iad4f22396b46ac797fbfab031764166c269742f0 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-10Use OutputFilesProvider on java modules mrziwang
In the context of incremental soong, the output files inter-module-communication will be through OutputFilesProvider. The OutputFileProducer interface will be deprecated. Test: CI Bug: 339477385 Change-Id: I3c9f0b766325dd490bc903dc65259c3953d34606
2024-06-14Merge "release_config: various cleanup" into main am: 000fe5ac5d am: 4c8f885b84 Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3129154 Change-Id: I6fa7afca689c54c2f95e8c65c026da78633a5591 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-14Merge "release_config: various cleanup" into main am: 000fe5ac5d Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3129154 Change-Id: Iddd2935b353fdfb8a22fccdbe5aa56c6cc17496d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-13release_config: various cleanup LaMont Jones
- move WriteMakefile to release_config.go - use slices.Sort instead of slices.SortFunc where applicable. - improve error message when inheriting an invalid release config Bug: None Test: manual Change-Id: Id959ddccc75fad912518d5cce8d14da506e0bbea
2024-06-11Merge "Only generate kythe xrefs on the primary module" into main am: ↵ Sam Saccone
6ace4cf906 am: 695908cf6d Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3126514 Change-Id: I8b5a24640daff1a5ad620a19379cb3a762b35223 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-11Merge "Only generate kythe xrefs on the primary module" into main am: 6ace4cf906 Sam Saccone
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3126514 Change-Id: Id836a095e7f3c3f22fca1ed470b832da6677fb59 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-11Only generate kythe xrefs on the primary module Cole Faust
Currently the kythe build is hitting the 6 hour timeout, but we're generating kythe files for all variants. Generating them only for the primary variant should drastically cut its runtime. Bug: 345440993 Test: Presubmits Change-Id: I3846b25c7f0bc22153e4f0a0cb81c5015854dd70
2024-05-31Merge "Make dex_preopt.enable_prof_rewrite=false an error for optimized ↵ Treehugger Robot
apps" into main am: 6e1a3815d8 am: 5149417e90 Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3108767 Change-Id: Iaca995bd2a742df6f9673ee75ba014fda0c38248 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-31Merge "Make dex_preopt.enable_prof_rewrite=false an error for optimized ↵ Treehugger Robot
apps" into main am: 6e1a3815d8 Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3108767 Change-Id: I249dea1d5c71054ef022ec674d78dd936078ca4c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-30Make dex_preopt.enable_prof_rewrite=false an error for optimized apps Spandan Das
If profile guided dexpreopt _and_ optimization/obfuscation is true, then apps must use the rewritten profile created by r8/d8 Bug: 335418838 Test: m nothing --no-skip-soong-tests Change-Id: Iac45b614f43e52ac40ad1d13df0338bcafa788c3
2024-05-29Merge "Use r8/d8 optimized profile for dexpreopt" into main am: 8723705fad ↵ Treehugger Robot
am: b18a30edde Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3095860 Change-Id: I67a2cc8d84fd930a20f6113a302f604eb53fa3f6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-29Merge "Use r8/d8 optimized profile for dexpreopt" into main am: 8723705fad Treehugger Robot
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3095860 Change-Id: Ifc3c21a58ff94bf7ece2a23b1f66c35eb7e51872 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-29Use r8/d8 optimized profile for dexpreopt Spandan Das
Currently, dexpreopt supports profile guided optimization. This does not work well with r8/d8 optimization, since the checked-in profile will not match the dex signatures after r8/d8 has optimized the dex code. This CL introduces a new property `dex_preopt.enable_profile_rewrting`. If set, the checked-in profile will passed as `input` to r8 via `--art-profile <input> <output>`. The <output> from the previous command will be used as the profile for dexpreopt. Test: m nothing --no-skip-soong-tests Test: m CredentialManager with https://ag.corp.google.com/27448930 and obfuscation turned on Test: nm -U symbol.odex # contains obfuscated methods Bug: 335418838 Change-Id: I53beed9ed76f013262f1c503de0f2b74997c2a7f
2024-05-24Merge Android 24Q2 Release (ab/11526283) to aosp-main-future Xin Li
Bug: 337098550 Merged-In: I4a6dd1c5e48db7085ea41035def31f0844948a46 Change-Id: If8ad1d0d87495bbd685f5f9f03f5eb7ea78bf192
2024-05-23Propagate DirectlyInAnyApex to transitive dependencies Jihoon Kang
`UpdateDirectlyInAnyApex` is used to propagate the ApexProperties `DirectlyInAnyApex` and `InAnyApex` to the direct dependencies of the direct dependencies of an apex bundle. In other words, this will be propagated only to two-levels max dependency from the apex bundle. However, the implementation library of the sdk library can have longer dependency chain from the apex bundle than two levels: e.g. apex -> bcpf -> sdk_lib -> sdk_lib impl lib Therefore, even if the implementation library of the sdk library is registered as a dependency using the "CopyDirectlyInAnyApexTag" dependency tag, the ApexProperties would not be propagated to the implementation library. In order to resolve this issue and recognize the implementation library to be directly in apex and allow instrumentation for the implementation library, this change proposes propagating `DirectlyInAnyApex` and `InAnyApex` to transitive dependencies on top of direct dependencies. Test: DIST_DIR=dist_dir TARGET_BUILD_VARIANT=userdebug PRODUCT=mainline_modules_x86_64 COVERAGE_MODULES="uwb" ./vendor/google/build/build_unbundled_coverage_mainline_module.sh && \ unzip -l out/target/product/module_x86_64/jacoco-report-classes-all.jar and ensure that framework-uwb is included Bug: 341170242 Change-Id: I27d7a74f6e5bc3e0a044d13c619f4897b6b2eb57
2024-05-22Merge "Instrument impl library belonging to apexes" into main Treehugger Robot