diff options
author | Ed Santiago <santiago@redhat.com> | 2021-02-02 16:10:54 -0700 |
---|---|---|
committer | Ed Santiago <santiago@redhat.com> | 2021-02-03 05:49:17 -0700 |
commit | dfa9a340ad849637cdc1157f9ec13bac7d789b0e (patch) | |
tree | f9781b63e93cc9ee08762dfa10d93f840480083e /Makefile | |
parent | 4ce8b1281e69b55b6024e87f2dec06638c678f10 (diff) | |
download | podman-dfa9a340ad849637cdc1157f9ec13bac7d789b0e.tar.gz podman-dfa9a340ad849637cdc1157f9ec13bac7d789b0e.tar.bz2 podman-dfa9a340ad849637cdc1157f9ec13bac7d789b0e.zip |
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>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -35,7 +35,11 @@ PKG_MANAGER ?= $(shell command -v dnf yum|head -n1) # ~/.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) -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) @@ -195,7 +199,6 @@ test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go) $(GO) build $(BUILDFLAGS) -ldflags '$(LDFLAGS_PODMAN)' -o $@ ./test/goecho -.PHONY: bin/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. ifeq (,$(findstring systemd,$(BUILDTAGS))) @@ -207,7 +210,6 @@ endif .PHONY: podman podman: bin/podman -.PHONY: bin/podman-remote 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 @@ -390,7 +392,7 @@ MANPAGES_DEST ?= $(subst markdown,man, $(subst source,build,$(MANPAGES))) $(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,$@) -.PHONY: docs +.PHONY: docdir docdir: 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) .PHONY: man-page-check -man-page-check: +man-page-check: bin/podman hack/man-page-checker hack/xref-helpmsgs-manpages |