This is to ensure the incremental enabled clean
build generates the equivalent ninja statements
as the normal build.
Bug: 358428180
Test: Run the test locally.
Change-Id: I2ecbffb125eced73bd59b63da8ad2a9504ae7cb8
Previously, globs worked by having soong_build rewrite a ninja file
that ran the globs, and then dependended on the results of that ninja
file. soong_build also pre-filled their outputs so that it wouldn't
be immediately rerun on the 2nd build.
However, the pre-filling of outputs worked for ninja, because although
it updated their timestamps, the soong ninja file was then touched
by soong_build after that, so the soong_build ninja file was newer
and ninja wouldn't rerun soong. But N2 reruns actions if their inputs'
mtimes change in any way, not just if they're newer. Similarly,
hashed-based ninja implementations could not enforce an order on
file contents, so they would have the same problem.
To fix this, lift the glob checking out of ninja and into soong_ui.
Soong_build will output a globs report file every time it's run, and
every time soong_ui is run it will check the globs file, and if any
globs change, update an input to soong_build. soong_ui is essentially
doing what was done in ninja with bpglob actions before.
Bug: 364749114
Test: m nothing, m nothing again doesn't reanalyze, create a new file under a glob directory, m nothing again reanalyzes
Change-Id: I0dbc5ec58c89b869b59cd0602b82215c4972d799
Also remove the tests in sbom_test.sh for product SBOM generated by Make.
Bug: 324467079
Test: m sbom
Test: m dist
Test: banchan com.android.adbd module_arm64 userdebug && m sbom && m dist
Test: build/soong/tests/sbom_test.sh
Change-Id: Ie3f405f0a09a3b1f1176dba67167773801b9337a
Export the TMPDIR env variable so that the tool_event_logger writes log files under the test TMPDIR.
Test: ABTD
Bug: 346391441
Bug: 346391241
Change-Id: Ib1e4b57fe355da6f4e0611446e70dc3bf29f4fa1
As part of the build team's effort to cleanup envseup.sh.
Remove the run_tool_with_logging rundtion from envsetup.sh and add it
as a standalone script under build/soong/bin
Test: atest run_tool_with_logging
Test: manually do source envsetup.sh and run adb devices -l and check
the event log is sent to clearcut, tested with both bash and zsh
Bug: 342066042
Change-Id: I2fbc69a064832af61d75d14b0e33a62cb56186df
aosp/3019827 does not handle the case where integration_tests might be
run from an unlunched-terminal. In this scenario, the ninja file will be
generated at out/soong/build.ninja.
To support running integration tests with/without lunch as well for
consistency of tests across different setups (users/CI etc.), pin the
TARGET_PRODUCT to a default value (aosp_arm for now)
Test: build/soong/tests/run_integration_tests.sh without running lunch
Change-Id: I1197923867643986ed3736cfc284632aa82dca13
This script runs some useful integration tests, but is currently broken
at ToT. This CL enables us to rerun this script successfully.
Details
1. Remove the scripts related to bp2build/b/mixed_builds. These modes
have been/are on the verge of deletion from soong
2. Remove the comparisision scripts for soong and bazel built artifcats,
for the same reason
3. Add a TARGET_RELEASE to androidmk_test.sh
4. Add a TARGET_PRODUCT to o/s/build.ninja, since the generated .ninja files
now have a product-specific suffix.
5. Remove a test that checks that globs are not generated in the first
clean run. We always generate the glob file now (aosp/2893286)
Test: build/soong/tests/run_integration_tests.sh
Change-Id: I39f6706ab2a81a7b1b2e90d43195bc3e2c7a5c08
Do the sandboxed and non-sandboxed builds in two separate directories.
This allows us to keep the directories around so you can compare diffs
afterwards, and allows us to run the builds in parallel. It also means
that analysis isn't rerun twice every time you run the script.
Bug: 307824623
Test: Using it for the past few genrules I've fixed
Change-Id: Ib3be394f233b383c1bba41d31ada6c9af94e755b
Revert submission 2794133-revert-2782270-genrule_sandboxing_by_default-JMQJWWORHR
Reason for revert: Reapplying now that ag/25093969 and ag/25107100 are in
Reverted changes: /q/submissionid:2794133-revert-2782270-genrule_sandboxing_by_default-JMQJWWORHR
Change-Id: Ibb7dd6a0f925d043ab8df2f79cbcb9d30c3be458
Revert submission 2782270-genrule_sandboxing_by_default
Reason for revert: Potential culprit for b/305851039 and many other build breakages - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.
Reverted changes: /q/submissionid:2782270-genrule_sandboxing_by_default
Change-Id: I7b47a92e1b315add65c8018500d9ffbd58f8f1dd
This reverts commit aa5cc2cd6a.
Reason for revert: Fixed the bug in the original draft.
There was an error in how we compared the file's MTime to the
file's contents.
Bug: 300288299
Test: presubmits
Test: build/soong/tests/run_integration_tests.sh
Change-Id: I9e53432c0842c0b9fc13fe20d30ce9af37640c7f
When TOP dir changes and we reuse the same output between the old and new checkouts, we need to rewrite all the symlinks used by Bazel and other tools in the out-directory to point to the new top directory. Otherwise, if the old source dir is deleted, the build will fail.
I used the OUT_DIR/soong/soong.environment.available file to find out the previous PWD.
Tested:
1. Create source dir 1, run build, create source dir 2, remote source dir 1, reuse out dir and rerun build => build succeeded with this change.
2. m libc after moving build TOP. Only the analysis phase was rerun, the actual build was not rerun.
Bug: b/300498226
Change-Id: I196625baa1f4efe7a4734accfa1f0be7c98a7920
Also remove existing symlink_forest_version functionality.
This remedies issues pertaining to b/300122962 - symlinks not
clearing after a revert
Timing wise - this doesn't present a performance regression
on a clean build. When soong_build changes, it's considerably longer
but no different from the time when symlink_forest_version is changed.
Bug: 300288299
Test: build/soong/tests/symlink_forest_rerun_test.sh
Change-Id: I0e95aac315dfea7ea3b8bb9a3eb0c6408300bd3b
Also add script to remove the Bazel output base.
This will assist with supporting movable checkouts alongside
mixed builds.
Bug: 259191764
Test: m && (move topic and prepare_moved_top.sh) && m
Test: m && prepare_moved_top.sh && m
Test: build/soong/tests/relative_symlinks_test.sh
Change-Id: I0f53da8d99f752fad496cf3ac61b01f001b7296d
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
aosp/2709668 registers Bazel repos using these directories so we need to symlink them for soong integration tests to pass.
Test: build/soong/tests/bp2build_bazel_test.sh
Change-Id: I8ee7e5c702bd0bfa24eb3778371f497a67bf815a
This fixes breakage currently on CI.
Bug: 296628826
Test: build/soong/tests/bp2build_bazel_test.sh
Change-Id: Ibfcd2bc5d2b107879281075ab994f1e9a8f5da0e
Also explicitely ignore some diffs that were ignored because of "-I /bin".
Bug: 272358980
Test: build/soong/tests/sbom_test.sh
Change-Id: I8a19fdaa89c9f6b4a11c107df98bca647323db26
The test case calculates package verification code of package product according to the SPDX spec and compare it to the one in SBOM file which should have the same SHA1 hash value. This helps verify the python logic of generating it in SBOM files.
Bug: 293304694
Test: build/soong/tests/sbom_test.sh
Change-Id: I37c96d90a1990fbeb786f1bd4e8dc87102e0f0cd
So that things can be allowlisted that aren't in all branches, or
that aren't present in tests.
Then remove the example partition from the soong integration tests
so that we don't need to pull all of the tools needed to build
partitions into that test.
Bug: 265127181
Fixes: 294220392
Test: ./build/soong/tests/run_integration_tests.sh and m bazel_sandwich
Change-Id: I66fb1ad1c2eee815bfb9700595a26e74e54c6214