Commit graph

6043 commits

Author SHA1 Message Date
Liz Kammer
9a97a8f62a Implement bp2build for java_sdk_library_import
Test: go test bp2build conversion tests
Test: enable modules build from prebuilt and m nothing
Bug: 300640274
Change-Id: I8c015aec546d052bef6c42869e12db4e87d39780
2023-09-19 15:58:22 -04:00
Liz Kammer
e0cbc983ec Always convert prebuilt libraries
Test: CI
Test: patch in CL using prebuilt mainline modules & build
Bug: 300640274
Change-Id: Ie00b111a04198b266985f3e1c34c960844c0a327
2023-09-19 15:58:22 -04:00
Liz Kammer
86a407f284 Always convert prebuilt cc library headers
Test: go tests
Test: CI
Test: patch in CL using prebuilts for mainline modules and build
Bug: 300640274
Change-Id: I73f70dac679e341670e1484ce57bc984f413d409
2023-09-19 15:58:20 -04:00
Cole Faust
b4cb0c857f Move the android_platform next to it's entrypoint product config file
Because we're going to start generating partition images for the
product, and the partitions will eventually be checked in, we want
them to be in sensible locations. And the platform should be there as
well so all the targets for a product are co-located.

Bug: 297269187
Test: m nothing && b build --config=android //build/bazel/examples/apex/minimal:build.bazel.examples.apex.minimal
Change-Id: Iaa25c44aa00295ada279d5fd49b5498bbafb89d5
2023-09-19 09:54:59 -07:00
Jingwen Chen
088c4b652b Merge "[bp2build] android_test bp2build." into main 2023-09-18 23:27:14 +00:00
Treehugger Robot
35f1ae0721 Merge "Sort always convert by type list" into main 2023-09-18 18:03:58 +00:00
Liz Kammer
4fc71fff30 Sort always convert by type list
Test: CI
Change-Id: Icdf1f4e8132d959b494e2570854ee06973a816b0
2023-09-18 09:11:18 -04:00
Jingwen Chen
e12c083198 [bp2build] android_test bp2build.
android_test is just an android_app, but the test bits are handled
purely in Starlark (tradefed_test_impl).

This enables building HelloWorldTests (android_test) with Bazel.

Bug: 297030120
Bug: 297029612
Test: WIP
Change-Id: I6d287c94b31698ea247da48e4cd6b5a75bc71e11
2023-09-18 12:39:06 +00:00
Sam Delmerico
a588d153c8 support sandboxed rust rules
This commit adds support for compiling rust rules inside the sbox
sandbox. To compile a rust module with sandboxing enabled, the entry
point to the crate must be specified via the `crate_root` property, and
all input sources and compile-time data must be specified via the `srcs`
and `compile_data` properties.

Bug: 286077158
Change-Id: I8c9dc5cf7578037a583b4be2e2f73cf20ffd4408
2023-09-15 22:46:56 +00:00
Sam Delmerico
d96a60685a conditionally escape rule builder command
For rules which use RuleBuilder with Ninja variables (using the
BuildWithUnescapedNinjaVars function) but are not sandboxed, the command
output by RuleBuilder must not be escaped, or else Ninja variables will
not be evaluated until they are run on the command line.

Test: m libnum_traits liboid_registry crosvm droid
Change-Id: I81611368ab1975220f7f517df2f57646deac2af8
2023-09-15 22:41:58 +00:00
Sam Delmerico
0e2d63e4d2 Revert^2 "allow Ninja variables in RuleBuilder API"
7b02d8159e

Change-Id: I9f2031162b019e51b869ea0db151c86db447b23d
2023-09-15 22:41:56 +00:00
Sam Delmerico
9333ac1249 Revert^2 "add rust_toolchain_rustc_prebuilt module type"
400749d1f0

Change-Id: I63f04e13605c43f800f01f45345e4b3dc61aefb7
2023-09-15 22:40:16 +00:00
Treehugger Robot
9f7028852c Merge "Allowlist ndk STL dependencies" into main 2023-09-15 21:23:49 +00:00
Yu Liu
e6153b54bc Merge "Support aconfig_declarations, aconfig_values and aconfig_value_set" into main 2023-09-15 16:46:01 +00:00
Christopher Parsons
3671c385c7 Merge "Add unit test for parsing build files in bp2build" into main 2023-09-15 00:04:09 +00:00
Chris Parsons
5011e61c71 Add unit test for parsing build files in bp2build
This involves some minor changes to testing infrastructure.

This is a rollforward of aosp/2628496 with a couple of minor changes:

- In ParseBuildFiles, filter out all build files that are kept due
  to ShouldKeepExistingBuildFileForDir

- Add some minor test infrastructure for StubbedBuildDefinitions, with a
  couple of proof of concept tests used to demonstrate its usage. This
  pattern will become immensely more common as we implement allowlist v2
  (as we will need to update all tests which today simulate build
  definitions that have missing deps)

Bug: 285631638
Fixes: 286545783
Test: bp2build.sh
Test: m nothing
Change-Id: I7c3a03b02098e39dd8e51d327482b440f294478f
2023-09-14 19:19:28 +00:00
Spandan Das
3d6ac190f2 Allowlist ndk STL dependencies
Bug: 298088835
Test: TH
Change-Id: I43942ad17645c99de82a966d674ef80100eaffd0
2023-09-14 17:34:30 +00:00
usta
72c6c6c8be Bp2build-convert droiddoc_exported_dir
Bug: 283299388
Test: `m bp2build` and manual inspection
Change-Id: Ieec2094e446bb030f30103a7e1a06e35cbdcc72e
2023-09-14 12:06:54 -04:00
Liz Kammer
b70eae04ce Allowlist more targets for framework
Test: bp2build.sh
Change-Id: I4bd080dd795f40d9095157fe4ba4ec7f0e251757
2023-09-13 11:28:02 -04:00
Liz Kammer
f673c2ea9f Sort do not convert for unconverted deps
Test: n/a
Change-Id: Id86986f17d23fe47e47b303a1828478b8e887513
2023-09-12 09:08:17 -04:00
Treehugger Robot
0e3da8162c Merge "Allowlist packages instead of modules" into main 2023-09-12 01:53:49 +00:00
Zi Wang
37aa1729b0 Merge "Allowlist libprotobuf-java-full" into main 2023-09-11 22:50:40 +00:00
Vinh Tran
9226051310 Allowlist packages instead of modules
bp2build doesn't support allowlisting fully qualified module names. Hence, when modules such as libui and libbinder have duplicate names with corresponding fdo_profile modules, bp2build yields an error. See b/299663210 for more context.

