forked from hswaw/hscloud
Serge Bazanski
97b5cd7b58
This is a mega-change, but attempting to split this up further is probably not worth the effort. Summary: 1. Bump up bazel, rules_go, and others. 2. Switch to new go target naming (bye bye go_default_library) 3. Move go deps to go.mod/go.sum, use make gazelle generate from that 4. Bump up Python deps a bit And also whatever was required to actually get things to work - loads of small useless changes. Tested to work on NixOS and Ubuntu 20.04: $ bazel build //... $ bazel test //... Change-Id: I8364bdaa1406b9ae4d0385a6b607f3e7989f98a9 Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1583 Reviewed-by: q3k <q3k@hackerspace.pl>
1.9 KiB
1.9 KiB
Go dependency managment
Status: managed by Gazelle.
.--------.
| go.mod |------------.
'--------' |
| go mod tidy | bazel //:gazelle-update-repos
V |
.--------. |
| go.sum |-----------.|
'--------' |
V
.---------------------------------.
| third_party/go/repositories.bzl |
'---------------------------------'
| bazel run //:gazelle
V
.----------------.
| **/BUILD.bazel |.
'----------------'|
'----------------'
| bazel build //...
V
.-----------------.
| build artifacts |
'-----------------'
Updating and adding new dependencies
Add a Go dependency to your code, then:
$ bazel run @io_bazel_rules_go//go -- mod tidy
$ bazel run //:gazelle-update-repos
All generated sources (eg. protobuf stubs) that are usually built by Bazel are invisible to go(mod)-based tooling. To get around this, we place gomod-generated-placeholder.go
files in package directories that would otherwise contain generated files. These are ignored by Gazelle (and thus by Bazel builds) but not by go(mod)-based tooling.
Adding a tool dependency
If you want some go-based tool to be built (which isn't depended upon by existing Go code) you'll have to add a synthetic import to //third_party/go/tools.go
. Then run go mod tidy and gazelle-update-repos.
Regenerating BUILDfiles
To traverse the monorepo and generate BUILD(.bazel) files for all Go code:
$ bazel run //:gazelle