Commit graph

2785 commits

Author SHA1 Message Date
Aditya Choudhary
516ef4f48e Create src file provider in build/blueprint am: a992d06f60
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2854653

Change-Id: Idf8f6435270d1afbaef6759d99be34b843975235
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-12-06 08:11:01 +00:00
Aditya Choudhary
a992d06f60 Create src file provider in build/blueprint
Change-Id: I7091effe7791c1f3ea57e775b37cd72f4ee13d03
2023-12-05 07:14:29 +00:00
Jooyung Han
da4c2df54f Add a new util to clear a property am: 02d2b9e4cc
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2854407

Change-Id: I5151b8df9fc158ff8ff0ca3dcc70bf4c43d7fd73
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-12-05 05:57:01 +00:00
Jooyung Han
02d2b9e4cc Add a new util to clear a property
proptools.Clear(ptr) clears a property with its zero value.

Bug: 313806237
Test: m blueprint_tests
Change-Id: Ib78f9f88a9b0a8b04e1ab6c5e545b55ba4269e5d
2023-12-04 11:01:23 +09:00
Colin Cross
21118230c9 Fix TestCloneProperties for go 1.21 am: 50fe8e79e5
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2824190

Change-Id: If679bf544928acff32a8684bcc58e60108632359
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-09 18:57:43 +00:00
Colin Cross
50fe8e79e5 Fix TestCloneProperties for go 1.21
Go 1.21 does a better job using the same empty allocation for empty
structs, allow cloned properties to point to the original when it
is an empty struct.

Bug: 309895579
Test: TestCloneProperties
Change-Id: I064f2316a8a8017a109968671ac305dbbe3246af
2023-11-08 22:07:58 -08:00
Treehugger Robot
90d740b3cb Merge "Remove pre singletons" into main am: 228915b2f1
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2814612

Change-Id: I94b057984594b70f513cb314c21924c9a2be0748
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-02 18:20:14 +00:00
Treehugger Robot
228915b2f1 Merge "Remove pre singletons" into main 2023-11-02 18:04:52 +00:00
Colin Cross
94bbe04b4c Optimize NinjaEscapeList to avoid allocating an output slice am: 42b2e906ef
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2813841

Change-Id: I7645618790ff32fe76ff066b7a4173996ebf0ec3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-02 17:49:09 +00:00
Colin Cross
539f19d1a8 Use strings instead of simpleNinjaStrings where possible am: 95bec3331c
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2813840

Change-Id: I729a500def4b5f8cfe51e8a2461df90a9ea90c80
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-02 17:48:13 +00:00
Cole Faust
41cbc49a25 Remove pre singletons
They're no longer used.

Test: m nothing --no-skip-soong-tests
Change-Id: I6481381a2ac6bca4211c88173dd4275261123e86
2023-11-01 15:26:17 -07:00
Colin Cross
42b2e906ef Optimize NinjaEscapeList to avoid allocating an output slice
NinjaEscapeList is called on every input or output of a rule, and
most of the time does not escape anything.  Optimize it by returning
the input slice when nothing was escaped.  This avoids 1.336 GB of
allocations in my AOSP aosp_cf_x86_64_phone-userdebug build.

Test: TestNinjaEscapeList
Change-Id: I33b9e7b77b33d10401d1ec3546caa6794c567b16
2023-11-01 15:15:16 -07:00
Colin Cross
95bec3331c Use strings instead of simpleNinjaStrings where possible
Storing every string without ninja variable references through
simpleNinjaString costs 24 bytes and a heap allocation.  16 bytes
is used for the ninjaString.str string, 8 bytes for the
ninjaString.variables *[]variableReference.  An additional 8 bytes
is used for the resulting pointer into the heap.

The vast majority of calls to simpleNinjaString originate in
blueprint.parseBuildParams, which converts all of the parameters
passed to ctx.Build into ninjaStrings.  All together this was
allocating 1.575 GB of *ninjaString objects.

Add a parseNinjaOrSimpleStrings function that converts input strings
into ninjaStrings if they have ninja variable references, but also
returns a slice of plain strings for input strings without any ninja
variable references.  That still results in 1.39 GB of allocations just
for the output string slice, so also add an optimization that reuses
the input string slice as the output slice if all of the strings had
no variable references.

