Commit Graph

58899 Commits

Author SHA1 Message Date
Jihoon Kang
0ac87c21bd Create java_api_contribution and java_api_library module
Context
- Droidstubs module is currently responsible not only for java api stubs
  generation, but also for checking api equality and compatibility.
- Generating stubs with incomplete api text file that does not list
  entire api surface is done through metalava implicitly adding unlisted
  methods from java source files to the stubs in droidstubs module.
- These factors make java stubs generation harder to debug, thus
  introduce `java_api_contribution` and `java_api_library` modules to make java
  api stubs and jar generation more explicit in Android.bp level and
  eventually easier to debug.

Implementation
- `java_api_contribution` module is included in api domains' directory and
  lists api text file directory to be added to the api surface
- `java_api_library` collects all api text file that forms the api surface
  and creates stubs invoking metalava. Generated java stub files are
  converted into `.srcjar`, and eventually `.jar` file which is the complete
  api surface.

Test: m
Change-Id: I86f097cc8592334a5eaa900cec12764c5fcc09e7
2022-11-16 23:05:41 +00:00
Jingwen Chen
1214001184 Merge "Call rm -rf in mixed build build statement preamble." 2022-11-07 23:03:43 +00:00
Liz Kammer
f1c70ed5ad Merge "Add apex_test for mixed builds" 2022-11-07 21:56:02 +00:00
Qing Shen
d3184a8d8f Merge "Instrument ims-common for coverage" 2022-11-07 20:19:57 +00:00
Liz Kammer
0e255ef6e6 Add apex_test for mixed builds
Test: go test soong tests
Change-Id: I33327e1fe7d6a4bbf32890d9fbd5453c28a9c5b1
2022-11-07 11:11:37 -05:00
Jingwen Chen
f3b1ec39eb Call rm -rf in mixed build build statement preamble.
https://android-review.git.corp.google.com/q/topic:bazel_using_txt added
a tree artifact output for an action. This CL adds "-r" to the rm calls
to support deleting the old tree artifact outputs.

Test: presubmits
Fixes: 257956807
Change-Id: Ia44b1bef4f8031fe75a239fb162972e8827e3c19
2022-11-07 15:10:04 +00:00
Paul Duffin
f490656a0f Stop LOG_DIR changes causing bp2build to rerun
Retrieving an environment var through Config.Getenv() automatically
adds it to a soong.environment.used* file along with its current value.
Changes to its current value will trigger a rebuild of the appropriate
target. The LOG_DIR is a sub directory of DIST_DIR and on build servers
DIST_DIR encodes the build number making it unique every time. So,
using Config.Getenv("LOG_DIR") will mean the CI builds will never
re-use the previous output.

Previously, bp2build and symlink forrest both added LOG_DIR to their
respective soong.environment.used* file. This change avoids that by
passing through the value from the main() function which retrieves it
using availableEnv["LOG_DIR"] which avoids it being added to that
file.

Bug: 257590265
Test: grep LOG_DIR out/soong/soong.environment.used*
      # Before this change it includes LOG_DIR, after it does not.
Change-Id: Iac76aca2d5dc04f47b0924ab5afedef5014bc8b6
2022-11-07 14:12:11 +00:00
Paul Duffin
780a185ede Avoid loss of ninja_deps events
Previously, writeDepFile was passed a copy of the main EventHandler to
which it then added an event. Adding an event requires appending
information to slices in the EventHandler structure. As the slices are
a copy the addition only affects the copy and are not present in the
EventHandler which is written out as part of the metrics.

This change fixes that by passing a pointer to an EventHandler into
writeDepFile. For consistency it also replaces a few other uses of
EventHandler with *EventHandler instead.

Bug: 257590265
Test: m nothing
      # Check generated text metrics to make sure they don't contain ninja_deps.
      # Apply this change.
      m nothing
      # Check generated text metrics to make sure they do contain  ninja_deps.
