From 624660c1b3869bdd6b3342f5924e813f32a81b4a Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Tue, 15 May 2018 16:27:07 -0700 Subject: Makefile: Use ?= for shell variables (ISODATE, etc.) Previously, Make would execute these shell commands even if we didn't need the resulting variable. With ?='s recursive expansion [1], we only expand the variable when it's consumed. For example, the ISODATE variable is only needed in the recipe for the changelog target, so most Make invocations won't need the value, and the computation is just making whatever Make actually is doing slower. I've shifted the GIT_COMMIT and BUILD_INFO values over to LDFLAGS_PODMAN, because the test/*/* targets don't care about those. I've also moved the Go-specific -ldflags from the variables into the recipes themselves, because callers probably expect C semantics for LDFLAGS and not Go's wrapper. That means that there's no longer a need for the LDFLAGS/BASE_LDFLAGS separation, so I'm just using LDFLAGS (and LDFLAGS_PODMAN) now. That reduces the declared variables to just LDFLAGS_PODMAN, so I've shifted that declaration up to get it closer to its GIT_COMMIT and BUILD_INFO precursors. [1]: https://www.gnu.org/software/make/manual/html_node/Setting.html Signed-off-by: W. Trevor King Closes: #777 Approved by: rhatdan --- Makefile | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 8c05d3a75..c624a94c8 100644 --- a/Makefile +++ b/Makefile @@ -4,9 +4,9 @@ HEAD ?= HEAD CHANGELOG_BASE ?= HEAD~ CHANGELOG_TARGET ?= HEAD PROJECT := github.com/projectatomic/libpod -GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) -GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g") -LIBPOD_IMAGE := libpod_dev$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN)) +GIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) +GIT_BRANCH_CLEAN ?= $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g") +LIBPOD_IMAGE ?= libpod_dev$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN)) LIBPOD_INSTANCE := libpod_dev PREFIX ?= ${DESTDIR}/usr/local BINDIR ?= ${PREFIX}/bin @@ -25,10 +25,11 @@ OCIUMOUNTINSTALLDIR=$(PREFIX)/share/oci-umount/oci-umount.d SELINUXOPT ?= $(shell test -x /usr/sbin/selinuxenabled && selinuxenabled && echo -Z) PACKAGES ?= $(shell go list -tags "${BUILDTAGS}" ./... | grep -v github.com/projectatomic/libpod/vendor | grep -v e2e) -COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true) -GIT_COMMIT := $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}") -BUILD_INFO := $(shell date +%s) -ISODATE := $(shell date --iso-8601) +COMMIT_NO ?= $(shell git rev-parse HEAD 2> /dev/null || true) +GIT_COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),"${COMMIT_NO}-dirty","${COMMIT_NO}") +BUILD_INFO ?= $(shell date +%s) +LDFLAGS_PODMAN ?= $(LDFLAGS) -X main.gitCommit=$(GIT_COMMIT) -X main.buildInfo=$(BUILD_INFO) +ISODATE ?= $(shell date --iso-8601) LIBSECCOMP_COMMIT := release-2.3 # If GOPATH not specified, use one in the local directory @@ -47,10 +48,6 @@ endif GOMD2MAN ?= $(shell command -v go-md2man || echo '$(GOBIN)/go-md2man') -BASE_LDFLAGS := -X main.gitCommit=${GIT_COMMIT} -X main.buildInfo=${BUILD_INFO} -LDFLAGS := -ldflags '${BASE_LDFLAGS}' -LDFLAGS_PODMAN := -ldflags '${BASE_LDFLAGS}' - BOX="fedora_atomic" all: binaries docs @@ -85,16 +82,16 @@ fix_gofmt: @./hack/verify-gofmt.sh -f test/bin2img/bin2img: .gopathok $(wildcard test/bin2img/*.go) - $(GO) build $(LDFLAGS) -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/bin2img + $(GO) build -ldflags '$(LDFLAGS)' -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/bin2img test/copyimg/copyimg: .gopathok $(wildcard test/copyimg/*.go) - $(GO) build $(LDFLAGS) -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/copyimg + $(GO) build -ldflags '$(LDFLAGS)' -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/copyimg test/checkseccomp/checkseccomp: .gopathok $(wildcard test/checkseccomp/*.go) - $(GO) build $(LDFLAGS) -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/checkseccomp + $(GO) build -ldflags '$(LDFLAGS)' -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/checkseccomp podman: .gopathok API.md cmd/podman/varlink/ioprojectatomicpodman.go - $(GO) build -i $(LDFLAGS_PODMAN) -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman + $(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman python-podman: $(MAKE) -C contrib/python python-podman -- cgit v1.2.3-54-g00ecf