Test: CI
Bug: 299663210
Change-Id: Ic175f5aea38139d34c5df8b9d02e7d82d9b3fc10
2023-09-11 18:15:35 -04:00
Cole Faust
7a05d1392a Merge "Allow actions to read BUILD_BROKEN_INCORRECT_PARTITION_IMAGES" into main 2023-09-11 17:25:18 +00:00
Yu Liu
2cc802a442 Support aconfig_declarations, aconfig_values and aconfig_value_set
Bug: 297356603
Test: Unit tests
Change-Id: I2f797578a35322440db0f281b4d46b6652512e00
2023-09-09 12:33:40 -07:00
Treehugger Robot
edbf854aa5 Merge "Re-enable partition test" into main 2023-09-08 23:16:58 +00:00
Cole Faust
ded796030b Allow actions to read BUILD_BROKEN_INCORRECT_PARTITION_IMAGES
To maintain good backwards compatibility with the legacy partition
building behavior, allow actions to read
BUILD_BROKEN_INCORRECT_PARTITION_IMAGES so that we don't have to rerun
analysis.

Bug: 205632228
Test: Presubmits
Change-Id: I2b55c0143cbdaf010e6b5fd0c3d51d6930a94eff
2023-09-08 15:58:13 -07:00
Sam Delmerico
1d3740a274 Merge changes from topic "revert-2605644-rulebuilder-ninja-vars-OAAWYCDDLT" into main
* changes:
  Revert "add rust_toolchain_rustc_prebuilt module type"
  Revert "add crate_root property to rust modules"
  Revert "allow Ninja variables in RuleBuilder API"
2023-09-08 20:46:55 +00:00
Cole Faust
9a6fa98cd3 Re-enable partition test
Due to the series of recent reverts, it's working now.

Bug: 297269187
Test: m bazel_sandwich
Change-Id: I010a942918467713e08b900aec06c7011c40c3be
2023-09-08 12:00:39 -07:00
Sam Delmerico
400749d1f0 Revert "add rust_toolchain_rustc_prebuilt module type"
Revert submission 2605644-rulebuilder-ninja-vars

Reason for revert: b/299568218

Reverted changes: /q/submissionid:2605644-rulebuilder-ninja-vars

Change-Id: Ic3d1ba7e8a61427b52f31cc3f187c9d5a7d9a7bb
2023-09-08 16:10:47 +00:00
Sam Delmerico
7b02d8159e Revert "allow Ninja variables in RuleBuilder API"
Revert submission 2605644-rulebuilder-ninja-vars

Reason for revert: b/299568218

Reverted changes: /q/submissionid:2605644-rulebuilder-ninja-vars

Change-Id: Ia738c100b8431dea6151939a800b992f877b5bb8
2023-09-08 16:10:54 +00:00
Treehugger Robot
3fb2002c9e Merge changes I86f30b99,I2769c0d5 into main
* changes:
  Do not convert resource dirs without resources
  Do not convert java libraries with core_platform
2023-09-08 16:04:45 +00:00
Treehugger Robot
b091d3b688 Merge "Add all of hardware/interfaces/media to allowlist" into main 2023-09-08 16:04:44 +00:00
Liz Kammer
33dddf5a7e Do not convert resource dirs without resources
Previously we would convert to java_resources when there were no
resources and get an error.

Test: b build //external/libphonenumber/... --config=android
Change-Id: I86f30b993a3ffdb20000f6a4c5261e2c4c74263c
2023-09-08 09:44:00 -04:00
Liz Kammer
4fd2edb638 Add all of hardware/interfaces/media to allowlist
Test: b build //hardware/interfaces/media/... //system/tools/hidl/... \
    --config=android
Test: b build //hardware/interfaces/media/... //system/tools/hidl/... -k
Change-Id: Icc0f8ebb87b269c93e1b3b37e8c162772a2384ec
2023-09-08 09:39:37 -04:00
Firman Prayoga
20ae294850 Merge "Revert "Re-enable the partition test"" into main 2023-09-08 04:02:58 +00:00
Cole Faust
5abc4bfb6e Revert "Re-enable the partition test"
Revert submission 2745814-bazel_staging_dir_file_list

Reason for revert: So we can revert the staging directories change

Reverted changes: /q/submissionid:2745814-bazel_staging_dir_file_list

Change-Id: I3e997f29efcaf68ef102d33595609dd709f43d7d
2023-09-08 03:15:32 +00:00
Treehugger Robot
9abcf649a7 Merge changes from topics "rulebuilder-ninja-vars", "rustc_prebuilt_build_tool" into main
* changes:
  allow Ninja variables in RuleBuilder API
  add crate_root property to rust modules
  add rust_toolchain_rustc_prebuilt module type
2023-09-08 00:10:18 +00:00
Cole Faust
509ca8dfaf Merge "Re-enable the partition test" into main 2023-09-07 23:35:01 +00:00
Sam Delmerico
1f9bb26656 allow Ninja variables in RuleBuilder API
The RuleBuilder API would not expand Ninja variables because the
variables would be written verbatim to the sandbox manifest file. This
commit allows a rule to specify that the manifest file should be written
in an un-escaped format so that Ninja variables are expanded before
writing the manifest file.

