Merge pull request #2283 from 4383/improve-makefile

Generate make helping message dynamicaly.
This commit is contained in:
OpenShift Merge Robot
2019-02-06 22:45:51 +01:00
committed by GitHub

View File

@ -72,15 +72,23 @@ all: binaries docs
default: help default: help
define PRINT_HELP_PYSCRIPT
import re, sys
print("Usage: make <target>")
cmds = {}
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
cmds.update({target: help})
for cmd in sorted(cmds):
print(" * '%s' - %s" % (cmd, cmds[cmd]))
endef
export PRINT_HELP_PYSCRIPT
help: help:
@echo "Usage: make <target>" @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
@echo
@echo " * 'install' - Install binaries to system locations"
@echo " * 'binaries' - Build podman"
@echo " * 'integration' - Execute integration tests"
@echo " * 'clean' - Clean artifacts"
@echo " * 'lint' - Execute the source code linter"
@echo " * 'gofmt' - Verify the source code gofmt"
.gopathok: .gopathok:
ifeq ("$(wildcard $(GOPKGDIR))","") ifeq ("$(wildcard $(GOPKGDIR))","")
@ -89,11 +97,11 @@ ifeq ("$(wildcard $(GOPKGDIR))","")
endif endif
touch $@ touch $@
lint: .gopathok varlink_generate lint: .gopathok varlink_generate ## Execute the source code linter
@echo "checking lint" @echo "checking lint"
@./.tool/lint @./.tool/lint
gofmt: gofmt: ## Verify the source code gofmt
find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+ find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+
git diff --exit-code git diff --exit-code
@ -109,16 +117,16 @@ test/checkseccomp/checkseccomp: .gopathok $(wildcard test/checkseccomp/*.go)
test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go) 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) podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) ## Build with podman
$(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
podman-remote: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) 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 -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS) remoteclient" -o bin/$@ $(PROJECT)/cmd/podman
podman-remote-darwin: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) 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 -ldflags '$(LDFLAGS_PODMAN)' -tags "remoteclient containers_image_openpgp exclude_graphdriver_devicemapper" -o bin/$@ $(PROJECT)/cmd/podman
local-cross: $(CROSS_BUILD_TARGETS) local-cross: $(CROSS_BUILD_TARGETS) ## Cross local compilation
bin/podman.cross.%: .gopathok bin/podman.cross.%: .gopathok
TARGET="$*"; \ TARGET="$*"; \
@ -126,7 +134,7 @@ bin/podman.cross.%: .gopathok
GOARCH="$${TARGET##*.}" \ GOARCH="$${TARGET##*.}" \
$(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman
clean: clean: ## Clean artifacts
rm -rf \ rm -rf \
.gopathok \ .gopathok \
_output \ _output \
@ -146,16 +154,16 @@ clean:
find . -name \*~ -delete find . -name \*~ -delete
find . -name \#\* -delete find . -name \#\* -delete
libpodimage: libpodimage: ## Build the libpod image
${CONTAINER_RUNTIME} build -t ${LIBPOD_IMAGE} . ${CONTAINER_RUNTIME} build -t ${LIBPOD_IMAGE} .
dbuild: libpodimage dbuild: libpodimage
${CONTAINER_RUNTIME} run --name=${LIBPOD_INSTANCE} --privileged -v ${PWD}:/go/src/${PROJECT} --rm ${LIBPOD_IMAGE} make all ${CONTAINER_RUNTIME} run --name=${LIBPOD_INSTANCE} --privileged -v ${PWD}:/go/src/${PROJECT} --rm ${LIBPOD_IMAGE} make all
test: libpodimage test: libpodimage ## Run tests on built image
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e OCI_RUNTIME -e CGROUP_MANAGER=cgroupfs -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make clean all localunit install.catatonit localintegration ${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e OCI_RUNTIME -e CGROUP_MANAGER=cgroupfs -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make clean all localunit install.catatonit localintegration
integration: libpodimage integration: libpodimage ## Execute integration tests
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e OCI_RUNTIME -e CGROUP_MANAGER=cgroupfs -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make clean all install.catatonit localintegration ${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e OCI_RUNTIME -e CGROUP_MANAGER=cgroupfs -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make clean all install.catatonit localintegration
integration.fedora: integration.fedora:
@ -164,10 +172,10 @@ integration.fedora:
integration.centos: integration.centos:
DIST=CentOS sh .papr_prepare.sh DIST=CentOS sh .papr_prepare.sh
shell: libpodimage shell: libpodimage ## Run the built image and attach a shell
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e CGROUP_MANAGER=cgroupfs -e TESTFLAGS -e OCI_RUNTIME -e TRAVIS -it --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} sh ${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e CGROUP_MANAGER=cgroupfs -e TESTFLAGS -e OCI_RUNTIME -e TRAVIS -it --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} sh
testunit: libpodimage testunit: libpodimage ## Run unittest on the built image
${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e CGROUP_MANAGER=cgroupfs -e OCI_RUNTIME -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make localunit ${CONTAINER_RUNTIME} run -e STORAGE_OPTIONS="--storage-driver=vfs" -e TESTFLAGS -e CGROUP_MANAGER=cgroupfs -e OCI_RUNTIME -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${LIBPOD_IMAGE} make localunit
localunit: test/goecho/goecho varlink_generate localunit: test/goecho/goecho varlink_generate
@ -188,16 +196,16 @@ localsystem: .install.ginkgo
system.test-binary: .install.ginkgo system.test-binary: .install.ginkgo
$(GO) test -c ./test/system $(GO) test -c ./test/system
perftest: perftest: ## Build perf tests
$ cd contrib/perftest;go build $ cd contrib/perftest;go build
run-perftest: perftest run-perftest: perftest ## Build and run perf tests
$ contrib/perftest/perftest $ contrib/perftest/perftest
vagrant-check: vagrant-check:
BOX=$(BOX) sh ./vagrant.sh BOX=$(BOX) sh ./vagrant.sh
binaries: varlink_generate podman podman-remote binaries: varlink_generate podman podman-remote ## Build podman
install.catatonit: install.catatonit:
./hack/install_catatonit.sh ./hack/install_catatonit.sh
@ -210,12 +218,12 @@ MANPAGES ?= $(MANPAGES_MD:%.md=%)
$(MANPAGES): %: %.md .gopathok $(MANPAGES): %: %.md .gopathok
@sed -e 's/\((podman.*\.md)\)//' -e 's/\[\(podman.*\)\]/\1/' $< | $(GOMD2MAN) -in /dev/stdin -out $@ @sed -e 's/\((podman.*\.md)\)//' -e 's/\[\(podman.*\)\]/\1/' $< | $(GOMD2MAN) -in /dev/stdin -out $@
docs: $(MANPAGES) docs: $(MANPAGES) ## Generate documentation
docker-docs: docs docker-docs: docs
(cd docs; ./dckrman.sh *.1) (cd docs; ./dckrman.sh *.1)
changelog: changelog: ## Generate changelog
@echo "Creating changelog from $(CHANGELOG_BASE) to $(CHANGELOG_TARGET)" @echo "Creating changelog from $(CHANGELOG_BASE) to $(CHANGELOG_TARGET)"
$(eval TMPFILE := $(shell mktemp)) $(eval TMPFILE := $(shell mktemp))
$(shell cat changelog.txt > $(TMPFILE)) $(shell cat changelog.txt > $(TMPFILE))
@ -225,7 +233,7 @@ changelog:
$(shell cat $(TMPFILE) >> changelog.txt) $(shell cat $(TMPFILE) >> changelog.txt)
$(shell rm $(TMPFILE)) $(shell rm $(TMPFILE))
install: .gopathok install.bin install.man install.cni install.systemd install: .gopathok install.bin install.man install.cni install.systemd ## Install binaries to system locations
install.bin: install.bin:
install ${SELINUXOPT} -d -m 755 $(BINDIR) install ${SELINUXOPT} -d -m 755 $(BINDIR)
@ -278,7 +286,7 @@ uninstall:
.PHONY: install.tools .PHONY: install.tools
install.tools: .install.gitvalidation .install.gometalinter .install.md2man .install.ginkgo install.tools: .install.gitvalidation .install.gometalinter .install.md2man .install.ginkgo ## Install needed tools
.install.vndr: .gopathok .install.vndr: .gopathok
$(GO) get github.com/LK4D4/vndr $(GO) get github.com/LK4D4/vndr