diff --git a/Makefile b/Makefile index 61ce09976756..687eec1517ff 100644 --- a/Makefile +++ b/Makefile @@ -107,7 +107,7 @@ check_tools: update_tools: @echo "--> Updating tools to correct version" - ./scripts/get_tools.sh + $(MAKE) -C scripts get_tools update_dev_tools: @echo "--> Downloading linters (this may take awhile)" @@ -116,7 +116,7 @@ update_dev_tools: get_tools: @echo "--> Installing tools" - ./scripts/get_tools.sh + $(MAKE) -C scripts get_tools get_dev_tools: @echo "--> Downloading linters (this may take awhile)" diff --git a/PENDING.md b/PENDING.md index 6b0813c2c169..f0ffa8fcf2d8 100644 --- a/PENDING.md +++ b/PENDING.md @@ -41,7 +41,7 @@ IMPROVEMENTS * Gaia - #2637 [x/gov] Switched inactive and active proposal queues to an iterator based queue - - #2672 [Makefile] Updated for better Windows compatibility and ledger support logic + - #2672 [Makefile] Updated for better Windows compatibility and ledger support logic, get_tools was rewritten as a cross-compatible Makefile. * SDK - \#2573 [x/distribution] add accum invariance diff --git a/scripts/Makefile b/scripts/Makefile new file mode 100644 index 000000000000..9abc497e45d4 --- /dev/null +++ b/scripts/Makefile @@ -0,0 +1,54 @@ +### +# Find OS and Go environment +# GO contains the Go binary +# FS contains the OS file separator +### +ifeq ($(OS),Windows_NT) + GO := $(shell where go.exe 2> NUL) + FS := \\ +else + GO := $(shell command -v go 2> /dev/null) + FS := / +endif + +ifeq ($(GO),) + $(error could not find go. Is it in PATH? $(GO)) +endif + +GOPATH ?= $(shell $(GO) env GOPATH) +GITHUBDIR := $(GOPATH)$(FS)src$(FS)github.com + +### +# Functions +### + +go_get = $(if $(findstring Windows_NT,$(OS)),\ +IF NOT EXIST $(GITHUBDIR)$(FS)$(1)$(FS) ( mkdir $(GITHUBDIR)$(FS)$(1) ) else (cd .) &\ +IF NOT EXIST $(GITHUBDIR)$(FS)$(1)$(FS)$(2)$(FS) ( cd $(GITHUBDIR)$(FS)$(1) && git clone https://github.com/$(1)/$(2) ) else (cd .) &\ +,\ +mkdir -p $(GITHUBDIR)$(FS)$(1) &&\ +(test ! -d $(GITHUBDIR)$(FS)$(1)$(FS)$(2) && cd $(GITHUBDIR)$(FS)$(1) && git clone https://github.com/$(1)/$(2)) || true &&\ +)\ +cd $(GITHUBDIR)$(FS)$(1)$(FS)$(2) && git fetch origin && git checkout -q $(3) + +go_install = $(call go_get,$(1),$(2),$(3)) && cd $(GITHUBDIR)$(FS)$(1)$(FS)$(2) && $(GO) install + +### +# get_tools +### +all: get_tools +get_tools: dep gometalinter statik + +dep: + $(call go_get,golang,dep,22125cfaa6ddc71e145b1535d4b7ee9744fefff2) + cd $(GITHUBDIR)$(FS)golang$(FS)dep$(FS)cmd$(FS)dep && $(GO) install + +#v2.0.11 +gometalinter: + $(call go_install,alecthomas,gometalinter,17a7ffa42374937bfecabfb8d2efbd4db0c26741) + +statik: + $(call go_install,rakyll,statik,v0.1.5) + +.PHONY: all get_tools dep gometalinter statik + diff --git a/scripts/get_tools.sh b/scripts/get_tools.sh deleted file mode 100755 index 79ab32deca5d..000000000000 --- a/scripts/get_tools.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash -set -e - -# This file downloads all of the binary dependencies we have, and checks out a -# specific git hash. -# -# repos it installs: -# github.com/golang/dep/cmd/dep -# gopkg.in/alecthomas/gometalinter.v2 -# github.com/rakyll/statiik - -## check if GOPATH is set -if [ -z ${GOPATH+x} ]; then - echo "please set GOPATH (https://github.com/golang/go/wiki/SettingGOPATH)" - exit 1 -fi - -mkdir -p "$GOPATH/src/github.com" -cd "$GOPATH/src/github.com" || exit 1 - -installFromGithub() { - repo=$1 - commit=$2 - # optional - subdir=$3 - echo "--> Installing $repo ($commit)..." - if [ ! -d "$repo" ]; then - mkdir -p "$repo" - git clone "https://github.com/$repo.git" "$repo" - fi - if [ ! -z ${subdir+x} ] && [ ! -d "$repo/$subdir" ]; then - echo "ERROR: no such directory $repo/$subdir" - exit 1 - fi - pushd "$repo" && \ - git fetch origin && \ - git checkout -q "$commit" && \ - if [ ! -z ${subdir+x} ]; then cd "$subdir" || exit 1; fi && \ - go install && \ - if [ ! -z ${subdir+x} ]; then cd - || exit 1; fi && \ - popd || exit 1 - echo "--> Done" - echo "" -} - -installFromGithub golang/dep 22125cfaa6ddc71e145b1535d4b7ee9744fefff2 cmd/dep -## gometalinter v2.0.11 -installFromGithub alecthomas/gometalinter 17a7ffa42374937bfecabfb8d2efbd4db0c26741 -installFromGithub rakyll/statik v0.1.5 \ No newline at end of file