Bug: 286077158
Test: rust sandboxing topic + go test
Change-Id: I1915431f6e24d04d343dacc213c9079674ec8251
2023-09-07 20:56:02 +00:00
Treehugger Robot
3f0aa4d618 Merge "bp2build: block src == name for prebuilt_* modules" into main 2023-09-07 19:41:04 +00:00
Cole Faust
1b519e78e7 Re-enable the partition test
Bug: 299495030
Test: m bazel_sandwich
Change-Id: Ibffc1c0adc858db5bf057ecfa66323c629704656
2023-09-07 11:57:36 -07:00
Zi Wang
e18ce5337d Allowlist libprotobuf-java-full
Test: CI

Bug: 299290824
Change-Id: Iee85c63ccc2ebc26bcbc74cce49bfcfb50fed272
2023-09-07 11:30:25 -07:00
Cole Faust
7dcfeb8100 Tempoarily disable the partition test
Bazel doesn't have the new functionality to only pick up correct files
from the staging dir, so it doesn't match make anymore.

Bug: 297269187
Test: m bazel_sandwich
Change-Id: I42e99a30b6e977c628f76457557d823f26446985
2023-09-07 10:05:42 -07:00
Treehugger Robot
8763530dff Merge "android_app APEX_GLOBAL_MIN_SDK_VERSION_OVERRIDE" into main 2023-09-07 16:55:45 +00:00
Liz Kammer
d5d12d028b bp2build: block src == name for prebuilt_* modules
src == name causes circular dependency errors, instead mark these as
unconverted and don't create modules for them.

Test: m bp2build and verify boringssl_self_test.zygote64.rc unconverted
Change-Id: I5d5fdd7e14830cd685816064cd0377998d07293c
2023-09-07 12:26:22 -04:00
Paul Duffin
7d885d53a6 Merge "Convert Android.bp files in sub-directories of tools/metalava" into main 2023-09-07 13:55:40 +00:00
Paul Duffin
85e33c1cad Convert Android.bp files in sub-directories of tools/metalava
Bug: 299428102
Test: m checkapi
Change-Id: Ia01a394ec80e7d760cfb920993807c4006d8c36e
2023-09-07 12:08:53 +01:00
Cole Faust
999881376b Merge "Delete ApiBp2build soong_build mode" into main 2023-09-06 18:04:25 +00:00
Spandan Das
6f45900389 Merge "Add target_compatible_with for compile_multilib" into main 2023-09-06 03:29:26 +00:00
Treehugger Robot
f3d52683a9 Merge "soong: HWASan exclude path support" into main 2023-09-06 01:14:12 +00:00
Spandan Das
e1cb14b240 Add target_compatible_with for compile_multilib
For explicit values of compile_multilib (e.g. 32 or 64), add an
incompatibilty constraint for the arches that do not have the correct
bitness.

Test: go test ./bp2build
Bug: 299135307
Change-Id: I4cd997de6804a5c6d89086d740f773936db1cab9
2023-09-06 00:31:00 +00:00
Chris Parsons
73f411b72c Delete ApiBp2build soong_build mode
This feature is obsolete.

This makes a large number of codepaths "dead code" (such as
module-specific implementations of ApiBp2build functionality). These
will be deleted in a followup CL.

Bug: 284029211
Test: Presubmits
Change-Id: Ib53b99f1fe8c24380d219caf44e9bb3b96724fa0
2023-09-05 17:09:51 -07:00
Treehugger Robot
922e6adfd2 Merge "print module name on allowlist errors" into main 2023-09-05 23:26:31 +00:00
Sam Delmerico
0e0d96efa7 android_app APEX_GLOBAL_MIN_SDK_VERSION_OVERRIDE
Currently the product variable that is controlled by
APEX_GLOBAL_MIN_SDK_VERSION_OVERRIDE only overrides apexes, but it
doesn't apply to android_apps. This commit allows android_apps which set
updatable: true in their Android.bp to have their min_sdk_version be
overriden by this product variable.

Bug: 295311875
Test: go test
Change-Id: If3cb82a17cae4553b577dd1a4637ee13c3c95302
2023-09-05 21:38:16 +00:00
Sam Delmerico
e42edc369c print module name on allowlist errors
Change-Id: I34db128d96f8121fed56588a5d6ba7de6e848c9a
2023-09-05 19:19:19 +00:00
Spandan Das
ab29f57ce6 Fix target_compatible_with non-determinism for proto.include_dirs
A single proto providing directory can be used by multiple soong modules. Some of these
can be
1. Host specific
2. Device specific
3. Both host and device

Since the generated proto_library can have 1:many mapping, it should
have an empty target_compatible_with. Compatiblity will be enforced at
the top-level {cc|java|python}_proto_library.

(This is a followup to aosp/2727054 which did not handle this correctly)

Test: Added a unit test

Change-Id: I09b3def70e3d043fd8ba0d1eb4ffff1910f097d1
2023-09-01 21:30:29 +00:00
Yu Liu
056d05b690 Merge "Allowlist aapt." into main 2023-09-01 17:22:28 +00:00
Inseob Kim
9c14e725e7 Merge "Remove code about mixed sepolicy build" into main 2023-09-01 01:06:29 +00:00
Yu Liu
a06f869dd2 Allowlist aapt.
Bug: 297409580
Test: CI
Change-Id: Ia1b0c65146109d8fca76e47221960f98307a52ec
2023-08-31 16:30:07 -07:00
Treehugger Robot
a4fc68a355 Merge "Use aquery results to determine if a file should be executable" into main 2023-08-31 20:51:42 +00:00
Sam Delmerico
b45c844ce7 add rust_toolchain_rustc_prebuilt module type
Sandboxing the rust rules requires having explicit inputs for the rust
toolchain. This module type makes the rustc prebuilt and its
dependencies explicit as a module that can be depended on by all rust
rules.

