Commit graph

3170 commits

Author SHA1 Message Date
Cole Faust
c472e38ec1
Add PostProcessors to configurable properties
Some module types currently evaluate configurable properties in load
hooks, modify the results, and pass them onto properties of other
modules. Evaluating configurable properties in load hooks is
problematic, it happens so early that we can't decide the configuration
beforehand.

Add a "post processors" mechanism to configurable properties where
the result of evaluating the property will be passed through a post
processing function before being returned from Get(). This essentially
allows you to modify the property without evaluating it.

Bug: 362579941
Test: m nothing --no-skip-soong-tests
Change-Id: Ibddb3f14b3433364ba474b964c701e8915d4dc85
2024-10-24 19:18:21 +02:00
Cole Faust
738bb54ded
Support variable bindings in selects
This allows us to recreate soong config value variables in selects.

This adds a new "any" pattern to selects, which is the same as "default"
except that it doesn't match undefined variables, and it's (currently)
the only pattern that can accept a binding.

The syntax looks like:
```
select(soong_config_variable("my_namespace", "my_variable"), {
    any @ my_binding: "foo" + my_binding,
    default: "other value",
})
```

Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: I4feb4073172d8797dee5472f43f9c248a76c3f1f
2024-10-24 19:18:21 +02:00
Cole Faust
1e62c68bfe
Separate blueprint parsing and evaluating
Before this cl, blueprint expressions were evaluated as they were
parsed. We want to add a feature to select statements where we can
bind the value of soome value from soong into a blueprint variable,
that then can be used like a regular variable in the .bp file. This
means that select statements need to hold whole unevalated expression
trees, and have the ability to evaluate them later on when the value
of the bound variable is known.

This cl doesn't implement the new select syntax, but it does split
blueprint's parsing and evaluating into two separate stages. We also
store expressions in selects and evaluate them when the select is
resolved.

I didn't do extensive performance evaluation, but a simple comparison
of the time of `touch Android.bp && m nothing` before/after this cl
showed a 1 second speedup. (That was probably just noise)

Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: I12f373719991afeb4aec76517153f32229d97ff2
2024-10-24 19:18:21 +02:00
Android Build Coastguard Worker
b7e4d26faf Snap for 11973804 from 6d13ab0b7f to 24Q3-release
Change-Id: I1bef68febc4a150ed123265cc1c388773b1988ae
2024-06-15 01:00:38 +00:00
Cole Faust
6d13ab0b7f Merge "Add AppendSimpleValue" into main am: 28c638257d am: ece5b2fba8
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3132817

Change-Id: Ib0a0bcd927fa8966d568a768494a7b5f2340c75f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-14 03:13:09 +00:00
Cole Faust
ece5b2fba8 Merge "Add AppendSimpleValue" into main am: 28c638257d
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3132817

Change-Id: If69cec69e35ceaedbe1e16d29173a118df79e7b9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-14 03:08:08 +00:00
Cole Faust
28c638257d Merge "Add AppendSimpleValue" into main 2024-06-14 02:59:29 +00:00
Treehugger Robot
ad07561c07 Merge "Fix extra newline after multiline select case bodies" into main am: a3684d5d61 am: 27a62c91fd
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3132292

Change-Id: I2abc6637687769141ee9a2901fc2d5c9ec953a1d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-14 00:04:56 +00:00
Treehugger Robot
27a62c91fd Merge "Fix extra newline after multiline select case bodies" into main am: a3684d5d61
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3132292

Change-Id: Ibde81bfa91b5c1396bed0d55376736c2cbae7d9d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-13 23:42:47 +00:00
Treehugger Robot
a3684d5d61 Merge "Fix extra newline after multiline select case bodies" into main 2024-06-13 23:34:05 +00:00
Cole Faust
63acbad058 Fix extra newline after multiline select case bodies
Bug: 346922064
Test: go test
Change-Id: I0587ab04d463a1923440564647d0f1e1bf6d216b
2024-06-13 15:12:04 -07:00
Cole Faust
96cb91fe28 Add AppendSimpleValue
This exported function allows soong code to append to configurable
properties.

Bug: 346922064
Test: m nothing --no-skip-soong-tests
Change-Id: Iaadcb1874ef5b972f1eeeb59b317e140ad01c947
2024-06-13 14:50:50 -07:00
Android Build Coastguard Worker
019fec2c06 Snap for 11944020 from e370708d90 to 24Q3-release
Change-Id: Id8f31515f0a0f76800a44efdad26c540dc67e4f9
2024-06-08 01:01:01 +00:00
Android Build Coastguard Worker
67b7f16add Snap for 11938003 from 6b1e8f0178 to 24Q3-release
Change-Id: I22904dcad489f93cce8b150f8043272c066bb6e5
2024-06-06 23:00:43 +00:00
Spandan Das
e370708d90 Drop blueprint_package_includes am: 6dd9fcc314 am: 2d4c300b08
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3098677

