Makefile: Drop find-godeps.sh for podman target
We inherited this from a031b83a
(Initial checkin from CRI-O repo,
2017-11-01), but:
* The output is actually going into bin/podman, so Make will rebuild
this target every time. You'll never be able to save compilation
because the target is newer than all the prerequisites.
* Make expands prerequisites immediately when loading a Makefile [1],
and on my wimpy Chromebook SD Card, this is *slow*:
$ time hack/find-godeps.sh ~/.local/lib/go/src/github.com/projectatomic/libpod cmd/podman github.com/projectatomic/libpod
...
real 0m56.225s
user 0m44.918s
sys 0m21.918s
* Go is pretty good at this on its own, so having make call 'go build'
every time will almost certainly be faster than us trying to mimic
this in a shell script. And by punting to Go in the recipe, Make
invocations that do not need the podman target (e.g. 'make help')
can skip the dependency lookup entirely.
[1]: https://www.gnu.org/software/make/manual/html_node/Reading-Makefiles.html#Rule-Definition
Signed-off-by: W. Trevor King <wking@tremily.us>
Closes: #776
Approved by: rhatdan
This commit is contained in:
parent
9fcc475d03
commit
5b2627dd77
2
Makefile
2
Makefile
|
@ -87,7 +87,7 @@ test/copyimg/copyimg: .gopathok $(wildcard test/copyimg/*.go)
|
||||||
test/checkseccomp/checkseccomp: .gopathok $(wildcard test/checkseccomp/*.go)
|
test/checkseccomp/checkseccomp: .gopathok $(wildcard test/checkseccomp/*.go)
|
||||||
$(GO) build $(LDFLAGS) -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/checkseccomp
|
$(GO) build $(LDFLAGS) -tags "$(BUILDTAGS) containers_image_ostree_stub" -o $@ $(PROJECT)/test/checkseccomp
|
||||||
|
|
||||||
podman: .gopathok $(shell hack/find-godeps.sh $(GOPKGDIR) cmd/podman $(PROJECT)) varlink_generate varlink_api_generate
|
podman: .gopathok API.md cmd/podman/varlink/ioprojectatomicpodman.go
|
||||||
$(GO) build -i $(LDFLAGS_PODMAN) -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
|
$(GO) build -i $(LDFLAGS_PODMAN) -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman
|
||||||
|
|
||||||
python-podman:
|
python-podman:
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# $1 - base path of the source tree
|
|
||||||
# $2 - subpath under $1 to find *.go dependencies for
|
|
||||||
# $3 - package name (eg, github.com/organization/project)
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
# might be called from makefile before basepath is set up; just return
|
|
||||||
# empty deps. The make target will then ensure that GOPATH is set up
|
|
||||||
# correctly, and go build will build everything the first time around
|
|
||||||
# anyway. Next time we get here everything will be fine.
|
|
||||||
if [ ! -d "$1/$2" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
function find-deps() {
|
|
||||||
local basepath=$1
|
|
||||||
local srcdir=$2
|
|
||||||
local pkgname=$3
|
|
||||||
local deps=
|
|
||||||
|
|
||||||
# gather imports from cri-o
|
|
||||||
pkgs=$(cd ${basepath}/${srcdir} && go list -f "{{.Imports}}" . | tr ' ' '\n' | tr -d '[]' | grep -v "/vendor/" | grep ${pkgname} | sed -e "s|${pkgname}/||g")
|
|
||||||
|
|
||||||
# add each Go import's sources to the deps list,
|
|
||||||
# and recursively get that imports's imports too
|
|
||||||
for dep in ${pkgs}; do
|
|
||||||
deps+="$(ls ${basepath}/${dep}/*.go | sed -e "s|${basepath}/||g") "
|
|
||||||
# add deps of this package too
|
|
||||||
deps+="$(find-deps ${basepath} ${dep} ${pkgname}) "
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "${deps}" | sort | uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# add Go sources from the current package at the end
|
|
||||||
echo "$(find-deps "$1" "$2" "$3" | xargs) $(cd $1 && ls $2/*.go | xargs)"
|
|
||||||
|
|
Loading…
Reference in New Issue