Commit graph

29 commits

Author SHA1 Message Date
Devin Moore
48d7b3462d Add static_libs to module-info.json
This is helpful for analyzing how often a library is included statically
on a device. If a large library is linked statically in many processes
in a single device, it may be a good candidate for shared linking
instead.

This increases the size of module-info.json file on Cuttlefish by ~12.5%
from 65MB to 72MB.

Test: m
Bug: 280829178
Change-Id: I3614d86d799810e1ce845e1097f43f1ec0a412a3
2023-06-05 20:17:50 +00:00
Cole Faust
5d825b7a68 Speed up m command autocompletion
Generate a all_modules.txt file on every build that
can be used for autocompleting.

Because this adds time to every non-incremental build,
I profiled it by using `$(shell date +"%s.%3N")` before
and after, and disovered it only adds about 0.01 seconds
to the build. And of course it won't be rerun if there
weren't build changes.

Bug: 255867758
Test: Manually
Change-Id: I1d3f1008611fd542884322b27b19ea2fa1d341fe
2022-10-28 10:44:02 -07:00
Yike
450197e265 Export the target_required property to module-info
Some host test modules such as `python_test_host` use the
`target_required` attribute to declare target dependencies that will
be pushed to device. For example, `aidl_integration_test` references
several target dependencies in the `target_required` attribute since
those output files will be searched and pushed to device at runtime.
Besides, those target dependencies can't be declared in the `data`
attribute instead, since some modules' `data` attribute doesn't
support multi-arch.

So that, this information needs to present in module_info.json and
exported to properly generate Bazel targets that include these
dependencies.

Test: m out/target/product/coral/module-info.json
Bug: 222438068
Change-Id: Ia5ee103be1e7a811e1fdbd2b39252912b1a35c18
2022-09-19 16:42:04 +08:00
Yike
82f0a2d751 Export Java libraries into module-info
Some Java modules are defined in Android.mk and they declare
dependencies in eigther LOCAL_STATIC_JAVA_LIBRARIES or
LOCAL_JAVA_LIBRARIES. This information needs to present in
module_info.json and be exported to properly generate Bazel targets
that include these dependencies.

Test: m out/target/product/coral/module-info.json
Bug: 245686435
Change-Id: I77bc8de59f1d46bb098463066e1f52b98ebae955
2022-09-08 07:59:20 +00:00
Zhenhuang Wang
415ee12c76 Export test_options.tags to module-info
The test_options.tags attribute modifies execution behavior when running
tests in ATest Bazel mode. Exporting the value to module-info enables
ATest to add them to the corresponding Bazel target.

Bug: 240928948
Test: manually add `test_options.tags` attribute and run:
    $ refreshmod && \
      cat out/target/product/generic/module-info.json |\
      grep <tags>
Change-Id: I1a70d5c66703ed6a5a250459a80e8bca71d659b6
2022-08-22 20:59:54 +08:00
Yike
e4a549195c Export the host_required property to module-info
Some test modules such as `android_test` use the `host_required` attribute to include additional harness dependencies. For example, `CtsLibcoreTestCases` references `cts-dalvik-host-test-runner` in the `host_required` attribute since those jars are required by Tradefed at runtime.

This information needs to present in module_info.json and exported to properly generate Bazel targets that include these runtime dependencies.

Test: m out/target/product/coral/module-info.json
Bug: 220991354
Change-Id: I8d2ab0da04c9f4aff17d290999c69ffe0534729f
2022-06-28 10:10:35 +08:00
yangbill
b2219c7052 Add supported variants to module-info
Export the list of variants (host, host_cross, device) a build module
supports to module-info for downstream tools. The values correspond to
the Soong `host_supported`, `host_cross_supported`, and `device_supported`
attribute values.

Bug: 220263783
Test: m out/target/product/vsoc_x86_64/module-info.json
Change-Id: I10ae6ea21791d0d100686dcabecbce543a9adc3f
2022-02-25 01:28:51 +00:00
yangbill
e6b498bf2d Add data_bins to data_dependencies in module-info
This change exports the list of test_data_bins as data dependencies
that are required by modules when running the test.

