mirror of
https://github.com/containers/podman.git
synced 2025-10-26 18:54:17 +08:00
Makefile: make bin/* real targets!
Backstory: every time you run 'make podman' or even just 'make', you get a full recompile. This is sub-ideal. Cause: I don't really know. It looks complicated. #5017 introduced a .PHONY for bin/podman, for reasons not explained in the PR. Then, much later, #5880 well- intentionedly but improperly tweaked the 'find' command used in defining SOURCES, adding a -prune but without the corresponding and required -print. Let's just say, it was an unfortunate cascade of events. This PR fixes the SOURCES definition and removes the highly-undesired .PHONY from podman & podman-remote, making it so you can type 'make' and, oh joy, not build anything if it's current. The way 'make' is supposed to work. Why fix this now? Because my PR (#9209) was failing in CI, in the Validate step: Can't exec "./bin/podman": No such file or directory at hack/xref-helpmsgs-manpages line 223. It failed even on Re-run, and only passed once I force-pushed the PR (with no changes, just a new commit SHA). I have no idea why bin/podman wasn't built, and I have zero interest in pursuing that right now, but the proper solution is to add bin/podman as a Makefile dependency for that particular test. So done. While I'm at it, fix what is pretty clearly a typo in a .PHONY And, finally, fix a go-md2man warning introduced in #9189 [NO TESTS NEEDED] Signed-off-by: Ed Santiago <santiago@redhat.com>
This commit is contained in:
12
Makefile
12
Makefile
@ -35,7 +35,11 @@ PKG_MANAGER ?= $(shell command -v dnf yum|head -n1)
|
|||||||
# ~/.local/bin is not in PATH on all systems
|
# ~/.local/bin is not in PATH on all systems
|
||||||
PRE_COMMIT = $(shell command -v bin/venv/bin/pre-commit ~/.local/bin/pre-commit pre-commit | head -n1)
|
PRE_COMMIT = $(shell command -v bin/venv/bin/pre-commit ~/.local/bin/pre-commit pre-commit | head -n1)
|
||||||
|
|
||||||
SOURCES = $(shell find . -path './.*' -prune -o -name "*.go")
|
# This isn't what we actually build; it's a superset, used for target
|
||||||
|
# dependencies. Basically: all *.go files, except *_test.go, and except
|
||||||
|
# anything in a dot subdirectory. If any of these files is newer than
|
||||||
|
# our target (bin/podman{,-remote}), a rebuild is triggered.
|
||||||
|
SOURCES = $(shell find . -path './.*' -prune -o \( -name '*.go' -a ! -name '*_test.go' \) -print)
|
||||||
|
|
||||||
BUILDFLAGS := -mod=vendor $(BUILDFLAGS)
|
BUILDFLAGS := -mod=vendor $(BUILDFLAGS)
|
||||||
|
|
||||||
@ -195,7 +199,6 @@ test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go)
|
|||||||
$(GO) build $(BUILDFLAGS) -ldflags '$(LDFLAGS_PODMAN)' -o $@ ./test/goecho
|
$(GO) build $(BUILDFLAGS) -ldflags '$(LDFLAGS_PODMAN)' -o $@ ./test/goecho
|
||||||
|
|
||||||
|
|
||||||
.PHONY: bin/podman
|
|
||||||
bin/podman: .gopathok $(SOURCES) go.mod go.sum ## Build with podman
|
bin/podman: .gopathok $(SOURCES) go.mod go.sum ## Build with podman
|
||||||
# Make sure to warn in case we're building without the systemd buildtag.
|
# Make sure to warn in case we're building without the systemd buildtag.
|
||||||
ifeq (,$(findstring systemd,$(BUILDTAGS)))
|
ifeq (,$(findstring systemd,$(BUILDTAGS)))
|
||||||
@ -207,7 +210,6 @@ endif
|
|||||||
.PHONY: podman
|
.PHONY: podman
|
||||||
podman: bin/podman
|
podman: bin/podman
|
||||||
|
|
||||||
.PHONY: bin/podman-remote
|
|
||||||
bin/podman-remote: .gopathok $(SOURCES) go.mod go.sum ## Build with podman on remote environment
|
bin/podman-remote: .gopathok $(SOURCES) go.mod go.sum ## Build with podman on remote environment
|
||||||
$(GO) build $(BUILDFLAGS) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "${REMOTETAGS}" -o $@ ./cmd/podman
|
$(GO) build $(BUILDFLAGS) -gcflags '$(GCFLAGS)' -asmflags '$(ASMFLAGS)' -ldflags '$(LDFLAGS_PODMAN)' -tags "${REMOTETAGS}" -o $@ ./cmd/podman
|
||||||
|
|
||||||
@ -390,7 +392,7 @@ MANPAGES_DEST ?= $(subst markdown,man, $(subst source,build,$(MANPAGES)))
|
|||||||
$(MANPAGES): %: %.md .install.md2man docdir
|
$(MANPAGES): %: %.md .install.md2man docdir
|
||||||
@sed -e 's/\((podman.*\.md)\)//' -e 's/\[\(podman.*\)\]/\1/' -e 's;<\(/\)\?\(a[^>]*\|sup\)>;;g' $< | $(GOMD2MAN) -in /dev/stdin -out $(subst source/markdown,build/man,$@)
|
@sed -e 's/\((podman.*\.md)\)//' -e 's/\[\(podman.*\)\]/\1/' -e 's;<\(/\)\?\(a[^>]*\|sup\)>;;g' $< | $(GOMD2MAN) -in /dev/stdin -out $(subst source/markdown,build/man,$@)
|
||||||
|
|
||||||
.PHONY: docs
|
.PHONY: docdir
|
||||||
docdir:
|
docdir:
|
||||||
mkdir -p docs/build/man
|
mkdir -p docs/build/man
|
||||||
|
|
||||||
@ -404,7 +406,7 @@ install-podman-remote-%-docs: podman-remote docs $(MANPAGES)
|
|||||||
docs/remote-docs.sh $* docs/build/remote/$* $(if $(findstring windows,$*),docs/source/markdown,docs/build/man)
|
docs/remote-docs.sh $* docs/build/remote/$* $(if $(findstring windows,$*),docs/source/markdown,docs/build/man)
|
||||||
|
|
||||||
.PHONY: man-page-check
|
.PHONY: man-page-check
|
||||||
man-page-check:
|
man-page-check: bin/podman
|
||||||
hack/man-page-checker
|
hack/man-page-checker
|
||||||
hack/xref-helpmsgs-manpages
|
hack/xref-helpmsgs-manpages
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ podman\-network-create - Create a Podman CNI network
|
|||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
Create a CNI-network configuration for use with Podman. By default, Podman creates a bridge connection.
|
Create a CNI-network configuration for use with Podman. By default, Podman creates a bridge connection.
|
||||||
A *Macvlan* connection can be created with the *-d macvlan* option. A parent device for macvlan can
|
A *Macvlan* connection can be created with the *-d macvlan* option. A parent device for macvlan can
|
||||||
be designated with the *-o parent=<device>* option. In the case of *Macvlan* connections, the
|
be designated with the *-o parent=\<device>* option. In the case of *Macvlan* connections, the
|
||||||
CNI *dhcp* plugin needs to be activated or the container image must have a DHCP client to interact
|
CNI *dhcp* plugin needs to be activated or the container image must have a DHCP client to interact
|
||||||
with the host network's DHCP server.
|
with the host network's DHCP server.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user