diff options
author | W. Trevor King <wking@tremily.us> | 2018-05-15 16:10:51 -0700 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-05-16 15:42:34 +0000 |
commit | 5b2627dd7738cd92a356ca30c5a47be7a6abaf29 (patch) | |
tree | 24ad3a1855a755c9c947516239755ccdb0aa6b19 /hack | |
parent | 9fcc475d033d7f1718e9490e8944de7f31a2bbab (diff) | |
download | podman-5b2627dd7738cd92a356ca30c5a47be7a6abaf29.tar.gz podman-5b2627dd7738cd92a356ca30c5a47be7a6abaf29.tar.bz2 podman-5b2627dd7738cd92a356ca30c5a47be7a6abaf29.zip |
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
Diffstat (limited to 'hack')
-rwxr-xr-x | hack/find-godeps.sh | 41 |
1 files changed, 0 insertions, 41 deletions
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)" - |