Bug: 215234071
Test: m out/target/product/vsoc_x86_64/module-info.json
Change-Id: Ie5c1ef70055618a5fa0ba1bcfbcba8054743d41a
2022-02-17 05:17:03 +00:00
yangbill
fa5026c4d8 Export runtime dependencies in module-info
This change exports the list of dependencies that are required by
modules at runtime. Note that only the host case is currently
handled.

Bug: 215243373
Test: m out/target/product/vsoc_x86_64/module-info.json
Change-Id: I05199c54da311e59c7ea87595397ee4eecfab6a3
2022-02-10 08:07:13 +00:00
yangbill
724565d885 Export test data dependencies in module-info
Add the list of targets that are handled as data inputs and
required by tests at runtime.

Bug: 205726862
Test: m out/target/product/vsoc_x86_64/module-info.json
Change-Id: Id1468ebaf8f72cf37787f3cc514a29724c115db5
2022-01-05 10:34:51 +08:00
yangbill
5f5e2362fa Add share_libs and system_share_libs to module-info
Bug: 202922558
Bug: 204269866
Test: m out/target/product/vsoc_x86_64/module-info.json

Change-Id: Idb4e66216cac4835968454f83196107f6bec4c1c
2021-11-01 06:38:43 +00:00
Bill Peckham
16da01fe20 Introduce droidcore-unbundled target
The droidcore-unbundled target replaces the droidcore
target when TARGET_BUILD_UNBUNDLED_IMAGE=true. This
target is similar to droidcore in terms of dependencies,
but it has a smaller set of dist files. The intention is
to use TARGET_BUILD_UNBUNDLED_IMAGE=true with a
VSDK-using vendor build to supply Java dependencies from
prebuilts to avoid building (or needing) Java framework
sources.

Test: build with and without TARGET_BUILD_UNBUNDLED_IMAGE=true
Test: m nothing dist (before patch)
Test: m nothing dist (after patch)
Test: m nothing dist TARGET_BUILD_UNBUNDLED_IMAGE=true (after patch)
Test: examine ninja build graph for previous 3 tests
Bug: 188176942
Bug: 187064252
Merged-In: Ia7f8200c1bb1aaaa57c177d1698a114efe26bec7
Change-Id: Ia7f8200c1bb1aaaa57c177d1698a114efe26bec7
2021-06-16 09:10:07 -07:00
easoncylee
330af541eb Build module-info.json in dist
This is needed for test mapping to have module-info.json built out for
device targets so that test harness can do some checks to ensure the
test is properly configured in TEST_MAPPING files.

module-info has alreay depended on droidcore, which will be
built out in the infrastructure.

Verified in a forrest run: https://android-build.googleplex.com/builds/forrest/run/L81000000840964024

Bug: 154931418
Test: m -j droidcore
      m -j module-info
Change-Id: I76b97debe3fbd51c2dc033c91ed9c2eb73cfa8a2
2021-03-22 10:33:36 +00:00
yangbill
732b858481 Add unit_test option to module-info.json
Bug: 176096135
Test: atest -m hello_world_test, check module-info.json
Change-Id: Id8bc2eb0d93896afcbe5ce87b0205528615f090e
2021-01-08 17:36:56 +08:00
kellyhung
0ba6ec6f49 Add test_mainline_modules option support in mk
Bug: 165425972
Test: Apply aosp/1418212
      atest -b hello_world_test
      Check module-info.json for hello_world_test HelloWorldTests and
HelloWorldHostTest

Change-Id: Ie30a09a54b0ae927ca4d8d1aaba2ac0cdb15233a
2020-09-03 02:37:44 +00:00
Dan Shi
cb49d9986b Remove name appendix of .TEST_CONFIG
aosp/1401989 has a bug to add .TEST_CONFIG after the config file path.
It should be removed.

