)]}'
{
  "log": [
    {
      "commit": "65702194ea264a0fd01fb470bacaf39264b4f637",
      "tree": "3469201097b30e638f1e446655e1d23b33d90f8d",
      "parents": [
        "f551a7696824a9ddbac63191c489db8280aee0a4"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Aug 31 16:27:38 2023 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Sep 14 13:43:45 2023 +0000"
      },
      "message": "workspace: rules_go, gazelle, go, gVisor update\n\nThis commit not only updates rules_go and friends, but also updates\ngVisor, removes legacy protobuf usage and switches from using\nbuild_configuration to a config flag for bazel\n\nChange-Id: Idb383f35ca0fec4cb7329e9d991f08f28cf9b1fb\nReviewed-on: https://review.monogon.dev/c/monogon/+/2129\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "67023fe466d35df7ff7e606e74f3bcf51ac8085c",
      "tree": "fb5fd15306831b95c84c69d60ce32c2a623c17cf",
      "parents": [
        "c38aca282657ac1ed2fba5dd79477ffe945b5bf6"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Mon Aug 14 12:36:35 2023 +0000"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Tue Aug 15 17:10:59 2023 +0000"
      },
      "message": "Improve Nix instructions in README\n\nChange-Id: I758f9f84f449e2ea3f8cd8c28b3dbcce72584496\nReviewed-on: https://review.monogon.dev/c/monogon/+/2083\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "e1ebf729194f3673ea0638f0aceb90cb70de23aa",
      "tree": "a50df2419e2826889a14781534bdace22cee732b",
      "parents": [
        "e2a302a9062d3ebfc33ad83dd382653e067ca009"
      ],
      "author": {
        "name": "Leopold",
        "email": "leo@monogon.tech",
        "time": "Sun Jan 08 14:18:15 2023 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Thu Jan 19 19:07:21 2023 +0000"
      },
      "message": "README.md: improve developer setup instructions\n\nChange-Id: I3bd188efe774967d3aea512a2d5eb29d0114eafd\nReviewed-on: https://review.monogon.dev/c/monogon/+/1069\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "e2a302a9062d3ebfc33ad83dd382653e067ca009",
      "tree": "55165c3da49a1f7b4604c4db85b59bb305011718",
      "parents": [
        "7fbf10455fd61b4c34182be5cdb3a53fd9897d4b"
      ],
      "author": {
        "name": "Leopold",
        "email": "leo@monogon.tech",
        "time": "Sun Jan 15 15:39:18 2023 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Thu Jan 19 19:07:21 2023 +0000"
      },
      "message": "metropolis/test/launch: convert :launch to a test\n\n\"bazel run\" simply executes the binary outside the sandbox, so swtpm\nand other dependencies from the sandbox sysroot won\u0027t be available.\n\nIf swtpm is installed on the host, running the _bin target still works,\nbut it\u0027s better to point contributors to something that works\nout of the box.\n\nThis is a temporary workaround. Tests have timeouts and take the global\nBazel server lock. The correct solution is a static swtpm build\nwhich can run outside the sandbox.\n\nChange-Id: Icf7bf5cc44825df676d37a75ea9c1e135de14fef\nReviewed-on: https://review.monogon.dev/c/monogon/+/1078\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "7fbf10455fd61b4c34182be5cdb3a53fd9897d4b",
      "tree": "02ead12ee79b10abfdd624071802acc771f6bb3e",
      "parents": [
        "bffdda85d7750c9a9a34289a79281edeae1d73ef"
      ],
      "author": {
        "name": "Leopold",
        "email": "leo@monogon.tech",
        "time": "Fri Jan 06 19:57:37 2023 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Thu Jan 19 19:07:21 2023 +0000"
      },
      "message": "*: bring our own sandbox root\n\nThis change removes the build container and replaces it with a\nBazel-built Fedora 37 sysroot which is bind-mounted into the Bazel\nsandbox using --sandbox_add_mount_pair. The tools/bazel wrapper script\nautomatically (re-)generates the sysroot when needed.\n\nBoth Bazelisk and Bazel\u0027s native wrapper automatically run the\ntools/bazel script, which means that our build should now work without\nextra steps on any machine with a working Bazelisk setup and unpriv ns.\n\nThis fixes all kinds of weirdness caused by the previous podman setup\n(\"bazel run\"/container pushes, log access, weird podman bugs,\nbreaking the IDE plugin for any non-Monogon workspaces...).\n\nUsing the sandbox hash as an action var also ensures that the cache\nis invalidated whenever the ambient environment changes. Previously,\nBazel did not invalidate build steps when any host dependency changed.\nTo my knowledge, this was the only remaining cause for stale builds.\n\nIt also means we cannot depend on the host toolchain since it\nwon\u0027t be accessible in the sandbox, and anything that inspects the\nhost during analysis stage will fail. This currently means that\nrunning on a non-Fedora host won\u0027t work - we fix this next.\n\nAll RPMs are pinned and the sysroot is fully reproducible.\n\nOnce we upgrade to Bazel 5.x, we can take it further by enabling\n--experimental_use_hermetic_linux_sandbox and fully remove the\nremaining host paths from the sandbox for full hermeticity.\n\nIn a follow-up, we can clean up the CI image to only contain the\nminimum dependencies needed for Bazelisk and the agent.\n\nExisting IntelliJ users need to remove the -Dbazel.bep.path flag\nfrom their VM options.\n\nHandbook/Rust rules are disabled temporarily to keep CI green\n(requires a more recent rules_rust version).\n\nChange-Id: I1f17d57d985ff9d749bf3359f259d8ef52247c18\nReviewed-on: https://review.monogon.dev/c/monogon/+/1033\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "e4461e7082ee491b581ade2364a48ee8a8d889e0",
      "tree": "15a275913c0c86652322134056b8ab243c6742d0",
      "parents": [
        "e90f4a1c0e0d33f7cac7ab53773e40409c86a3ab"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Wed Jun 08 12:04:40 2022 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@monogon.tech",
        "time": "Wed Jun 08 13:04:16 2022 +0000"
      },
      "message": "README.md: add --compilation_mode\u003ddbg\n\nThe debug service is not present in release builds anymore,\nso the steps below no longer worked.\n\nChange-Id: I1eeb28193a9331fe3850a3cb6b8cb3750b820e2b\nReviewed-on: https://review.monogon.dev/c/monogon/+/755\nTested-by: Jenkins CI\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "d102ebed4e10b33db95f6d6ff0c7fbc7dbb6b614",
      "tree": "2cbfbb0c12dd60af859b6a8b2f63b80ee8eaa0ca",
      "parents": [
        "57479bb5c00df6127e592716b6d644c3c13d75e9"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Sun Oct 31 16:03:12 2021 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Nov 02 14:05:30 2021 +0000"
      },
      "message": "README.md: friendlier wip notice, link website\n\nChange-Id: I831a9d8bd875ba5047b873e93b18ce5fa65b62a6\nReviewed-on: https://review.monogon.dev/c/monogon/+/412\nReviewed-by: Sergiusz Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "67483ded56f26ced15581d7a87314d776cf5ecb0",
      "tree": "89be0e284fcf5ccf91041f4e2821c46c0a8058f4",
      "parents": [
        "0ef9629ffd82027c5dbff11f3530b86136636597"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Mon May 24 15:13:50 2021 +0000"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue May 25 09:55:21 2021 +0000"
      },
      "message": "Remove localconfig from README\n\nI277b642a broke this. The intended use was to rebuild generated\nprotobuf sources whenever the source file is modified. This was\nuseful, so we should restore it later - undocument it meanwhile.\n\nChange-Id: Ie565eecc4c11fcf9b9aea6e35e31f6ec87ff3d5f\nReviewed-on: https://review.monogon.dev/c/monogon/+/81\nReviewed-by: Sergiusz Bazanski \u003cserge@nexantic.com\u003e\n"
    },
    {
      "commit": "acae1ef4088e0e9579d7c35b2f7ce1de21c5ac22",
      "tree": "761455858b1e1491981d1d58dc093ca93402d541",
      "parents": [
        "7b73537d3fe08f5bbca741c7abbd95115ac2e6c2"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@nexantic.com",
        "time": "Wed May 19 11:31:40 2021 +0200"
      },
      "committer": {
        "name": "Sergiusz Bazanski",
        "email": "serge@nexantic.com",
        "time": "Wed May 19 11:28:32 2021 +0000"
      },
      "message": "*: replace nxt -\u003e monogon\n\nThese are hopefully the last leftovers from the nxt monorepo.\n\nThis change breaks existing build containers and IntelliJ setups, and\nunfortunately thrashes developer workstation Bazel caches.\n\nRunning `scripts/bin/destroy_container.sh \u0026\u0026\nscripts/bin/create_container.sh` and then following the IntelliJ setup\nguide in //README.md should be enough to fix everything.\n\nDid that locally and was able to set up a fully working IntelliJ\nIDE against this change.\n\nChange-Id: I090f4e4f2ea03998569a4ea3d1aa4cd4ec570f8a\nReviewed-on: https://review.monogon.dev/c/monogon/+/61\nReviewed-by: Leopold Schabel \u003cleo@nexantic.com\u003e\n"
    },
    {
      "commit": "58ec09eece3b2ca32112668cc6e5f1fd63ffa2a7",
      "tree": "380874242b1aa2555d122369b4384d445da808a0",
      "parents": [
        "57a9d3e7c609203b95ee7d09db87a43a64f79be9"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Thu Apr 01 18:34:19 2021 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Thu Apr 01 18:59:03 2021 +0200"
      },
      "message": "scripts: clean up build environment launch scripts\n\n- With a privileged container (which makes the Bazel sandbox work), the SELinux\n  trick doesn\u0027t work anyway. Replace it by a `z` modifier which tells podman to\n  set the right SELinux context on systems that have it.\n\n- Do not fail if IntelliJ is absent.\n\nTest Plan: works on my machine™\n\nX-Origin-Diff: phab/D758\nGitOrigin-RevId: b9020bdd54fccde222872ca609ee79b1805dd479\n"
    },
    {
      "commit": "55f01c3c338166f2ca7e67ae5d6c3ae6b7ac75c4",
      "tree": "1ad925573330bf4b776e02722037d7073f553948",
      "parents": [
        "5e113ddc3e845be6d7d7b87332af6aa48a3d18a2"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Mar 30 22:12:24 2021 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Mar 30 22:15:10 2021 +0200"
      },
      "message": "Update README.md\n\nGitOrigin-RevId: 00bf68e07ac704b5ebfb2c058104abf1fcab5232\n"
    },
    {
      "commit": "31370b07f0df2dc2765d812d4ce00a6b35185b16",
      "tree": "15563902eee9591083284441c8505b084b275d0a",
      "parents": [
        "313816f41244d7520eb2b6f8c231328ee5b7a4ef"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@nexantic.com",
        "time": "Thu Jan 07 16:31:14 2021 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@nexantic.com",
        "time": "Thu Jan 07 16:31:14 2021 +0100"
      },
      "message": "*: git.monogon.dev -\u003e source.monogon.dev\n\nThis implements T882, setting our (virtual) GOPATH to source.monogon.dev\nfor this repository.\n\nTest Plan: Refactor, CI only.\n\nX-Origin-Diff: phab/D686\nGitOrigin-RevId: c5e2309089948ffc3a98e68e2e0e1cbb157d3a36\n"
    },
    {
      "commit": "77cb6c5ec3acadf02ad5005dd751cfbf0ec1602f",
      "tree": "7ddfcdf78c489a5d6fad7a20bd3580d803407450",
      "parents": [
        "26d41999e0c71813648c16ad84bba810c3b9d593"
      ],
      "author": {
        "name": "Serge Bazanski",
        "email": "serge@nexantic.com",
        "time": "Sat Dec 19 00:09:22 2020 +0100"
      },
      "committer": {
        "name": "Serge Bazanski",
        "email": "serge@nexantic.com",
        "time": "Sat Dec 19 00:09:22 2020 +0100"
      },
      "message": "core -\u003e metropolis\n\nSmalltown is now called Metropolis!\n\nThis is the first commit in a series of cleanup commits that prepare us\nfor an open source release. This one just some Bazel packages around to\nfollow a stricter directory layout.\n\nAll of Metropolis now lives in `//metropolis`.\n\nAll of Metropolis Node code now lives in `//metropolis/node`.\n\nAll of the main /init now lives in `//m/n/core`.\n\nAll of the Kubernetes functionality/glue now lives in `//m/n/kubernetes`.\n\nNext steps:\n     - hunt down all references to Smalltown and replace them appropriately\n     - narrow down visibility rules\n     - document new code organization\n     - move `//build/toolchain` to `//monogon/build/toolchain`\n     - do another cleanup pass between `//golibs` and\n       `//monogon/node/{core,common}`.\n     - remove `//delta` and `//anubis`\n\nFixes T799.\n\nTest Plan: Just a very large refactor. CI should help us out here.\n\nBug: T799\n\nX-Origin-Diff: phab/D667\nGitOrigin-RevId: 6029b8d4edc42325d50042596b639e8b122d0ded\n"
    },
    {
      "commit": "18b4d653647c23e3a4cd10832d5d6dbd56a4e37e",
      "tree": "d985a3feb246a1e8f365f48659b9e0e5f592ea66",
      "parents": [
        "a4edfa9e12ce6db3216da01be7bf35825893c749"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Mon Dec 14 18:27:07 2020 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Mon Dec 14 18:27:07 2020 +0100"
      },
      "message": "intellij: add localconfig helper\n\nAdds a little helper tool which merges a watcherTasks template with the local\nproject config. This restores the functionality lost in D658.\n\nAlso cured me of any remaining nostalgic feelings towards XML.\n\nTest Plan:\nDeleted all watchers, ran the script, re-opened project,\nwatchers are back and functional. Local watchers with the same name got\noverwritten. Additional watchers were untouched.\n\nX-Origin-Diff: phab/D661\nGitOrigin-RevId: 83f7c1506476378145781c816d776fd451aed40c\n"
    },
    {
      "commit": "a4edfa9e12ce6db3216da01be7bf35825893c749",
      "tree": "387c7d4d0f0499609ac03fea2c68afda5aa862be",
      "parents": [
        "dbac6ccbf5325aa737280ac79b3cc5916e9b57f6"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Sun Dec 13 18:55:21 2020 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Sun Dec 13 18:55:21 2020 +0100"
      },
      "message": "Fix IntelliJ instructions in README\n\nWe probably need more in-depth instructions for the open source project,\nbut the existing ones should at least be correct.\n\nTest Plan: N/A\n\nX-Origin-Diff: phab/D660\nGitOrigin-RevId: 5e9dd3379c17a23539651624dfc64daafd156b28\n"
    },
    {
      "commit": "ac9947fd23ad4dab909a9282ac56fd51dcecb4e4",
      "tree": "31ac22eb93c43d6569c79908ea9d446bdc8e6181",
      "parents": [
        "70f65b237aa29f2e9aced8a4a1e1739b6544cb92"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Thu Jul 09 18:58:26 2020 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Thu Jul 09 18:58:26 2020 +0200"
      },
      "message": "intellij: add launch configuration presets for single node and e2e\n\n- Run e2e tests normally with streamed output\n- Run e2e tests without caching and -c dbg\n- Run e2e tests without caching, -c dbg and with dlv\n- Run all tests normally\n- Run a single node cluster normally\n- Run a single node cluster with -c dbg\n\nTest Plan: Ran \u0027em all.\n\nX-Origin-Diff: phab/D582\nGitOrigin-RevId: 6d78ee3ea4e4c4e2c0096fc4e6f449dbcdb333ca\n"
    },
    {
      "commit": "f8323f1010f4d1714570197f438888d081056846",
      "tree": "58c3328cd2e1a576d0aa29ccebac6dd7b6a3077a",
      "parents": [
        "83dc285944ad65d429bb2641a7348366e7028c40"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Jan 07 23:26:34 2020 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Jan 07 23:26:34 2020 +0100"
      },
      "message": "Remove synthetic GOPATH and symlinks\n\nAs it turns out, `go mod tidy` complains about missing modules\nbut still properly generates go.mod, so it appears that we do\nnot need a GOPATH or symlinks except for non-IntelliJ IDE support.\n\nWe should standardize on IntelliJ and just get rid of this\nworkaround. Hendrik had trouble rebasing the shield revisions\n(that have a lot of generated code) and it\u0027s likely a lot of\nwork to maintain this hack in the future.\n\nSee D305, D309\n\nTest Plan:\nRan `scripts/gazelle.sh` after deleting all symlinks\nand tested that `go mod tidy` properly restored the go.mod file\nafter modifying it manually.\n\nX-Origin-Diff: phab/D311\nGitOrigin-RevId: fe4bc491fca6fa072cff047185d7c18305564ea4\n"
    },
    {
      "commit": "2ab141d7fb88b7d939a286a219a000bedcf5f2e5",
      "tree": "7bf957488aac2289578490d00a07d1b9c027aa46",
      "parents": [
        "f1d34d328eaf66f8ede61a0ffe30519f43aa73d9"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Jan 07 20:50:07 2020 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Jan 07 20:50:07 2020 +0100"
      },
      "message": "Add documentation for scripts/symlink_generated_files.sh\n\nTest Plan: N/a\n\nX-Origin-Diff: phab/D309\nGitOrigin-RevId: 0e0d29f1e981ba383e38256f496f77f726a3c29a\n"
    },
    {
      "commit": "db6283e3d6425eea168e8dfc56c4f19f358ab64f",
      "tree": "586c9eb107e430ceeb90bdde96e57369044388b3",
      "parents": [
        "8cc81f6d87a7fe2a1440a112a51d2fdfcf5bf568"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Mon Jan 06 17:05:54 2020 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Mon Jan 06 17:05:54 2020 +0100"
      },
      "message": "Do not hardcode Fedora version in README\n\nTest Plan: N/A\n\nX-Origin-Diff: phab/D307\nGitOrigin-RevId: 1d2eb3e5b2b854f0a1791d0d9e28260d70566bb4\n"
    },
    {
      "commit": "8b9c055ed5a0dc77a191fb19d6812ea137c2b0fa",
      "tree": "d10f003ebe7fe9f75b4d22451a889dc91faebe88",
      "parents": [
        "7670e67e72d6d4aaac174b91f4465a67479e1026"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Fri Nov 15 14:07:45 2019 +0100"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Fri Nov 15 14:07:45 2019 +0100"
      },
      "message": "Bazel IntelliJ plugin support\n\nThis eliminates the need for manually synchronizing generated files.\n\nThe plugin authors advise against checking in the .iwjb directory,\nwhich we resolutely ignore. The recommended method is to provide a\ntemplate .bazelproject file that everyone needs to manually import and\nupdate. However, checking in the directory is supported and no different\nthan checking in .idea. This allows us to version things like watchers\nand run configurations, at the expense of requiring everyone to use\nthe same IntelliJ and Bazel plugin versions.\n\nHow it works:\n\n- Source code and execroot paths are identical inside and outside the\n  container. This requires a bind mount. To avoid conflicts with a\n  local Bazel instance, a separate directory is used.\n\n  The wrapper script injects a --output_user_root startup parameter.\n  We cannot set this in .bazelrc since we cannot substitute the\n  user home. This means that running bazel inside the container,\n  without the wrapper, will no longer work/blow up the overlayfs.\n\n  Did anyone do this?\n\n- The tmpfs and other caches are eliminated.\n  Forcing it hasn\u0027t been ideal anyway due to\n  the excessive memory usage, and it can still be accomplished\n  by mounting a tmpfs to `~/.cache/bazel-nxt` or symlinking it to\n  `/dev/shm` or similar (set proper permissions!).\n\n- The plugin configures a custom local repository that has helper\n  scripts. Since we need to be on the same IntelliJ version, we can\n  simply hardcode the path and bind mount it (read only).\n\n  The alternative would be to copy the files into the container and\n  override the command line option using sync_flags\n  (https://github.com/bazelbuild/intellij/issues/397), but bind\n  mounting seems muche easier at no disadvantage.\n\n- IntelliJ needs a somewhat obscure custom startup option (see README)\n  for BEP temp files (https://github.com/bazelbuild/intellij/issues/407).\n\nTest Plan:\n- Running tests works:\n\n  {F16996}\n\n- Full and partial sync works:\n\n  {F17000}\n\n- Updating a protobuf file triggered the watcher, which rebuilt the\n  generated files. After triggering an source sync, the changes\n  are visible in the IDE (I suspect that IntelliJ does not inotify-\n  watch the generated files since they are outside the project directory.\n\nX-Origin-Diff: phab/D263\nGitOrigin-RevId: 39c50665575c2a0131c492385b0981b7ee2588d8\n"
    },
    {
      "commit": "0d7c91e331022831a974c2e34d32bb5b89ddc89c",
      "tree": "5b822873c015053f4b697d60c33fa3b1ef9a3a4b",
      "parents": [
        "043daa57020dd36e074488dcb432114a548a3d2a"
      ],
      "author": {
        "name": "Hendrik Hofstadt",
        "email": "hendrik@certus.one",
        "time": "Wed Oct 23 21:44:47 2019 +0200"
      },
      "committer": {
        "name": "Hendrik Hofstadt",
        "email": "hendrik@certus.one",
        "time": "Wed Oct 23 21:44:47 2019 +0200"
      },
      "message": "Implement monorepo layout\n\nImplemented the nexantic monorepo.\n\nSmalltown code was moved to `core`. From now on all code will live in top level directories named after the projects with the exception for general purpose libraries which should go to `\u003clang\u003elibs`.\n\nGeneral build and utility folders are underscore prefixed.\n\nThe repo name will from now on be rNXT (nexantic). I think this change makes sense since components in this repo will not all be part of Smalltown, the Smalltown brand has been claimed by Signon GmbH so we need to change it anyway and the longer we wait the harder it will be to change/move it.\n\nTest Plan: Launched Smalltown using `./scripts/bin/bazel run //core/scripts:launch`\n\nX-Origin-Diff: phab/D210\nGitOrigin-RevId: fa5a7f08143d2ead2cb7206b4c63ab641794162c\n"
    },
    {
      "commit": "2983d7285fe019f943f1b722f26a0f2e959c5f80",
      "tree": "f6b5056682bef41597d02347dff0d523916d196f",
      "parents": [
        "e28e1b3556feb786c71f161b357fcf6899e44c19"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Wed Oct 23 12:16:42 2019 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Wed Oct 23 12:16:42 2019 +0200"
      },
      "message": "Improve Bazel Fedora build container handling and cache repository downloads\n\nAdds lifecycle management scripts for the dev container and a \"bazel\" wrapper script, which sets container-only startup options.\n\nReplaces /dev/null bind mounts by SELinux contexts for container breakup prevention, since newer podman versions managed to somehow break the ordering of mounts and mounting on top of a volume gives ENOENT. This requires a placeholder .arcconfig.\n\nOn Fedora, SELinux prevents the container from accessing /dev/kvm, which requires a custom policy (see rWa716c988d69e).\n\nDesign considerations:\n\n- The build cache is on a tmpfs. This avoids fuse-overlayfs overhead. If the container is recreated, we want to drop the build cache - Bazel does not track ambient dependencies, so we do not know if we need to rebuild anything (like after upgrading a compiler).\n\n- The repository cache contains just workspace dependencies and is mounted as a volume.\n\nThe repository caches does not work terribly well yet, we probably need to mount parts ~/.cache/bazel as well. podman always mounts volumes as noexec, so this is not as straight-forward as it looks.\n\nTest Plan:\nRan the commands from the README as my unprivileged workstation user.\nSmalltown was built and launched successfully.\n\nX-Origin-Diff: phab/D198\nGitOrigin-RevId: aff720d2862cdf5d1df67813d842d221d69a84c0\n"
    },
    {
      "commit": "5c80acaec733e0b7c43cb0584cdeb7cebc826aa9",
      "tree": "f7db6de47e4ef38599da89dd4f1082c65569ca03",
      "parents": [
        "a71b5a4c36d5cae089666eaad57514c64baf6f24"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Oct 22 15:48:58 2019 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Oct 22 15:48:58 2019 +0200"
      },
      "message": "Replace build system with a Bazel-based one\n\nThis pins our external dependencies and introduces a mostly-hermetic build where all dependencies are explicitly declared and rebuilt if needed.\n\nNecessary prerequite for a proper CI workflow. Since Bazel can cache build artifacts, we can remove the hardcoded binary artifacts from the repo.\n\nAs suggested in our discussions, the genrule that builds mkfs.xfs is basically doing the same as the previous build_artifacts.sh script (see source code comments for rationale).\n\nThe main issue at this point is that the `build/linux_kernel:image` target rebuilds the kernel each time any of its inputs (like cmd/init)\nchange. This is very hard to fix without compromising on hermeticity, porting kbuild to Bazel (no thanks) or injecting the initramfs into the\nkernel image in a separate rule (might just work, but the kernel build rule would either have custom code, or a massive set of outputs).\n\nPerhaps we could use a separate initramfs for development? Or deliberately poke holes into Bazel\u0027s sandbox to reuse kernel build?\n\nTest Plan:\nRun this in a fresh container with empty Bazel cache:\n\n    bazelisk run scripts:launch\n\n... and watch as Bazel rebuilds the world.\n\nX-Origin-Diff: phab/D197\nGitOrigin-RevId: 21eea0e213a50e1c4ad25b2ac2bb87c53e36ea6d\n"
    },
    {
      "commit": "67f9d096fb66d9f9298542d98d128a42b9d43695",
      "tree": "cb548c7e7a63df850302f6bb42a5a6bb3e5d2700",
      "parents": [
        "40ab4b41d338657c67a7fa72a3f76e26f582d98e"
      ],
      "author": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Oct 22 15:41:42 2019 +0200"
      },
      "committer": {
        "name": "Leopold Schabel",
        "email": "leo@nexantic.com",
        "time": "Tue Oct 22 15:41:42 2019 +0200"
      },
      "message": "Refactor build_artifacts.sh and makefile\n\n- Move everything to .data, .vendor, .artifacts and .bin in order to cleanly separate build input and output.\n- Sprinkle some subshells on build_artifacts.sh to make it fail more gracefully.\n- Fix fetch_third_party.sh check.\n- GOBUILD make helper.\n- Dockerfile with build dependencies.\n\nTest Plan:\nRan `make clean` and build steps described in README.md, it boots:\n\n{P84}\n\nX-Origin-Diff: phab/D195\nGitOrigin-RevId: 4106534c7248931b79e93e2a13153482033cd0d8\n"
    }
  ]
}