Change-Id: I60b99ec0a41a70d9f5a2c5bdfd692720bfa1fa08
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-06 22:38:49 +00:00
Spandan Das
2d4c300b08 Drop blueprint_package_includes am: 6dd9fcc314
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3098677

Change-Id: Id55b67af8c0c5289fb3b9c88bc64ce5bdc7aa125
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-06 22:16:18 +00:00
Spandan Das
6dd9fcc314 Drop blueprint_package_includes
This feature can be used to prune Android.bp files from analysis. This
was introduced in `T` to support co-existence of BA and Go apexes. With
the recent changes to apex prebuilt build rules, this pruning is no
longer necessary to support co-existence.

Pruning via PRODUCT_SOURCE_ROOT_DIRS is still supported.

Bug: 308188212
Test: m nothing
Change-Id: I1e1391665963b1ad7cb3837dc67500b69b0833af
2024-06-05 21:52:41 +00:00
Joe Onorato
6b1e8f0178 Handle absolute paths for the ninja shard writing. am: c3ac2a249a am: 95fe017639
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3114568

Change-Id: I4546bf2f7a1e2e7ae003bbb2ef9bc46bd6b2fc5e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-05 20:05:50 +00:00
Joe Onorato
95fe017639 Handle absolute paths for the ninja shard writing. am: c3ac2a249a
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3114568

Change-Id: I40720c0c714e36b816f8d3a262e7619f16be6fd5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-05 19:46:53 +00:00
Joe Onorato
c3ac2a249a Handle absolute paths for the ninja shard writing.
Test: OUT_DIR=/source/foo m nothing
Change-Id: Id3849e7446cd0cb26a5b5c74ac3bf4521449b716
2024-06-05 11:25:24 -07:00
Android Build Coastguard Worker
081abe0245 Snap for 11908474 from 810fdd6853 to 24Q3-release
Change-Id: I6f85cf70ddcc15ab4699f787a25af95c8b77c0fa
2024-05-30 23:00:51 +00:00
Yu Liu
810fdd6853 Use FNV instead of maphash as the hasher for soong. am: d5133cfc64 am: bbbf3fbbd4
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3107009

Change-Id: I2b102de0b010c93bc8225a5078879f6523d920dd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-30 00:09:35 +00:00
Yu Liu
bbbf3fbbd4 Use FNV instead of maphash as the hasher for soong. am: d5133cfc64
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3107009

Change-Id: I2f0c454f7b473af96b1bcef9d6b12426a76e4185
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-29 23:46:12 +00:00
Yu Liu
d5133cfc64 Use FNV instead of maphash as the hasher for soong.
This is to support recalculate hash in different proceses.

Bug: 335718784
Test: unit tests and CI
Change-Id: I08909fe0332a7adcfcc158698c5d8ba501116ba2
2024-05-29 22:03:29 +00:00
Android Build Coastguard Worker
f3292cfa77 Snap for 11889377 from c124dbb8e3 to 24Q3-release
Change-Id: I6a15e5e55b94457f7ee58dfee406a9f3037b6844
2024-05-25 03:00:24 +00:00
Yu Liu
c124dbb8e3 Merge "Need to catch the errors when closing and flushing." into main am: b83d6420e2 am: a50297d11a
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101377

Change-Id: I0019a46f73f89b510837116b6600ec68138b6a4e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 23:25:24 +00:00
Yu Liu
a50297d11a Merge "Need to catch the errors when closing and flushing." into main am: b83d6420e2
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101377

Change-Id: I050e06ce732a180ff67ae8a4dbb8d33f4a07c21d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 23:03:06 +00:00
Yu Liu
b83d6420e2 Merge "Need to catch the errors when closing and flushing." into main 2024-05-24 22:41:19 +00:00
Yu Liu
01a4667ba2 Need to catch the errors when closing and flushing.
Bug: 335718784
Test: CI
Change-Id: I6ae984b36ed786d1ccaa67d5c05efd3d6b89504b
2024-05-24 21:37:32 +00:00
Treehugger Robot
46abec2ab1 Merge "Parallelize VerifyProvidersWereUnchanged" into main am: 177fd07327 am: 0e7baaa021
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3102364

Change-Id: I2802de3f9cdd3aaca2929193262960d7c862d4ff
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 21:01:48 +00:00
Treehugger Robot
0e7baaa021 Merge "Parallelize VerifyProvidersWereUnchanged" into main am: 177fd07327
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3102364

Change-Id: I9355bb47213ed7c221b91a8093e72ec105a937b6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 20:46:16 +00:00
Treehugger Robot
177fd07327 Merge "Parallelize VerifyProvidersWereUnchanged" into main 2024-05-24 20:28:27 +00:00
Treehugger Robot
ef6db4c916 Merge "Update go.mod file to go 1.22" into main am: 0c529c480a am: 09ab534fba
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101710