Bug: 163344047
Test: build and check module-info.json
Change-Id: I5c60250ce26204acf98b79084c5c2839b2adcb56
2020-08-21 17:15:14 -07:00
Dan Shi
0c9a525b98 Add extra_test_configs option support in mk
Bug: 163344047
Test: m -j HelloWorldHostTest hello_world_test HelloWorldTests
Change-Id: Ie63c2a80e01984ac9941d0bad4ad7948e0bb8ac0
2020-08-19 21:22:50 -07:00
Dan Willemsen
5c3fc2a792 Remove support for ONE_SHOT_MAKEFILE
Test: treehugger
Change-Id: Ie73418c186ec4c0e1c91078c133de8f8113295bf
2019-07-31 18:08:47 -07:00
patricktu
379f7f0ef6 AIDEGen: Collect the classes.jar of the prebuilt modules into module-info.json
Current information is not enough if the prebuilt modules are depend on
AAR libs Therefore, AIDEGen has to collect the classes.jar of the
prebuilt modules from build system.

Build module-info.json without this change:
Build time: 1m55.001s
File size: 14,918,354 Bytes

Build module-info.json with this change:
Build time: 1m56.292s
File size: 15,577,031 Bytes

Bug: 132768299
Test: 1. Checkout the internal master branch
      2. Patch this CL
      3. m -j out/target/product/generic_x86_64/module-info.json
      4. Open the module-info.json
      5. For verifying soong_java_prebuilt.mk, check the classes.jar of
         module prebuilt-google-play-* exists.
         e.g.
         "prebuilt-google-play-...": {
              ...
              "classes_jar": [
	      	"out/target/common/obj/JAVA_LIBRARIES/
		 prebuilt-google-..._intermediates/classes.jar"
	      ]
         }
      5. For verifying java_prebuilt_internal.mk, check the classes.jar
         of module ink exists.
         e.g.
	 "ink": {
	     ...
	     "classes_jar": [
	     	"out/target/common/obj/JAVA_LIBRARIES/ink_intermediates/
		 classes.jar"
	     ]
	 }

Change-Id: I09518c92260db47d2686493fa13951f316159d13
2019-06-14 10:47:18 +08:00
patricktu
ab435e39a5 AIDEGen: Collect the srcjar path of modules into module-info.json
By design doc: go/aidegen-doc-generate-R
In order to generate R.java of app modules, AIDEGen needs to build
the module. It might cause system.img oversized so we turn to build
the target srcjar file if it exists in module-info.json.

Build module-info.json without this change:
Build time: 1m47.227s
File size: 14,186,429 Bytes

Build module-info.json with this change:
Build time: 1m46.796s
File size: 14,614,470 Bytes

Bug: 132407603
Test: 1. m out/target/product/generic_x86_64/module-info.json
      2. by grep "target/common/obj/APPS/Settings_intermediates/aapt2.srcjar"
         in module-info.json.

