Skip to content

Commit

Permalink
Merge pull request #1421 from moul/dev/moul/bazel-by-default
Browse files Browse the repository at this point in the history
chore: use bazel by default
  • Loading branch information
moul committed Oct 15, 2019
2 parents 32923b2 + d9cad1a commit 2a129b8
Show file tree
Hide file tree
Showing 13 changed files with 379 additions and 282 deletions.
8 changes: 4 additions & 4 deletions .circleci/config.yml
@@ -1,4 +1,3 @@

version: 2.1

orbs:
Expand All @@ -19,8 +18,9 @@ jobs:
path: /go/src/berty.tech
- moul/mod-download
- gotools/mod-tidy-check
- run: make install
- run: make unittest
- run: make go.install
- run: make go.unittest
- run: make tidy
- moul/install_golangci-lint
- run: PATH=$PATH:$(pwd)/bin make lint
go-docker:
Expand Down Expand Up @@ -76,7 +76,7 @@ jobs:
- image: bertytech/bazel:0.29.1-buster-r0
steps:
- checkout
- run: cd go && BAZEL_CMD_ARGS="--sandbox_debug --jobs=2 --local_ram_resources=HOST_RAM*.5" make bazel.test
- run: cd go && BAZEL_CMD_ARGS="--sandbox_debug --jobs=2 --local_ram_resources=HOST_RAM*.5" make bazel.unittest

bazel-banner:
working_directory: /go/src/berty.tech
Expand Down
4 changes: 2 additions & 2 deletions api/bertychat.proto
Expand Up @@ -3,9 +3,9 @@ syntax = "proto3";
package berty.chat;

import "google/api/annotations.proto";
import "google/protobuf/descriptor.proto";
//import "google/protobuf/descriptor.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "bertyprotocol.proto";
//import "bertyprotocol.proto";
import "chatmodel.proto";

option go_package = "berty.tech/go/pkg/bertychat";
Expand Down
2 changes: 1 addition & 1 deletion api/bertyprotocol.proto
Expand Up @@ -3,7 +3,7 @@ syntax = "proto3";
package berty.protocol;

import "google/api/annotations.proto";
import "google/protobuf/descriptor.proto";
//import "google/protobuf/descriptor.proto";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "protocolmodel.proto";

Expand Down
26 changes: 13 additions & 13 deletions docs/bertychat.swagger.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions docs/gen.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion go/Dockerfile
Expand Up @@ -6,7 +6,7 @@ WORKDIR /go/src/berty.tech/go
COPY go.* ./
RUN go mod download
COPY . ./
RUN make install
RUN make go.install

# minimalist runtime
FROM alpine:3.10
Expand Down
189 changes: 167 additions & 22 deletions go/Makefile
@@ -1,26 +1,170 @@
##
## Config
##

BAZEL ?= bazel
BAZEL_ARGS ?=
BAZEL_CMD_ARGS ?=
GO ?= go
GOPATH ?= $(HOME)/go
IBAZEL ?= ibazel
USE_IBAZEL ?= false
BAZEL_WRAPPER ?= $(BAZEL)

ifeq ($(USE_IBAZEL),true)
BAZEL_WRAPPER=$(IBAZEL)
endif

##
## Functions
##

bazel = $(BAZEL_WRAPPER) $(BAZEL_ARGS) $(1) $(BAZEL_CMD_ARGS) $(2)
check-program = $(foreach exec,$(1),$(if $(shell PATH="$(PATH)" which $(exec)),,$(error "No $(exec) in PATH")))

##
## General rules
##

.PHONY: install
install: generate
GO111MODULE=on go install -v ./cmd/...
install: go.install

.PHONY: build
build: bazel.build

.PHONY: run
run: bazel.daemon

.PHONY: dev
dev: ibazel.daemon

.PHONY: test
test: unittest lint tidy

.PHONY: autotest
autotest: ibazel.unittest

.PHONY: unittest
unittest: generate
GO111MODULE=on go test -v -cover -coverprofile=coverage.txt -covermode=atomic -race ./...
unittest: bazel.unittest

.PHONY: generate
generate: pb.generate

.PHONY: lint
lint: generate
lint: pb.generate
$(call check-program, golangci-lint)
golangci-lint run --verbose ./...

.PHONY: tidy
tidy: generate
GO111MODULE=on go mod tidy
tidy: pb.generate
$(call check-program, $(GO))
GO111MODULE=on $(GO) mod tidy

.PHONY: docker.build
docker.build: generate
docker.build: pb.generate
$(call check-program, docker)
docker build -t bertytech/berty .

.PHONY: clean
clean: pb.clean bazel.clean
rm -rf vendor/

.PHONY: fclean
fclean: clean bazel.fclean

.PHONY: re
re: clean build

##
## Go rules (without bazel)
##

.PHONY: nobazel.unittest
go.unittest: pb.generate
$(call check-program, $(GO))
GO111MODULE=on $(GO) test -v -cover -coverprofile=coverage.txt -covermode=atomic -race ./...

.PHONY: go.install
go.install: pb.generate
$(call check-program, $(GO))
GO111MODULE=on $(GO) install -v ./cmd/...