Bug: 286077158
Test: rust sandboxing topic + go test
Change-Id: If2b80b32e329e6a6ee11ba824de868cf04714553
2023-08-31 18:03:33 +00:00
Cole Faust
20f2030e29 Use aquery results to determine if a file should be executable
Now that aquery includes this information.

Also added rm -f $out to some rules, because since they write files
by shell redirection, if the file existed before and was executable,
they wouldn't make the file non-executable and visa versa.

Fixes: 297366783
Test: m bazel_sandwich
Change-Id: Ie5b6c4275b162601f51deaec9912eea4be16988d
2023-08-31 11:00:25 -07:00
Inseob Kim
6077b2342c Remove code about mixed sepolicy build
There is no one actively using mixed sepolicy build, and it made
sepolicy codes too complicated. As we are deprecating mixed build,
removing such code for cleanup.

Bug: 298305798
Test: boot cuttlefish
Change-Id: Icb5071eb1378f8ed83568e4445d7b4d33e29bc46
2023-08-31 16:49:59 +09:00
Spandan Das
43dfeb6d10 Replace sync.Mutex with Sync.Map
createProtoLibraryTargetsForIncludeDirs uses a lock-protected plain map
to see if a directory has been handled previously during concurrent visits
of modules in bp2build.

From golang's docs https://pkg.go.dev/sync#Map, replacing sync.Mutex
with sync.Map will be faster in this use case since the keys (directores
here) are written just once but read many times.

Test: m bp2build
Change-Id: Ia2a471b4db5d2890fa6048bc05a17cebc5f686af
2023-08-31 00:30:24 +00:00
Romain Jobredeaux
520ab19c23 Allowlist platform-test-annotations (new dependency of bouncycastle)
Change-Id: I68ee46622d0b9048d8e53a8a74721aac139e9ddd
2023-08-30 12:19:54 -04:00
Treehugger Robot
662b09e8c3 Merge "Prevent concurrent read/writes to a map" into main 2023-08-30 02:40:07 +00:00
Spandan Das
fc6e645645 Prevent concurrent read/writes to a map
This should hopefully fix an intermittent flake in bp2build, which is
now run by default.

Test: go build ./android
Change-Id: Ic257a34448ab323df1680cf1990b087ed415a592
2023-08-29 23:59:20 +00:00
Treehugger Robot
8bbe26cad7 Merge "Allowlist more deps of adb" into main 2023-08-29 19:39:56 +00:00
Treehugger Robot
37a0e4a0bd Merge "Use board api level for seapp coredomain check" into main 2023-08-29 01:09:37 +00:00
Spandan Das
26e2967e54 Merge "Bugfixes for proto_library (proto.include_dirs)" into main 2023-08-28 21:41:00 +00:00
Todd Lee
5b6d1d87d6 Merge "Support for incremetal platform prebuilt APIs" into main 2023-08-28 18:42:58 +00:00
Spandan Das
f26ee15e01 Bugfixes for proto_library (proto.include_dirs)
The fixes are
- Dedupe the dir list. Since we partition the proto srcs per pacakge and
  then iterate the map, a single include directory was being listed
  multiple times
- Drop target_compatible_with from these proto_library targets. The
  compatibility will be enforced at the top-level <lang>_proto_library.

Test: Added a unit test

Change-Id: Ia18c0f8c495585010fd4e372092afe80c5d8290c
2023-08-28 18:39:59 +00:00
Treehugger Robot
7eb6ffc796 Merge changes from topic "java-proto-include-dir" into main
* changes:
  Handle proto.include_dirs for java
  Translate python_libray.pkg_path to proto.import_prefix
2023-08-28 17:18:29 +00:00
Alix Espino
5dbb696c53 Merge "support for multiple filegroups and resource_dirs" into main 2023-08-28 17:10:13 +00:00
Vinh Tran
85b177dff7 Allowlist aconfig
Test: b build //build/make/tools/aconfig:aconfig
Bug: 295910295
Change-Id: Ic71b2982a715b9ea36f8bf40fc5158e6f58f6a2c
2023-08-25 18:03:43 -04:00
Vinh Tran
9b84678faf Convert libprotobuf to Bazel
Since this is a one-off just for building libprotobuf that will be removed when we handle cargo output more generically (b/297364081), I didn't write a unit test for this CL.

Test: b build //external/rust/crates/protobuf:libprotobuf
Bug: 295925256
Change-Id: I00cf44d54be27a09c184a96c13b250a2e54e2d10
2023-08-25 17:53:37 -04:00
Vinh Tran
c1a6ceefd3 Allowlist all aconfig deps modulo libprotobuf and libaconfig_protos
Test: b build //external/rust/crates:all
Bug: 295903972
Change-Id: Ieb29516722155ef8921e454eaa1ea51fad99ec08
2023-08-25 17:51:54 -04:00
Vinh Tran
3570ce3f69 Allowlist rust_library dependencies of aconfig
These deps are not depdendent on libaconfig_protos (rust_protobuf_host) and rust_proc_macro modules.

Test: b build //external/rust/crates/...
Bug: 295910506
Change-Id: I1c6058d029c2d475bd760ae9497fe78343a13882
2023-08-25 17:45:24 -04:00
Vinh Tran
bcb5f57eed Implement bp2build converter for rust_library
Test: go test
Bug: 297294749
Change-Id: I5400fe2c0fe2097b7a5810c736fbd1de4f35c6f7
2023-08-25 17:42:13 -04:00
Todd Lee
2ec7e1c55c Support for incremetal platform prebuilt APIs
This change provides support for prebuilt incremental platform API (i.e.
API changes associated with a QPR, as opposed to a major dessert
releas).

This feature is provided via the existing prebuilt_apis module with the
introduction of a new attribute:

    allow_incremental_platform_api

While typical platform prebuilt APIs are presumed to be under a
directory structure that follows the pattern:

<version>/<scope>/<module>.jar
<version>/<scope>/api/<module>.txt

Where <version> is limited to a single integer signifying the API level.