Change-Id: I0fa0f2b08844cb7c7b4e99b37602703deb43ad20
2022-11-07 14:12:11 +00:00
Jingwen Chen
b43191c90c Merge "bazel apex: clean up gen_ndk_usedby_apex.sh to work in bazel sandbox." 2022-11-07 14:01:37 +00:00
Jingwen Chen
2d61a7d005 bazel apex: clean up gen_ndk_usedby_apex.sh to work in bazel sandbox.
This script is responsible for generating <module>_using.txt, which is a
file containing all NDK symbols used by the shared libraries in an APEX.

This script doesn't work as-is in the bazel sandbox; namely it tries to
create tmp directories in read only input dirs, for example:

"mkdir: cannot create directory 'bazel-out/android_target-fastbuild-ST-7fe6d3cd3905/bin/packages/modules/adb/apex/com.android.adbd_staging_dir/tmpUnzipped': Permission denied"

The staging dir inputs are also symlinks, so the `find` call needs a new
-L flag to follow symlinks.

This CL fixes that by using a tmpdir, and also refactors the script to
be less fragile.

I'm not a fan of the camelCase, but I'll save that for another change.

Test: presubmits
Bug: 239081455
Bug: 257226023
Fixes: 257226023
Change-Id: I1d0fe93c47c92d046e72c0ab32014a5dc8bbd597
2022-11-07 08:38:01 +00:00
Paul Duffin
c639059fd8 Make CodegenContext reference *android.Context
Previously, it stored an android.Context (no pointer) which while it
worked (because the current contents are themselves pointers) it is
inconsistent with how the rest of the code references it and could
cause weird behavior if additional fields were added to the Context.

Test: m nothing
      m bp2build
Change-Id: I9c70f925dde85e5b15431cc232b0c2eb6371ec6d
2022-11-05 17:43:12 +00:00
Treehugger Robot
d6dec6f51e Merge "Rename ApexCqueryInfo to ApexInfo" 2022-11-05 00:36:45 +00:00
Treehugger Robot
17d0a8509b Merge "Add missing t.Helper() to androidmk functions" 2022-11-05 00:34:42 +00:00
Treehugger Robot
9fa8a2e220 Merge "Remove unnecessary TestMain()" 2022-11-05 00:30:04 +00:00
Qing Shen
871c6f32dd Instrument ims-common for coverage
Bug: 257128599

Change-Id: Ib75fce4582da51d01762f0d338308c4f2410c562
2022-11-04 22:39:56 +00:00
Treehugger Robot
63d96ca998 Merge "WTFPL reclassified permissive." 2022-11-04 21:46:03 +00:00
Treehugger Robot
979c953ac0 Merge "Make PackageVarContext implement PathGlobContext" 2022-11-04 20:50:04 +00:00
Liz Kammer
be6a712767 Rename ApexCqueryInfo to ApexInfo
cquery is redundant given this is in the cquery package.

Test: go test soong tests
Change-Id: Ib38794b712f548129eec964b8fd85bf8401a5f86
2022-11-04 16:24:37 -04:00
Liz Kammer
6be6906429 Add missing t.Helper() to androidmk functions
Test: go test soong tests
Change-Id: I534aef51afa91a0942f58b3987e9c1cb3f3c75cb
2022-11-04 16:24:32 -04:00
Liz Kammer
fdb6321d23 Remove unnecessary TestMain()
Test: go test Soong tests
Change-Id: I2a8710361b1a32d71417b6c7bbc19e87fa8b36ae
2022-11-04 16:24:29 -04:00
Bob Badour
5b3dd97a0a WTFPL reclassified permissive.
Test: m droid
Change-Id: I1f4074840f6a4dcc7093583552239a636a766b01
2022-11-04 12:03:30 -07:00
Colin Cross
662d61430f Make PackageVarContext implement PathGlobContext
Make PackageVarContext implement PathGlobContext by implementing
GlobWithDeps.  This will allow calls to ExistentPathForSource
inside a VariableFunc to use optimized glob dependencies instead of
falling back to AddNinjaFileDeps, which is resulting in extra
dependencies from soong_build on top level directories, triggering
extra Soong regenerations.

