Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 1 | package fietsje |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 2 | |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 3 | // deps_monogon.go contains the main entrypoint for Monogon-specific |
| 4 | // dependencies to be handled by fietsje, and calls out to all other functions |
| 5 | // in deps_*.go. |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 6 | |
| 7 | import ( |
| 8 | "bytes" |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 9 | "fmt" |
Lorenz Brun | 764a2de | 2021-11-22 16:26:36 +0100 | [diff] [blame] | 10 | "os" |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 11 | ) |
| 12 | |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 13 | // Monogon runs fietsje for all Monogon transitive dependencies. |
| 14 | func Monogon(shelfPath, repositoriesBzlPath string) error { |
Serge Bazanski | 116c4a6 | 2021-09-24 14:22:27 +0200 | [diff] [blame] | 15 | shelf, err := shelfLoad(shelfPath) |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 16 | if err != nil { |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 17 | return fmt.Errorf("could not load shelf: %w", err) |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 18 | } |
| 19 | |
| 20 | p := &planner{ |
| 21 | available: make(map[string]*dependency), |
| 22 | enabled: make(map[string]bool), |
| 23 | seen: make(map[string]string), |
| 24 | |
| 25 | shelf: shelf, |
| 26 | } |
| 27 | |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 28 | depsKubernetes(p) |
| 29 | depsContainerd(p) |
| 30 | depsGVisor(p) |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 31 | |
| 32 | // our own deps, common |
| 33 | p.collectOverride("go.uber.org/zap", "v1.15.0") |
Lorenz Brun | c2e3b1b | 2021-11-11 11:06:41 +0100 | [diff] [blame] | 34 | p.collectOverride("golang.org/x/mod", "v0.3.0", useImportAliasNaming) |
Lorenz Brun | 6adf884 | 2021-10-05 13:39:11 +0200 | [diff] [blame] | 35 | p.collectOverride("github.com/spf13/viper", "v1.9.0").use( |
| 36 | "gopkg.in/ini.v1", |
| 37 | "github.com/subosito/gotenv", |
| 38 | ) |
| 39 | p.collectOverride("github.com/spf13/cobra", "v1.2.1") |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 40 | p.collect("github.com/cenkalti/backoff/v4", "v4.0.2") |
| 41 | |
| 42 | p.collect("github.com/google/go-tpm", "ae6dd98980d4") |
| 43 | p.collect("github.com/google/go-tpm-tools", "f8c04ff88181") |
Lorenz Brun | a50e845 | 2020-09-09 17:09:27 +0200 | [diff] [blame] | 44 | p.collect("github.com/google/certificate-transparency-go", "v1.1.0") |
Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 45 | p.collect("github.com/insomniacslk/dhcp", "67c425063dcad32c5d14ce9a520c8865240dc945").use( |
| 46 | "github.com/mdlayher/ethernet", |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 47 | "github.com/mdlayher/raw", |
Lorenz Brun | 56a7ae6 | 2020-10-29 11:03:30 +0100 | [diff] [blame] | 48 | "github.com/u-root/u-root", |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 49 | ) |
| 50 | p.collect("github.com/rekby/gpt", "a930afbc6edcc89c83d39b79e52025698156178d") |
| 51 | p.collect("github.com/yalue/native_endian", "51013b03be4fd97b0aabf29a6923e60359294186") |
| 52 | |
Lorenz Brun | b60d9cb | 2021-02-18 17:34:00 +0100 | [diff] [blame] | 53 | // Used by //build/bazel_cc_fix, override to make sure we use the latest version |
| 54 | p.collectOverride("github.com/mattn/go-shellwords", "v1.0.11") |
| 55 | |
Serge Bazanski | d9ed656 | 2021-01-07 16:06:44 +0100 | [diff] [blame] | 56 | // Used by //metropolis/build/mkimage |
Lorenz Brun | 57479bb | 2021-10-26 14:01:06 +0200 | [diff] [blame] | 57 | p.collect("github.com/diskfs/go-diskfs", "v1.2.0").use( |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 58 | "gopkg.in/djherbis/times.v1", |
Lorenz Brun | 57479bb | 2021-10-26 14:01:06 +0200 | [diff] [blame] | 59 | "github.com/pkg/xattr", |
| 60 | "github.com/pierrec/lz4", |
| 61 | "github.com/ulikunitz/xz", |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 62 | ) |
Lorenz Brun | 878f5f9 | 2020-05-12 16:15:39 +0200 | [diff] [blame] | 63 | |
Lorenz Brun | b6a9d3c | 2022-01-27 18:56:20 +0100 | [diff] [blame] | 64 | p.collect("github.com/pierrec/lz4/v4", "v4.1.12") |
| 65 | |
Serge Bazanski | d9ed656 | 2021-01-07 16:06:44 +0100 | [diff] [blame] | 66 | // Used by //metropolis/build/genosrelease |
| 67 | p.collect("github.com/joho/godotenv", "v1.3.0") |
| 68 | |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 69 | // used by //build/bindata |
| 70 | p.collect("github.com/kevinburke/go-bindata", "v3.16.0") |
| 71 | |
Leopold Schabel | 3058b7a | 2020-06-03 17:51:07 +0200 | [diff] [blame] | 72 | // for interactive debugging during development (//:dlv alias) |
| 73 | depsDelve(p) |
| 74 | |
Serge Bazanski | d9ed656 | 2021-01-07 16:06:44 +0100 | [diff] [blame] | 75 | // Used by //metropolis/test/nanoswitch |
Lorenz Brun | 52f7f29 | 2020-06-24 16:42:02 +0200 | [diff] [blame] | 76 | p.collect("github.com/google/nftables", "7127d9d22474b437f0e8136ddb21855df29790bf").use( |
| 77 | "github.com/koneu/natend", |
Lorenz Brun | f042e6f | 2020-06-24 16:46:09 +0200 | [diff] [blame] | 78 | ) |
| 79 | |
Serge Bazanski | d9ed656 | 2021-01-07 16:06:44 +0100 | [diff] [blame] | 80 | // Used by //metropolis/node/core/network/dhcp4c |
| 81 | p.collect("github.com/google/gopacket", "v1.1.17") |
| 82 | |
Lorenz Brun | f042e6f | 2020-06-24 16:46:09 +0200 | [diff] [blame] | 83 | // used by //core//kubernetes/clusternet |
| 84 | p.collect("golang.zx2c4.com/wireguard/wgctrl", "ec7f26be9d9e47a32a2789f8c346031978485cbf").use( |
Lorenz Brun | 52f7f29 | 2020-06-24 16:42:02 +0200 | [diff] [blame] | 85 | "github.com/mdlayher/netlink", |
Lorenz Brun | f042e6f | 2020-06-24 16:46:09 +0200 | [diff] [blame] | 86 | "github.com/mdlayher/genetlink", |
Lorenz Brun | 52f7f29 | 2020-06-24 16:42:02 +0200 | [diff] [blame] | 87 | ) |
| 88 | |
Lorenz Brun | b682ba5 | 2020-07-08 14:51:36 +0200 | [diff] [blame] | 89 | p.collect( |
| 90 | "github.com/sbezverk/nfproxy", "7fac5f39824e7f34228b08ba8b7640770ca6a9f4", |
| 91 | patches("nfproxy.patch"), |
| 92 | ).use( |
| 93 | "github.com/sbezverk/nftableslib", |
| 94 | ) |
| 95 | |
Lorenz Brun | b29e0b0 | 2020-07-28 17:26:12 +0200 | [diff] [blame] | 96 | p.collect("github.com/coredns/coredns", "v1.7.0", |
| 97 | prePatches("coredns-remove-unused-plugins.patch"), |
| 98 | ).use( |
| 99 | "github.com/caddyserver/caddy", |
| 100 | "github.com/dnstap/golang-dnstap", |
| 101 | "github.com/farsightsec/golang-framestream", |
Lorenz Brun | b29e0b0 | 2020-07-28 17:26:12 +0200 | [diff] [blame] | 102 | "github.com/flynn/go-shlex", |
Serge Bazanski | d9ed656 | 2021-01-07 16:06:44 +0100 | [diff] [blame] | 103 | "github.com/grpc-ecosystem/grpc-opentracing", |
| 104 | "github.com/infobloxopen/go-trees", |
| 105 | "github.com/miekg/dns", |
| 106 | "github.com/opentracing/opentracing-go", |
Lorenz Brun | b29e0b0 | 2020-07-28 17:26:12 +0200 | [diff] [blame] | 107 | ) |
| 108 | |
Serge Bazanski | 144b786 | 2021-12-17 17:30:14 +0100 | [diff] [blame] | 109 | // goimports with import grouping patch |
| 110 | // https://go-review.googlesource.com/c/tools/+/321409/ |
| 111 | p.collectOverride("golang.org/x/tools", "v0.1.2-0.20210518182153-17b346669257", patches("goimports-group-merging.patch")) |
Leopold Schabel | 26d4199 | 2020-12-15 19:27:58 +0100 | [diff] [blame] | 112 | |
Serge Bazanski | 6ebdc41 | 2021-05-21 16:25:55 +0200 | [diff] [blame] | 113 | // commentwrap is used as a nogo analyzer to stick to a maximum line |
| 114 | // length for comments. |
Lorenz Brun | c2e3b1b | 2021-11-11 11:06:41 +0100 | [diff] [blame] | 115 | p.collect("github.com/corverroos/commentwrap", "2926638be44ce0c6c0ee2471e9b5ad9473c984cd").use( |
Serge Bazanski | 6ebdc41 | 2021-05-21 16:25:55 +0200 | [diff] [blame] | 116 | "github.com/muesli/reflow", |
| 117 | ) |
| 118 | |
Lorenz Brun | e657310 | 2021-11-02 14:15:37 +0100 | [diff] [blame] | 119 | // Used by metroctl to resolve XDG directories |
| 120 | p.collect("github.com/adrg/xdg", "v0.4.0") |
| 121 | |
Lorenz Brun | dcfc678 | 2021-11-30 05:27:48 +0100 | [diff] [blame] | 122 | // Used for generating proto docs in //build/proto_docs |
| 123 | p.collect("github.com/pseudomuto/protoc-gen-doc", "v1.5.0", patches("protoc-gen-doc-no-gogo.patch")).use( |
| 124 | "github.com/Masterminds/sprig", |
| 125 | "github.com/Masterminds/semver", |
| 126 | "github.com/aokoli/goutils", |
| 127 | "github.com/huandu/xstrings", |
| 128 | ).with( |
| 129 | disabledProtoBuild, |
| 130 | ).use( |
| 131 | "github.com/pseudomuto/protokit", |
| 132 | ) |
| 133 | |
Lorenz Brun | b6a9d3c | 2022-01-27 18:56:20 +0100 | [diff] [blame] | 134 | // Used by //metropolis/node/build/mkcpio |
| 135 | p.collect("github.com/cavaliergopher/cpio", "b4d3577d12deb76a6d52f184acd341f875574785") |
| 136 | |
Serge Bazanski | 216fe7b | 2021-05-21 18:36:16 +0200 | [diff] [blame] | 137 | // First generate the repositories starlark rule into memory. This is because |
| 138 | // rendering will lock all unlocked dependencies, which might take a while. If a |
| 139 | // use were to interrupt it now, they would end up with an incomplete |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 140 | // repositories.bzl and would have to restore from git. |
| 141 | buf := bytes.NewBuffer(nil) |
| 142 | err = p.render(buf) |
| 143 | if err != nil { |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 144 | return fmt.Errorf("could not render deps: %w", err) |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 145 | } |
| 146 | |
Lorenz Brun | 764a2de | 2021-11-22 16:26:36 +0100 | [diff] [blame] | 147 | err = os.WriteFile(repositoriesBzlPath, buf.Bytes(), 0666) |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 148 | if err != nil { |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 149 | return fmt.Errorf("could not write deps: %w", err) |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 150 | } |
Serge Bazanski | 4b1e37c | 2021-09-28 12:49:15 +0200 | [diff] [blame] | 151 | return nil |
Serge Bazanski | f369cfa | 2020-05-22 18:36:42 +0200 | [diff] [blame] | 152 | } |