For modules where allow_incremental_platform_api is set to 'true' (false
by default) the pattern is the same, however <version> is presumed to be
of the form MM.m, where MM aligns with the existing API level and m
signifies the incremental release (e.g. QPR).

Bug: b/280790094
Test: platform build check with both incremental & non-incremental API
      cd build/soong && go test ./java
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:eee6995093485497bc29cdce01c2a86765ffb4eb)
Change-Id: I67e293006ccfa210d0dcc0a294db894632f1b6cb
2023-08-25 18:03:44 +00:00
Alix
289e9c607b support for multiple filegroups and resource_dirs
Test: tests in bp2build and b build //external/emma:emma

Change-Id: I57e60389aec926c55d01818a6a3b1ec33e9c53b8
2023-08-25 16:12:15 +00:00
Liz Kammer
01c09caac8 Allowlist more deps of adb
Test: b build //packages/modules/adb/...
Test: b build //packages/modules/adb/... --config=android
Change-Id: If007f795b0eda9d6d877de7dcb2306a7e35baed6
2023-08-25 13:44:04 +00:00
Inseob Kim
5bac3b6f2a Use board api level for seapp coredomain check
Rather than PRODUCT_SHIPPING_API_LEVEL, use board api level
(BOARD_API_LEVEL or BOARD_SHIPPING_API_LEVEL) to determine whether we
check coredomain violations or not.

Also provides a Makefile variable to override the flag, for targets that
want to turn on the check optionally.

Bug: 280547417
Test: see build command of vendor_seapp_contexts
Change-Id: Ic7c4a53d0df0cccd45eb699e236a92c8c0bc2d56
2023-08-25 21:29:56 +09:00
Treehugger Robot
4e6c42d417 Merge "Add the system image test to the bazel sandwich" into main 2023-08-24 21:50:22 +00:00
Spandan Das
234bb3bd8d Merge changes from topic "proto-include-dir-py" into main
* changes:
  Handle proto.include_dirs in bp2build for py
  Add proto.local_include_dirs support in bp2build
  Add manual tag to proto_library at the root package
2023-08-24 20:57:47 +00:00
Spandan Das
cb847638af Translate python_libray.pkg_path to proto.import_prefix
If a python_library uses a pkg_path foo/bar, then the proto srcs in
that libray need to import the dep .proto as foo/bar/proto.proto.

This behavior is restricted to python modules. To implement this is in
bp2build, this CL creates a new interface with a single method
`PkgPath`. Only python module structs implement this interface, and
this method is only available during bp2build

Test: Added a bp2build unit test
Test: TH

Change-Id: If8d207c0b321f75337a053795826b283a5eaaf46
2023-08-24 19:21:10 +00:00
Spandan Das
4e5a194b90 Add proto.local_include_dirs support in bp2build
This is a followup to aosp/2711093 which added support for
proto.include_dirs. local_include_dirs is simlar, except that is
relative to the module directory.

Test: go test ./bp2build
Bug: 285140726
Change-Id: I32ddc7371048672d6935f827c8aee9d767305e2c
2023-08-24 19:00:12 +00:00
Spandan Das
e0f2ed56a0 Add manual tag to proto_library at the root package
This is a fix similar to aosp/2707793. This adds manual tags to the
top-level proto_library created in the root package, plus any
dynamically created proto_library targets for proto.include_dirs. These
proto_library targets might not specify their deps correctly and might
be unbuildable.

(We need to keep these targets because they provide a ProtoInfo for
cc/java/py source gen)

Test: go test ./bp2build
Change-Id: Ic00f05186327fcfcc8d33a0a2c0891ed619b7acb
2023-08-24 19:00:11 +00:00
Cole Faust
39b614af17 Add the system image test to the bazel sandwich
Also make -test.sh files executable, while we wait for a bazel update
that will tell us which FileWrite actions should be executable.

Bug: 297268692
Test: m bazel_sandwich
Change-Id: I60498577ba12813bff8bbdbc1b997ea4addefd17
2023-08-24 09:47:35 -07:00
Treehugger Robot
55d7f75b76 Merge "Denylist "ota_from_raw_img" module for bp2build" into main 2023-08-24 02:17:55 +00:00
Motomu Utsumi
5147d927e0 Merge "Add package/modules/Connectivity bpf_headers path" into main 2023-08-24 02:12:51 +00:00
Jihoon Kang
04b7d808fe Denylist "ota_from_raw_img" module for bp2build
The module introduced in aosp/2722136 depends on `delta_generator`,
which is a module defined in directory that is not bp2build default
allowed, causing bp2build failure. Therefore, denylist the module to
resolve breakage.

Test: TH & abtd
Change-Id: I313239d82d384ec7de8167aa385806ebde02d2c8
Bug: 297269308
2023-08-23 23:16:16 +00:00
Romain Jobredeaux
890d6ea885 Allowlist prebuilt/r8 for bp2build.
Bug: 293304784
Test: CI
Change-Id: I513a6f487b32e71a2afc01f7afeecfc3a1eb7f2e
2023-08-23 11:41:13 -04:00
Mark White
03fe33ad1c Merge "java_library support for building headers-only" into main 2023-08-23 15:03:21 +00:00
Treehugger Robot
98872f8b32 Merge "Denylist reverse dependency of tradefed" into main 2023-08-23 08:17:39 +00:00
Treehugger Robot
b84435c0ab Merge "Revert "Add BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN"" into main 2023-08-23 06:34:30 +00:00
Jihoon Kang
f51ec393fe Denylist reverse dependency of tradefed
aosp/2719934 lists tradefed as libs, causing bp2build failure as the
module is not converted to bazel. Thus, denylist the module to resolve
bp2build failure

