mirror of
https://github.com/containers/podman.git
synced 2025-10-17 19:24:04 +08:00
Support Reproducible Builds by removing build path
An issue for achieving reproducible builds is build artifacts where build paths are embedded. We remove them by passing the current working directory to -gcflags and -asmflags which prefix trims the paths. Note: Go 1.13 includes `-trimpath` https://reproducible-builds.org/docs/build-path/ Signed-off-by: Morten Linderud <morten@linderud.pw>
This commit is contained in:
12
Makefile
12
Makefile
@ -58,6 +58,8 @@ else
|
||||
ISODATE ?= $(shell date --iso-8601)
|
||||
endif
|
||||
LIBPOD := ${PROJECT}/libpod
|
||||
GCFLAGS ?= all=-trimpath=${PWD}
|
||||
ASMFLAGS ?= all=-trimpath=${PWD}
|
||||
LDFLAGS_PODMAN ?= $(LDFLAGS) \
|
||||
-X $(LIBPOD).gitCommit=$(GIT_COMMIT) \
|
||||
-X $(LIBPOD).buildInfo=$(BUILD_INFO) \
|
||||
@ -138,16 +140,16 @@ test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go)
|
||||
$(GO) build -ldflags '$(LDFLAGS)' -o $@ $(PROJECT)/test/goecho
|
||||
|
||||
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
|
||||
$(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
|
||||
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
|
||||
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
|
||||
|
||||
@ -155,7 +157,7 @@ bin/podman.cross.%: .gopathok
|
||||
TARGET="$*"; \
|
||||
GOOS="$${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
|
||||
rm -rf \
|
||||
|
Reference in New Issue
Block a user