mirror of
https://github.com/containers/podman.git
synced 2025-06-22 18:08:11 +08:00
Merge pull request #14435 from cevich/makefile_empty
Makefile: Handle unexpected empty var. values
This commit is contained in:
34
Makefile
34
Makefile
@ -29,8 +29,6 @@ EPOCH_TEST_COMMIT ?= $(shell git merge-base $${DEST_BRANCH:-main} HEAD)
|
||||
HEAD ?= HEAD
|
||||
PROJECT := github.com/containers/podman
|
||||
GIT_BASE_BRANCH ?= origin/main
|
||||
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_INSTANCE := libpod_dev
|
||||
PREFIX ?= /usr/local
|
||||
BINDIR ?= ${PREFIX}/bin
|
||||
@ -80,18 +78,18 @@ FISHINSTALLDIR=${PREFIX}/share/fish/vendor_completions.d
|
||||
SELINUXOPT ?= $(shell test -x /usr/sbin/selinuxenabled && selinuxenabled && echo -Z)
|
||||
|
||||
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),$(call err_if_empty,COMMIT_NO)-dirty,$(COMMIT_NO))
|
||||
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)")
|
||||
BUILD_INFO ?= $(shell date -u -d "@$(call err_if_empty,SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u -r "$(SOURCE_DATE_EPOCH)" "+$(DATE_FMT)" 2>/dev/null || date -u "+$(DATE_FMT)")
|
||||
else
|
||||
BUILD_INFO ?= $(shell date "+$(DATE_FMT)")
|
||||
endif
|
||||
LIBPOD := ${PROJECT}/v4/libpod
|
||||
GOFLAGS ?= -trimpath
|
||||
LDFLAGS_PODMAN ?= \
|
||||
-X $(LIBPOD)/define.gitCommit=$(GIT_COMMIT) \
|
||||
-X $(LIBPOD)/define.buildInfo=$(BUILD_INFO) \
|
||||
$(if $(GIT_COMMIT),-X $(LIBPOD)/define.gitCommit=$(GIT_COMMIT),) \
|
||||
$(if $(BUILD_INFO),-X $(LIBPOD)/define.buildInfo=$(BUILD_INFO),) \
|
||||
-X $(LIBPOD)/config._installPrefix=$(PREFIX) \
|
||||
-X $(LIBPOD)/config._etcDir=$(ETCDIR) \
|
||||
-X github.com/containers/common/pkg/config.additionalHelperBinariesDir=$(HELPER_BINARIES_DIR)\
|
||||
@ -107,7 +105,7 @@ GINKGOTIMEOUT ?= -timeout=90m
|
||||
|
||||
# Conditional required to produce empty-output if binary not built yet.
|
||||
RELEASE_VERSION = $(shell if test -x test/version/version; then test/version/version; fi)
|
||||
RELEASE_NUMBER = $(shell echo "$(RELEASE_VERSION)" | sed -e 's/^v\(.*\)/\1/')
|
||||
RELEASE_NUMBER = $(shell echo "$(call err_if_empty,RELEASE_VERSION)" | sed -e 's/^v\(.*\)/\1/')
|
||||
|
||||
# If non-empty, logs all output from server during remote system testing
|
||||
PODMAN_SERVER_LOG ?=
|
||||
@ -138,7 +136,7 @@ err_if_empty = $(if $(strip $($(1))),$(strip $($(1))),$(error Required variable
|
||||
CGO_ENABLED ?= 1
|
||||
# Default to the native OS type and architecture unless otherwise specified
|
||||
NATIVE_GOOS := $(shell env -u GOOS $(GO) env GOOS)
|
||||
GOOS ?= $(NATIVE_GOOS)
|
||||
GOOS ?= $(call err_if_empty,NATIVE_GOOS)
|
||||
# Default to the native architecture type
|
||||
NATIVE_GOARCH := $(shell env -u GOARCH $(GO) env GOARCH)
|
||||
GOARCH ?= $(NATIVE_GOARCH)
|
||||
@ -158,7 +156,7 @@ export GOOS GOARCH CGO_ENABLED BINSFX SRCBINDIR
|
||||
# Need to use CGO for mDNS resolution, but cross builds need CGO disabled
|
||||
# See https://github.com/golang/go/issues/12524 for details
|
||||
DARWIN_GCO := 0
|
||||
ifeq ($(NATIVE_GOOS),darwin)
|
||||
ifeq ($(call err_if_empty,NATIVE_GOOS),darwin)
|
||||
ifdef HOMEBREW_PREFIX
|
||||
DARWIN_GCO := 1
|
||||
endif
|
||||
@ -189,8 +187,8 @@ binaries: podman podman-remote rootlessport ## Build podman, podman-remote and r
|
||||
# at reference-time (due to `=` and not `=:`).
|
||||
_HLP_TGTS_RX = '^[[:print:]]+:.*?\#\# .*$$'
|
||||
_HLP_TGTS_CMD = grep -E $(_HLP_TGTS_RX) $(MAKEFILE_LIST)
|
||||
_HLP_TGTS_LEN = $(shell $(_HLP_TGTS_CMD) | cut -d : -f 1 | wc -L)
|
||||
_HLPFMT = "%-$(_HLP_TGTS_LEN)s %s\n"
|
||||
_HLP_TGTS_LEN = $(shell $(call err_if_empty,_HLP_TGTS_CMD) | cut -d : -f 1 | wc -L)
|
||||
_HLPFMT = "%-$(call err_if_empty,_HLP_TGTS_LEN)s %s\n"
|
||||
.PHONY: help
|
||||
help: ## (Default) Print listing of key targets with their descriptions
|
||||
@printf $(_HLPFMT) "Target:" "Description:"
|
||||
@ -250,7 +248,7 @@ validate: lint .gitvalidation validate.completions man-page-check swagger-check
|
||||
.PHONY: build-all-new-commits
|
||||
build-all-new-commits:
|
||||
# Validate that all the commits build on top of $(GIT_BASE_BRANCH)
|
||||
git rebase $(GIT_BASE_BRANCH) -x "$(MAKE)"
|
||||
git rebase $(call err_if_empty,GIT_BASE_BRANCH) -x "$(MAKE)"
|
||||
|
||||
.PHONY: vendor
|
||||
vendor:
|
||||
@ -441,7 +439,7 @@ docs: $(MANPAGES) ## Generate documentation
|
||||
|
||||
# docs/remote-docs.sh requires a locally executable 'podman-remote' binary
|
||||
# in addition to the target-archetecture binary (if any).
|
||||
podman-remote-%-docs: podman-remote-$(NATIVE_GOOS)
|
||||
podman-remote-%-docs: podman-remote-$(call err_if_empty,NATIVE_GOOS)
|
||||
$(eval GOOS := $*)
|
||||
$(MAKE) docs $(MANPAGES)
|
||||
rm -rf docs/build/remote
|
||||
@ -639,7 +637,7 @@ podman-release-%.tar.gz: test/version/version
|
||||
$(eval SUBDIR := podman-v$(call err_if_empty,RELEASE_NUMBER))
|
||||
$(eval _DSTARGS := "DESTDIR=$(TMPDIR)/$(SUBDIR)" "PREFIX=/usr")
|
||||
$(eval GOARCH := $*)
|
||||
mkdir -p "$(TMPDIR)/$(SUBDIR)"
|
||||
mkdir -p "$(call err_if_empty,TMPDIR)/$(SUBDIR)"
|
||||
$(MAKE) GOOS=$(GOOS) GOARCH=$(NATIVE_GOARCH) \
|
||||
clean-binaries docs podman-remote-$(GOOS)-docs
|
||||
if [[ "$(GOARCH)" != "$(NATIVE_GOARCH)" ]]; then \
|
||||
@ -660,7 +658,7 @@ podman-remote-release-%.zip: test/version/version ## Build podman-remote for %=$
|
||||
$(eval GOOS := $(firstword $(subst _, ,$*)))
|
||||
$(eval GOARCH := $(lastword $(subst _, ,$*)))
|
||||
$(eval _GOPLAT := GOOS=$(call err_if_empty,GOOS) GOARCH=$(call err_if_empty,GOARCH))
|
||||
mkdir -p "$(TMPDIR)/$(SUBDIR)"
|
||||
mkdir -p "$(call err_if_empty,TMPDIR)/$(SUBDIR)"
|
||||
$(MAKE) GOOS=$(GOOS) GOARCH=$(NATIVE_GOARCH) \
|
||||
clean-binaries podman-remote-$(GOOS)-docs
|
||||
if [[ "$(GOARCH)" != "$(NATIVE_GOARCH)" ]]; then \
|
||||
@ -679,8 +677,8 @@ podman-remote-release-%.zip: test/version/version ## Build podman-remote for %=$
|
||||
|
||||
.PHONY: podman.msi
|
||||
podman.msi: test/version/version ## Build podman-remote, package for installation on Windows
|
||||
$(MAKE) podman-v$(RELEASE_NUMBER).msi
|
||||
podman-v$(RELEASE_NUMBER).msi: podman-remote-windows podman-remote-windows-docs podman-winpath win-sshproxy
|
||||
$(MAKE) podman-v$(call err_if_empty,RELEASE_NUMBER).msi
|
||||
podman-v%.msi: test/version/version podman-remote-windows podman-remote-windows-docs podman-winpath win-sshproxy
|
||||
$(eval DOCFILE := docs/build/remote/windows)
|
||||
find $(DOCFILE) -print | \
|
||||
wixl-heat --var var.ManSourceDir --component-group ManFiles \
|
||||
@ -715,7 +713,7 @@ package: ## Build rpm packages
|
||||
# a full path to test installed podman or you risk to call another executable.
|
||||
.PHONY: package-install
|
||||
package-install: package ## Install rpm packages
|
||||
sudo ${PKG_MANAGER} -y install ${HOME}/rpmbuild/RPMS/*/*.rpm
|
||||
sudo $(call err_if_empty,PKG_MANAGER) -y install ${HOME}/rpmbuild/RPMS/*/*.rpm
|
||||
/usr/bin/podman version
|
||||
/usr/bin/podman info # will catch a broken conmon
|
||||
|
||||
|
@ -312,6 +312,11 @@ function _run_release() {
|
||||
if [[ -n "$dev" ]]; then
|
||||
die "Releases must never contain '-dev' in output of 'podman info' ($dev)"
|
||||
fi
|
||||
|
||||
commit=$(bin/podman info --format='{{.Version.GitCommit}}' | tr -d '[:space:]')
|
||||
if [[ -z "$commit" ]]; then
|
||||
die "Releases must contain a non-empty Version.GitCommit in 'podman info'"
|
||||
fi
|
||||
msg "All OK"
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user