Test: TH & ABTD
Bug: 297039097
Change-Id: I41f2673636a7564fd6fb75ae97b93613f9098365
2023-08-23 05:24:02 +00:00
Treehugger Robot
15aed3b882 Merge "Denylist prebuilts_etc modules to resolve bp2build failure" into main 2023-08-23 02:47:09 +00:00
Treehugger Robot
49275e73cc Merge "Denylist "bouncycastle-test-lib" to resolve build failures" into main 2023-08-23 02:47:09 +00:00
Inseob Kim
3a61b6edae Revert "Add BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN"
Revert submission 2715179-BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN

Reason for revert: not needed

Reverted changes: /q/submissionid:2715179-BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN

Change-Id: I3bc8f2006b2f82159ae308467ea74ad62a60ec6f
2023-08-23 02:07:40 +00:00
Mark White
a15790ac1e java_library support for building headers-only
Flag for java_library modules to build just the Turbine headers and
skip building an impl jar.

Test: go test java
Bug: 289776578
Change-Id: Iad0babf951710476bc32df93c25d17065a14ab84
2023-08-22 21:29:05 +00:00
Jihoon Kang
49defa67fe Denylist prebuilts_etc modules to resolve bp2build failure
Recently introduced prebuilts_etc modules that possess identical name
and src properties fail with `self-edge` error, thus denylist the two
modules.

Test: ABTD
Bug: 297039097
Change-Id: I430cdb20e4a20985f35abff05d3335959317b509
2023-08-22 20:34:49 +00:00
Jihoon Kang
b06d8a51ea Denylist "bouncycastle-test-lib" to resolve build failures
aosp/2711135 adds `bouncycastle-test-lib` module, which is a
reverse dependency of the denylisted `bouncycastle`, causing
bp2build failure. This change denylists the module to resolve the
failure.

Test: TH
Bug: 297039097
Change-Id: Idbb8f5a17bd5727c53686ba16fe3ff1215e0d0ed
2023-08-22 18:30:05 +00:00
Tomislav Novak
f734f00898 soong: HWASan exclude path support
Adds the ability to centrally disable HWASan for multiple modules when
building with SANITIZE_TARGET=hwaddress. Soong version of the patchset.

HWASan takes precedence over CFI and several other sanitizers that it's
incompatible with[1], which can be problematic for modules that require
those sanitizers (e.g. those that depend on vendor prebuilts where only
sanitized variants are provided). This patch adds an easy way to disable
HWASan for such modules while still keeping it globally enabled.

Test: build with HWASAN_EXCLUDE_PATHS set and verify with readelf that
      relevant modules have no references to __hwasan symbols

[1] bb31ca1168/core/config_sanitizers.mk (236)

Change-Id: I5824f71f2a400c64cde29e2c7afdd167d851d337
2023-08-22 18:15:14 +00:00
Motomu Utsumi
44591557f4 Add package/modules/Connectivity bpf_headers path
Following CLs will move frameworks/libs/net to packages/modules/Connectivity.
This CL is a preparation for that.

Bug: 296014682
Test: m
Change-Id: Ie6483d1e5dfbf6c4745c10d3bb031344368c8c8f
2023-08-22 19:24:24 +09:00
Treehugger Robot
4f53e94198 Merge "Add BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN" into main 2023-08-22 02:09:45 +00:00
Treehugger Robot
4147e5c1d1 Merge "Handle proto.include_dirs in bp2build for CC" into main 2023-08-21 20:43:02 +00:00
Treehugger Robot
35f458723a Merge "Allowlist chre_api to resolve bp2build failure" into main 2023-08-18 22:11:13 +00:00
Vinh Tran
35cf10222a Merge "Check in BUILD files in bazelbuild-rules_cc" into main 2023-08-18 20:55:19 +00:00
Treehugger Robot
4f11fee841 Merge "Add a function to find src labels in a specific directory" into main 2023-08-18 20:52:17 +00:00
Treehugger Robot
3f1b7faeac Merge "Allowlist system/media/camera in bp2build" into main 2023-08-18 20:01:52 +00:00
Jihoon Kang
37d6d45149 Allowlist chre_api to resolve bp2build failure
This change allowlists "chre_api" to resolve bp2build breakage.

Test: TH
Bug: 296589722
Change-Id: I6727cbc03c4fee4b85bf783d26d1aefdedd45f77
2023-08-18 18:07:38 +00:00
Vinh Tran
79587fa717 Check in BUILD files in bazelbuild-rules_cc
Bug: 290150208
Test: CI
Change-Id: Id8c82048cb37f8bcf060d5d80f0da05bb5fd4cd9
2023-08-18 13:50:57 -04:00
Yike Zhang
fd7870f231 Merge "Give cc_test rule information to determine the test types" into main 2023-08-18 17:28:05 +00:00
Spandan Das
8fe96cef18 Allowlist system/media/camera in bp2build
This directory contains some transitive deps of internal camera tests.
hardware/interfaces/... dir has been added because it contains a dep of
an unrelated module in the newly allowlisted directory system camera
directory.

Test: b build //system/media/camera/...
Test: b build //system/media/camera/... --config=android

Change-Id: I8b0f2b59942b02e0d0d0b021fc93611262a4d6d6
2023-08-18 17:16:53 +00:00
Inseob Kim
0a7c819498 Add BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN
Starting from Android V, vendor seapp_contexts files can't assign
coredomain to vendor apps, as it's Treble violation. This build broken
variable is to suppress the enforcement for devices launching with U or
prior.

Bug: 280547417
Test: set BUILD_BROKEN_VENDOR_SEAPP_USES_COREDOMAIN := true and build
Change-Id: Ic4b5309f0d9bab9b93e88988d1a5a942b2de220a
2023-08-18 18:16:26 +09:00
Treehugger Robot
c21f48def3 Merge "Fix replacements of namespace module srcs in genrule" into main 2023-08-18 02:10:13 +00:00
Spandan Das
f62e80a127 Fix replacements of namespace module srcs in genrule
expandSrcsForBazel always prefixed : in OriginalModuleName. The
exceptions to this are filegroups that appear in a different soong
namespace. For these cases, we were not correctly substituting the soong
module name with the equivalent bazel label.

