mirror of
https://github.com/containers/podman.git
synced 2025-06-19 00:06:43 +08:00
Merge pull request #3390 from Foxboron/morten/reprobuilds
Support reproducible builds in the Makefile
This commit is contained in:
22
Makefile
22
Makefile
@ -49,14 +49,22 @@ SELINUXOPT ?= $(shell test -x /usr/sbin/selinuxenabled && selinuxenabled && echo
|
|||||||
|
|
||||||
COMMIT_NO ?= $(shell git rev-parse HEAD 2> /dev/null || true)
|
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})
|
GIT_COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),${COMMIT_NO}-dirty,${COMMIT_NO})
|
||||||
BUILD_INFO ?= $(shell date +%s)
|
DATE_FMT = %s
|
||||||
|
ifdef SOURCE_DATE_EPOCH
|
||||||
|
BUILD_INFO ?= $(shell date -u -d "@$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u "+$(DATE_FMT)")
|
||||||
|
ISODATE ?= $(shell date -d "@$(SOURCE_DATE_EPOCH)" --iso-8601)
|
||||||
|
else
|
||||||
|
BUILD_INFO ?= $(shell date "+$(DATE_FMT)")
|
||||||
|
ISODATE ?= $(shell date --iso-8601)
|
||||||
|
endif
|
||||||
LIBPOD := ${PROJECT}/libpod
|
LIBPOD := ${PROJECT}/libpod
|
||||||
|
GCFLAGS ?= all=-trimpath=${PWD}
|
||||||
|
ASMFLAGS ?= all=-trimpath=${PWD}
|
||||||
LDFLAGS_PODMAN ?= $(LDFLAGS) \
|
LDFLAGS_PODMAN ?= $(LDFLAGS) \
|
||||||
-X $(LIBPOD).gitCommit=$(GIT_COMMIT) \
|
-X $(LIBPOD).gitCommit=$(GIT_COMMIT) \
|
||||||
-X $(LIBPOD).buildInfo=$(BUILD_INFO) \
|
-X $(LIBPOD).buildInfo=$(BUILD_INFO) \
|
||||||
-X $(LIBPOD).installPrefix=$(PREFIX) \
|
-X $(LIBPOD).installPrefix=$(PREFIX) \
|
||||||
-X $(LIBPOD).etcDir=$(ETCDIR)
|
-X $(LIBPOD).etcDir=$(ETCDIR)
|
||||||
ISODATE ?= $(shell date --iso-8601)
|
|
||||||
#Update to LIBSECCOMP_COMMIT should reflect in Dockerfile too.
|
#Update to LIBSECCOMP_COMMIT should reflect in Dockerfile too.
|
||||||
LIBSECCOMP_COMMIT := release-2.3
|
LIBSECCOMP_COMMIT := release-2.3
|
||||||
|
|
||||||
@ -132,16 +140,16 @@ test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go)
|
|||||||
$(GO) build -ldflags '$(LDFLAGS)' -o $@ $(PROJECT)/test/goecho
|
$(GO) build -ldflags '$(LDFLAGS)' -o $@ $(PROJECT)/test/goecho
|
||||||
|
|
||||||
podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman
|
podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman
|
||||||
$(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
|
$(GO) build -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
podman-remote: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman on remote environment
|
podman-remote: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman on remote environment
|
||||||
$(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS) remoteclient" -o bin/$@ $(PROJECT)/cmd/podman
|
$(GO) build -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS) remoteclient" -o bin/$@ $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
podman-remote-darwin: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman on remote OSX environment
|
podman-remote-darwin: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman on remote OSX environment
|
||||||
GOOS=darwin $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@ $(PROJECT)/cmd/podman
|
GOOS=darwin $(GO) build -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@ $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
podman-remote-windows: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman for a remote windows environment
|
podman-remote-windows: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman for a remote windows environment
|
||||||
GOOS=windows $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@.exe $(PROJECT)/cmd/podman
|
GOOS=windows $(GO) build -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@.exe $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
local-cross: $(CROSS_BUILD_TARGETS) ## Cross local compilation
|
local-cross: $(CROSS_BUILD_TARGETS) ## Cross local compilation
|
||||||
|
|
||||||
@ -149,7 +157,7 @@ bin/podman.cross.%: .gopathok
|
|||||||
TARGET="$*"; \
|
TARGET="$*"; \
|
||||||
GOOS="$${TARGET%%.*}" \
|
GOOS="$${TARGET%%.*}" \
|
||||||
GOARCH="$${TARGET##*.}" \
|
GOARCH="$${TARGET##*.}" \
|
||||||
$(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman
|
$(GO) build -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
clean: ## Clean artifacts
|
clean: ## Clean artifacts
|
||||||
rm -rf \
|
rm -rf \
|
||||||
|
Reference in New Issue
Block a user