)]}'
{
  "log": [
    {
      "commit": "ce8a83a8af17991a21b2eba5d1a052b138a4832e",
      "tree": "30575e99e424b146e024c9f7d2670a644caa6e50",
      "parents": [
        "d158a27c72fc7bd6d5e51fe24d95ca4e48417c5a"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Thu Sep 12 15:13:48 2024 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Fri Sep 13 12:32:17 2024 -0700"
      },
      "message": "Add visibility property to go modules\n\nSo that they don\u0027t fail parsing in the bootstrap build, and the main\nsoong build can set visibility properties.\n\nBug: 348717861\nTest: m nothing\nChange-Id: Id3e6e3257764898ddd2810067e55b06acff9ea81\n"
    },
    {
      "commit": "61e593488c1a6314b302d82289705c4ad6e92995",
      "tree": "e51994d050e51d1a6957feea13d762e8da76b50c",
      "parents": [
        "7c94f2264aa6acbbeb796824ea88280676131f68",
        "7315e8d2ac20e2170e787fc5d2a36369ddde6af6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Thu Sep 12 15:46:51 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 12 15:46:51 2024 +0000"
      },
      "message": "Merge \"Allow wrapping the Go module types\" into main"
    },
    {
      "commit": "b2226dde3df44206130231747442df4db0f33e02",
      "tree": "2ffb338339691411a447affe8bdfc9168dd7c7b5",
      "parents": [
        "b9001713bbf4d1891b239cabb5ff286f32f097b0",
        "d5c0062245a01eb8650b2aef9dea285fcec95362"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Sep 11 23:21:05 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 11 23:21:05 2024 +0000"
      },
      "message": "Merge \"Add binary test targets to blueprint_tests phony\" into main"
    },
    {
      "commit": "b9001713bbf4d1891b239cabb5ff286f32f097b0",
      "tree": "ccce4f8fb80240e02fa3a58be52f386e674224b7",
      "parents": [
        "2734a73764c6853581acaeaf5b0069d167688840",
        "2e528a6b7ed41af49a147d12618cffaebb051136"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Sep 11 23:00:16 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 11 23:00:16 2024 +0000"
      },
      "message": "Merge \"Use providers between Go module types\" into main"
    },
    {
      "commit": "2734a73764c6853581acaeaf5b0069d167688840",
      "tree": "501a26e020e6f15344c9964b19176b5cc0089a22",
      "parents": [
        "3a78882e5fda3610f33ba875e7d957bb0620e2e0",
        "27eabe54dd696fc73ae7f4463d18a2c8e032e4cb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Sep 11 22:47:57 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 11 22:47:57 2024 +0000"
      },
      "message": "Merge \"Remove unused getters for go module types\" into main"
    },
    {
      "commit": "7315e8d2ac20e2170e787fc5d2a36369ddde6af6",
      "tree": "e2251d1f6b4ce0e50baa9e8f1d4b2b36cf9cb587",
      "parents": [
        "d5c0062245a01eb8650b2aef9dea285fcec95362"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 09 16:01:39 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 10 21:38:14 2024 -0700"
      },
      "message": "Allow wrapping the Go module types\n\nAllow Soong to wrap the Go module types in types that implement\nandroid.Module, which will allow removing hacks in Soong that need\nto handle both blueprint.Module and android.Module.\n\nAdd getters and setters to interact with the wrapped blueprint module\ntypes.\n\nRemove the GoBinaryTool interface used by Soong, it will use\nstandard OutputFilesForModule and HostToolProvider instead.\n\nRename the intermediate file to have the same name as the installed\nfile.\n\nSkip the install rule when wrapped, which will allow Soong to create\nits own install rule that takes advantage of the generic Soong\ninfrastructure.\n\nSkip the blueprint_tools phonies for modules that are not in an\nexported namespace.\n\nAdd a GoModuleTypesAreWrapped() method that Soong can call to prevent\nblueprint from registering the module types so it can register the\nwrapped ones in their place.\n\nTest: all soong tests\nFlag: EXEMPT refactor\nChange-Id: I0e78669c0ed385870dccf9fcdaee1c50dd0d9f1a\n"
    },
    {
      "commit": "d5c0062245a01eb8650b2aef9dea285fcec95362",
      "tree": "cba80aa6397a998d1271f67f21cbfc77d2b49eb0",
      "parents": [
        "2e528a6b7ed41af49a147d12618cffaebb051136"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 10 14:11:17 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 10 14:13:53 2024 -0700"
      },
      "message": "Add binary test targets to blueprint_tests phony\n\nThe blueprint_tests phony was only running tests from bootstrap_go_package\nmodules and not blueprint_go_binary modules.  The binary tests were\nstill run via `m --no-skip-soong-tests` and as validation actions\non the binaries.\n\nTest: m blueprint_tests\nFlag: EXEMPT bugfix\nChange-Id: Ifff52e376ecede7cc7d301f8e5ccc6b7a854377c\n"
    },
    {
      "commit": "2e528a6b7ed41af49a147d12618cffaebb051136",
      "tree": "16275c6c06a74e7b0547fcb21231772cda36a2bf",
      "parents": [
        "27eabe54dd696fc73ae7f4463d18a2c8e032e4cb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 09 16:05:45 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 10 14:13:53 2024 -0700"
      },
      "message": "Use providers between Go module types\n\nSome of the Go module type interactions use type assertions to\nconcrete types, which prevents wrapping the module types, as that\nchanges the concrete type.  Those interactions need to be converted\nto providers, and convert all the interactions that use interfaces\ntoo.\n\nTest: blueprint tests\nFlag: EXEMPT refactor\nChange-Id: Ic0545c2bea4545ff1eecf91983b6ec3a0a243d12\n"
    },
    {
      "commit": "3a78882e5fda3610f33ba875e7d957bb0620e2e0",
      "tree": "0ca15798962434c2671103a847dc08509e97a3d4",
      "parents": [
        "1639c5506759cdd40fd160c3c594987b37577b7c"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Mon Sep 09 16:05:40 2024 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Mon Sep 09 16:38:30 2024 -0700"
      },
      "message": "Add GlobResult.Clone()\n\nNeeded for new glob implementation.\n\nAlso remove all the old glob stuff.\n\nBug: 364749114\nTest: m nothing\nChange-Id: Ieabaf2864c57aeff7a8ac9663c2037bd1f7b4665\n"
    },
    {
      "commit": "27eabe54dd696fc73ae7f4463d18a2c8e032e4cb",
      "tree": "eac7524af0c629961b0d95fb9999298e54d0c15c",
      "parents": [
        "1639c5506759cdd40fd160c3c594987b37577b7c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 09 15:58:22 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 09 15:58:22 2024 -0700"
      },
      "message": "Remove unused getters for go module types\n\nGetters for all the properties of the go module types were added\nfor bp2build, remove them.\n\nTest: builds\nFlag: EXEMPT refactor\nChange-Id: I3293bb0354f03114e5c3f69e4f47320847e7f9bf\n"
    },
    {
      "commit": "014deb54f02fdf2259507fd9b119b54abc656d1c",
      "tree": "e3e40e0460dee976fdf30c97b3694a4d160be6c1",
      "parents": [
        "0d59bbf271c39e3d20c4a41284c72a01f8916e4c"
      ],
      "author": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Thu Sep 05 18:40:34 2024 +0000"
      },
      "committer": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Thu Sep 05 18:43:36 2024 +0000"
      },
      "message": "Rename some variables/funcs and move some code to the right places.\n\nNo behaviour changes.\n\nBug: 358425833\nTest: Manual test and CI.\nChange-Id: Id8d6a0e3e467485088f967e2351a3706fe78cf3d\n"
    },
    {
      "commit": "57af52e4eb7818de36d1365bb85bc34bab8a9f4b",
      "tree": "9085be4e38a1625f1cae8a088bd8ae2a6e48b271",
      "parents": [
        "9d4fb1fec613af5d54b6698dc644ad5fe0a08150"
      ],
      "author": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Tue Jul 30 17:26:44 2024 +0000"
      },
      "committer": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Mon Aug 12 22:07:39 2024 +0000"
      },
      "message": "Skip writing ninja file for module with a cache hit during incremental build.\n\nThis is just the first change, many more will come to make this feature\nreally work. The main changes included here are:\n\n1. Skip the writing of ninja file if a module has a cache hit.\n2. Handle the case where a skipped module doesn\u0027t have the build defs\n   info for the OrderOnlyStrings dedup logic to work by caching the\n   missing info.\n\nBug: 335718784\nTest: local manual tests\nChange-Id: Idb5347dca44955a69df5067d3f0211243ab4b041\n"
    },
    {
      "commit": "33b01c7bf976f4d13da2794177946b9ad57ba3c5",
      "tree": "e4cf2741ded93fdee70b16412f7f4904487fb46c",
      "parents": [
        "21123c8c34e60b4337ddf34d449643710447dc95"
      ],
      "author": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Thu Jul 18 18:50:48 2024 +0000"
      },
      "committer": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Tue Jul 30 18:33:06 2024 +0000"
      },
      "message": "Populate global rules/variables statically, also some clean up work.\n\nBug: 335718784\nTest: local tests and CI\nChange-Id: Ife48c6e2a46df0468519ec61e83c681885a48297\n"
    },
    {
      "commit": "bd160377968425ca250869150a1dba984e649fe0",
      "tree": "08b1f4b885d2a619cc1eea426a2304695275cae3",
      "parents": [
        "28c638257dbc5cf13996a3de922ff54edd772cd8"
      ],
      "author": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Tue Jun 11 00:09:41 2024 +0000"
      },
      "committer": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Tue Jun 18 21:10:35 2024 +0000"
      },
      "message": "Experimental code to support build action caching.\n\nBug: 335718784\nTest: build locally\nChange-Id: Icbf1a1d336d897e80e6f767d596645f2a4b3466c\n"
    },
    {
      "commit": "6dd9fcc314d0f1a3df8eb186a0c550b8d291337e",
      "tree": "cb446754b8ef9e33af8ada7d1a8365662ce6e095",
      "parents": [
        "c3ac2a249ad4194edee38bcf5f915114b6eb25f7"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed May 22 17:22:10 2024 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed Jun 05 21:52:41 2024 +0000"
      },
      "message": "Drop blueprint_package_includes\n\nThis feature can be used to prune Android.bp files from analysis. This\nwas introduced in `T` to support co-existence of BA and Go apexes. With\nthe recent changes to apex prebuilt build rules, this pruning is no\nlonger necessary to support co-existence.\n\nPruning via PRODUCT_SOURCE_ROOT_DIRS is still supported.\n\nBug: 308188212\nTest: m nothing\nChange-Id: I1e1391665963b1ad7cb3837dc67500b69b0833af\n"
    },
    {
      "commit": "c3ac2a249ad4194edee38bcf5f915114b6eb25f7",
      "tree": "7d7716c54a20de9ff691e3a6ff24a919f6811030",
      "parents": [
        "d5133cfc649cafb2a6372928bc90cc07a029002b"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Jun 05 11:25:24 2024 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Jun 05 11:25:24 2024 -0700"
      },
      "message": "Handle absolute paths for the ninja shard writing.\n\nTest: OUT_DIR\u003d/source/foo m nothing\nChange-Id: Id3849e7446cd0cb26a5b5c74ac3bf4521449b716\n"
    },
    {
      "commit": "01a4667ba2045e2fb2fd91c5c684fe988b9afcef",
      "tree": "dda0e9273168b340000e56199db12b3dd0f9d4dd",
      "parents": [
        "da55eb2a4519e2eb1977109da05ce5b5d102e9b6"
      ],
      "author": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Thu May 23 18:09:53 2024 +0000"
      },
      "committer": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Fri May 24 21:37:32 2024 +0000"
      },
      "message": "Need to catch the errors when closing and flushing.\n\nBug: 335718784\nTest: CI\nChange-Id: I6ae984b36ed786d1ccaa67d5c05efd3d6b89504b\n"
    },
    {
      "commit": "82e444710d8d1eaeb69c9a72e6ad0dac0b435954",
      "tree": "ea93c6081f6731357c059b96baeba6b002573572",
      "parents": [
        "515e7991fc118127aa009bd96611aa43bc936740"
      ],
      "author": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Wed May 15 19:16:55 2024 +0000"
      },
      "committer": {
        "name": "Yu Liu",
        "email": "yudiliu@google.com",
        "time": "Mon May 20 21:46:19 2024 +0000"
      },
      "message": "Write ninja file in parallel.\n\nBug: 335718784\nTest: CI\nChange-Id: I26f7babca349c654780711cfe0f0ece3faa5f436\n"
    },
    {
      "commit": "0bc93e1a92cf75d128feab01119681fab2a2da29",
      "tree": "59156005986c27d11c3ca712219c854518107a39",
      "parents": [
        "5bc2b7359326fb19233270a4151e17c3823d6350",
        "2fbe882aa85869857c0af4cb32f1bbd71a0b5138"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Thu May 09 16:42:08 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 09 16:42:08 2024 +0000"
      },
      "message": "Merge \"Create embedcfg directory before writing the file\" into main"
    },
    {
      "commit": "2fbe882aa85869857c0af4cb32f1bbd71a0b5138",
      "tree": "bb93c0fe77d55ba8990d3ad980bf0b65e86924f1",
      "parents": [
        "ca5ffdd3ce32163c8e957f2b487af3dd735853cf"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Thu May 09 07:27:58 2024 -0700"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Thu May 09 07:27:58 2024 -0700"
      },
      "message": "Create embedcfg directory before writing the file\n\nBug: 302718225\nTest: rm -rf out/ \u0026\u0026 m out/host/linux-x86/bin/go/soong-cc/pkg/android/soong/cc.a\nChange-Id: I206f4e0f83fae6a8c6b69c648d23a8c6d1f51477\n"
    },
    {
      "commit": "b9ff00230314b9799231685cf56e0cbace7dd44a",
      "tree": "05f55d41b9c1a6d51176857966a451fd61cc6ea4",
      "parents": [
        "1c481010918fe0e5a608b97df0536f2dd65efbde"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Mon May 06 15:14:17 2024 -0700"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Mon May 06 15:14:17 2024 -0700"
      },
      "message": "Support generating docs for Configurable properties\n\nBug: 323382414\nTest: m nothing --no-skip-soong-tests\nChange-Id: I6e8a03c5785dbc3a90f458155dc4b9cd6ce7700b\n"
    },
    {
      "commit": "51b4b035208cf01f6237d942ddc1efb514240459",
      "tree": "24d5fc1fed9d50635226c676ab0db8279ac80c48",
      "parents": [
        "d7474dd743a284d37756c2b5c5716cf2e0d81f07"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Wed Apr 17 09:35:55 2024 -0700"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Mon Apr 22 11:52:00 2024 -0700"
      },
      "message": "Add support for go:embed\n\nBug: 302718225\nTest: Build aosp/2798713\nChange-Id: I8c09f1604aa1a702c639bba91cefd104f8f2f36d\n"
    },
    {
      "commit": "4cc5290aace2c46f211a3ccbbd41afdce925fc8f",
      "tree": "1e2b820f8b6a0b0268b6a20b438edddf35b2418e",
      "parents": [
        "894b3185285af9a7d866c7c3cafea52a488d9f48"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 28 12:37:22 2024 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 01 15:54:22 2024 -0700"
      },
      "message": "Use maps and slices packages\n\nUse slices.Clone, slices.Contains, maps.Clone and maps.Equal.\n\nTest: go test ./...\nChange-Id: I96596f157dec2558007da4917c998a64d0cc4d79\n"
    },
    {
      "commit": "8ad2b88c8db3d7606d08563b6cc240a9cf0c3c77",
      "tree": "b90b0d91c13b37a5c4c792a94e4629a388337f5a",
      "parents": [
        "7add62142d6d75bdef9eb788ecb59bae9bb04421"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Feb 02 14:52:34 2024 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Sat Feb 03 14:37:02 2024 -0800"
      },
      "message": "Add new soong module debug info json.\n\nEnabled by setting GENERATE_SOONG_DEBUG\u003dtrue\n\nTest: GENERATE_SOONG_DEBUG\u003dtrue m nothing ; soongdbg ...\nChange-Id: If70c7d91cc59a5a7642e453c85278e8022693ac7\n"
    },
    {
      "commit": "7add62142d6d75bdef9eb788ecb59bae9bb04421",
      "tree": "663d34c4720a76711376162a805205fc5bd76dbe",
      "parents": [
        "1b3fe6bd2c1d534558ae169d6d9c84bd0abdd9b2"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Thu Jan 25 14:45:22 2024 -0800"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Jan 30 15:18:24 2024 -0800"
      },
      "message": "Enforce that providers are not changed\n\nWhen setProvider() is called, hash the provider and store the hash in\nthe module. Then after the build is done, hash all the providers again\nand compare the hashes. It\u0027s an error if they don\u0027t match.\n\nAlso add a flag to control it in case this check gets slow as we convert\nmore things to providers. However right now it\u0027s fast (unnoticable\nin terms of whole seconds) so just have the flag always enabled.\n\nBug: 322069292\nTest: m nothing\nChange-Id: Ie4e806a6a9f20542ffcc7439eef376d3fb6a98ca\n"
    },
    {
      "commit": "ef75beb068a79a9ef6ed4130c441ed7ac032f8bc",
      "tree": "b18d9dc34ce35d213146fd24087c049cb3574eb1",
      "parents": [
        "e1d71ae4286661912f6213cd129e5be4a7391d4b"
      ],
      "author": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Jan 02 16:58:49 2024 -0800"
      },
      "committer": {
        "name": "Cole Faust",
        "email": "colefaust@google.com",
        "time": "Tue Jan 02 16:58:49 2024 -0800"
      },
      "message": "Add implicit inputs to primary builder actions\n\nThis is needed so primary builder actions can directly depend on their\nglob result files.\n\nBug: 318434287\nTest: rm -rf out \u0026\u0026 m nothing \u0026\u0026 m nothing\nChange-Id: I5c67ee53c9f18f81c79c0fe13b3338eacaccdbc0\n"
    },
    {
      "commit": "ed49204e850f58556da5e95a0b6fff1b7dfdbf18",
      "tree": "28c944c5622af103c1d60429228b1466961462ea",
      "parents": [
        "516ef4f48eb29c317e089a80ef9f26d14b9b3083"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 13 14:47:32 2023 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 14 16:59:16 2023 -0800"
      },
      "message": "Use generics for providers API\n\nUsing generics for the providers API allows a type to be associated\nwith a ProviderKey, resulting in a type-safe API without that doesn\u0027t\nrequire runtime type assertions by every caller.\n\nUnfortunately, Go does not allow generic types in methods, only in\nfunctions [1].  This prevents a type-safe API on ModuleContext, and\nrequires moving the API to be functions that take a ModuleContext as\na parameter.\n\n[1] https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md#no-parameterized-methods)\n\nBug: 316410648\nTest: provider_test.go\nChange-Id: Ide91de9f2a2a7d075b05e287c7cc86b395db0edb\n"
    },
    {
      "commit": "a992d06f60cbe024cbba150ee6fa398719a4f5a8",
      "tree": "a938d5d212b0e290453c65e04b6a0e5ddcd2f3a5",
      "parents": [
        "02d2b9e4cc6e5457b30eb9492770418a04266ef4"
      ],
      "author": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Fri Dec 01 13:17:45 2023 +0000"
      },
      "committer": {
        "name": "Aditya Choudhary",
        "email": "caditya@google.com",
        "time": "Tue Dec 05 07:14:29 2023 +0000"
      },
      "message": "Create src file provider in build/blueprint\n\nChange-Id: I7091effe7791c1f3ea57e775b37cd72f4ee13d03\n"
    },
    {
      "commit": "95bec3331cc42db65c048a475b28022c7a303ec9",
      "tree": "c138124ecd1358cf738e97248af77ff06d7d1eee",
      "parents": [
        "098c09334fefc9e061d061ec5cb491b4bbc83a4f"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 31 15:15:30 2023 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Nov 01 15:15:15 2023 -0700"
      },
      "message": "Use strings instead of simpleNinjaStrings where possible\n\nStoring every string without ninja variable references through\nsimpleNinjaString costs 24 bytes and a heap allocation.  16 bytes\nis used for the ninjaString.str string, 8 bytes for the\nninjaString.variables *[]variableReference.  An additional 8 bytes\nis used for the resulting pointer into the heap.\n\nThe vast majority of calls to simpleNinjaString originate in\nblueprint.parseBuildParams, which converts all of the parameters\npassed to ctx.Build into ninjaStrings.  All together this was\nallocating 1.575 GB of *ninjaString objects.\n\nAdd a parseNinjaOrSimpleStrings function that converts input strings\ninto ninjaStrings if they have ninja variable references, but also\nreturns a slice of plain strings for input strings without any ninja\nvariable references.  That still results in 1.39 GB of allocations just\nfor the output string slice, so also add an optimization that reuses\nthe input string slice as the output slice if all of the strings had\nno variable references.\n\nPlumb the resulting strings through everywhere that the []*ninjaStrings\nwere used.\n\nThis reduces the total memory allocations inside\nblueprint.parseBuildParams in my AOSP aosp_cf_x86_64_phone-userdebug\nbuild from 3.337 GB to 1.786 GB.\n\nTest: ninja_strings_test.go\nChange-Id: I51bc138a2a6b1cc7383c7df0a483ccb067ffa02b\n"
    },
    {
      "commit": "0065131f509861c317111a6e59adfb18f503b9d9",
      "tree": "b9752988c2054178ad651fe23d8211ca8bd184ab",
      "parents": [
        "c72a75269d25593a4947799e788a5696514105e4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 24 11:05:56 2023 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 24 11:05:56 2023 -0700"
      },
      "message": "Always generate rules for blueprint tests\n\nGenerate the rules to build and run the blueprint tests whether or\nnot running the tests during bootstrap is enabled, and only add them\nas validation dependencies if running the tests is enabled.  Export\nthe outputs of the tests as a phony target for checkbuild to depend on.\n\nBug: 269296618\nTest: m nothing\nTest: aninja -t path checkbuild out/host/linux-x86/bin/go/soong-java/test/test.passed\nChange-Id: I09cd20d802bed5a659f3f36e87128d4281dfcfb0\n"
    },
    {
      "commit": "6a3475adf5fc2bfbba485b78ab25f5053cc859bf",
      "tree": "30f4333133dc04923d1b783e41e219d7888ac0bd",
      "parents": [
        "4e84d6b010eeb36083e7e12aabda2526304e9ef5"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Jun 22 23:51:22 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Fri Jun 23 00:15:44 2023 +0000"
      },
      "message": "Add a testdata property in goPackage and goBinary\n\nSome go tests depend on testData, but do not declare it explicitly. In\npreparation for the stricter sandboxing constratints imposed by Bazel,\nintroduce this property.\n\nThis will be a no-op in Soong for now. But bp2build will convert it into\n`data` property of go_test\n\nTest: go build ./blueprint/bootstrap\nBug: 288491147\nChange-Id: I0e1e7941db1efe6f1488936d9bae7e8d295b88ba\n"
    },
    {
      "commit": "4e84d6b010eeb36083e7e12aabda2526304e9ef5",
      "tree": "8c92d05e6f6495612a9d53ca6d7383ad6ae62c51",
      "parents": [
        "f99595ba0d17636f8faa627936dddf4523dd0a71"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Jun 08 21:03:45 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Jun 22 23:50:02 2023 +0000"
      },
      "message": "Export goPackage and goBinary from bootstrap package\n\nThese two module types will be special-cased in bp2build. To enable this\nspecial-casing, export from the package alongwith getter methods to\naccess its properties.\n\nTest: go build ./bootstrap\n\nChange-Id: I9ef7ac4b6331fec99713296f8f78f614f3536847\n"
    },
    {
      "commit": "f99595ba0d17636f8faa627936dddf4523dd0a71",
      "tree": "4ff8a878f16ca242e9b6fdfe1691af522d717279",
      "parents": [
        "b554384964e46e6e18d10e33a68f59706e4322cd",
        "c5db2df2130f805c45434e090012bcb84fb76291"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Wed Jun 21 20:07:28 2023 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 21 20:07:28 2023 +0000"
      },
      "message": "Merge \"Helper function to register go module types in tests\""
    },
    {
      "commit": "2cd5fe62064c009257f65e325e8eabb9dd162444",
      "tree": "447a78e1ce8a4c05ca8cd01021277eb30a4d97e5",
      "parents": [
        "6126fe80677d692e7a8c7c2e70c6e97c5afbe75c"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Jun 20 09:29:19 2023 +0000"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Jun 20 09:44:50 2023 +0000"
      },
      "message": "Make RunBlueprint() return an error, if need be.\n\nThis is so that it doesn\u0027t need to abruptly call os.Exit(), denying\ncallers the opportunity to do cleanups.\n\nBug: 244730498\nTest: Presubmits.\nChange-Id: Ifd191d3bbbf2fdea2ca49e4fb552e5d1c557b80f\n"
    },
    {
      "commit": "c5db2df2130f805c45434e090012bcb84fb76291",
      "tree": "9b1eaa33ad8f421f092c4e8b54c766aabb066512",
      "parents": [
        "6f42cdc60f7e0a98e781389abf8c0fd184567710"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Thu Jun 08 00:02:05 2023 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Wed Jun 14 17:44:07 2023 +0000"
      },
      "message": "Helper function to register go module types in tests\n\nThese two module types will be special-cased in bp2build generation\nlogic in build/soong. To write bp2build tests, create a helper function\nto register these two module types\n\nTest: go build ./bootstrap\nChange-Id: If6abd8c8911a525bf6841b199d8ce204941d7bcb\n"
    },
    {
      "commit": "12ccb17d4e4d146ee53b1609639474a15863efb7",
      "tree": "203665e2727e298375f4562c4c9f6dbbbf15f909",
      "parents": [
        "ff04c33f2ae1037a19441f96da514ecb225adaed"
      ],
      "author": {
        "name": "LaMont Jones",
        "email": "lamontjones@google.com",
        "time": "Mon May 15 20:59:49 2023 +0000"
      },
      "committer": {
        "name": "LaMont Jones",
        "email": "lamontjones@google.com",
        "time": "Fri May 19 19:03:08 2023 +0000"
      },
      "message": "context: Allow running some singletons in parallel.\n\nMany of the singletons are trivial and can be run in parallel, improving\nthe performance during analysis.\n\nBug: 281536768\nTest: manual, presubmit\nChange-Id: Ia63e4bc42a68e65dfa800e770982fa5826355fad\n"
    },
    {
      "commit": "ad7bcc7b507f5858171a81319241415b1239357c",
      "tree": "a8f5702fd52675990c40451ddb7eb3ccef49d6a9",
      "parents": [
        "4cff07db2564cee8fad1145824e6aaf56bcc042b"
      ],
      "author": {
        "name": "Kevin Dagostino",
        "email": "kevindagostino@google.com",
        "time": "Fri Mar 03 20:31:12 2023 +0000"
      },
      "committer": {
        "name": "Kevin Dagostino",
        "email": "kevindagostino@google.com",
        "time": "Fri Mar 03 21:57:29 2023 +0000"
      },
      "message": "Enable parallelCompile since golang is now \u003e\u003d 1.9\n\nTest: m nothing\nChange-Id: I38cdd83ca9b17263155433abb65fb4f97b5ec70b\n"
    },
    {
      "commit": "ce85ecb176d38362697614d6efa23591b7cf688e",
      "tree": "f00318e71d8d0fb591a285fef00c33e03bed1acc",
      "parents": [
        "26e44b7b786c8b14ad220f7d359b5e8c9b806d02"
      ],
      "author": {
        "name": "Usta Shrestha",
        "email": "usta@google.com",
        "time": "Fri Feb 17 17:52:47 2023 -0500"
      },
      "committer": {
        "name": "Usta (Tsering) Shrestha",
        "email": "usta@google.com",
        "time": "Thu Feb 23 02:27:26 2023 +0000"
      },
      "message": "cosmetic: readability\n\nTest: run `m nothing` and `m nothing --empty_ninja_file`\nBug: NA\nChange-Id: I6fd81667ea2d636139ae38bc36315f8710b72c25\n"
    },
    {
      "commit": "58a29728ea7f8ca5b1fa4c196e51eae8b38e2a90",
      "tree": "2bd583c8bed94a70ebd37d247b2af838f324475c",
      "parents": [
        "c5baf11a2d863555db3a0054cc8f0782f86237bd"
      ],
      "author": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Wed Feb 08 23:33:56 2023 -0500"
      },
      "committer": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Wed Feb 08 23:33:56 2023 -0500"
      },
      "message": "Close ninja file descriptor\n\nWith this close() missing, especially with large ninja files, soong paid\nthe runtime cost at arbitrary times during the rest of its execution (or\nduring process cleanup).\n\nTest: Manual runs of `m nothing` and verifying timing metrics\nChange-Id: Ibdfbf7371cfc4c58c485e76f96b8e9b9ad900972\n"
    },
    {
      "commit": "a405cf7f6ab753bd3cf17a978a44ce11fa62ad73",
      "tree": "e12b3217018dec5699065e55324fd1a4992f7153",
      "parents": [
        "08343b7a891322e63aabd7696c174ccdab198e60",
        "f0e02237da876ac9ae0c8102b14d445d7982e82a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 21 15:44:42 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 21 15:44:42 2022 +0000"
      },
      "message": "Merge changes I516c984b,I2b3354de\n\n* changes:\n  comment on how glob files are written\n  cosmetic: use map[_]struct{}  for set semantics\n"
    },
    {
      "commit": "f0e02237da876ac9ae0c8102b14d445d7982e82a",
      "tree": "9472d8a61d09a3d0e3fc9bea631fcc0134afc72c",
      "parents": [
        "09e0dd2ec941464ba1359a45067b45d65f420419"
      ],
      "author": {
        "name": "Usta Shrestha",
        "email": "usta@google.com",
        "time": "Tue Dec 20 17:30:18 2022 -0500"
      },
      "committer": {
        "name": "Usta Shrestha",
        "email": "usta@google.com",
        "time": "Wed Dec 21 01:04:19 2022 -0500"
      },
      "message": "comment on how glob files are written\n\nBug: NA\nTest: NA\nChange-Id: I516c984b62d07ca7f188b2faef1466c5720b3b22\n"
    },
    {
      "commit": "08343b7a891322e63aabd7696c174ccdab198e60",
      "tree": "ec30922474352af22f09c98195a5898b4fd7f4bc",
      "parents": [
        "9bc3a984d7b7d2a816afcedc21a9f7ad1a82167d"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Mon Dec 12 21:25:50 2022 -0800"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Wed Dec 14 10:27:31 2022 -0800"
      },
      "message": "bootstrap.Args should contain only relevant command line arguments\n\nSoong/Bazel-specific arguments are now kept in Soong.\n\nTest: treehugger\nChange-Id: If37bc6ea60b58173baa981bb5c85bfc90102005c\n"
    },
    {
      "commit": "c3887c2bbbfee6f8df1388945acae04e06518a94",
      "tree": "d81bc343704073a7d134427e3e5cb2dff04ecb62",
      "parents": [
        "99f7962b35ae7cfc7ab9e6ab88d006ceefec696f",
        "ed4af01be6c296fc80f8d11a5008e3122cfb6d5e"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Mon Dec 05 23:50:23 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 05 23:50:23 2022 +0000"
      },
      "message": "Merge \"Conditional inclusion of blueprint modules\""
    },
    {
      "commit": "ed4af01be6c296fc80f8d11a5008e3122cfb6d5e",
      "tree": "9ed1824f7df6ee15248a67f240d1a2458c19601d",
      "parents": [
        "1b457a5e10d62e2fd10afae82f7a3e8862237760"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Tue Nov 08 19:44:01 2022 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Fri Dec 02 01:46:28 2022 +0000"
      },
      "message": "Conditional inclusion of blueprint modules\n\nThis introduces a new `blueprint_package_includes` module type. If\npresent, other blueprint modules in that file will be analyzed\nif and only if the requested include tags are met\n\nexample syntax:\n```\nAndroid.bp\nblueprint_packgage_includes {\n  match_all: [\"tag1\", \"tag2\", ...],\n}\n\nother_module1 {...}\nother_module2 {...}\n```\nother_module1 and other_module2 will not be analyzed unless\ntag1,tag2, ... are set\n\nThis also adds a new object of type `IncludeTags` to the Context object,\nwhich is a container for these string keys.\n\nTest: In build/blueprint, go test ./\nTest: TH\n\nChange-Id: I79de0d7da3224a5b2025c27a5137f39d00c7382e\n"
    },
    {
      "commit": "99f7962b35ae7cfc7ab9e6ab88d006ceefec696f",
      "tree": "1d8f60c1006acf915346a5a7776a89f0c7837ec8",
      "parents": [
        "1b457a5e10d62e2fd10afae82f7a3e8862237760"
      ],
      "author": {
        "name": "MarkDacek",
        "email": "dacek@google.com",
        "time": "Tue Nov 29 21:18:05 2022 +0000"
      },
      "committer": {
        "name": "Mark Dacek",
        "email": "dacek@google.com",
        "time": "Thu Dec 01 20:15:33 2022 +0000"
      },
      "message": "Add bazel-force-enabled-modules.\n\nTest: m nothing\nChange-Id: I97d8fcb304f0d039fd7bbd3ea3d01966ae25471f\n"
    },
    {
      "commit": "1b457a5e10d62e2fd10afae82f7a3e8862237760",
      "tree": "917dbc50fbf926fa51f81d6cada77112098d6d2c",
      "parents": [
        "2a9208713e4837d01c1999dec592008838ee1fa8"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Nov 03 20:19:48 2022 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 04 18:21:31 2022 +0000"
      },
      "message": "Add VariableFuncContext argument to VariableFuncs\n\nAdd a VariableFuncContext argument to VariableFuncs that implements\nGlobWithDeps.  This will allow Soong to use optimized glob dependencies\nin VariableFuncs.\n\nBug: 257079828\nTest: no dependencies on directories in build.ninja.d\nChange-Id: Iee5fc9c9ae3087662a5d1a3d7323a87462299205\n"
    },
    {
      "commit": "0acaefea0dcc94b9bb3df18f3723de610801429d",
      "tree": "b5570069fcd58dd1445211d7a6ff540c634126da",
      "parents": [
        "31c10a12c85e39e01602378e75e5ef484e5a8330"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Oct 27 08:05:27 2022 +0000"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Oct 27 08:05:27 2022 +0000"
      },
      "message": "Add order-only inputs for primary builder.\n\nTest: Presubmits.\nChange-Id: Iefe729f6874c1154c94d10563fb2fac3dc03049a\n"
    },
    {
      "commit": "c5e959b244292e9b2d9af95fb0804c28fbe1718b",
      "tree": "8d336a6d55907cd1ac081a6f8802b995fdd467b9",
      "parents": [
        "ad9fbde7de9adfd2516c85810863ed3c8b793202"
      ],
      "author": {
        "name": "MarkDacek",
        "email": "dacek@google.com",
        "time": "Tue Oct 18 20:35:45 2022 +0000"
      },
      "committer": {
        "name": "MarkDacek",
        "email": "dacek@google.com",
        "time": "Tue Oct 18 20:35:45 2022 +0000"
      },
      "message": "Add staging mode to soong build.\n\nThis is to build bazel targets that are nearing readiness for prod mode.\n\nBug: 254265047\nTest: m nothing\nTest: m nothing --bazel-mode-dev\nTest: m nothing --bazel-mode-staging\nChange-Id: Ie8336ec4ad70c0c9bd6d74f3b0a278c85fd5df2d\n"
    },
    {
      "commit": "71ce3eae126090b814a91f219cfeb727bf5519fd",
      "tree": "308d30faaf31495e9fcd7d75d8da01687eb46ac3",
      "parents": [
        "83ede83a3101f0fc9a678e1eec97cb9b6ed4c6a0"
      ],
      "author": {
        "name": "usta",
        "email": "usta@google.com",
        "time": "Fri Sep 16 22:10:14 2022 -0400"
      },
      "committer": {
        "name": "Usta (Tsering) Shrestha",
        "email": "usta@google.com",
        "time": "Tue Sep 20 05:15:24 2022 +0000"
      },
      "message": "cosmetic: fail fast on empty module list\n\nalso minor refactoring to limit var scopes\n\nTest: m nothing and ensure ninja files are generated\nBug: N/A\nChange-Id: If7bdede4e54687955896b03ab11ef771855d2225\n"
    },
    {
      "commit": "83ede83a3101f0fc9a678e1eec97cb9b6ed4c6a0",
      "tree": "eda51a1ebda6c71afe2cf1363b5b013c3952a307",
      "parents": [
        "31ce118f0e479edb02032d0714ee6fb76777d3f3"
      ],
      "author": {
        "name": "usta",
        "email": "usta@google.com",
        "time": "Fri Sep 16 21:27:28 2022 -0400"
      },
      "committer": {
        "name": "Usta (Tsering) Shrestha",
        "email": "usta@google.com",
        "time": "Tue Sep 20 05:13:27 2022 +0000"
      },
      "message": "cleanup: remove deprecated module `ioutil`\n\nTest: m nothing and check bootstrap.ninja and build.ninja file\nBug: N/A\nChange-Id: I8c2f2d8cb452955921b2287ec2c621909ebde5e4\n"
    },
    {
      "commit": "a034bea7e93dc7a5551a39f02294c24c262566fd",
      "tree": "b04a56f44dd1780ebdc99fceab714aa4677b9773",
      "parents": [
        "8e5808e7470cbaf54807a1af54c8875ffc9870a5"
      ],
      "author": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Fri Aug 19 11:35:54 2022 -0400"
      },
      "committer": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Fri Aug 19 11:35:54 2022 -0400"
      },
      "message": "Add bazelmode and bazelmodedev as command args\n\nTest: See attached topic CLs\nChange-Id: I7a6290702f6cd721ef5f67e885b3dfc4b98edeb0\n"
    },
    {
      "commit": "91f638f69203d215de7a03174e6974970f621bc6",
      "tree": "cabc1eab30a4b2184956650a55d7466ec5895f23",
      "parents": [
        "c6d80893cbeb2e252189142fa88738bbf3ff257a"
      ],
      "author": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Tue May 10 13:46:40 2022 -0400"
      },
      "committer": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Tue May 10 13:46:40 2022 -0400"
      },
      "message": "Support pre-build-action hook in blueprint\n\nThis allows for a bazel-invocation hook in mixed builds, which allows\nfor mixed builds to take place in only a single pass, greatly improving\nits performance and complexity.\n\nTest: Conjunction with build/soong CL\nChange-Id: If89fb56830b4eb06d3263d6ca6da7b285e7ba315\n"
    },
    {
      "commit": "18ebb2318aeed61cd707332dd794c5edecc6e9d3",
      "tree": "85cc485a084590a955f7366545adc559a938dc72",
      "parents": [
        "5860caea339440f1040ee841c4e6bcfb4fd286ea"
      ],
      "author": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Fri Mar 25 00:56:02 2022 -0400"
      },
      "committer": {
        "name": "Chris Parsons",
        "email": "cparsons@google.com",
        "time": "Fri Mar 25 13:15:17 2022 -0400"
      },
      "message": "Add event handling to blueprint for metrics\n\nIn conjunction with soong/build changes, this materialized runtime\nmetrics for various soong_build events.\n\nTest: Manually verified materialized protos for bp2build, mixed builds,\nand legacy build.\n\nChange-Id: Ia92403605e3063028dbf6a1ded8449c190b9e63e\n"
    },
    {
      "commit": "62823dcf013d9a7550fa806200aceb3a123aab94",
      "tree": "c813e45a71956b73437a9301b36a5222a3c6b672",
      "parents": [
        "ee7a5d7a1645f3ead9674f54421ee0f7003dd0ce"
      ],
      "author": {
        "name": "Usta Shrestha",
        "email": "usta@google.com",
        "time": "Tue Jan 11 02:40:54 2022 -0500"
      },
      "committer": {
        "name": "Usta Shrestha",
        "email": "usta@google.com",
        "time": "Tue Jan 18 16:51:12 2022 -0500"
      },
      "message": "use iota for \"enum\"\n\nTest: m nothing\nBug: N/A\nChange-Id: I9d59796cbf1dc3dc8e1e9fc536b50c1dea3a5f61\n"
    },
    {
      "commit": "a67610a75f69b6de45e40ef83baf1b700fb67a76",
      "tree": "a22b115b3085da9891261bae9dc0d9141066fea2",
      "parents": [
        "1a1ec4b59cf1709211207dcc17ece498aacb482c"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Jan 05 10:26:53 2022 +0100"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Jan 05 10:29:48 2022 +0100"
      },
      "message": "Allow soong_ui to set env vars for soong_build .\n\nThis is used to make GODEBUG\u003dasyncpreemptoff\u003d1 only be set in debug mode\nso that production is not affected.\n\nTest: Presubmits.\nChange-Id: Idb15ad20bb74ba3f896699715e3208c1287a5e82\n"
    },
    {
      "commit": "1a1ec4b59cf1709211207dcc17ece498aacb482c",
      "tree": "ee9e10a2002582a2916ff1f1d4e1e49e5c6b381f",
      "parents": [
        "3dab5143bde607b73e1b3845fedb6548eed796da",
        "635fc35a0965482f99fc981d686a8d849024598a"
      ],
      "author": {
        "name": "Lukács T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Jan 05 09:06:19 2022 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 05 09:06:19 2022 +0000"
      },
      "message": "Merge \"Set GODEBUG\u003dasyncpreemptoff\u003d1 for soong_build.\""
    },
    {
      "commit": "3dab5143bde607b73e1b3845fedb6548eed796da",
      "tree": "9fa01326f8984bb278b6a0deb29b009bb26b6537",
      "parents": [
        "a08e7221924a335a986b622e5cff8c1aedc7667b"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Jan 04 14:49:54 2022 +0100"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Jan 04 14:49:54 2022 +0100"
      },
      "message": "Allow specifying the pool for soong_build calls.\n\nTest: Presubmits.\nChange-Id: Iff0edf595b1868ccdda4ea6391c1057e0f86cd9b\n"
    },
    {
      "commit": "635fc35a0965482f99fc981d686a8d849024598a",
      "tree": "3c748741e424abaaffa513efc4e9773e4a782dfd",
      "parents": [
        "a08e7221924a335a986b622e5cff8c1aedc7667b"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Jan 04 12:34:09 2022 +0100"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Jan 04 12:37:24 2022 +0100"
      },
      "message": "Set GODEBUG\u003dasyncpreemptoff\u003d1 for soong_build.\n\nThis makes debugging with Delve much faster, sometimes by an order of\nmagnitude because Delve does not have to deal with the many SIGURG\nsignals that are used to stop preempted goroutines this way.\n\nThis could in theory result in a performance loss, but running\n`rm -f out/soong/build.ninja; time m nothing` five times demonstrated no\nchange in the execution time.\n\nTest: Presubmits + performance testing as described above.\nChange-Id: I438564bcaf70d2a50147cf54cdfac6dcfe925ce5\n"
    },
    {
      "commit": "8e7786a0fd0e2fa1dfd9d11556ce06ae2bf9abfc",
      "tree": "473f659d1835cc3e078b50ce65ee49c486749e72",
      "parents": [
        "5ff5fe3e66cb0f030d736d7139dac0bcbfaa1781"
      ],
      "author": {
        "name": "Jingwen Chen",
        "email": "jingwen@google.com",
        "time": "Mon Dec 06 13:30:18 2021 +0000"
      },
      "committer": {
        "name": "Jingwen Chen",
        "email": "jingwen@google.com",
        "time": "Mon Dec 06 13:30:18 2021 +0000"
      },
      "message": "Forward descriptions to primary build invocations.\n\nTest: m nothing bp2build json-module-graph queryview soong_docs\nChange-Id: Ic64238dc10a90c923cf5559d1bbbc51fd0922e31\n"
    },
    {
      "commit": "6fbc68d41d9c3d3a4cd57a8adfaf72f7b76f31be",
      "tree": "5f863a0ba16f3b27268df6d8962b4d40532a7dce",
      "parents": [
        "0bf636f3ef7233ec1fb8df4ac88f640c11804498"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Nov 04 09:56:07 2021 +0100"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Nov 10 12:37:55 2021 +0100"
      },
      "message": "Move bpglob to outside of the Ninja action graph.\n\nIt\u0027s in reality built by Microfactory quite early in the build which\ntakes care of incrementality in bpglob itself.\n\nTest: Presubmits.\nChange-Id: I066a6e85f48e9cfec4efd46cb1f615c68b806080\n"
    },
    {
      "commit": "0bf636f3ef7233ec1fb8df4ac88f640c11804498",
      "tree": "0c5e3a0c04645354fa581510546cd85493d63b9e",
      "parents": [
        "f12f1d7d1ed967fb42f332b7593ff1a5ac1ddbb1",
        "d14f342fa6518c76496f085a74f82b45e0da8d0a"
      ],
      "author": {
        "name": "Trevor Radcliffe",
        "email": "tradical@google.com",
        "time": "Fri Nov 05 16:11:23 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 05 16:11:23 2021 +0000"
      },
      "message": "Merge \"Change bpdoc to separate entries with the same type\""
    },
    {
      "commit": "f12f1d7d1ed967fb42f332b7593ff1a5ac1ddbb1",
      "tree": "370b69b1258c4c1b2957b34449b7e42d2aac72bd",
      "parents": [
        "37d151ff956437827eb2f367a963bb7848372ffd"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Nov 04 11:46:57 2021 +0100"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Nov 04 11:48:43 2021 +0100"
      },
      "message": "Remove the -v argument from bpglob.\n\nNow that we have bootstrapEpoch, it\u0027s not necessary anymore.\n\nTest: Presubmits.\nChange-Id: If36cf3c8f71c1023003f408b4e799bbbdba6fa27\n"
    },
    {
      "commit": "d14f342fa6518c76496f085a74f82b45e0da8d0a",
      "tree": "0919154552b70a4ce78c59ca2018e6f4695002d4",
      "parents": [
        "0e306e7a89eb332b97e800955dbc5aff46c1430d"
      ],
      "author": {
        "name": "Trevor Radcliffe",
        "email": "tradical@google.com",
        "time": "Tue Nov 02 15:59:48 2021 +0000"
      },
      "committer": {
        "name": "Trevor Radcliffe",
        "email": "tradical@google.com",
        "time": "Tue Nov 02 15:59:48 2021 +0000"
      },
      "message": "Change bpdoc to separate entries with the same type\n\nPresently, entries in the Soong reference docs that\nshare the same type are condensed into a single entry.\nThis is very unintuitive, so this change removes that\nfunctionality.\n\nFixes: 204441523\nTest: bpdoc_test.go\nTest: build and compare Soong docs\nChange-Id: Ic03891a8a7a29b5f7ee58c01b2fa05a0c27e0a2b\n"
    },
    {
      "commit": "37d151ff956437827eb2f367a963bb7848372ffd",
      "tree": "11936ef5cdbab457ff077755fcc1709d0ee66c16",
      "parents": [
        "0e306e7a89eb332b97e800955dbc5aff46c1430d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Oct 29 13:09:09 2021 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Nov 01 22:54:02 2021 -0700"
      },
      "message": "Move bpglob out of ToolDir\n\nToolDir is going to become unstable when switching between KatiEnabled\nand Soong-only builds while the duplication between out/soong/host and\nout/host is resolved.  bpglob gets executed very early during bootstrap,\nbefore the primary builder has run to update the paths to match the\ncurrent configuration.  Move it into SoongOutDir() so that its path\nis more stable.\n\nThe copy of bpglob in ToolDir is still used when bpglob is used by the\nprimary builder through bootstrap.GlobFile.\n\nBug: 204136549\nTest: m nothing\nChange-Id: Ida51997b6408d7c265f3ba343278e5e2968467d3\n"
    },
    {
      "commit": "1109cd96b7693d67e193d48f0d75c7f0c05d2f3c",
      "tree": "caa7abda4221cfad0fbe847f055df3b26efbd3f9",
      "parents": [
        "b3ba44c8d3245120124f403a11d881b3c1e8da1d"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Tue Aug 31 00:07:30 2021 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Mon Sep 20 22:33:05 2021 +0000"
      },
      "message": "bpdocs for struct types created using reflection\n\nstruct types defined using reflection have empty PkgPaths(), due to\nwhich they were not added to the generated bpdocs. This CL allows\nus to generate bpdocs for such struct types.\n\nFor each field in the struct, the algorithm checks the following and\ncreates a PropertyStruct object accordingly\n1. If field is a primitive type (Base condition)\n2. If field is another exported struct (Base condition)\n3. If field is another struct created using reflection (Recurse)\n\nTest: m soong_docs\nTest: java_sdk_library_import before\nhttps://ci.android.com/builds/submitted/7710820/linux/latest/view/java.html#java_sdk_library_import\nand after\nhttps://spandandas.users.x20web.corp.google.com/docs/java.html#java_sdk_library_import\nBug: 172797653\n\nChange-Id: I0349e405fd290d427fa0b38a109b4212aace50c6\n"
    },
    {
      "commit": "d9d298c7607722584b965d8704b3bf77944c4381",
      "tree": "0da52d9476362d4e55d673ec5100b25e58d3f1ae",
      "parents": [
        "5d5ed5fc6b6f6c192d2337d5592bcd31773cee02"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 08 15:32:52 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 08 15:32:52 2021 +0200"
      },
      "message": "Remove UseValidationsForGoTests.\n\nWhenever it was called, it returned true.\n\nTest: Presubmits.\nChange-Id: Iabe5a99b8363771d06b200d4641d9ce477ba5b6e\n"
    },
    {
      "commit": "5d5ed5fc6b6f6c192d2337d5592bcd31773cee02",
      "tree": "29ceb686a89ae109e1147f0c7c88211bc8c311ef",
      "parents": [
        "70d6564d7da6d1a896427ae4e8d8cac3110912a0"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Sep 07 12:36:52 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 08 09:35:56 2021 +0200"
      },
      "message": "Remove PrimaryBuilderExtraFlags and cull Args.\n\nPrimaryBuilderExtra flags was only used from soong_ui and has nothing to\ndo with Blueprint files or modules and Args contained a lot of members\nthat were likewise only used for plumbing withing soong_ui or for\ncommand line processing for soong_build.\n\nTest: Presubmits.\nChange-Id: Ibf009e446b4044309a331592a88a4aa86b4801e3\n"
    },
    {
      "commit": "70d6564d7da6d1a896427ae4e8d8cac3110912a0",
      "tree": "d96713e4626c539e8216d0819db42cd75291ff32",
      "parents": [
        "a9768e1ad7f7db64c6e8a6a16e45db032e0ff568"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 08 09:27:13 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 08 09:34:56 2021 +0200"
      },
      "message": "Prefix file names with ctx.SrcDir() in docgen.\n\nThis is because docgen will be called from the bootstrap Ninja file with\ncwd \u003d\u003d /.\n\nSide cleanup: remove an unused template.\n\nTest: Presubmits.\nChange-Id: Ia5ff10247becbabc7a76c21f4ed05d654a7b20c3\n"
    },
    {
      "commit": "a9768e1ad7f7db64c6e8a6a16e45db032e0ff568",
      "tree": "c99641a709dcf915ff1b52b4fe9fcdcd7226f5eb",
      "parents": [
        "f99e89c1472de5aa8cd9196285e0ae3e376834dd"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Sep 07 17:54:32 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Sep 07 18:12:29 2021 +0200"
      },
      "message": "Pass StopBefore as an argument to RunBlueprint.\n\nIts value is a function of the call site, so it doesn\u0027t make a lot of\nsense to plumb it through the configuration.\n\nTest: Presubmits.\nChange-Id: I5081650818664f283ebc5dc04daef90c26759353\n"
    },
    {
      "commit": "f99e89c1472de5aa8cd9196285e0ae3e376834dd",
      "tree": "f125c69a899f9d9453cb12e66afe8e4e61c2346b",
      "parents": [
        "5e56efb7c80c7e6b0439297cbeb08916bfcf886a"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Sep 02 10:03:11 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Sep 06 11:35:28 2021 +0200"
      },
      "message": "Remove ConfigRemoveAbandonedFilesUnder.\n\nIt was not implemented by anyone.\n\nTest: Presubmits.\nChange-Id: I8b98620c0ef9c1f242fe7fc0a7d810f2af15d042\n"
    },
    {
      "commit": "9b435b8089d699e9490de0b846e674e97a11a0ad",
      "tree": "90629387e1593c26e524f2464e6fcd392a0d8ad4",
      "parents": [
        "d782b504e0939970c4f542a5e0a6a86f1b4eedd4"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 01 16:25:38 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Sep 02 13:29:10 2021 +0200"
      },
      "message": "Make cmdline args consistent with what they do.\n\nTest: Presubmits.\nChange-Id: I6d5f827e06526a121f915aae57c6f086ba44f21d\n"
    },
    {
      "commit": "d782b504e0939970c4f542a5e0a6a86f1b4eedd4",
      "tree": "982478d0efe4f58adf0c0dfe3c680dfbaa4264a3",
      "parents": [
        "ceb3c43f65e70b9be653122e9dfa0d5c1b380e78"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Sep 02 09:57:30 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Sep 02 09:58:45 2021 +0200"
      },
      "message": "Remove the bootstrap.Config class.\n\nIt was confusing because there are two concepts with the same name:\nthebootstrapping config special-cased in the bootstrap modules /\nsingletons and the \"global\" config.\n\nThis change folds the first into the second.\n\nA further next step would be to split the Go parts and the Ninja parts\n(subninjas + primary builder invocation) apart, but at some point, I\nshould stop gold-plating this.\n\nTest: Presubmits.\nChange-Id: Id341dee664a9d2527535f4f9980e5f0d10139eef\n"
    },
    {
      "commit": "ceb3c43f65e70b9be653122e9dfa0d5c1b380e78",
      "tree": "481f60ecefb06b7decc9c9f51717244adedced86",
      "parents": [
        "ce41c169b594be56d7da265ee907c30f98e78df8"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 01 08:58:07 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Sep 01 11:55:00 2021 +0200"
      },
      "message": "Simplify bootstrapping:\n\n- Remove the bootstrap_go_binary module type in favor of\nblueprint_go_binary\n- Make it so that all the binaries used during bootstrapping are in the\nhost tool directory so that the bootstrap and main Ninja files are\nconsistent\n\nTest: Presubmits.\n\nChange-Id: I00744fec0474fbea89db6c0c0338856453138564\n"
    },
    {
      "commit": "ce41c169b594be56d7da265ee907c30f98e78df8",
      "tree": "d2d73bb15476b4a592e66bbbd81fbcd97340acc0",
      "parents": [
        "0459f6b18e0262df37b78f12d4e7bfe39e915d43"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Aug 31 10:42:29 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Aug 31 10:58:04 2021 +0200"
      },
      "message": "Remove some unnecessary arguments from Blueprint.\n\nWhat\u0027s gone:\n\n- TopFile (it\u0027s always Android.bp)\n- GeneratingPrimaryBuilder (we don\u0027t make that distinction anymore)\n\nAlso rename BuildDir and NinjaBuildDir to SoongOutDir and OutDir,\nrespectively, to be consistent with the rest of the code.\n\nTest: Presubmits.\nChange-Id: I55ecb02a59fe68bf5674395a108181ea7557b21f\n"
    },
    {
      "commit": "0459f6b18e0262df37b78f12d4e7bfe39e915d43",
      "tree": "51af6176f6e5bc2b0ba0db75924354dc64588903",
      "parents": [
        "5c4abb15e3b84ab0bcedfa119e2feb397d1fb106"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Aug 25 16:42:18 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Fri Aug 27 15:56:00 2021 +0200"
      },
      "message": "Remove Depfiles from bootstrap.Args .\n\nIt is not used anymore; Soong assumes that the depfile is just the name\nof the output file with a \".d\" suffix.\n\nTest: Presubmits.\nChange-Id: Ifbf722dcdffc8420e12a032e23ab791a6be5a736\n"
    },
    {
      "commit": "5c4abb15e3b84ab0bcedfa119e2feb397d1fb106",
      "tree": "83dbfb7e2634cc03d5c65b39482d3dca0b751c35",
      "parents": [
        "51b625928df22cba78c73c5c63691eda86be0e6b"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 26 15:08:09 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 26 15:08:09 2021 +0200"
      },
      "message": "Rename BuildDir and NinjaBuildDir.\n\nThese are just out/ and out/soong/ and the old names were quite\nconfusing.\n\nTest: Presubmits.\nMerged-In: Idd9ce3c38a259faabcc56f0cd3fdac8b289123b1\nMerged-In: I334ab40c668d2a94536f3e63d5f1fa0b401388ac\nChange-Id: Ib7c568c6a97701f2240c5e3f0f2ce67397819ac0\n"
    },
    {
      "commit": "51b625928df22cba78c73c5c63691eda86be0e6b",
      "tree": "028d9d38eb74a8c545ca86bf659299ca222bdc0f",
      "parents": [
        "5f0a740fedc392be03d9aa5adb6fb2417d135fb6"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 19 16:26:36 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 19 16:26:36 2021 +0200"
      },
      "message": "Do not separate .primary and .bootstrap dirs.\n\nThis makes it possible to share work between the bootstrap and the main\nNinja file.\n\nAs a side fix, remove the reference to $srcDir from moduleSrcDir() since\nthat is hardwired to \".\" anyway.\n\nTest: Presubmits.\nChange-Id: Ia4a251dd34273ec3e0436ac7a2fbafe4ef46c73f\n"
    },
    {
      "commit": "5f0a740fedc392be03d9aa5adb6fb2417d135fb6",
      "tree": "7ff832265de73edd3a13184791271efc8cf463ad",
      "parents": [
        "3bec89465e6a644c3200be0f20ca1c1f216d9e0d"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 19 12:23:23 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 19 13:46:22 2021 +0200"
      },
      "message": "Do not reference Ninja variables in Makefiles.\n\ninstallPath was included by androidmk.go in the Soong-generated\nAndroid.mk file, which means that the Ninja variable reference\n`$buildDir` passe through Kati, with unpredictable results.\n\n`$buildDir` is still used in a few places, but those are not problematic\nbecause they are not copied to Android.mk (they could probably be\nremoved, but it\u0027s not trivial enough to be done as a drive-by fix)\n\nTest: Presubmits.\nChange-Id: I6a5ea8b1679001ff685d263310cb061d3a6a992e\n"
    },
    {
      "commit": "008b6ea661f39c917a932268100ff422b79a0a96",
      "tree": "8dd05056cf3d8156f422a4a87d7493f9c8dbac60",
      "parents": [
        "6ec924c12be38c4cf4905b1b4e5a143c851d5150"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Tue Aug 17 17:52:15 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 19 08:16:19 2021 +0200"
      },
      "message": "Do not do glob-related things in RunBlueprint().\n\nFrom now on, the responsibility of writing build-globs.ninja and adding\nthe glob list files to build.ninja.d will be the responsibility of\nwhoever calls Blueprint.\n\nIt\u0027s nicer this way because the bootstrap Blueprint invocation does not\nneed globs and Blueprint can be invoked multiple times from the\nsoong_build binary depending on what it does.\n\nRegrettably, the little Blueprint invocation that generates\nbuild-globs.ninja still requires a reference to a BootstrapConfig\nbecause GlobRule references ${buildDir}.\n\nSide cleanup: remove Args.DocFile, which was unused.\n\nTest: Presubmits.\nChange-Id: I37586966e3d6b7557a490ed1ae81ec596ec66ee5\n"
    },
    {
      "commit": "6ec924c12be38c4cf4905b1b4e5a143c851d5150",
      "tree": "f3869547d88259496c18ca47ede11d66a360b36e",
      "parents": [
        "980c1f0c728b72aa6b5e0c47ba808269e520514e"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 17:04:50 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 17:04:50 2021 +0200"
      },
      "message": "Remove Srcdir() from BootstrapConfig.\n\nIt was always \".\".\n\nTest: Presubmits.\nChange-Id: I0612b9b07233659adc708b9710db9aec6e24f224\n"
    },
    {
      "commit": "980c1f0c728b72aa6b5e0c47ba808269e520514e",
      "tree": "2f9bc2f7f99765971ac6e89971e5cdb1dd9af0ab",
      "parents": [
        "016a7dd6ef15fc3e9bbdada9bb0db16c336add27"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 15:14:26 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 15:28:04 2021 +0200"
      },
      "message": "Remove global variables in command.go .\n\nThere used to be two:\n- The absolute source directory is now threaded through the code instead\n- The command line arguments are moved to soong_build\n\nTest: Presubmits.\n\nChange-Id: Ie09de1a2862ec4ced2c7385198300359f805127d\n"
    },
    {
      "commit": "016a7dd6ef15fc3e9bbdada9bb0db16c336add27",
      "tree": "09ffad104f62f45869d906bfc148ca4a69082b68",
      "parents": [
        "64ee4262a04e78448a647a4fd4314ebf06a8d986"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 14:07:55 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 14:09:47 2021 +0200"
      },
      "message": "Delete support for standalone Blueprint.\n\nNow that Blueprint has been merged with Soong, a large amount of code is\nunnecessary.\n\nTest: Presubmits.\nChange-Id: I8d30d8b80f37fdc6a9db630a1792c57c7d6edb38\n"
    },
    {
      "commit": "64ee4262a04e78448a647a4fd4314ebf06a8d986",
      "tree": "c36425d495433d0db7cbed2ef5864c3ab7dc1ddb",
      "parents": [
        "0eb24a7041c26bba2061a96a45c6144c075cf3ce"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 13:42:42 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 13:42:42 2021 +0200"
      },
      "message": "Remove the ability to emit Blueprint docs.\n\nThis is not necessary anymore now that Blueprint doesn\u0027t have a separate\nexistence and Soong\u0027s documentation generation uses a completely\nseparate code path.\n\nTest: Presubmits.\nChange-Id: Ibc9e57379c5f8ee9a06d90fbe81fac314f01ee92\n"
    },
    {
      "commit": "0eb24a7041c26bba2061a96a45c6144c075cf3ce",
      "tree": "698eaf35c05555684c4449d6ac6317fca3e3e962",
      "parents": [
        "d3a06377025e0eca40cfa5f25b4326361c3f1d9b"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 11:48:07 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 11:48:51 2021 +0200"
      },
      "message": "Explain why build.ninja is a non-default output.\n\nTest: Only comment change.\nChange-Id: I335670b7f3bed0fe34fdb1d625b6e459146cc192\n"
    },
    {
      "commit": "d3a06377025e0eca40cfa5f25b4326361c3f1d9b",
      "tree": "4f898f1462f8effcbbafec884fe8b56c8607558f",
      "parents": [
        "8979d4c54cae3b182d1f79312154c4944c2c2f0f"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Aug 12 15:29:03 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Aug 16 09:16:09 2021 +0200"
      },
      "message": "Separate the concept of subninjas and glob files.\n\nThis makes the distinction between what the bootstrap .ninja file and\nthe main .ninja files do clearer: the bootstrap .ninja file includes the\nbuild-globs.ninja file(s) which the main .ninja file writes.\n\nThis required removing the \"default\" statement from said bootstrap\n.ninja file: now we can build more than one thing instead of just\nbuild.ninja and thus soong_ui explicitly tells Ninja what to do instead.\n\nOn the side, stop catering for the use case where the bootstrap\nBlueprint invocation uses globs: Soong\u0027s does not and that\u0027s our only\nuse case.\n\nTest: Presubmits.\n\nChange-Id: Icffce31928242cfe9cdab56b290a37598d32a58c\n"
    },
    {
      "commit": "8979d4c54cae3b182d1f79312154c4944c2c2f0f",
      "tree": "a648957638cf160bad4a0b2bd1906a3551865414",
      "parents": [
        "030150d8f9d164783ea661f07793c45198739cca"
      ],
      "author": {
        "name": "Jingwen Chen",
        "email": "jingwen@google.com",
        "time": "Thu Aug 12 09:41:20 2021 +0000"
      },
      "committer": {
        "name": "Jingwen Chen",
        "email": "jingwen@google.com",
        "time": "Thu Aug 12 10:13:44 2021 +0000"
      },
      "message": "Expose build-globs.ninja write function to android/soong.\n\nThis enables bp2build to write its own build-globs.ninja file.\n\nTest: soong integration tests\nFixes: 193650250\nChange-Id: Icb35f3cf3c30929dab1b2c2e9b244321be30f967\n"
    },
    {
      "commit": "3a495910adcd8cd954740c696ab9722b9cbf17e3",
      "tree": "560b8d2da682e5e9b055b44d702ef382ef90d1bb",
      "parents": [
        "16caaa4817c495f16af8b330f90a8ecb333eed92"
      ],
      "author": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Mon Jun 14 03:54:26 2021 +0000"
      },
      "committer": {
        "name": "Spandan Das",
        "email": "spandandas@google.com",
        "time": "Tue Jun 15 17:57:03 2021 +0000"
      },
      "message": "Delete creation of empty glob file\n\nAn empty glob file would be created inside the source tree if\nsoong_build is invoked directly (instead of via soong_ui). This logic is\nnow moved to soong/ui/build to prevent this behavior\n\nBug: 187194795\nTest: Ran the following command locally for the target\nart-target-arm:git_master-art\n```\n. ./build/envsetup.sh \u0026\u0026 lunch armv8-eng \u0026\u0026\nart/tools/buildbot-build.sh --target\n```\nBefore change glob file is created in $TOP/.bootstrap\nAfter change glob file is created in $TOP/out/soong/.bootstrap\n\nChange-Id: I6745996c940d790d1f1f387ca08aafc6a8a669df\n"
    },
    {
      "commit": "0f0e304d08e95b0ea103bcfd0b6d2078aecbaf82",
      "tree": "4065890f6e5142f8f1ea1be68c3cf1d0a116bca7",
      "parents": [
        "69e2bbe2df2b1765c953ebdcb481a1f63ad9fad4"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed May 19 19:24:32 2021 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon May 24 11:36:37 2021 -0700"
      },
      "message": "Add `blueprint_go_packages` phony to build all go packages\n\nWe have `blueprint_tools` that can build all Go binaries (and run their\nassociates tests). But if a package is not (yet) used, it won\u0027t be\nincluded there. This makes testing the build of new Go packages\ndifficult.\n\nTest: m blueprint_go_packages\nChange-Id: I7a67cf2593fedcf499d40d82c266d3b0d7ebbef2\n"
    },
    {
      "commit": "9021eef07bd99c1dfb70db51d5d8a98491899ec3",
      "tree": "2edfab699fcc36aaa0626884d516fd69d27114bd",
      "parents": [
        "d04dcc89f49889b713fe59a05232daa1cf49940f",
        "2523698c12a78fb6b860ce6da836bafad4409b30"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Apr 20 16:16:40 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 20 16:16:40 2021 +0000"
      },
      "message": "Merge \"Speed up globs with sharding\""
    },
    {
      "commit": "d04dcc89f49889b713fe59a05232daa1cf49940f",
      "tree": "599fdeed70a3dc5a7b09ee92bf7d9d9ce83a10e1",
      "parents": [
        "8308aab95e8590283dfecde08c592a47bf00941c",
        "f4d43ac0d70f49f0f79a405a80f3092040e705b6"
      ],
      "author": {
        "name": "Lukács T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Apr 19 06:46:52 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 19 06:46:52 2021 +0000"
      },
      "message": "Merge \"Remove the extraNinjaFileDeps arg of RunBlueprint.\""
    },
    {
      "commit": "8308aab95e8590283dfecde08c592a47bf00941c",
      "tree": "53352560bf4125eb65eefc39e70c1c781f103564",
      "parents": [
        "45222ec3ca6e7117aac2b10795c5ee37f62188f5",
        "f646afb52fff01bdc3ca8150b8e6f583c618203e"
      ],
      "author": {
        "name": "Lukács T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Apr 19 06:46:16 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 19 06:46:16 2021 +0000"
      },
      "message": "Merge \"Use the correct build dir.\""
    },
    {
      "commit": "2523698c12a78fb6b860ce6da836bafad4409b30",
      "tree": "3d4f2ae9a2a6e753bd5c20839d203df40d46c844",
      "parents": [
        "45222ec3ca6e7117aac2b10795c5ee37f62188f5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 05 17:20:34 2021 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 15 11:04:11 2021 -0700"
      },
      "message": "Speed up globs with sharding\n\nThere are a few cases that force all globs to be rerun at the beginning\nof the build (changes to bpglob or dependencies, second build after a\nclean build).  The number of globs has gotten high enough that rerunning\nthem all can have significant overhead to start bpglob for each one.\n\nReplace the per-glob bpglob invocations with sharded invocations using\n1024 hash buckets.\n\nBug: 159845846\nTest: glob_test.go\nTest: m nothing \u0026\u0026 m nothing\nTest: build/soong/bootstrap_test.sh\nChange-Id: Ife1f7a03c8f6b25d1be01531425d8dc2c76d1ea0\n"
    },
    {
      "commit": "45222ec3ca6e7117aac2b10795c5ee37f62188f5",
      "tree": "60f040038ba62bc8dcf87dc3c67fdaed63e21e0c",
      "parents": [
        "98e0efb9a4a48edb7deada7f0260352460f26b53",
        "7e6f6b79323b4c3e8761f6d7a88d7c9b8ff6db00"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 15 16:42:08 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 15 16:42:08 2021 +0000"
      },
      "message": "Merge \"Version bpglob command line arguments\""
    },
    {
      "commit": "f646afb52fff01bdc3ca8150b8e6f583c618203e",
      "tree": "cf809b62b27bda09153fcd4ad8db30fe8261a89a",
      "parents": [
        "98e0efb9a4a48edb7deada7f0260352460f26b53"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Apr 15 15:46:35 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Apr 15 15:46:35 2021 +0200"
      },
      "message": "Use the correct build dir.\n\nArgs.BuildDir was accidentally hard-wired to \".\" in one of my previous\nchanges, and since Blueprint is not really independent of Soong anymore,\nit\u0027s probably better to fix it in a way that doesn\u0027t involve putting\nback the almost-but-not-completely redundant \"-b\" command line argument\nto the primary builder invocation.\n\nTest: Presubmits.\nChange-Id: I76d064a99be16cd812cb47a6c448fe44b51893dc\n"
    },
    {
      "commit": "f4d43ac0d70f49f0f79a405a80f3092040e705b6",
      "tree": "1793fad4081ce8e2e24266d44779b1babeebdbe3",
      "parents": [
        "98e0efb9a4a48edb7deada7f0260352460f26b53"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Apr 15 15:05:26 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Thu Apr 15 15:05:26 2021 +0200"
      },
      "message": "Remove the extraNinjaFileDeps arg of RunBlueprint.\n\nThe only thing that was done with it was to append it to the list of\ndependencies returned, which can just as well be done by the caller.\n\nTest: Presubmits.\nChange-Id: Ibedf024de411a5881f19ed0c137a91b0898f1269\n"
    },
    {
      "commit": "7e6f6b79323b4c3e8761f6d7a88d7c9b8ff6db00",
      "tree": "ad35526229544e0a0a68d716733530bd6e1c7e4e",
      "parents": [
        "67c99255cc56f10ee20e3d3edab43d382c1571c2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 12 18:46:31 2021 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Apr 14 09:28:22 2021 -0700"
      },
      "message": "Version bpglob command line arguments\n\nbpglob is executed through the rules in build-globs.ninja to determine\nwhether soong_build needs to rerun.  That means when the arguments\naccepted by bpglob change it will be called with the old arguments,\nthen soong_build will rerun and update build-globs.ninja with the new\narguments.\n\nTo avoid having to maintain backwards compatibility with old arguments\nacross the transition, a version argument is used to detect the\ntransition in order to stop parsing arguments, touch the output file\nand exit immediately.  The version number in\npathtools.BPGlobArgumentVersion should be manually incremented when\nthe bpglob argument format changes.\n\nIf the version argument is not passed then a version mismatch is assumed.\n\nBug: 159845846\nTest: build/soong/tests/bootstrap_test.sh\nChange-Id: Id6742c7acc51af8d0d224d51e47bddea78e6e363\n"
    },
    {
      "commit": "98e0efb9a4a48edb7deada7f0260352460f26b53",
      "tree": "d13a370eb815e2b6010ff36436c36e8917193c41",
      "parents": [
        "78df853e07f5fe6bed70daf72357900532d99033"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Apr 14 13:47:52 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Apr 14 13:47:52 2021 +0200"
      },
      "message": "Make Blueprint better callable from Go:\n\n- Make the parsed command line arguments accessible from other packages\n- Separate writing the depfile from writing the Ninja file\n- Extract a method to compute the name of the file list file for globs\n\nTest: Presubmits.\nChange-Id: I4d0daf0f3776a9336da305be0108ebf70a314776\n"
    },
    {
      "commit": "78df853e07f5fe6bed70daf72357900532d99033",
      "tree": "a5b476207276604ce5afcaaecc5d25e80bf211e2",
      "parents": [
        "5ce0d78363b49b1ed17ef539d94422093aafc559"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Apr 14 10:28:54 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Wed Apr 14 10:28:54 2021 +0200"
      },
      "message": "Make it possible to call the primary builder more than once.\n\nThis is accomplished by plumbing PrimaryBuilderInvocation in from\nbootstrap.Args.\n\nThe confusing removal of \"primaryBuilderExtraFlags\" from documentation\ngeneration is because it used to (erroneously) refer to the func defined\nin command.go and its removal apparently doesn\u0027t break anything. I\nsuspect that this code path is dead within Android, but we\u0027ll need to\nwait until May to remove it.\n\nTest: Presubmits.\nChange-Id: I8763579b82bd79d5ee0f233edfd48327282e401c\n"
    },
    {
      "commit": "5ce0d78363b49b1ed17ef539d94422093aafc559",
      "tree": "0edc927549adb8b62724eb6183c114d676131d98",
      "parents": [
        "77ef79b7c4d1b252d96bfcdc5810639c38ff6c10",
        "67c99255cc56f10ee20e3d3edab43d382c1571c2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Apr 13 17:01:39 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 13 17:01:39 2021 +0000"
      },
      "message": "Merge \"Make Glob return a GlobResult\""
    },
    {
      "commit": "77ef79b7c4d1b252d96bfcdc5810639c38ff6c10",
      "tree": "cf91206b745028ae1881c237c0f109be1f77032d",
      "parents": [
        "850d3886d4941a4a754d1225cf854ee0f5258d57"
      ],
      "author": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Apr 12 12:07:02 2021 +0200"
      },
      "committer": {
        "name": "Lukacs T. Berki",
        "email": "lberki@google.com",
        "time": "Mon Apr 12 14:30:47 2021 +0200"
      },
      "message": "Move primary builder command line computation.\n\nThis makes it possible to invoke the primary builder more than once in a\nsingle Ninja file.\n\nThis required adding arguments that were hard-wired in the build.ninja\nrule to extraArgs and adding a \"set of primary builder invocations\"\nmember to bootstrap.Config . The only command line arguments that remain\nhard-wired are those which are expected to be relevant to every\ninvocation of the primary builder.\n\nAs a welcome side effect, I was able to remove a number of random\nenvironment variables that were so far special-cased ($SOONG_DELVE,\n$SOONG_DELVE_PATH and $SOONG_OUTDIR). I was also able to move writing\nthe empty stub ninja glob file to command.go from the bowels of the\nBlueprint machinery.\n\nIn theory, $TOP and $BUILDER could be removed, too, but this would\nrequire hard-coding the value of $TOP into build.ninja and I don\u0027t know\nwhat would break if I did that (it\u0027s okay to hard-wired $SOONG_DELVE and\n$SOONG_DELVE_PATH because those are only used for debugging and\n$SOONG_OUTDIR turned out to be superfluous)\n\nTest: Presubmits.\nChange-Id: Idbfd9976c4b270bc3e5a8926c8c760a8534596cf\n"
    }
  ],
  "next": "67c99255cc56f10ee20e3d3edab43d382c1571c2"
}
