Commit graph

3125 commits

Author SHA1 Message Date
Cole Faust
ad00dd50bf Return an Optional[T] from Configurable.Get()
Previously, Configurable.Get() copied the value in the property,
because it needed to return a pointer in order to indicate whether
the property was set or not. Now, it returns a ConfigurableOptional[T],
which is the same as the pointer, but it prevents users from altering
the pointed-to value, so we don't need to copy it.

There are still copies for slice properties, because those are also
pointers. In the future we may want to consider making an ImmutableList
type to use instead.

Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: Ic9ed5ba269d10158e3eac1fea272555c9fa5c0e8
2024-05-21 14:48:39 -07:00
Yu Liu
3236caaa4b Write ninja file in parallel. am: 82e444710d am: 5a10541bf4
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3089605

Change-Id: I73e047001fa210f58637a94aadd3a3ff5bb866b1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-21 17:53:04 +00:00
Yu Liu
5a10541bf4 Write ninja file in parallel. am: 82e444710d
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3089605

Change-Id: Idd9fb71acf65e952fd7a24094cd2f86f80fe25e5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-21 17:35:19 +00:00
Yu Liu
82e444710d Write ninja file in parallel.
Bug: 335718784
Test: CI
Change-Id: I26f7babca349c654780711cfe0f0ece3faa5f436
2024-05-20 21:46:19 +00:00
Colin Cross
1c2fe5ef19 Merge "Handle nil variant in applyTransitions" into main am: 515e7991fc am: 1b25a60ba0
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3080846

Change-Id: I20e30b5a665e13473be060a110de7a9e7e0d4e95
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-09 23:06:15 +00:00
Cole Faust
fa652f4714 Fix error message when a select condition isn't handled
Preivously it attempted to print all conditions and their values,
but that doesn't tell you which one was wrong, and the formatting was
all weird due to trying to print complex go types.

Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: If9653796f5e9139c0b4a7843b441eb0409967b55
2024-05-09 15:50:50 -07:00
Colin Cross
1b25a60ba0 Merge "Handle nil variant in applyTransitions" into main am: 515e7991fc
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3080846

Change-Id: Ia353694df8a7a48c0ffc5bde48162d83338fae7d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-09 22:44:30 +00:00
Colin Cross
515e7991fc Merge "Handle nil variant in applyTransitions" into main 2024-05-09 22:15:46 +00:00
Treehugger Robot
0ad5367b36 Merge "Create embedcfg directory before writing the file" into main am: 0bc93e1a92 am: cbb04e8e9b
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3081524

Change-Id: I669bf19e6b39fb84ce8dbbd7f90ee42e417daebd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-09 17:56:18 +00:00
Colin Cross
eb077c3123 Handle nil variant in applyTransitions
The input variationMap in applyTransitions may be nil, initialize
it if necessary.

Bug: 319288033
Test: TestPostTransitionDeps
Flag: NONE
Change-Id: I091aa5a04732fdf18931b2534c4c479152c2a9e1
2024-05-09 10:51:20 -07:00
Treehugger Robot
cbb04e8e9b Merge "Create embedcfg directory before writing the file" into main am: 0bc93e1a92
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3081524

Change-Id: Ia75d0dc847b59aaf672c33f8a3ff1e56d5e3568f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-09 17:32:27 +00:00
Treehugger Robot
0bc93e1a92 Merge "Create embedcfg directory before writing the file" into main 2024-05-09 16:42:08 +00:00
Tomasz Wasilczyk
2fbe882aa8 Create embedcfg directory before writing the file
Bug: 302718225
Test: rm -rf out/ && m out/host/linux-x86/bin/go/soong-cc/pkg/android/soong/cc.a
Change-Id: I206f4e0f83fae6a8c6b69c648d23a8c6d1f51477
2024-05-09 07:27:58 -07:00
Colin Cross
82bface36f Merge changes I648ef95f,Iadb72a5a,Ib073f6ec into main am: 5bc2b73593 am: ebe84d80ed
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3078206

Change-Id: Iedf5ec5a943ae0a7f18b86ca600a53ce4dfbd83f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-09 01:08:49 +00:00
Colin Cross
ebe84d80ed Merge changes I648ef95f,Iadb72a5a,Ib073f6ec into main am: 5bc2b73593
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3078206