Change-Id: I09c812aede0324bc38acbead0a863a85ae15b33e
2019-05-17 01:46:56 +00:00
Dan Willemsen
3b6f6fe8aa Stop using the files target for droidcore
This way if a BoardConfig.mk configures a specific image to exist (so it
doesn't end up as a folder on /system), but does not configure for it to
be created (like the device targets on AOSP that use a prebuilt), we
won't unnecessarily trigger the build system to build the contents.

Test: `m` before and after, comparing file lists
Test: check treehugger builds before/after
Change-Id: If0e4b958b3dfaa02771a5da70f970379635f904e
2019-01-14 21:46:31 -08:00
Simran Basi
03f5253020 Create an artifact to output module-info and OWNERS files in source code
Bug: 114242886
Test: make dist -j owners
      make dist -j module-info

Change-Id: I6d00928c25e3213a5563e64806e0c04530161581
2018-09-24 16:31:29 -07:00
Brandon Lee
5568c19ae1 aidegen: add extra info to collect in module-info.
- add "dependencies" and "srcs" to collect in module-info.mk.
- add "Srcs" in core/base_rules.mk

Bug: 112523202

Test: make out/target/product/generic_x86_64/module-info.json and
      generate out/target/product/generic_x86_64/module-info.json

Change-Id: I0669377b2e5e6b4ee225f1930bda208eff092dea
2018-09-12 17:39:32 +08:00
yangbill
f90b734c0c ATest: Change module_name from list to single string.
ATest's original module_name is designed as a single string.
The different type maybe cause some problem when loading module_name
data. Due to it expected it as a list but actually it will be a single
string after mod-info obj handling this data.

Bug: 113317515
Test: atest aapt2_tests
      atest hello_world_test
      atest BluetoothInstrumentationTests
      atest packages/apps/Bluetooth/tests/unit/Android.mk
      atest RunBluetoothRoboTests
      atest com.android.bluetooth
      atest libcore/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java
        Multiple tests found:
	  0: libjavacore-unit-tests
          1: jsr166-tests
          2: core-ojtests-public
	  ...
      atest SSLSocketTest # Brings up 2 prompts, one for which file then one for which module
      make -j bit
      bit Settings
      bit hello_world_test
      bit BluetoothInstrumentationTests
      bit RunBluetoothRoboTests (Could not find module, but the same situation
          before applying this patch)


Change-Id: I46a14c675eabd7cebd82562954380a9a769e80b5
2018-08-30 05:06:32 +00:00
yangbill
c9347b3167 Atest: add LOCAL_TEST_CONFIG to module_info.json
Bug: 112335032

Test: 1. Add LOCAL_TEST_CONFIG := ahat-tests.xml in
         art/tools/ahat/Android.mk for ahat-tests
      2. add ahat-tests.xml in local
      3. atest -m hello_world_test
      4. check module_info.json
         local_full_test_config": ["art/tools/ahat/ahat-tests.xml"]

Change-Id: Ice2a0c85979fa6b872c92aea5ff4a340342408ad
2018-08-24 09:29:11 +08:00
Morris Lin
a77d5a2dd6 module-info.mk: Output actual module_name.
Add actual module_name information to module-info.json, and atest can
get the actual module name instead of module_name with suffix.

Bug: 77288544

Test: make -j8
      m out/target/product/generic_x86_64/module-info.json

Change-Id: I1e2dfced10db7ef5d31d26dfeb6a6c50a073a519
2018-08-07 22:17:43 +08:00
Dan Shi
efb892d858 Auto generate test config files
This change allows one to run atest <module name>. The TradeFed test
config file will be automatically created in testcases directory based
on the settings.

Bug: 69929803, 69932044
Test: m -j NotificationStressTests libminijail_test
add following lines in notificationtests/Android.mk,
before "include $(BUILD_PACKAGE)"
LOCAL_COMPATIBILITY_SUITE := general-test

Change-Id: Ib5e9cd152d957b5d5beb6ed23a899a021a7e06d6
2017-12-20 15:05:17 -08:00
Kevin Cheng
2260918434 Add local compatibilty suite info to module-info.json.
Test: m out/target/product/<lunch target>/module-info.json
And I see the following line in module-info.json:

"CtsSampleHostTestCases": { "class": ["JAVA_LIBRARIES"],  "path":
["cts/hostsidetests/sample"],  "tags": ["tests"],  "installed":
["out/host/linux-x86/framework/CtsSampleHostTestCases.jar"],
"compatibility_suites": ["cts",  "general-tests",  "vts"] },

Change-Id: I67a78de4153c762977b145ed62ca8b6ecd0b7947
2017-11-28 15:27:04 -08:00
Joe Onorato
48bd6f53f4 Add generation of a module-info.json file
This outputs all of the modules that the build system knows about
for this invocation.

Change-Id: I8f95f3f8443c18f7898ce90e287432cbd2b6db6d
2016-04-06 19:11:51 -07:00