Remove the fallback path in ExistentPathForSource by making it take
a PathGlobContext, which is now a superset of PathContext.

Rewrite TestNinjaDeps to not rely on the unoptimized glob dependencies
in VariableFuncs and instead call ctx.Config().AddNinjaFileDeps
directly.

Bug: 257079828
Test: test_create_global_include_directory
Change-Id: I48cf189157d78b9252d339dbc9baeb27e4694807
2022-11-04 09:04:02 -07:00
Treehugger Robot
5ed292ade1 Merge "Remove deprecated experimental-new-pass-manager flag." 2022-11-03 22:01:12 +00:00
Treehugger Robot
d704f6ad69 Merge "Fix error handling" 2022-11-03 19:29:13 +00:00
Mitch Phillips
bbebe7f5a4 Remove deprecated experimental-new-pass-manager flag.
https://reviews.llvm.org/D136789 removed this flag, it's been a no-op
since 15.0.0. The current Android compiler is 15.0.3, but upcoming
compilers will error on the fact that this flag doesn't exist any more.

Change-Id: I54666175b521ed5cdd76c53ed700ad4ddf6931da
Test: make
Bug: N/A
2022-11-03 18:04:21 +00:00
Kris Alder
38e14242fe Merge "add ../../lib to rpath for vendor fuzz targets" 2022-11-03 16:09:51 +00:00
Colin Cross
a493e5ff91 Merge "Add support for per-arch configuration in apex_defaults" 2022-11-03 14:00:45 +00:00
Yabin Cui
7c49429eb2 Merge "symbol_inject: add linkerSigned flag in codesign of Mach-O binaries." 2022-11-03 03:57:59 +00:00
Usta (Tsering) Shrestha
9478303673 Merge "add test for ShouldKeepExistingBuldFileForDir()" 2022-11-03 02:44:08 +00:00
Colin Cross
a3599abc75 Merge "Add exclude_* properties to apex arch-specific properties" 2022-11-03 01:01:05 +00:00
Ibrahim Kanouche
2d1eb1238d Merge "Export SBOM utility to make" 2022-11-03 00:03:21 +00:00
Treehugger Robot
95a3752ab1 Merge "cc_fuzz targets depend on fuzz_interceptors for HWASan builds" 2022-11-02 21:57:20 +00:00
Yabin Cui
e79fe01c59 symbol_inject: add linkerSigned flag in codesign of Mach-O binaries.
With linkerSigned flag, codesign will still be valid after stripping.

Bug: 251222821
Test: build aapt2 and both non-stripped and stripped version work.
Change-Id: Ic3a2b9fcaf30eb306fed7db6568f6699cc640cde
2022-11-02 14:32:53 -07:00
Colin Cross
70572ed01e Add exclude_* properties to apex arch-specific properties
The libcronet prebuilt JNI library doesn't exist for riscv64 yet.
Add exclude_* properties to apex arch-specific properties so that
the libcronet dependency can be excluded from the apex that contains
when the arch is riscv64 until it exists for riscv64.

Test: TestApexWithArch
Change-Id: Ic395a077824f0f60b90178530fbfae8a96b3782f
2022-11-02 14:31:46 -07:00
Usta Shrestha
342f28f9bf add test for ShouldKeepExistingBuldFileForDir()
Bug: N/A
Test: Added
Change-Id: I15dc543f65bffdd745ecfe5c8fe521723eeffbc0
2022-11-02 17:21:41 -04:00
Kris Alder
c263481f28 add ../../lib to rpath for vendor fuzz targets
For "normal" fuzz targets, the binary goes in
/data/fuzz/<arch>/<fuzzer_name>/fuzzer_name>
with libraries in
/data/fuzz/<arch>/lib/

If 'vendor: true' is set, the fuzz target binary get placed in
/data/fuzz/<arch>/<fuzzer_name>/vendor/<fuzzer_name>.

We need an extra '..' in the rpath to link to the included libraries
correctly.

