From 5b2627dd7738cd92a356ca30c5a47be7a6abaf29 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Tue, 15 May 2018 16:10:51 -0700 Subject: 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 Closes: #776 Approved by: rhatdan --- hack/find-godeps.sh | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100755 hack/find-godeps.sh (limited to 'hack/find-godeps.sh') diff --git a/hack/find-godeps.sh b/hack/find-godeps.sh deleted file mode 100755 index 4ce932542..000000000 --- a/hack/find-godeps.sh +++ /dev/null @@ -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)" - -- cgit v1.2.3-54-g00ecf