Plumb the resulting strings through everywhere that the []*ninjaStrings
were used.

This reduces the total memory allocations inside
blueprint.parseBuildParams in my AOSP aosp_cf_x86_64_phone-userdebug
build from 3.337 GB to 1.786 GB.

Test: ninja_strings_test.go
Change-Id: I51bc138a2a6b1cc7383c7df0a483ccb067ffa02b
2023-11-01 15:15:15 -07:00
Colin Cross
f55930a589 Remove unnecessary locking in fs am: 098c09334f
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2806056

Change-Id: I6703d363e4127f7fde773bf77793f7b531c4d731
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-11-01 18:21:45 +00:00
Colin Cross
098c09334f Remove unnecessary locking in fs
osFs.acquire and osFs.release are surprisingly expensive, using a
combined 345.7s of runtime in an AOSP aosp_cf_x86_64_phone-userdebug
build.  They are used to ensure we don't use too many simultaneous
open files, but many of the functions they are called from don't
actually open a file.  Remove them from all the stat-based functions
(Exists, IsDir, IsSymlink, Lstat, Stat), and from ReadLink.  After
this change the time spent in acquire and release is effectively
zero.

Test: SOONG_PROFILE_CPU=/tmp/cpu.pprof m nothing
Change-Id: Ie5e22e33c61794354821f05ab79ceb4efc3b276c
2023-10-31 20:24:35 +00:00
Colin Cross
6cfb101d57 Always generate rules for blueprint tests am: 0065131f50
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2802154

Change-Id: I13bfc46c8d6d2e5a44d756de6fc499f48db1a5f9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-10-24 22:38:52 +00:00
Colin Cross
0065131f50 Always generate rules for blueprint tests
Generate the rules to build and run the blueprint tests whether or
not running the tests during bootstrap is enabled, and only add them
as validation dependencies if running the tests is enabled.  Export
the outputs of the tests as a phony target for checkbuild to depend on.

Bug: 269296618
Test: m nothing
Test: aninja -t path checkbuild out/host/linux-x86/bin/go/soong-java/test/test.passed
Change-Id: I09cd20d802bed5a659f3f36e87128d4281dfcfb0
2023-10-24 11:05:56 -07:00
Rashid Zaman
103c1e5b8c bpfmt: Process all blueprint files when a directory is specified am: a29ee638ea am: c72a75269d am: 177f5bfe6f am: fedab1373c
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2694306

Change-Id: Icfbfc2c60bf5722547d6d33c89fc3b6af5985788
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-08-23 02:41:07 +00:00
Rashid Zaman
fedab1373c bpfmt: Process all blueprint files when a directory is specified am: a29ee638ea am: c72a75269d am: 177f5bfe6f
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2694306

Change-Id: I3a4151f2c2c9f76d0908b561b9d2d84fe2a8024b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-08-23 01:36:03 +00:00
Rashid Zaman
177f5bfe6f bpfmt: Process all blueprint files when a directory is specified am: a29ee638ea am: c72a75269d
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2694306

Change-Id: Ie7ae46ac64d8511ffbd97cb7831eb8492fce6af4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-08-23 00:21:44 +00:00
Rashid Zaman
c72a75269d bpfmt: Process all blueprint files when a directory is specified am: a29ee638ea
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2694306

Change-Id: I7ca72d73c24d2221176998d3d4b08b51d167887a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-08-22 21:51:17 +00:00
Rashid Zaman
a29ee638ea bpfmt: Process all blueprint files when a directory is specified
Currently when a directory path is specified bpfmt only processes files
named "Blueprints" so change this to also process files with a `.bp`
suffix.

Test: Manual + bpfmt -d frameworks/base/services shows differences

Change-Id: I5a6356f387892934ee8e83362db13cda6156ed51
Signed-off-by: Rashid Zaman <rashidz@meta.com>
2023-08-04 01:01:55 -07:00
Xin Li
eccef716c8 [automerger skipped] Empty Merge Android U (ab/10368041) am: da4de251ac -s ours am: f6d2187281 -s ours am: 8ed083d352 -s ours
am skip reason: Merged-In Ia1adf67a8c85303f1c3f3ea9d6c1565041eaa1a5 with SHA-1 3f24bff0b4 is already in history

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

