#!/bin/bash
# Copyright 2015 The Kubernetes Authors All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
source "$(dirname "${BASH_SOURCE}")/lib/init.sh"
#### HACK ####
# Sometimes godep just can't handle things. This lets use manually put
# some deps in place first, so godep won't fall over.
preload-dep() {
org="$1"
project="$2"
sha="$3"
# Go get stinks, which is why we have the || true...
go get -d "${org}/${project}" >/dev/null 2>&1 || true
repo_dir="${GOPATH}/src/${org}/${project}"
pushd "${repo_dir}" > /dev/null
git remote update > /dev/null
git checkout "${sha}" > /dev/null
popd > /dev/null
}
# Sometimes godep needs 'other' remotes. So add those remotes
preload-remote() {
local orig_org="$1"
local orig_project="$2"
local alt_org="$3"
local alt_project="$4"
# Go get stinks, which is why we have the || true...
go get -d "${orig_org}/${orig_project}" &>/dev/null || true
repo_dir="${GOPATH}/src/${orig_org}/${orig_project}"
pushd "${repo_dir}" > /dev/null
git remote add "${alt_org}-remote" "https://${alt_org}/${alt_project}.git" > /dev/null || true
git remote update > /dev/null
popd > /dev/null
}
pin-godep() {
pushd "${GOPATH}/src/github.com/tools/godep" > /dev/null
git checkout "$1"
"${GODEP}" go install
popd > /dev/null
}
# build the godep tool
# Again go get stinks, hence || true
go get -u github.com/tools/godep 2>/dev/null || true
GODEP="${GOPATH}/bin/godep"
# Use to following if we ever need to pin godep to a specific version again
pin-godep 'v63'
# preload any odd-ball remotes
preload-remote "github.com/openshift" "origin" "github.com/openshift" "origin" # this looks goofy, but if you are not in GOPATH you need to pull origin explicitly
preload-remote "k8s.io" "kubernetes" "github.com/openshift" "kubernetes"
preload-remote "github.com/docker" "distribution" "github.com/openshift" "docker-distribution"
preload-remote "github.com/skynetservices" "skydns" "github.com/openshift" "skydns"
preload-remote "github.com/coreos" "etcd" "github.com/openshift" "etcd"
preload-remote "github.com/emicklei" "go-restful" "github.com/openshift" "go-restful"
preload-remote "github.com/golang" "glog" "github.com/openshift" "glog"
preload-remote "github.com/cloudflare" "cfssl" "github.com/openshift" "cfssl"
preload-remote "github.com/google" "certificate-transparency" "github.com/openshift" "certificate-transparency"
preload-remote "github.com/google" "cadvisor" "github.com/openshift" "cadvisor"
# preload any odd-ball commits
# kube e2e test dep
preload-dep "github.com/elazarl" "goproxy" "$( go run "${OS_ROOT}/tools/godepversion/godepversion.go" "${OS_ROOT}/Godeps/Godeps.json" "github.com/elazarl/goproxy" )"
# rkt test dep
preload-dep "github.com/golang/mock" "gomock" "$( go run "${OS_ROOT}/tools/godepversion/godepversion.go" "${OS_ROOT}/Godeps/Godeps.json" "github.com/golang/mock/gomock" )"
# docker storage dep
preload-dep "google.golang.org" "cloud" "$( go run "${OS_ROOT}/tools/godepversion/godepversion.go" "${OS_ROOT}/Godeps/Godeps.json" "google.golang.org/cloud" )"
# fill out that nice clean place with the origin godeps
echo "Starting to download all godeps. This takes a while"
pushd "${GOPATH}/src/github.com/openshift/origin" > /dev/null
"${GODEP}" restore
popd > /dev/null
echo "Download finished into ${GOPATH}"
echo "######## REMEMBER ########"
echo "You cannot just godep save ./..."
echo "You should use hack/godep-save.sh"
echo "hack/godep-save.sh forces the inclusion of packages that godep alone will not include"
echo "Watch out for UPSTREAM patches when updating deps"