Skip to content

Commit

Permalink
Makefile: simplify for modern Go
Browse files Browse the repository at this point in the history
Quite a few changes, mostly removing old stuff though.

1. "GO111MODULE=off" is no longer required to be set by default (and
   it used to be overridden below anyway).

2. "go build" no longer requires explicit "-mod=vendor", as this is the
   default since go 1.14.

3. GOPROXY is set to proxy.golang.org by default since go 1.13.

4. Always use default GOPATH (which is $HOME/go since Go 1.8; earlier
   releases needed to set it explicitly).

5. Drop the code that handles multiple comma-separated GOPATH elements
   (when using modules, GOPATH is no longer used for resolving imports,
   which basically means using multiple paths is useless).

6. Fix go-get to use go install mod@latest, if available (Go >= 1.16),
   and fall back to go get -u (deprecated since Go 1.16). The fallback
   can later be removed.

7. Do not check if go-md2man is available, always installing it. This
   fixes the issue of using old version of installed go-md2man, and
   removes the need to have GOBIN make variable.

8. Remove GOPKGBASEDIR and GOPKGBASEDIR, defined by Makefile, were never
   used.

Signed-off-by: Kir Kolyshkin <[email protected]>
  • Loading branch information
kolyshkin committed Mar 31, 2022
1 parent 3b98384 commit 69ad0a8
Showing 1 changed file with 5 additions and 32 deletions.
37 changes: 5 additions & 32 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,38 +1,13 @@
export GO111MODULE=off

GO ?= go
GO_BUILD=$(GO) build
# Go module support: set `-mod=vendor` to use the vendored sources
ifeq ($(shell go help mod >/dev/null 2>&1 && echo true), true)
GO_BUILD=GO111MODULE=on $(GO) build -mod=vendor
endif
BUILDTAGS := containers_image_openpgp,systemd,exclude_graphdriver_devicemapper
DESTDIR ?=
PREFIX := /usr/local
CONFIGDIR := ${PREFIX}/share/containers
PROJECT := github.com/containers/common

# Enforce the GOPROXY to make sure dependencies are resovled consistently
# across different environments.
export GOPROXY := https://proxy.golang.org

# If GOPATH not specified, use one in the local directory
ifeq ($(GOPATH),)
export GOPATH := $(CURDIR)/_output
unexport GOBIN
endif
FIRST_GOPATH := $(firstword $(subst :, ,$(GOPATH)))
GOPKGDIR := $(FIRST_GOPATH)/src/$(PROJECT)
GOPKGBASEDIR ?= $(shell dirname "$(GOPKGDIR)")

GOBIN := $(shell $(GO) env GOBIN)
ifeq ($(GOBIN),)
GOBIN := $(FIRST_GOPATH)/bin
endif

define go-get
env GO111MODULE=off \
$(GO) get -u ${1}
go install ${1}@latest || env GO111MODULE=off $(GO) get -u ${1}
endef

define go-build
Expand Down Expand Up @@ -90,9 +65,9 @@ vendor-in-container:

.PHONY: vendor
vendor:
GO111MODULE=on $(GO) mod tidy
GO111MODULE=on $(GO) mod vendor
GO111MODULE=on $(GO) mod verify
$(GO) mod tidy
$(GO) mod vendor
$(GO) mod verify

.PHONY: install.tools
install.tools: build/golangci-lint .install.md2man
Expand All @@ -106,9 +81,7 @@ build/golangci-lint:


.install.md2man:
if [ ! -x "$(GOBIN)/go-md2man" ]; then \
$(call go-get,github.com/cpuguy83/go-md2man); \
fi
$(call go-get,github.com/cpuguy83/go-md2man)

.PHONY: install
install:
Expand Down

0 comments on commit 69ad0a8

Please sign in to comment.