Change-Id: I2a34b0e83b04637efd60ad07e907b112bea83c05
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-09 00:44:33 +00:00
Colin Cross
5bc2b73593 Merge changes I648ef95f,Iadb72a5a,Ib073f6ec into main
* changes:
  Don't sort the results of TransitionMutator.Split
  Apply outgoing transitions when adding dependencies
  Delete transition variation when no matching variant was found
2024-05-08 23:43:56 +00:00
Colin Cross
c5b3c0ca9e Don't sort the results of TransitionMutator.Split
The ordering of variants can be significant  when adding
inter-variant dependencies, as a variant can only depend on earlier
variants.  Allow maintaining the existing variant ordering when
converting mutators to TransitionMutator by keeping the ordering
of TransitionMutator.Split.  Variations that were requested by
incoming dependencies that are not present in Split are still
sorted, as they have no inherent ordering.

Bug: 319288033
Test: TestPostTransitionDeps
Flag: NONE
Change-Id: I648ef95f08a05f9a64ce97e6a39bae10ce88771a
2024-05-08 15:22:27 -07:00
Colin Cross
5ac6648829 Apply outgoing transitions when adding dependencies
TransitionMutators can always return "" from OutgoingVariation in
order to implement the equivalent of CreateLocalVariations - a
variation that doesn't affect which variation of dependencies is
selected.  The same need applies when creating the dependency after
the TransitionMutator.  Call OutgoingVariation on the parent module
when adding new dependencies unless the variation was explicitly
requested.

Bug: 319288033
Test: TestPostTransitionDeps
Flag: NONE
Change-Id: Iadb72a5a3f19579a6c1d34e3c7169ee9e2b53210
2024-05-08 15:22:21 -07:00
Colin Cross
02aa24823e Delete transition variation when no matching variant was found
TransitionMutators sometimes apply to one variant of a module but
not to another.  Deleting the variation when all variants were
untouched is insufficient if a post-mutator dependency is being added
on a variant that was untouched.  Delete the variation whenever
no matching incoming variant was found.

Bug: 319288033
Test: TestPostTransitionDeps
Flag: NONE
Change-Id: Ib073f6ec3090d09e4798b6f9ca3061ec5d58d722
2024-05-07 14:36:48 -07:00
Cole Faust
2a0e76d28e Merge "Support generating docs for Configurable properties" into main am: 0a1533d786 am: 7b12605468
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3076047

Change-Id: I80e49d5bbe3779924b04b98ea248d50eb1b8ac1a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-07 00:10:26 +00:00
Cole Faust
7b12605468 Merge "Support generating docs for Configurable properties" into main am: 0a1533d786
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3076047

Change-Id: Ie8ad757f8545ef53a13bf0bfdebbd8e496b4ce5c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-06 23:50:48 +00:00
Cole Faust
0a1533d786 Merge "Support generating docs for Configurable properties" into main 2024-05-06 23:28:57 +00:00
Cole Faust
b9ff002303 Support generating docs for Configurable properties
Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: I6e8a03c5785dbc3a90f458155dc4b9cd6ce7700b
2024-05-06 15:14:17 -07:00
Colin Cross
4320a271eb Change semantics of ReplaceDependencies[If] am: 38b56e136f am: 8bccb1787b
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3070727

Change-Id: I7625d7722b60acb0001d8efa55e8d036d9176b33
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-02 23:37:12 +00:00
Colin Cross
b72794b452 Ignore dependency variations for TransitionMutators that didn't apply am: de024f6167 am: 8268cb1c6a
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3070726

Change-Id: Ia650ecf5525769f647e54f5f776cc855301555fa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-02 23:37:07 +00:00
Colin Cross
489130363e Rename TransitionMutator top down mutator am: 9f260255f2 am: e9e2e949a1
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3070725

Change-Id: Ic710ba5cf102cdd09be6f7c1b2cc8c8dde0672e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-02 23:37:02 +00:00
Colin Cross
8bccb1787b Change semantics of ReplaceDependencies[If] am: 38b56e136f
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3070727