##
## Bazel rules
##

SAMPLE_GAZELLE_GENERATED_FILE ?= pkg/bertyprotocol/BUILD.bazel # should be the path of a git-ignored bazel-generated file
VENDOR_BAZEL_OVERRIDEN_FILES = vendor/github.com/spacemonkeygo/openssl/BUILD.bazel

.PHONY: bazel.build
bazel.build: bazel.generate
$(call check-program, $(BAZEL))
$(call bazel, build, //...)

.PHONY: bazel.daemon
bazel.daemon: bazel.generate
$(call check-program, $(BAZEL))
$(call bazel, run, //cmd/bertychat -- daemon)

.PHONY: bazel.banner
bazel.banner: bazel.generate
$(call check-program, $(BAZEL))
$(call bazel, run, //cmd/bertychat -- banner)

.PHONY: bazel.unittest
bazel.unittest: bazel.generate
$(call check-program, $(BAZEL))
$(call bazel, test, //...)

.PHONY: bazel.generate
bazel.generate: pb.generate $(SAMPLE_GAZELLE_GENERATED_FILE)

.PHONY: bazel.clean
bazel.clean:
rm -rf */**/BUILD.bazel

.PHONY: bazel.clean
bazel.fclean:
$(call check-program, $(BAZEL))
$(BAZEL) clean --expunge
rm -rf */**/BUILD.bazel

##
## ibazel
##

.PHONY: ibazel.daemon
ibazel.daemon: bazel.generate
USE_IBAZEL=true make bazel.daemon

.PHONY: ibazel.build
ibazel.build: bazel.generate
USE_IBAZEL=true make bazel.build

.PHONY: ibazel.banner
ibazel.banner: bazel.generate
USE_IBAZEL=true make bazel.banner

.PHONY: ibazel.unittest
ibazel.unittest: bazel.generate
USE_IBAZEL=true make bazel.unittest

##
## Deps
##

vendor/github.com/spacemonkeygo/openssl/BUILD.bazel: $(abspath ../build/bazel/com_github_spacemonkeygo_openssl.BUILD.bazel) vendor
cp $< $@

$(SAMPLE_GAZELLE_GENERATED_FILE): WORKSPACE vendor $(VENDOR_BAZEL_OVERRIDEN_FILES)
$(call check-program, $(BAZEL))
$(BAZEL) $(BAZEL_ARGS) run $(BAZEL_CMD_ARGS) //:gazelle

vendor: go.mod
$(call check-program, $(GO))
GO111MODULE=on $(GO) mod vendor
touch $@

##
## Code gen
##
Expand All @@ -29,42 +173,43 @@ PROTOS_SRC := $(wildcard ../api/*.proto) $(wildcard ../api/internal/*.proto)
GEN_SRC := $(PROTOS_SRC) Makefile
GEN_SUM := gen.sum

.PHONY: clean
clean:
.PHONY: pb.clean
pb.clean:
rm -f gen.sum $(wildcard */*/*.pb.go)

.PHONY: generate
generate: gen.sum
.PHONY: pb.generate
pb.generate: gen.sum
$(GEN_SUM): $(GEN_SRC)
$(call check-program, shasum docker $(GO))
shasum $(GEN_SRC) | sort -k 2 > $(GEN_SUM).tmp
diff -q $(GEN_SUM).tmp $(GEN_SUM) || ( \
set -e; \
GO111MODULE=on go mod vendor; \
@diff -q $(GEN_SUM).tmp $(GEN_SUM) || ( \
uid=`id -u`; \
set -xe; \
$(GO) mod vendor; \
docker run \
--user=`id -u` \
--user="$$uid" \
--volume="$(PWD)/..:/go/src/berty.tech" \
--workdir="/go/src/berty.tech/go" \
--entrypoint="sh" \
--rm \
bertytech/protoc:19 \
-xec 'make generate_local'; \
make tidy \
$(MAKE) tidy \
)

.PHONY: generate_local
generate_local:
$(call check-program, goimports shasum protoc)
@set -e; for proto in $(PROTOS_SRC); do ( set -xe; \
protoc -I ../api:../go/vendor:/protobuf --gogofaster_out="plugins=grpc:$(GOPATH)/src" "$$proto" \
); done
goimports -w ./pkg ./cmd ./internal
shasum $(GEN_SRC) | sort -k 2 > $(GEN_SUM).tmp
mv $(GEN_SUM).tmp $(GEN_SUM)

vendor: go.mod
GO111MODULE=on go mod vendor
touch $@
##
## Dev
##

print-%:
@echo $*: $($*)

include bazel.make
13 changes: 12 additions & 1 deletion go/WORKSPACE
@@ -1,5 +1,16 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

# check bazel version

http_archive(
name = "build_bazel_rules_nodejs",
sha256 = "ad4be2c6f40f5af70c7edf294955f9d9a0222c8e2756109731b25f79ea2ccea0",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.38.3/rules_nodejs-0.38.3.tar.gz"],
)

load("@build_bazel_rules_nodejs//:index.bzl", "check_bazel_version")

check_bazel_version("0.29.1")

# rules_go

Expand Down

0 comments on commit 2a129b8

Please sign in to comment.