Change-Id: I0d35269bc70f4a281e824fbcd12174c0cdd722f9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-15 05:13:34 +00:00
Xin Li
8ed083d352 [automerger skipped] Empty Merge Android U (ab/10368041) am: da4de251ac -s ours am: f6d2187281 -s ours
am skip reason: Merged-In Ia1adf67a8c85303f1c3f3ea9d6c1565041eaa1a5 with SHA-1 3f24bff0b4 is already in history

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

Change-Id: I9dc53d4ee17a53cd00772086ba1f768346246eb0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-15 04:30:06 +00:00
Xin Li
f6d2187281 [automerger skipped] Empty Merge Android U (ab/10368041) am: da4de251ac -s ours
am skip reason: Merged-In Ia1adf67a8c85303f1c3f3ea9d6c1565041eaa1a5 with SHA-1 3f24bff0b4 is already in history

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

Change-Id: Ibfa5e043232b200092b7fd1877563f832f20d9bb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-15 03:22:24 +00:00
Xin Li
da4de251ac Empty Merge Android U (ab/10368041)
Bug: 291102124
Merged-In: Ia1adf67a8c85303f1c3f3ea9d6c1565041eaa1a5
Change-Id: I2c12f5bb76746ab889eff1db829d6d586bd64ace
2023-07-14 16:53:21 -07:00
LaMont Jones
87e2c0c0a0 Wrap singleton ninjaString Eval calls am: 7c2ebdef75 am: fa016e5910 am: adc079478c am: 83b2794179 am: ec448f4ec5
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2654105

Change-Id: I64326736d5ea454efd45170d1ea0d1ffbaf0615d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-12 19:58:23 +00:00
LaMont Jones
ec448f4ec5 Wrap singleton ninjaString Eval calls am: 7c2ebdef75 am: fa016e5910 am: adc079478c am: 83b2794179
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2654105

Change-Id: Id353ea7b4dc1751d82a61c7f07fc94d384e873d9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-12 19:14:39 +00:00
LaMont Jones
83b2794179 Wrap singleton ninjaString Eval calls am: 7c2ebdef75 am: fa016e5910 am: adc079478c
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2654105

Change-Id: Iad71e5d008fcb4cb975af8a27d88c3e72e320208
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-12 18:27:08 +00:00
LaMont Jones
adc079478c Wrap singleton ninjaString Eval calls am: 7c2ebdef75 am: fa016e5910
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2654105

Change-Id: I14994b03e59a038748dc08b1edc37145bb1831f2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-12 17:42:21 +00:00
LaMont Jones
fa016e5910 Wrap singleton ninjaString Eval calls am: 7c2ebdef75
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2654105

Change-Id: I1b40f1aa57d06cee6cacabc1779a7449789986fd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-07-12 16:57:01 +00:00
LaMont Jones
7c2ebdef75 Wrap singleton ninjaString Eval calls
This avoids a concurrent map read and write error in parallel
singletons.

Bug: 290795374
Test: manual, treehugger
Change-Id: I7f89909a98c4f530da92a3d2cc01ca8eaeddbfa0
2023-07-11 19:58:01 +00:00
Spandan Das
c6e97e097e Merge "Add a testdata property in goPackage and goBinary" am: 5d3bfd147b am: d1044697df am: c909cd036d am: 36511fc852 am: 8e917b6912
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2636751

Change-Id: Ic3564918364d5e9e14e7c9d38eacae85cb9b50f7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-28 20:29:13 +00:00
Spandan Das
8e917b6912 Merge "Add a testdata property in goPackage and goBinary" am: 5d3bfd147b am: d1044697df am: c909cd036d am: 36511fc852
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2636751

Change-Id: Ic50a787b3a44558c06ce6af92b3def31031b4387
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-28 19:47:11 +00:00
Spandan Das
36511fc852 Merge "Add a testdata property in goPackage and goBinary" am: 5d3bfd147b am: d1044697df am: c909cd036d
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2636751

Change-Id: I742ab3a1887991dad270866a68bcd79b495324a3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-28 18:39:17 +00:00
Spandan Das
c909cd036d Merge "Add a testdata property in goPackage and goBinary" am: 5d3bfd147b am: d1044697df
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2636751