Change-Id: I35153d9ab150b22c4a402e6736b26322347bbbdd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-02 23:16:15 +00:00
Colin Cross
8268cb1c6a Ignore dependency variations for TransitionMutators that didn't apply am: de024f6167
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3070726

Change-Id: I255cb6d93ec98457fb3ef1ab1337cde243208eca
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-02 23:16:13 +00:00
Colin Cross
e9e2e949a1 Rename TransitionMutator top down mutator am: 9f260255f2
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3070725

Change-Id: I2dde26615461abcac5965a2ae9efab0f9bcfb6e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-02 23:16:10 +00:00
Colin Cross
38b56e136f Change semantics of ReplaceDependencies[If]
ReplaceDependencies[If] currently replaces dependencies on a given
module with the current module.  It expects to find a variant of the
given module that has the exact same variations as the current module.
That was sometimes handled via aliases, but TransitionMutators don't
support aliases, they use IncomingTransition to rewrite the variation
instead.

In all current usages of ReplaceDependencies[If], the given module
is also a direct dependency of the current module.  Instead of looking
for the exact same variations, look for the variant that is a dependency
of the current module.

Bug: 319288033
Test: all soong tests pass
Flag: NONE
Change-Id: I3e33111322040b187f6e951554366ccdcaf1bc11
2024-05-02 14:39:19 -07:00
Colin Cross
de024f6167 Ignore dependency variations for TransitionMutators that didn't apply
When adding a dependency on a module that has already had variants
created by a TransitionMutator, ignore any variation added by the
TransitionMutator to the current module if the TransitionMutator
didn't apply to the target module.  This requires passing in the
list of variations requested by the AddVariationDependencies call
so that explicitly requested variations are not ignored.

This fixes TestAndroidTest_FixTestConfig when the override mutator
is converted to a TransitionMutator, as it can't add a dependency from
the "foo_test" module with an empty override variation to the
"foo" module  that has no override variation.

Bug: 319288033
Test: TestAndroidTest_FixTestConfig
Flag: NONE
Change-Id: If0fca7adc28cd702f953885aef440a0805ac017c
2024-05-01 15:25:37 -07:00
Colin Cross
9f260255f2 Rename TransitionMutator top down mutator
TransitionMutator's top down mutator is suffixed with _deps, but
that name is often used by other mutators related to the
TransitionMutator, causing unexpected conflicts.  Use _propagate
instead.

Bug: 319288033
Test: all soong tests pass
Flag: NONE
Change-Id: Ib42c66288e47287cfda8252d435f86c7045bf4c0
2024-05-01 15:25:37 -07:00
Cole Faust
160a6c0310 Improve error message when assigning select to nonconfigurable property am: 1c48101091 am: 6722022217
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3068366

Change-Id: I474a427a3c68303742f9779be67e0b46c9fed31f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-01 21:44:14 +00:00
Cole Faust
6722022217 Improve error message when assigning select to nonconfigurable property am: 1c48101091
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3068366

Change-Id: I8429704e4c614dc0d85fe0c1ab8d95e0a4f42957
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-01 21:15:42 +00:00
Cole Faust
1c48101091 Improve error message when assigning select to nonconfigurable property
Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: Ideac33cd286566e14e7ff1ff579930add48a94db
2024-04-30 13:58:17 -07:00
Treehugger Robot
e872f19792 [automerger skipped] Merge "Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future" into aosp-main-future am: b316cc9bc9 -s ours
am skip reason: Merged-In I7091effe7791c1f3ea57e775b37cd72f4ee13d03 with SHA-1 8ef7561b0c is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/build/blueprint/+/27144984

Change-Id: Ie2ca9ab5e62c1cbdb1a0cabbfc013ba97220e4b4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-30 02:11:01 +00:00
Xin Li
d4fe814978 [automerger skipped] Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future am: f672401e1b -s ours
am skip reason: Merged-In I7091effe7791c1f3ea57e775b37cd72f4ee13d03 with SHA-1 8ef7561b0c is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/build/blueprint/+/27144984

Change-Id: I242e315537d8b022f491b18837f94d91f26cfe0a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-30 02:10:26 +00:00
Treehugger Robot
b936384b5c Merge changes from topics "fix_selects_appending", "refactor_selects" into main am: ca5ffdd3ce am: b87170476c
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3062997