Change-Id: Ib3ef3c034fbd5e6274a2626c20c0aeaffc88a8ef
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 19:45:59 +00:00
Treehugger Robot
09ab534fba Merge "Update go.mod file to go 1.22" into main am: 0c529c480a
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101710

Change-Id: Ibd2d7d736ea46345854fbdae9576c54de9c7abe9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 19:16:02 +00:00
Cole Faust
7b7b1db4a8 Parallelize VerifyProvidersWereUnchanged
This makes it faster than the write_files step that it's in parallel
with. It's a ~3 second improvement to soong's runtime on my computer
on aosp main.

I'm not using parallelVisit() this time around, because
VerifyProvidersWereUnchanged is run in parallel with other code
that also uses parallelVisit(), and parallelVisit() modifies
module.waitingCount, so they conflict with each other.

Bug: 335718784
Test: m nothing
Change-Id: I4c6a4c30e2ffc4606faad378f59e003a02826848
2024-05-24 12:10:06 -07:00
Treehugger Robot
0c529c480a Merge "Update go.mod file to go 1.22" into main 2024-05-24 18:57:09 +00:00
Yu Liu
8f96f0ee2e Merge "Pass the parameters to goroutine to avoid relying on a go 1.22 fix." into main am: da55eb2a45 am: 5bc84bebd3
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3102363

Change-Id: I9eb1e9bcb0fd424d37d567464a7c8c76ce58ce96
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 18:50:53 +00:00
Yu Liu
5bc84bebd3 Merge "Pass the parameters to goroutine to avoid relying on a go 1.22 fix." into main am: da55eb2a45
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3102363

Change-Id: I84d282574447f97d5d84d38f1a7744dcf40f9d68
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 18:31:55 +00:00
Yu Liu
da55eb2a45 Merge "Pass the parameters to goroutine to avoid relying on a go 1.22 fix." into main 2024-05-24 18:05:25 +00:00
Yu Liu
a99fc848a4 Pass the parameters to goroutine to avoid relying on a go 1.22 fix.
Bug: 335718784
Test: CI
Change-Id: Iae55e59a58101bc373666455ae4f2b6146c1abca
2024-05-24 16:45:50 +00:00
Priyanka Advani
b26be9398c Merge "Revert "Parallelize VerifyProvidersWereUnchanged"" into main am: 6daa49ee97 am: c3b4357792
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101711

Change-Id: I0c17b4d23784eda583eca22f33d441b402d94763
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 00:45:40 +00:00
Priyanka Advani
c3b4357792 Merge "Revert "Parallelize VerifyProvidersWereUnchanged"" into main am: 6daa49ee97
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101711

Change-Id: I67ad62338b2cb429c6390e8b9451766a5a38b1dc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-24 00:27:50 +00:00
Priyanka Advani
6daa49ee97 Merge "Revert "Parallelize VerifyProvidersWereUnchanged"" into main 2024-05-24 00:05:46 +00:00
Priyanka Advani
533959eb27 Revert "Parallelize VerifyProvidersWereUnchanged"
This reverts commit 2071d15a29.

Reason for revert: Droidmonitor triggered revert due to b/342483801.

Change-Id: Ib892a3b17a5fcefb40d316e9dce9d5432293ec25
2024-05-23 23:55:27 +00:00
Treehugger Robot
16414eabe9 Merge "Parallelize VerifyProvidersWereUnchanged" into main am: f887364cd2 am: c2a120dd82
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101706

Change-Id: I6899c0534da4b03ebf22185fac2e723ffc1326e2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-23 23:50:59 +00:00
Treehugger Robot
c2a120dd82 Merge "Parallelize VerifyProvidersWereUnchanged" into main am: f887364cd2
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3101706

Change-Id: I3d7dfc9a9568ea4de2f265839f8e7888815c0931
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-23 23:32:10 +00:00
Cole Faust
a3a125aaf2 Update go.mod file to go 1.22
Bug: 330574836
Test: Presubmits
Change-Id: I871cabd7aa403b315d5efcf75f5eff6df492478f
2024-05-23 16:26:02 -07:00
Treehugger Robot
f887364cd2 Merge "Parallelize VerifyProvidersWereUnchanged" into main 2024-05-23 23:12:56 +00:00
Cole Faust
550d2d018b Merge "Revert "Bump go.mod file to go 1.22"" into main am: 239c43a66c am: d56bf5bf3e
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3102358

Change-Id: I9bec82c3b5dcfda83f6df954c3c373e46237fcd2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-23 23:06:50 +00:00
Android Build Coastguard Worker
ef3994aeac Snap for 11881322 from 197f763242 to 24Q3-release
Change-Id: I8ad33c3c017acf5ee9944aca9887eada257cd44f
2024-05-23 23:00:47 +00:00