Bug: 254723623
Test: built libsrtp2-fuzzer, checked linking with ldd
Change-Id: I24282d7b252142ed795a6091fece2d56125329dc
2022-11-02 13:46:51 -07:00
Ibrahim Kanouche
5797d8c7f5 Export SBOM utility to make
Bug: 257094286

Test: m compliance_sbom
Change-Id: I2a8de6350c3a5b24cd3b3fd03312955ce1a3dba9
2022-11-02 19:17:30 +00:00
Treehugger Robot
1265bfdfbd Merge "Add .hjar output file tag" 2022-11-02 18:39:58 +00:00
Kris Alder
d406da104b cc_fuzz targets depend on fuzz_interceptors for HWASan builds
This allows us fuzzers to get coverage feedback and mutate more
intelligently based on feedback from strcmp, memcpy, and similar
functions.

Bug: 208297094
Test: make and run 'example_fuzzer', build 'haiku'
Change-Id: Ic51c207f8644cda885fb3f453cc583e2ee1e8c1d
2022-11-02 11:25:59 -07:00
Cole Faust
acf417b085 Merge "Revert^4 "Prevent unspecified values in soong_config_string_variables"" 2022-11-02 16:56:45 +00:00
Christopher Parsons
737415bb79 Merge "Flip on Bazel mixed builds by default" 2022-11-02 16:09:28 +00:00
Treehugger Robot
52eb14f6bf Merge "HACK: use arm64 prebuilts from apex sets for riscv64" 2022-11-02 09:41:11 +00:00
Lukács T. Berki
72ab470a29 Merge "Multithread symlink forest removal." 2022-11-02 07:45:22 +00:00
Colin Cross
9f09316ffc HACK: use arm64 prebuilts from apex sets for riscv64
There are no riscv64 prebuilts in apex sets, use arm64 ones for
now.

Test: lunch aosp_riscv64-userdebug && m droid dist
Change-Id: Iee2d669e01d93504642223939857634b7fd1c1ba
2022-11-01 23:16:14 +00:00
Colin Cross
cc7a5dcf44 Merge "HACK: use arm64 apex prebuilts for riscv64" 2022-11-01 22:15:07 +00:00
Treehugger Robot
da4c57c9dc Merge "Use CreateCodegenMetrics in api_bp2build as well" 2022-11-01 19:48:05 +00:00
Chris Parsons
035e03affe Flip on Bazel mixed builds by default
This turns on Bazel-assisted builds for all Soong users.

If this CL breaks your build or your workflow, you may temporarily
disable Bazel mode by adding BUILD_BROKEN_DISABLE_BAZEL=1 to your
environment.

Test: TH
Test: Various off-band post-submit verification with "bazel staging
mode", which is an opt-in version of this feature.

Change-Id: Ifa44a79437ce76ea739ed661d4e2d567e0f4a4d5
2022-11-01 19:27:50 +00:00
Colin Cross
abacbe8436 HACK: use arm64 apex prebuilts for riscv64
There are no riscv64 apex prebuilts, which breaks the build when
provenance_metadata singelton tries to run a tool on all the input
apexes that don't exist.  Hack it to provide the arm64 apex for now
if no riscv64 apex is specified, which will allow the build to pass.

Test: lunch aosp_riscv64-userdebug && m droid
Change-Id: Ic39936539803615ea4b7f817daf7b59ab7c40e7e
2022-11-01 19:13:17 +00:00
Treehugger Robot
8238ae869e Merge "Add groundwork to easily all-enable bazel-mode" 2022-11-01 18:24:40 +00:00
Spandan Das
7b6d5331bd Use CreateCodegenMetrics in api_bp2build as well
The internals of CodegenMetrics was updated in aosp/2276671. Use the
new API to initialize an empty object to prevent a null pointer
exception in api_bp2uild.

Test: m api_bp2build
Change-Id: Iad9c38b9881da896171f1c6d4e49d4875acfaab8
2022-11-01 17:37:07 +00:00