Change-Id: I49054cda40e8b56f33d33554cc51c2d19a46086d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-28 17:10:28 +00:00
Spandan Das
d1044697df Merge "Add a testdata property in goPackage and goBinary" am: 5d3bfd147b
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2636751

Change-Id: Iaf37d6be7b15a3aca23df54452adc3de8f5c1463
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-28 16:33:46 +00:00
Spandan Das
5d3bfd147b Merge "Add a testdata property in goPackage and goBinary" 2023-06-28 15:49:27 +00:00
Treehugger Robot
e19600c8df Merge "Plumb module tags through to ninja." am: 797fe25cb2 am: 27186d0a91 am: b50e951349 am: 544470742f am: 36d91b3075
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2631633

Change-Id: I4e04b9f77377e53d6458be9b086ec3263d353d98
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 23:19:28 +00:00
Treehugger Robot
36d91b3075 Merge "Plumb module tags through to ninja." am: 797fe25cb2 am: 27186d0a91 am: b50e951349 am: 544470742f
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2631633

Change-Id: I97de6f75ba98b90f528fd8252b6694b008dab7b0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 22:29:45 +00:00
Treehugger Robot
544470742f Merge "Plumb module tags through to ninja." am: 797fe25cb2 am: 27186d0a91 am: b50e951349
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2631633

Change-Id: I33994b667017f4dae6e9b412c0c19d49a75c64f4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 21:40:47 +00:00
Treehugger Robot
b50e951349 Merge "Plumb module tags through to ninja." am: 797fe25cb2 am: 27186d0a91
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2631633

Change-Id: Id573dcebe69f956633e67b88116ce60a970e3a5e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 20:05:29 +00:00
Treehugger Robot
27186d0a91 Merge "Plumb module tags through to ninja." am: 797fe25cb2
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2631633

Change-Id: Id4acacee7905d4fa469bd2467ef1b09e1a8ccd99
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 19:21:56 +00:00
Treehugger Robot
797fe25cb2 Merge "Plumb module tags through to ninja." 2023-06-23 18:08:07 +00:00
Spandan Das
4ebfaa94cd Export goPackage and goBinary from bootstrap package am: 4e84d6b010 am: a6e512f08c am: 5e73937ab4 am: 901375c51b am: 2e467c438f
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2627057

Change-Id: Ib00b802afbbea03e9c25bb2c804f8b67ce3a6762
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 11:40:04 +00:00
Spandan Das
2e467c438f Export goPackage and goBinary from bootstrap package am: 4e84d6b010 am: a6e512f08c am: 5e73937ab4 am: 901375c51b
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2627057

Change-Id: Ie38e0878c09752e68bcc61e1f6b1e0e2ee616c60
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 10:36:50 +00:00
Spandan Das
901375c51b Export goPackage and goBinary from bootstrap package am: 4e84d6b010 am: a6e512f08c am: 5e73937ab4
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2627057

Change-Id: I014cbfbcf9ae7019bd78ab8b58b027f7fd848d6f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 09:47:41 +00:00
Spandan Das
5e73937ab4 Export goPackage and goBinary from bootstrap package am: 4e84d6b010 am: a6e512f08c
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2627057

Change-Id: Ic4aa7e62f8d0b7480c8e99d3d9401272a7031767
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 09:01:53 +00:00
Spandan Das
a6e512f08c Export goPackage and goBinary from bootstrap package am: 4e84d6b010
Original change: https://android-review.googlesource.com/c/platform/build/blueprint/+/2627057

Change-Id: I4c2c3f62d5c7994cc2d8746b74dbcc12354675fd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-06-23 08:17:56 +00:00
Spandan Das
6a3475adf5 Add a testdata property in goPackage and goBinary
Some go tests depend on testData, but do not declare it explicitly. In
preparation for the stricter sandboxing constratints imposed by Bazel,
introduce this property.

This will be a no-op in Soong for now. But bp2build will convert it into
`data` property of go_test

Test: go build ./blueprint/bootstrap
Bug: 288491147
Change-Id: I0e1e7941db1efe6f1488936d9bae7e8d295b88ba
2023-06-23 00:15:44 +00:00