Change-Id: I54df335ce6965ed0cd410aa1708377ef257f370a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-30 02:00:27 +00:00
Treehugger Robot
b316cc9bc9 Merge "Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future" into aosp-main-future 2024-04-30 01:58:42 +00:00
Treehugger Robot
b87170476c Merge changes from topics "fix_selects_appending", "refactor_selects" into main am: ca5ffdd3ce
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3062997

Change-Id: Ic00ebdfb1adcc095910de739aa7c475d26cc1aa6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-30 01:47:33 +00:00
Treehugger Robot
ca5ffdd3ce Merge changes from topics "fix_selects_appending", "refactor_selects" into main
* changes:
  Refactor selects
  Fix bugs when appending selects
  Allow extending configurable propeties with non-configurable properties
2024-04-30 01:15:42 +00:00
Cole Faust
a52b058ccc Refactor selects
In order to do less cloning, refactor selects so that all the
soong-visibile structs are immutable to soong and can be reused.

Additionally, refactor how the inner linked list of selects is managed,
so that the append/prepend/replace logic is simpler.

Bug: 323382414
Test: m nothing --no-skip-soong-tests
Change-Id: Iba5d27405decc1b0596590c3e0555daeb044bf9e
2024-04-29 13:23:30 -07:00
Xin Li
f672401e1b Empty merge of Android 24Q2 Release (ab/11526283) to aosp-main-future
Bug: 337098550
Merged-In: I7091effe7791c1f3ea57e775b37cd72f4ee13d03
Change-Id: I1c6c3f6d848d7a67fbac426cd0347477b675a521
2024-04-29 11:46:46 -07:00
Cole Faust
70b814a964 Fix bugs when appending selects
The biggest issue here is that Configurable objects needed to be
cloned before appended to one another, otherwise some Configurables
that were used in defaults could be edited after being applied to one
module and apply a different value to another module.

Also fix an issue where a select without a defined appendWrapper
always evaluated to nil.

I plan to make a followup refactor cl to make these things clearer,
but start with the bugfix.

Bug: 323382414
Test: m nothing --no-skip-soong-tests (see other cl in topic for tests)
Change-Id: Icf68d0ee1779c76bfb3d68db43b35d7e09bc0dd9
2024-04-25 15:38:56 -07:00
Cole Faust
4560bb086e Allow extending configurable propeties with non-configurable properties
Sometimes modules add arch-variant properties in load hooks, to disable
modules by default on certain platforms for example. When changing the
property to a Configurable property, these load hooks would also need
to be changed in order to have a matching type for
ExtendMatchingProperties.

Since this can be kindof a pain to address everywhere, for now,
special case the extension functions to promote non-configurable
properties to configurable ones. We can remove this later when
everything switches to configurable properties.

Bug: 323382414
Test: go tests
Change-Id: Iac96587dbd60ccdd6aa667dd69a71ad252abe589
2024-04-25 15:31:00 -07:00
Haamed Gheibi
c1d603e975 Use relative GOPATH for microfactory golang builds. am: c10b49b5e9 am: ea82d0e22d
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3060443

Change-Id: I536d5701360a4c8cfbbf50253da83b8fc954c214
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-25 22:30:29 +00:00
Haamed Gheibi
ea82d0e22d Use relative GOPATH for microfactory golang builds. am: c10b49b5e9
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3060443

Change-Id: If6558225f5f16a6750936c59598846485bffed20
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-25 21:47:39 +00:00
Haamed Gheibi
c10b49b5e9 Use relative GOPATH for microfactory golang builds.
Bug: b/336890676
Change-Id: I15ff839986d6c4997d5abccaa2ae8a9703d6cfb6
2024-04-25 04:44:01 +00:00
Tomasz Wasilczyk
1fbe12e4d7 Merge "Add support for go:embed" into main am: 36b6322979 am: 78d056bd95
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3046017

Change-Id: I018f8bc58ecdcb76bb3a16eee13ef24342bc54a5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-24 13:42:11 +00:00
Tomasz Wasilczyk
78d056bd95 Merge "Add support for go:embed" into main am: 36b6322979
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/3046017

Change-Id: I9e9ff27e457958a24630943e5f0305cf031c73e3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-04-24 13:25:05 +00:00