summaryrefslogtreecommitdiff
path: root/java/java.go
AgeCommit message (Collapse)Author
2024-04-12Add "test-only" flag for java modules Ronald Braunstein
As part of aosp/3022586 where we added the idea of "test-only" modules and top_level_test_targets, this CL implements that for java modules. We let users set "test-only" on java_library, but not on other modules where the module kind is implicitly test-only, like java_test. The implementation, not the user decides it is test-only. We also exclude it from java_defaults. % gqui from "flatten(~/aosp-main-with-phones/out/soong/ownership/all_teams.pb, teams)" proto team.proto:AllTeams 'select teams.kind, count(*) where teams.test_only = true and teams.kind not like "%cc_%" group by teams.kind' +--------------------------+----------+ | teams.kind | count(*) | +--------------------------+----------+ | android_test | 1382 | | android_test_helper_app | 1680 | | java_fuzz | 5 | | java_test | 774 | | java_test_helper_library | 29 | +--------------------------+----------+ % gqui from "flatten(~/aosp-main-with-phones/out/soong/ownership/all_teams.pb, teams)" proto team.proto:AllTeams 'select teams.kind, count(*) where teams.top_level_target = true and teams.kind not like "%cc_%" group by teams.kind' +--------------+----------+ | teams.kind | count(*) | +--------------+----------+ | android_test | 1382 | | java_fuzz | 5 | | java_test | 774 | +--------------+----------+ Test: m nothing --no-skip-soong-tests Test: go test ./java Test: m all_teams Bug: b/327280661 Change-Id: I9c3ad947dc3d68d6427abada27449526d69daa6b
2024-04-12Merge "Strip relative paths from java_import output files" into main Treehugger Robot
2024-04-11Strip relative paths from java_import output files Colin Cross
androidx.annotation_annotation is used as a test data file, and converting it from a java_library to a java_library_import causes the relative path used in the test data path to change. Clear the relative path in java_import the same way that other java based modules do. Bug: 288358614 Test: TestJavaLibraryOutputFileRel Change-Id: I1f494110da32e916043ca94ac6ebeeafccc06f9a
2024-04-09Merge "Add secretkeeper-v1-java to platform APIs" into main Nikolay Elenkov
2024-03-29Merge "Add test_module_config_host" into main Ronald Braunstein
2024-03-28Add test_module_config_host Ronald Braunstein
This pairs with `test_module_config` but also works on the base is a `java_test_host` module. e.g. test_module_config_host { name: "CtsOsHostTestCases_DERIVED_2566", base: "CtsOsHostTestCases", test_suites: ["general-tests"], include_filters: [ "android.os.cts.StaticSharedLibsHostTests" ], exclude_annotations: [ "androidx.test.filters.FlakyTest","org.junit.Ignore" ], } The new module is composed of the previous and shares much of the same code. With respect to build size, Without this change, if you build CtsAppSecurityHostTestCases, there will be several copies of the jar (and related apks) : *) 1 in framework out/host/linux-x86/framework/CtsAppSecurityHostTestCases.jar *) 1 in testcases for the test out/host/linux-x86/testcases/CtsAppSecurityHostTestCases/CtsAppSecurityHostTestCases.jar *) 1 per compatibility suite testcases out/host/linux-x86/mts-documentsui/android-mts-documentsui/testcases/CtsAppSecurityHostTestCases/CtsAppSecurityHostTestCases.jar out/host/linux-x86/mts-mediaprovider/android-mts-mediaprovider/testcases/CtsAppSecurityHostTestCases/CtsAppSecurityHostTestCases.jar out/host/linux-x86/mts/android-mts/testcases/CtsAppSecurityHostTestCases/CtsAppSecurityHostTestCases.jar out/host/linux-x86/cts/android-cts/testcases/CtsAppSecurityHostTestCases/CtsAppSecurityHostTestCases.jar out/host/linux-x86/mts-mainline-infra/android-mts-mainline-infra/testcases/CtsAppSecurityHostTestCases/CtsAppSecurityHostTestCases.jar A dervived test using CtsAppSecurityHostTestCases as base adds one more to its testcases dir: *) derived testcase. out/host/linux-x86/testcases/CtsAppSecurityHostTestCases_presubmit_ExternalStorageApp/CtsAppSecurityHostTestCases.jar Fixes: b/327280990 Test: m clean && m CtsOsHostTestCases_DERIVED_2566# as above Test: atest CtsOsHostTestCases_DERIVED_2566 --collect-tests-only Test: migrated the 71 TestMapping instances to Android.bp and build them. Ran tests on some of them. Ran some original `test_module_config` tests derived from `android_test` as well TODO: Add actions to validate the given filters are valid for the given test apks/jars. Change-Id: I115eedb6ff6ba8e72bb49e71867daf49d25ca0f1
2024-03-27Add secretkeeper-v1-java to platform APIs Nikolay Elenkov
Bug: 324321147 Test: Manual -- trigger factory reset, confirm ISecretKeeper.deleteAll() is being called in Trusty logs. Change-Id: If793f784bc1a8c621a721d15da9aeb1ef11e7334
2024-03-23Revert^2 "Support static_libs for java_import modules" Colin Cross
c6c9c7354bb9c8b8e69f21141e79d682bbe51076 Change-Id: Id011aca133d7bb45023a63c0f53d84a4d694cc2f
2024-03-22Merge changes from topic "revert-3008874-OJOKRLYEZJ" into main Colin Cross
* changes: Revert "Support transitive dependencies through android_libary_i..." Revert "Support static_libs for java_import modules"
2024-03-22Revert "Support static_libs for java_import modules" Colin Cross
Revert submission 3008874 Reason for revert: b/330903911 Reverted changes: /q/submissionid:3008874 Change-Id: I34cca9d021d9c806e28bb6a6a6da78efd61cde27
2024-03-22Merge changes from topic "no_more_nodeps" into main Colin Cross
* changes: Support static_libs for java_import modules Support transitive dependencies through android_libary_import modules
2024-03-21Support static_libs for java_import modules Colin Cross
Remove the need to wrap java_import modules with a java_library just to include static dependencies. Bug: 288358614 Test: TestJavaImport Change-Id: I888aecc6c0efc696a397fc1dd5d0ef5fd644bebc
2024-03-21Merge "Export JavaBootLibsSdkMemberType and ↵ Treehugger Robot
JavaSystemserverLibsSdkMemberType" into main
2024-03-20Export JavaBootLibsSdkMemberType and JavaSystemserverLibsSdkMemberType Spandan Das
build/soong/sdk will use these tags to differentiate the sdk and non-sdk contents of bootclasspath and systemserverclasspath fragments. Test: go build ./java Bug: 326246905 Change-Id: Ia8352c09fcbbca06988eb57153e5986801eb45a5
2024-03-20Merge "Change java stem attribute for both device and host" into main Treehugger Robot
2024-03-19Propagate intermediateCacheFiles in java modules and filegroup Jihoon Kang
This change propagates the intermediateCacheFiles generated by the aconfig_declarations to the static rdeps that are java modules or the rdeps that are filegroups. Test: m nothing Bug: 329284345 Change-Id: I02431336c1aa0378d03248f3bb6edf2f57ec3b7f
2024-03-19Change java stem attribute for both device and host yangbill
Bug: 329762127 Test: cd build/soong/java ; go test -run TestJavaLibHostWithStem Test: cd build/soong/java ; go test -run TestAppStem Test: cd build/soong/java ; go test -run TestAndroidAppImport_ArchVariants Test: cd build/soong/java ; go test -run TestOverrideAndroidAppStem Test: cd build/soong/java ; go test -run TestOverrideAndroidApp Test: cd build/soong/java ; go test -run TestPackageNameOverride Change-Id: I8fbdc82116f9a0c68121fbbeb1ef4f78f2b6fea3
2024-03-14Merge "Validate aconfig libs are built with the correct modes." into main Yu Liu
2024-03-12Merge "Use uncompressed dex for all preopted system targets" into main Treehugger Robot
2024-03-07Validate aconfig libs are built with the correct modes. Yu Liu
Bug: 323071835 Test: Unit tests and manual tests. Change-Id: I32de90826c7c8bb4d8495608e959d554820ab9a2
2024-02-28Enable non-"everything" stubs generation in java_api_library Jihoon Kang
This change adds support to generate non-"everything" (i.e. "runtime" and "exportable") stubs in java_api_library, which generates the stubs from the api signature files. Unlike droidstubs module that generates "everything", "exportable" and "runtime" stubs in a single module, java_api_library generates a single set of stubs per module, which is set by the default-"everything" property `stubs_type`. This is because java_api_library is responsible for both generation and the compilation of the stubs srcjar, and compilation of the stubs srcjar are done in separate java_library modules for from-source stubs. Utilization of this feature will be done in a follow up change that generates the "exportable" java_api_library modules in java_sdk_library. Test: m nothing --no-skip-soong-tests Bug: 318009570 Change-Id: I1051544ac3bcdb3ba1f78bfec28eba4e9fad9c2d
2024-02-20AOSP platform_apis violations Spandan Das
This allowlist contains java_library modules which set the no-op property `platform_apis`. This allowlist will help enforce that there are no new violations. This should be a no-op till https://android-review.git.corp.google.com/c/platform/build/soong/+/2969451 is submitted Test: presubmits Bug: 215379393 Change-Id: I49372e1d476201f607cd717be26aa3909668ff26
2024-02-20Merge "Disable dexpreopt if optional_uses_libs does not have an impl" into main Spandan Das
2024-02-16Disable dexpreopt if optional_uses_libs does not have an impl Spandan Das
At ToT, an optional_uses_libs is not added to the build time CLC if it does not exist in the tree. One edge case here is java_sdk_library_import, which might exist in the tree, but without an implementation. This cause issues during analysis when we try to verify the correctness of the build time CLC. This CL disables dexpreopt if a dependency does not have an implementation. To limit inadvertent side effects, this is restricted to java_sdk_library(_import) module types. (more precisely, it is restricted to java_sdk_library_import, since the source module type will always have an impl) Bug: 315802285 Test: Added a unit test Test: m nothing Test: printf debugging in internal main, verified that this CL does not disable dexpreopt on any android app inadvertently Change-Id: I173fc2f3ff654fe4091e9a43322164afd3222ee7
2024-02-13Introduce library property is_stubs_module Jihoon Kang
is_stubs_module property signifies whether the module compiles stubs or not. The information is propagated to the reverse dependencies of the java_library/java_sdk_library modules via JavaInfoProvider as StubsLinkType, a ternary state that provides information about whether the provided jars are compilation of stubs or implementation, or unknown. When java_sdk_library sets StubsLinkType, its state is Unknown as the decision of providing stubs vs implementation jar differs by the reverse dependency. Note that this CL does NOT propagate the property up to its reverse dependencies. This will be done in follow up CLs. Test: m nothing Bug: 310504781 Merged-In: Ic81488dbd1c9af1b5d31a33e5e9441d9f1416dbe Change-Id: Ic81488dbd1c9af1b5d31a33e5e9441d9f1416dbe
2024-02-09Use uncompressed dex for all preopted system targets Jared Duke
Extend default use of uncompressed dex for non-privileged system apps that are preopted. This avoids unnecessary disk usage on the /system_other/ partition, as well as the marginal overhead of extraction after mainline updates. In total, this saves ~5-15MB cumulatively across partitions. Bug: 318730708 Test: m + compare image sizes Change-Id: Id0a06965e61763f59c53cbe2b327cdcf1e5d422b
2024-02-06Merge "Mechanism to select a specific version of java_sdk_library_import" ↵ Spandan Das
into main
2024-02-06Mechanism to select a specific version of java_sdk_library_import Spandan Das
This CL is the java_sdk_library_import equivalent of aosp/2928483. With trunk stable, we will have multiple apex prebuilts in the tree. Each apex prebuilt will have its own module sdk. This means that it is possible to have mutliple versions of `framework-foo` in the tree. This CL introduces a mechanism to select a specific versioned java_sdk_library prebuilt. Implementation details - Add a `source_module_name` property to java_sdk_library_import. This will identify the source equivalent of the jsl in packages/modules. This used to be implicit - i.e. the name without the prebuilt_ prefix. With multiple prebuilts, this has to become explicit. - Set appropriate `source_module_name`(s) in the dynamically created child modules. e.g. the source_module_name on sdklib.v1.stubs and sdklib.v2.stubs will both be sdklib.stubs, assuming `source_module_name` on the top-level jsl_import is sdklib - Add a private Created_by_java_sdk_library_name property to java_import and prebuilt_stubs_sources modules. This will be used to idenfity the top level java_sdk_library_import that was used to create these child modules. This is necessary because java_sdk_library_imoprt is a macro that creates 1:many modules. However, to avoid toil, only the top-level java_sdk_library_import will be listed in `apex_contributions`. This new property will be used for source/prebuilt selection in android/prebuuilt.go - Rename BaseModuleName in commonSdkLibraryAndImportModule to RootLibraryName. This is necesssary because the former is now reserved to identify the source equivalent of a prebuilt module (maybe we should rename it?) Bug: 322175508 Test: Added a unit test Change-Id: If6aa6b0e939a07f8263874941413908383c81a78
2024-02-05Automatically propagate jarjar rules for aconfig libraries Joe Onorato
Test: treehugger Bug: 310504781 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:97c03a6dc659102ff40793759fb3f0f18164a85b) Merged-In: I639d12ff33175b7bed7e7d0595a40dd9b0d99367 Change-Id: I639d12ff33175b7bed7e7d0595a40dd9b0d99367
2024-01-30Merge "Propagate profile_guided requirement of imports to top-level apex" ↵ Spandan Das
into main
2024-01-30Merge "Support mechanism to select a specific version of module sdk ↵ Spandan Das
prebuilt" into main
2024-01-30Merge "Disable stub validation when `WITHOUT_CHECK_API=true`" into main Treehugger Robot
2024-01-30Propagate profile_guided requirement of imports to top-level apex Spandan Das
For prebuilts, the dexpreopt rules of system server jars are now generated from the context of the top-level prebuilt apex and not in the context of the shim java_import modules. Since `dex_preopt.profile_guided` property is defined in java_import, this needs to be bubbled up to the top-level apex. This will be done using deapxerInfo. If profile_guided of a transitive java_import is true, the deapexed .prof file will be set as dexreopter.inputProfilePathOnHost before invoking dexpreopter.dexpreopt. This ensures that only that java_import undergoes profile guided dexpreopt, and not every other transitive java_import Test: go test ./apex -run TestPrebuiltStandaloneSystemserverclasspathFragmentContents Test: lunch cf_x86_64_only_phone-next-userdebug && m $ANDROID_PRODUCT_OUT/system/framework/oat/x86_64/apex@com.android.art@javalib@service-art.jar@classes.odex Test: du -sh $ANDROID_PRODUCT_OUT/system/framework/oat/x86_64/apex@com.android.art@javalib@service-art.jar@classes.odex 24K Bug: 308790457 Change-Id: Ibf46ecb400b3f126b243fc8d27b08d9a1aa4cc97
2024-01-30Disable stub validation when `WITHOUT_CHECK_API=true` Jihoon Kang
Even when building stubs from source, the rules for the java_api_library modules are generated although they are not executed. This leads to NPE, as setting `WITHOUT_CHECK_API=true` prevents `checkCurrentApiTimestamp`, which the java_api_library modules depend on, from being generated. To prevent the NPE, this change prevents the `checkCurrentApiTimestamp` from being registered as the dependency of the java_api_library modules when `WITHOUT_CHECK_API=true` is set. Test: BUILD_FROM_SOURCE_STUB=true WITHOUT_CHECK_API=true m nothing Bug: 320601440 Change-Id: I4f19e30d9cd74bdc20dde0d14884fb03ff223ccb
2024-01-30Support mechanism to select a specific version of module sdk prebuilt Spandan Das
This CL is the java_(test_)_import equivalent of aosp/2928483. With trunk stable, we will have multiple prebuilts of the prebuilt java .jars in prebuilts/module_sdk/art/<v>/test-exports/, and this CL introduces a mechanism to use apex_contributions to select a specific versioned prebuilt when building. Implementation details: Create a new source_module_name property to identify the root module. rdeps referring to the root module will get redirected if necessary. This property also becomes the stem, if `stem` is not set explicitly. Bug: 322175508 Test: Added a unit test Change-Id: I2dff38acdf2002355586dbb2be8c1f98af4741f7
2024-01-26Merge "Fix the args used to dexpreopt system server jars in prebuilt apexes" ↵ Treehugger Robot
into main
2024-01-26Fix the args used to dexpreopt system server jars in prebuilt apexes Spandan Das
For prebuilts, java.dexpreopt gets called twice 1. in the context of the top-level prebuilt apex 2. in the context of the java_library shim Only the artifacts of (1) get installed. The artifacts generated by 2) are unused. However the args used to generate the artifacts of (1) are incorrect. It uses moduleName(ctx) to do special-handling of apex system server jars. This special-handling does not happen in (1), so although dexpreopt artficats get generated, they get generated with the wrong args. To fix this, add an additional parameter in java.dexpreopt to pass the libraryName explicitly. Details - Delete moduleName function. This was used to determine the java library name, which is no longer safe - Add a libraryName parameter to java.dexpreopt - Most module types will use j.Name() as libraryName - prebuilt_apex and apex_set will iterate over its `contents` and use each element as libraryName when invoking java.dexpreopt With the correct args passed from (1), we can drop j.dexpreopt from (2) completely. Dropping (2) also breaks profile guided dexpreopt tests. These currently operate on (2). They will be moved to (1) in the next CL of this stack. Test: presubmits Test: lunch cf_x86_64_auto-trunk_staging-userdebug && m nothing (this was a postsubmit failure with aosp/2923733) Test: art_standalone_dexpreopt_tests on next https://android-build.corp.google.com/builds/abtd/run/L86000030001579256 Test: art-gtest on git_master-art-host https://android-build.corp.google.com/builds/abtd/run/L07800030001550262 Bug: 308790457 Bug: 322255144 Change-Id: I8eb604c82f1fa5289d3cd1a20084d56e4d7485e3
2024-01-24Convert coverageMutator to a TransitionMutator Colin Cross
Convert coverageMutator to a TransitionMutator as a step towards variants-on-demand. Bug: 319288033 Test: coverage_test.go Test: treehugger coverage builds Change-Id: Ic50c0040dea8b42c36b5d784221daa00b7b0d379
2024-01-18Merge "Add better error handling to bootDexJar function" into main Treehugger Robot
2024-01-17Add better error handling to bootDexJar function Spandan Das
aosp/2876754 missed adding error handling to one of the places which consumes the dex jar deapexed from prebuilt apexes. This CL ensures that when we have multiple prebuilt apexes _without_ flagging, the hiddenapi processing code emits a more descriptive error "Multiple deapxers..." rather than a cryptic error "<module> does not provide a dex jar" Test: m nothing --no-skip-soong-tests Change-Id: I80849fa7cca17d724ac53c94bb353b169175ee28
2024-01-16Merge "Implicitly bump up Java target to 1.8" into main Treehugger Robot
2024-01-15Implicitly bump up Java target to 1.8 Sorin Basca
Bug: 320294595 Test: m Change-Id: I693e564c67d17254d68f3a9c16664c1da93b9488
2024-01-12Add defaults support for bootclasspath_fragment module type Jihoon Kang
This change transforms the bootclsspath_fragment module into a defaultable module, in order to modify the "art-bootclasspath-fragment" module definition based on the build flag in https://r.android.com/2897389 Test: m nothing Bug: 315027929 Change-Id: I01ba7b15e4fcdea9bd31c369110a3c9ee38bc9f6
2024-01-10Merge "Replace panic with ModuleErrorf" into main Treehugger Robot
2024-01-09Replace panic with ModuleErrorf Spandan Das
This is a followup cleanup for aosp/2876754 and replaces panic with ctx.ModuleErrorf. The latter creates a more expressive build error. Implementation details - export moduleErrorf interface from build/soong/android. This minimal interface will be used as a parameter for `DexJarBuildPath` - Add ModuleErrorf to the function signature of DexJarBuildPath. This parameter only gets used for Import and SdkLibraryImport structs. These two can have duplicate deapexer definitions, and ModuleErrorf will be used to report that error - Create a minimal implementation of `ModuleErrorf` in tests of java and apex Test: m nothing --no-skip-soong-tests Change-Id: I0febec651f40c3f04deb957e64133c94b80fbd78
2024-01-08Add aconfig_declarations property to droidstubs and java_sdk_library Jihoon Kang
In consideration of the incremental build performance, this change let droidstubs and java_sdk_library (which generates droidstubs per api scope) modules to specify `aconfig_declaration` modules where the dependent flags are defined in via the "aconfig_declarations" property, opposed to passing uniform "all_aconfig_declaration"-generated flag arguments to metalava. When "aconfig_declarations" property is defined for java_sdk_library modules, the property is passed to the generated droidstubs modules. When "aconfig_declarations" property is defined for droidstubs modules, the all aconfig_declaration modules listed in the property are listed as deps, all cache protobuf files are gathered and metalava-consumable flags are generated in "revert-annotations.txt". Although this change introduces scalable implementation to easily support generation of the "runtime" stubs corresponding flags, actual support of the runtime flags/stubs will be done in future changes. This change mostly focuses on the generation of the "exportable" flags. Utilization of the generated "exportable" flags will be done in future changes. Test: go test ./java Bug: 315485740 Change-Id: I37becd1b9dd9069d7ac4abed130906df30b3fdf4
2023-12-20Use the correct bootjars when multiple prebuilt apexes exist Spandan Das
hiddenapi and dexpreopt require boot and system server jars from apexes. When building with prebuilts, this comes via java_import/java_sdk_library_import, which acts as a hook for prebuilt_apex/apex_set. If we have multiple apexes in the tree, this hook becomes 1:many. This CL prepares dex_bootjars to select the right deapexerd .jar files when mutliple prebuilts exist. Implementation details - Update prebuilt module types (prebuilt_apex/apex_set) and source apexes to set a map of library name to dex jar path on host. - dex_bootjars will access the path of the .dex jar on host via the provider. These then copied/installed to the right locations. This CL does not drop the old mechanism to get the dex file (i.e. by creating a dep on java_library). Once all mainline modules have been flagged using apex_contributions, the old mechanism will be dropped Bug: 308790457 Test: git_master-art-host:art-gtest https://android-build.corp.google.com/builds/abtd/run/L21500030000926533 Test: git_main:art_standalone_dexpreopt_tests https://android-build.corp.google.com/builds/abtd/run/L99000030000891212 Test: Added a unit test that checks that the right .jar is selected when multiple prebuilts exists Change-Id: I6ef94135b9303a35135810930af4b641df13a583
2023-12-18Move validation from FindDeapexerProviderForModule to rdeps Spandan Das
FindDeapexerProviderForModule raises an exception if multiple apexes in the tree has an export dep on the java module. In prepartation to support multiple prebuilts, move this error check out of FindDeapexerProviderForModule and into rdeps. i.e. raise an exception only if an rdep calls DexJarBuildPath - This should be a no-op for now. - In the short-term future, a java import module will be allowed to have multiple deapexers. An error will be raised if anyone actually tries to depend on the dexjar - In the long-term future, this function will be removed. All processing will be done at the prebuilt apex level and not at the prebuilt java library level Since this check now happens in the moduleCtx of rdeps, add some additional props to unit tests to ensure that it does not exit early on unrelated validation checks (e.g. hidden_api prop is not set) Test: go test ./apex ./java Bug: 308790457 Change-Id: I3323d993c1ea8f43305834cae8e65b6fe41dfefd
2023-12-14Convert OtherModuleProvider to generic providers API Colin Cross
Convert all of the callers of OtherModuleProvider/OtherModuleHasProvider to use the type-safe android.OtherModuleProvider API. Bug: 316410648 Test: builds Change-Id: Id77f514d68761a262d9ea830a601dbed804bbbe5
2023-12-14Convert Provider to generic providers API Colin Cross
Convert all of the callers of Provider/HasProvider to use the type-safe android.ModuleProvider API. Bug: 316410648 Test: builds Change-Id: I73479de1625fa2865b6c73444cd477e50d56dc5a