Test: go test ./bp2build
Change-Id: If090f3f8819835177c1f4d191b3eef6bb6e30ace
2023-08-17 22:50:07 +00:00
yike
fdca7fe03b Give cc_test rule information to determine the test types
There are three types of tests, deviceless tests, device-driven tests
and host-driven device tests. But currently we don't have information
to get the type of a test and can't generate test targets on desired
types.

Test: b test //platform_testing/tests/example/native:hello_world_test
Test: b test //packages/modules/adb:adbd_test
Bug: 296312548
Change-Id: I3f022ef769636d508e055477623a4d1a6a1d9044
2023-08-17 21:28:47 +00:00
Spandan Das
ec39d516af Handle proto.include_dirs in bp2build for CC
Soong's proto.include_dirs becomes the -I path for aprotoc cpp code
generation. This does not translate well to Bazel because it runs this
action in a sandbox. Even if we construct an -I path, the .proto files
will not be there. This CL attempts to handle this kind of dependency
automatically via bp2build.

For this hypothetical example
```
foo.proto # contains `import bar.proto"
Android.bp # cc_library {srcs:"foo.proto", p.include_dirs:["subdir"]},

subdir/bar.proto

```

Implementation details for CcProtoGen of foo
- Glob the labels of .proto files for each includeDir, and create a
  proto_library that encapsulates them.
- Since Bazel poses a contraint that proto_library target needs to be
  in the same pacakge as the .proto file, the proto_library might be created
  in a subdirectory with an import_prefix
- Add bar's proto_library as transitive deps of foo's cc_proto_library.
  This will be added to -I during aprotoc. We cannot add them to `deps`,
  otherwise bar's symbols will be statically linked into foo's .a
  file.

Implementation details for clang compile of foo
At the end of CcProtoGen, we have converted foo.proto
to .cpp/.h files. To compile them to .a files, we need the .h files
generated from bar.proto. Soong specifies this at the
top-level cc_library soong module, so add those deps as the
implementation deps for clang compile.

(Will add support for java in a follow-up CL)

Test: go test ./bp2build
Test: built some internal modules that were previously blocked by this
Bug: 285140726

Change-Id: I7e1f9f0d1b1ba916a7ba8278f6cfb342b381d695
2023-08-17 00:16:00 +00:00
Spandan Das
2a8f9009c2 Allowlist external/gflags in bp2build
This is a transitive dep of some tests in internal

Change-Id: Ie716309ee8430b84600876e18b7bed02736672bb
Test: TH
2023-08-16 17:51:14 +00:00
Spandan Das
03010664c8 Add a function to find src labels in a specific directory
The existing api restricts search to the directory of the currently
visited soong module. Create a new function that allows search in any
directory. Internally it calls TransformSubpackagePath so the returned
labels will be resolved to respect package boundaries.

The use case for this is to support proto.include_dirs of cc_*, java_*,
python_*

Test: Added a unit test that uses a mock for GlobWihDeps

Change-Id: I75fe3ca7de88b163f456190049a22c62f91c9a2e
2023-08-16 01:15:48 +00:00
Treehugger Robot
f768e6e27e Merge "Bp2build product variables on non-arch-variant module types" into main 2023-08-15 21:51:31 +00:00
Cole Faust
ed940008ac Bp2build product variables on non-arch-variant module types
Mostly so that genrules can have their command qualified on a product
variable.

Bug: 295910468
Test: m nothing
Change-Id: I28cc18a1b3b00368f4768a1326259a656ce970ec
2023-08-15 11:59:24 -07:00
Yu Liu
3625faffc7 Merge "Denylist jemalloc5_stresstests since it is run by a special script." into main 2023-08-15 16:34:26 +00:00
Liz Kammer
d365cc4d86 Merge changes from topic "bazel_module_labels" into main
* changes:
  Set Bazel_module for (un)converted sysprop libs
  Make ShouldConvertWithBp2build avail in loadhooks
2023-08-15 14:11:25 +00:00
Spandan Das
215adb43d3 Fix possible orphaned proto_library targets
This is a fix for aosp/2693190 that handled .proto files that end up in
different bazel packages. It did it by creating proto_library targets in
the correct bazel package.

Changing the granularity causes issues if the the new proto_library in
the subpackage imports a .proto file from a parent package or a
different package. e.g.
```
tmp
├── foo.proto
└── subdir/import_foo.proto # contains an `import "foo.proto"`
└── subdir/Android.bp # package boundary
├── Android.bp # contains a cc_library with foo.proto and
# subdir/import_foo.proto
```

At ToT, the ProtoInfo we provide to CcProtoGen is correct, but the
proto_library in subdir/BUILD will not compile because it does not have
a dep on the proto_library in ./BUILD

This CL creates a workaround by adding `manual` to the proto_library
targets. This CL is based on the assumption that the buildable unit in
bp2build is cc_library_*, and not proto_library necessarily (atleast
till we do a manual/automated cleanup)

Test: Created an integration test in build/bazel
Test: go test ./bp2build
Bug: 292583584
Bug: 246997908
Change-Id: I73120be2411967cb144f37ed4417f76ecf1a6ffa
2023-08-14 19:17:39 +00:00
Treehugger Robot
95e8fe9e1e Merge "Check in BUILD files in prebuilts/rust and external/bazelbuild-rules_rust" into main 2023-08-14 15:34:06 +00:00
Liz Kammer
c86e094e13 Make ShouldConvertWithBp2build avail in loadhooks
Test: Soong go tests
Change-Id: I65af040152107ce50b1a97efcee9364f28bad08b
2023-08-14 11:03:05 -04:00
Zhi Dou
1f82aea323 Merge "Support default-permission in aconfig_declarations" into main 2023-08-14 14:12:27 +00:00
Vinh Tran
fe1ecfc989 Check in BUILD files in prebuilts/rust and
external/bazelbuild-rules_rust

Test: N/A
Change-Id: I115f77a77e23cbc9181d6f2fe7f8081f7fd89ce3
2023-08-11 14:38:18 -04:00
Juan Yescas
83a740e888 Merge "soong: Add product variable DevicePageSizeAgnostic" into main 2023-08-11 05:45:44 +00:00
Zhi Dou
3f65a416b8 Support default-permission in aconfig_declarations
Aconfig provides new argument, default-permission, for create-cache.
When buld aconfig_declarations, aconfig_declarations will read the value
from release configuration to pass this value to aconfig.

Bug: 294417368
Test: presubmit
Change-Id: Id55dab1d757e2366a62449c73e2497cc958c5e78
2023-08-10 21:54:59 +00:00
Treehugger Robot
34a1c57b05 Merge "fix protos in another dir + a module that uses it" into main 2023-08-10 20:53:56 +00:00
Treehugger Robot
1824463396 Merge "Remove pdk product variable" into main 2023-08-10 20:47:50 +00:00
Liz Kammer
7dc6bcbd58 fix protos in another dir + a module that uses it
Protos in another directory were using import prefix, which was
prepending the repository-relative path with the value, instead, we want
to strip the prefix of the directory of the module the protos were used
in such that they can be referenced at the appropriate relative path.

Reference on import_prefix:
https://bazel.build/reference/be/protocol-buffer#proto_library.import_prefix

Test: b build //packages/modules/adb:libfastdeploy_host
Change-Id: If050b0f5fc5103bd9cc5a99703bd604325aa4204
2023-08-10 14:19:39 -04:00
Yu Liu
cb91632951 Denylist jemalloc5_stresstests since it is run by a special script.
Bug: 290909930
Test: CI
Change-Id: Iaae8542186fa843b0ed3c2dc951507b0d13ebb45
2023-08-10 10:58:01 -07:00
Cole Faust
8dc9e917aa Remove pdk product variable
It has no effect.

Test: Presubmits
Change-Id: Ia15cd99ce083294a119203c416046e43d20bf87f
2023-08-10 10:20:03 -07:00
Yu Liu
b6e0a64bf1 Denylist a couple art modules that depend on unconverted modules.
Bug: None
Test: bp2build.sh
Change-Id: If2d86cbc0abf9f832cc825c2915cb3bb62fd8d08
2023-08-10 00:09:29 +00:00
Juan Yescas
0106560e34 soong: Add product variable DevicePageSizeAgnostic
The product variable DevicePageSizeAgnostic will determine
whether AOSP is kernel page size agnostic or not.

Test: source build/envsetup.sh
      lunch aosp_cf_arm64_phone_pgagnostic
      m
      cat out/soong/build.aosp_cf_arm64_phone_pgagnostic.ninja | grep __BIONIC_NO_PAGE_SIZE_MACRO
Bug: 289419664
Change-Id: I33a1a4f1967d7e78432b7b8d90357d16b2002dcc
2023-08-09 16:46:07 -07:00
Treehugger Robot
2478d70ead Merge "Update allowlist for framework" into main 2023-08-09 20:14:51 +00:00
Liz Kammer
877b846707 Update allowlist for framework
Test: bp2build.sh
Change-Id: I8801dba735a0daf3c03b30bee8365d4ec998e4c2
2023-08-09 13:11:50 -04:00
Yu Liu
4fa1bfe169 Merge "Allowlist some more cc_test modules after the runfiles support" into main 2023-08-09 16:05:39 +00:00
Spandan Das
846ce68a2f Handle enabled: false via conditions_default
In this Android.bp file
```
my_cc_defaults {
  enabled: false,
  soong_config_variables: {
    my_bool_variable: {
       conditions_default: {enabled: false},
    }
  }
}
```
The inner enabled: false is a no-op because the top-level enabled is
false. Currently, bp2build will raise an exception for this Android.bp
file.

However, it does not need to. `productVariableConfigEnableLabels` runs
only if the top-level enabled is false. If it sees enabled: false via
conditions_default, it should just ignore it since it is a no-op.

Test: go test ./bp2build
Bug: 210546943
Change-Id: I816f209eaf21de65ddfbc2893e5255be94bcaa11
2023-08-08 16:54:34 +00:00
Joanne Chung
1d7964a941 Merge "Revert "Export NewPrebuiltBuildTool"" into main 2023-08-08 03:20:00 +00:00
Spandan Das
479e39f8fb Handle nil enabled values
If enabled does not appear inside `soong_config_vars`, we can ignore it.

Bug: 210546943
Test: go test ./bp2build

Change-Id: I9e4d51c3b683f262921449634f827915ce87dc8d
2023-08-08 02:19:38 +00:00
Joanne Chung
14e0956931 Revert "Export NewPrebuiltBuildTool"
Revert submission 2696994-art-check-cfi

Reason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?branch=git_main-without-vendor&target=sdk-sdk_mac-next&lkgb=10623159&lkbb=10623764&fkbb=10623764, bug b/294917304

Reverted changes: /q/submissionid:2696994-art-check-cfi

Change-Id: Id4adc1266c3f643b8c312f390e708d148a161314
2023-08-08 02:14:40 +00:00
Spandan Das
09f6b1390c Merge changes I8ca452aa,I437fc890,If9446700 into main
* changes:
  Handle .proto files in different package for filegroups
  Handle .proto files that end up in a different package
  Allow creation of BazelTargets in a different directory
2023-08-08 00:51:52 +00:00
Spandan Das
df3ec82b62 Handle .proto files in different package for filegroups
Followup to aosp/2693190, this CL adds the support to filegroups.
<mod>__bp2build_converted is now an alias to a proto_library
target <mod>_proto. This proto_library will be created in a different
package if the .proto file exists in a different package.

Test: bp2build unit tests
Test: TH
Bug: 292583584
Change-Id: I8ca452aacf1a86dfc9e218464e38aab89afa5a29
2023-08-07 21:39:05 +00:00