From f302ce578b49a00de31aacc0c5e845274de3deac Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 19 Jan 2021 10:27:01 +0100 Subject: make bindings generation more robuts The Go gods did not shine upon us trying to understand what's going on in #9000. The symptom is that `go generate` did not add required imports to a generated file, ultimately breaking subsequent compilation. While it still remains unclear *why* Go is behaving like that, the symptom disappears when `go generate` runs in module mode; that is without `-mod=vendor` and without `GO111MODULE=off`. This was reproducible on two separate machines (Ubuntu and Fedora). Also, when facing an unset GOPATH, set it to Go's default (i.e., $HOME/go) and make sure that GOBIN is in PATH since `goimports` is required by `go generate`. Fixes: #9000 Signed-off-by: Valentin Rothberg --- Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index bdedd046f..e3cdb8a19 100644 --- a/Makefile +++ b/Makefile @@ -86,7 +86,7 @@ PODMAN_SERVER_LOG ?= # If GOPATH not specified, use one in the local directory ifeq ($(GOPATH),) -export GOPATH := $(CURDIR)/_output +export GOPATH := $(HOME)/go unexport GOBIN endif FIRST_GOPATH := $(firstword $(subst :, ,$(GOPATH))) @@ -98,6 +98,8 @@ ifeq ($(GOBIN),) GOBIN := $(FIRST_GOPATH)/bin endif +export PATH := $(PATH):$(GOBIN) + GOMD2MAN ?= $(shell command -v go-md2man || echo '$(GOBIN)/go-md2man') CROSS_BUILD_TARGETS := \ @@ -466,7 +468,7 @@ podman-remote-%-release: BINDINGS_SOURCE = $(wildcard pkg/bindings/**/types.go) .generate-bindings: $(BINDINGS_SOURCE) ifneq ($(shell uname -s), Darwin) - $(GO) generate -mod=vendor ./pkg/bindings/... ; + GO111MODULE=off $(GO) generate ./pkg/bindings/... ; endif touch .generate-bindings -- cgit v1.2.3-54-g00ecf From 41a7e11c7e3eb756a43316558d712eea33e11829 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 19 Jan 2021 16:13:02 +0100 Subject: make bindings generation explicit Instead of implicitly generating the bindings, make it explicit, similar to `make vendor`. This should prevent redundant and possibly error prone generations. A following commit will shield CI. Signed-off-by: Valentin Rothberg --- Makefile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index e3cdb8a19..aed912ece 100644 --- a/Makefile +++ b/Makefile @@ -208,7 +208,7 @@ endif podman: bin/podman .PHONY: bin/podman-remote -bin/podman-remote: .gopathok .generate-bindings $(SOURCES) go.mod go.sum ## Build with podman on remote environment +bin/podman-remote: .gopathok $(SOURCES) go.mod go.sum ## Build with podman on remote environment $(GO) build $(BUILDFLAGS) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "${REMOTETAGS}" -o $@ ./cmd/podman .PHONY: bin/podman-remote-static @@ -279,7 +279,6 @@ clean: ## Clean artifacts libpod/container_easyjson.go \ libpod/pod_easyjson.go \ .install.goimports \ - .generate-bindings \ docs/build make -C docs clean @@ -465,12 +464,10 @@ podman-remote-%-release: rm -f release.txt $(MAKE) podman-remote-release-$*.zip -BINDINGS_SOURCE = $(wildcard pkg/bindings/**/types.go) -.generate-bindings: $(BINDINGS_SOURCE) +generate-bindings: ifneq ($(shell uname -s), Darwin) GO111MODULE=off $(GO) generate ./pkg/bindings/... ; endif - touch .generate-bindings .PHONY: docker-docs docker-docs: docs -- cgit v1.2.3-54-g00ecf From a3621a7cff27a77a53031cd58b2015a0f178101b Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Tue, 19 Jan 2021 17:19:46 +0100 Subject: Cirrus: add bindings checks Make sure that bindings are in sync with the code. The check is similar to what's already being done with `make vendor`, so integrate the two. [NO TESTS NEEDED] Signed-off-by: Valentin Rothberg --- .cirrus.yml | 14 ++++++++------ Makefile | 1 + contrib/cirrus/runner.sh | 6 ++++-- contrib/cirrus/setup_environment.sh | 2 +- 4 files changed, 14 insertions(+), 9 deletions(-) (limited to 'Makefile') diff --git a/.cirrus.yml b/.cirrus.yml index bfe293601..2aa751f9f 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -274,17 +274,19 @@ swagger_task: # Check that all included go modules from other sources match -# what is expected in `vendor/modules.txt` vs `go.mod`. -vendor_task: - name: "Test Vendoring" - alias: vendor +# what is expected in `vendor/modules.txt` vs `go.mod`. Also +# make sure that the generated bindings in pkg/bindings/... +# are in sync with the code. +consistency_task: + name: "Test Code Consistency" + alias: consistency skip: *tags depends_on: - build container: *smallcontainer env: <<: *stdenvars - TEST_FLAVOR: vendor + TEST_FLAVOR: consistency TEST_ENVIRON: container CTR_FQIN: ${FEDORA_CONTAINER_FQIN} clone_script: *full_clone # build-cache not available to container tasks @@ -642,7 +644,7 @@ success_task: - validate - bindings - swagger - - vendor + - consistency - alt_build - static_alt_build - osx_alt_build diff --git a/Makefile b/Makefile index aed912ece..dfa36e3ef 100644 --- a/Makefile +++ b/Makefile @@ -464,6 +464,7 @@ podman-remote-%-release: rm -f release.txt $(MAKE) podman-remote-release-$*.zip +.PHONY: generate-bindings generate-bindings: ifneq ($(shell uname -s), Darwin) GO111MODULE=off $(GO) generate ./pkg/bindings/... ; diff --git a/contrib/cirrus/runner.sh b/contrib/cirrus/runner.sh index e968fac45..d9f91c7af 100755 --- a/contrib/cirrus/runner.sh +++ b/contrib/cirrus/runner.sh @@ -146,9 +146,11 @@ function _run_swagger() { cp -v $GOSRC/pkg/api/swagger.yaml $GOSRC/ } -function _run_vendor() { +function _run_consistency() { make vendor - ./hack/tree_status.sh + SUGGESTION="run 'make vendor' and commit all changes" ./hack/tree_status.sh + make generate-bindings + SUGGESTION="run 'make generate-bindings' and commit all changes" ./hack/tree_status.sh } function _run_build() { diff --git a/contrib/cirrus/setup_environment.sh b/contrib/cirrus/setup_environment.sh index 5c6f05ac0..7b49caba0 100755 --- a/contrib/cirrus/setup_environment.sh +++ b/contrib/cirrus/setup_environment.sh @@ -214,7 +214,7 @@ case "$TEST_FLAVOR" in install_test_configs ;; - vendor) make clean ;; + consistency) make clean ;; release) ;; *) die_unknown TEST_FLAVOR esac -- cgit v1.2.3-54-g00ecf