mirror of
https://github.com/wahyd4/gvm.git
synced 2026-08-10 05:16:13 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5a06b52c7 | ||
|
|
51d149771f | ||
|
|
eb61d9dbd0 | ||
|
|
7fc9e0ef22 | ||
|
|
03d7843f69 | ||
|
|
ac17654314 | ||
|
|
dff56e69df | ||
|
|
fb0881a609 | ||
|
|
ae439a3560 | ||
|
|
f9b3d1699d | ||
|
|
b3ac750c04 | ||
|
|
112dfaac37 | ||
|
|
a71029eaa4 | ||
|
|
78e2e80d40 | ||
|
|
9a9aab4b12 | ||
|
|
38dfba78b8 | ||
|
|
3ffc794bc5 | ||
|
|
b914f5a6b3 | ||
|
|
3d465f0ead | ||
|
|
4ce01e1e16 | ||
|
|
a5ade13862 | ||
|
|
e06e446acf | ||
|
|
53fff83811 | ||
|
|
fa0f1b4d57 | ||
|
|
5ba804665d | ||
|
|
6b75a19639 | ||
|
|
739557089b | ||
|
|
99876c1786 | ||
|
|
cf394bb42c | ||
|
|
3ecd74b96e | ||
|
|
35d369dfd3 | ||
|
|
f43320ec82 | ||
|
|
1921cd7f0a | ||
|
|
97611a42eb | ||
|
|
f392f564c6 | ||
|
|
eaf768b7d1 | ||
|
|
22dc137459 | ||
|
|
c6527574be | ||
|
|
8954a3cb39 | ||
|
|
1218d4ed0f | ||
|
|
29c60060c3 | ||
|
|
535e0d569e | ||
|
|
f265a1caca | ||
|
|
0bd1e648d8 | ||
|
|
52d80ab5fd | ||
|
|
cb37fb4b34 |
@@ -7,3 +7,5 @@ environments/
|
||||
tmp/
|
||||
*.log
|
||||
scripts/gvm
|
||||
Gemfile.lock
|
||||
.vagrant/
|
||||
|
||||
+7
-2
@@ -1,7 +1,12 @@
|
||||
language: c
|
||||
os: [linux, osx]
|
||||
osx_image: mavericks
|
||||
env:
|
||||
global:
|
||||
- SRC_REPO=$TRAVIS_BUILD_DIR
|
||||
- GVM_NO_GIT_BAK=1
|
||||
- GVM_NO_UPDATE_PROFILE=1
|
||||
before_install:
|
||||
- "binscripts/gvm-installer $TRAVIS_COMMIT $TRAVIS_BUILD_DIR/tmp"
|
||||
- binscripts/gvm-installer $TRAVIS_COMMIT $TRAVIS_BUILD_DIR/tmp
|
||||
install: gem install tf -v '>=0.4.1'
|
||||
script: source $TRAVIS_BUILD_DIR/tmp/gvm/scripts/gvm; tf --text tests/*
|
||||
script: source $TRAVIS_BUILD_DIR/tmp/gvm/scripts/gvm; rake default scenario
|
||||
|
||||
@@ -25,6 +25,8 @@ To install:
|
||||
|
||||
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
|
||||
|
||||
Or if you are using zsh just change `bash` with `zsh`
|
||||
|
||||
Installing Go
|
||||
=============
|
||||
gvm install go1
|
||||
@@ -38,6 +40,7 @@ Additional options can be specified when installing Go:
|
||||
-n, --name=NAME Override the default name for this version.
|
||||
-pb, --with-protobuf Install Go protocol buffers.
|
||||
-b, --with-build-tools Install package build tools.
|
||||
-B, --binary Only install from binary.
|
||||
-h, --help Display this message.
|
||||
|
||||
List Go Versions
|
||||
|
||||
@@ -28,6 +28,8 @@ To install:
|
||||
|
||||
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
|
||||
|
||||
Or if you are using zsh just change `bash` with `zsh`
|
||||
|
||||
Installing Go
|
||||
=============
|
||||
gvm install go1
|
||||
@@ -41,6 +43,8 @@ Additional options can be specified when installing Go:
|
||||
-n, --name=NAME Override the default name for this version.
|
||||
-pb, --with-protobuf Install Go protocol buffers.
|
||||
-b, --with-build-tools Install package build tools.
|
||||
-B, --binary Only install from binary.
|
||||
--prefer-binary Attempt a binary install, falling back to source.
|
||||
-h, --help Display this message.
|
||||
|
||||
List Go Versions
|
||||
@@ -67,14 +71,7 @@ Linux Requirements
|
||||
|
||||
Debian/Ubuntu
|
||||
==================
|
||||
sudo apt-get install curl
|
||||
sudo apt-get install git
|
||||
sudo apt-get install mercurial
|
||||
sudo apt-get install make
|
||||
sudo apt-get install binutils
|
||||
sudo apt-get install bison
|
||||
sudo apt-get install gcc
|
||||
sudo apt-get install build-essential
|
||||
sudo apt-get install curl git mercurial make binutils bison gcc build-essential
|
||||
|
||||
Redhat/Centos
|
||||
==================
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
require 'tmpdir'
|
||||
|
||||
def root_path
|
||||
File.expand_path('../.', __FILE__)
|
||||
end
|
||||
|
||||
def commit
|
||||
@commit ||= (
|
||||
ENV['TRAVIS_COMMIT'] || `git rev-parse --abbrev-ref HEAD`.chomp
|
||||
)
|
||||
end
|
||||
|
||||
task :default do
|
||||
Dir.mktmpdir('gvm-test') do |tmpdir|
|
||||
system(<<-EOSH) || fail
|
||||
bash -c '
|
||||
set -e
|
||||
#{root_path}/binscripts/gvm-installer #{commit} #{tmpdir}
|
||||
source #{tmpdir}/gvm/scripts/gvm
|
||||
tf --text #{tmpdir}/gvm/tests/*.sh
|
||||
'
|
||||
EOSH
|
||||
end
|
||||
end
|
||||
|
||||
task :scenario do
|
||||
Dir["#{root_path}/tests/scenario/*_comment_test.sh"].each do |test|
|
||||
name = File.basename(test)
|
||||
puts "Running scenario #{name}..."
|
||||
Dir.mktmpdir('gvm-test') do |tmpdir|
|
||||
system(<<-EOSH) || fail
|
||||
bash -c '
|
||||
set -e
|
||||
#{root_path}/binscripts/gvm-installer #{commit} #{tmpdir}
|
||||
source #{tmpdir}/gvm/scripts/gvm
|
||||
tf --text #{tmpdir}/gvm/tests/scenario/#{name}
|
||||
'
|
||||
EOSH
|
||||
end
|
||||
end
|
||||
end
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.define "precise32" do |ubuntu|
|
||||
ubuntu.vm.box = "hashicorp/precise32"
|
||||
end
|
||||
|
||||
config.vm.define "precise64" do |ubuntu|
|
||||
ubuntu.vm.box = "hashicorp/precise64"
|
||||
end
|
||||
end
|
||||
+20
-13
@@ -18,9 +18,14 @@ update_profile() {
|
||||
}
|
||||
|
||||
check_existing_go() {
|
||||
if [ "$GOROOT" == "" ]; then
|
||||
echo "No existing Go versions detected"
|
||||
return
|
||||
|
||||
if [ "$GOROOT" = "" ]; then
|
||||
if which go > /dev/null; then
|
||||
GOROOT=$(go env | grep GOROOT | cut -d"=" -f2)
|
||||
else
|
||||
echo "No existing Go versions detected"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
echo "Created profile for existing install of Go at $GOROOT"
|
||||
mkdir -p "$GVM_DEST/$GVM_NAME/environments" &> /dev/null || display_error "Failed to create environment directory"
|
||||
@@ -33,7 +38,7 @@ export gvm_go_name; gvm_go_name="system"
|
||||
export gvm_pkgset_name; gvm_pkgset_name="global"
|
||||
export GOROOT; GOROOT="$GOROOT"
|
||||
export GOPATH; GOPATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global"
|
||||
export PATH; PATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global:$GOROOT/bin:$GVM_ROOT/bin:\$PATH"
|
||||
export PATH; PATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global/bin:$GOROOT/bin:$GVM_ROOT/bin:\$PATH"
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -55,7 +60,7 @@ SRC_REPO=${SRC_REPO:-https://github.com/moovweb/gvm.git}
|
||||
|
||||
# Is gvm-installer being called from the origin repo?
|
||||
# If so, skip the clone and source locally!
|
||||
# This prevents, the CI to break on non-merge commits
|
||||
# This prevents CI from breaking on non-merge commits.
|
||||
|
||||
GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
|
||||
@@ -82,20 +87,22 @@ cd "$GVM_DEST/$GVM_NAME" && git checkout --quiet "$BRANCH" 2> /dev/null || displ
|
||||
|
||||
popd > /dev/null
|
||||
|
||||
mv "$GVM_DEST/$GVM_NAME/.git" "$GVM_DEST/$GVM_NAME/git.bak"
|
||||
[ -z "$GVM_NO_GIT_BAK" ] && mv "$GVM_DEST/$GVM_NAME/.git" "$GVM_DEST/$GVM_NAME/git.bak"
|
||||
|
||||
source_line="[[ -s \"${GVM_DEST}/$GVM_NAME/scripts/gvm\" ]] && source \"${GVM_DEST}/$GVM_NAME/scripts/gvm\""
|
||||
source_file="${GVM_DEST}/$GVM_NAME/scripts/gvm"
|
||||
|
||||
if [ -n "$ZSH_NAME" ]; then
|
||||
update_profile "$HOME/.zshrc"
|
||||
elif [ "$(uname)" == "Linux" ]; then
|
||||
update_profile "$HOME/.bashrc" || update_profile "$HOME/.bash_profile"
|
||||
elif [ "$(uname)" == "Darwin" ]; then
|
||||
update_profile "$HOME/.profile" || update_profile "$HOME/.bash_profile"
|
||||
if [ -z "$GVM_NO_UPDATE_PROFILE" ] ; then
|
||||
if [ -n "$ZSH_NAME" ]; then
|
||||
update_profile "$HOME/.zshrc"
|
||||
elif [ "$(uname)" == "Linux" ]; then
|
||||
update_profile "$HOME/.bashrc" || update_profile "$HOME/.bash_profile"
|
||||
elif [ "$(uname)" == "Darwin" ]; then
|
||||
update_profile "$HOME/.profile" || update_profile "$HOME/.bash_profile"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
if [ -z "$GVM_NO_UPDATE_PROFILE" ] && [ "$?" != "0" ]; then
|
||||
echo "Unable to locate profile settings file(Something like $HOME/.bashrc or $HOME/.bash_profile)"
|
||||
echo
|
||||
echo " You will have to manually add the following line:"
|
||||
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
/vagrant/extra/vagrant/install-deps.sh
|
||||
/vagrant/extra/vagrant/install-local.sh
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
sudo apt-get -y install curl git mercurial bison make
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
rm -rf /home/vagrant/.gvm
|
||||
cp -r /vagrant /home/vagrant/.gvm
|
||||
echo "export GVM_ROOT=/vagrant
|
||||
. \$GVM_ROOT/scripts/gvm-default" > /home/vagrant/.gvm/scripts/gvm
|
||||
echo ". /home/vagrant/.gvm/scripts/gvm"
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
display_usage() {
|
||||
display_message "Usage: gvm cross [os] [arch]"
|
||||
display_message " os = linux/darwin/windows"
|
||||
display_message " arch = amd64/386 (arm unsupported)"
|
||||
display_message " arch = amd64/386/arm"
|
||||
}
|
||||
|
||||
display_list() {
|
||||
@@ -25,9 +25,9 @@ which go &> /dev/null || display_fatal "Only available in versions after Go 1"
|
||||
[ -z "$1" ] && display_list
|
||||
|
||||
if [ ! -f "$GOROOT/pkg/tool/cross" ]; then
|
||||
display_message "Installing x86 and x86-64 commands"
|
||||
display_message "Installing x86, x86-64, and ARM commands"
|
||||
set -e
|
||||
for arch in 8 6; do
|
||||
for arch in 8 6 5; do
|
||||
for cmd in a c g l; do
|
||||
go tool dist install -v cmd/$arch$cmd ||
|
||||
display_fatal "Couldn't compile tool: $arch$cmd"
|
||||
|
||||
Vendored
+1
-1
@@ -11,7 +11,7 @@ function gvm_pkgset_use() {
|
||||
local LOCAL_TOP=$(find_local_pkgset)
|
||||
unset -f find_local_pkgset
|
||||
[[ -d $LOCAL_TOP ]] ||
|
||||
display_error "Caonnt find local pakcage set" || return 1
|
||||
display_error "Cannot find local package set" || return 1
|
||||
LOCAL_TOP=$LOCAL_TOP/.gvm_local
|
||||
|
||||
fuzzy_match=$($LS_PATH "$LOCAL_TOP/environments" | $SORT_PATH | $GREP_PATH "$gvm_go_name@" | $GREP_PATH "local" | $HEAD_PATH -n 1) ||
|
||||
|
||||
+24
-12
@@ -1,37 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
. "$GVM_ROOT/scripts/functions"
|
||||
|
||||
error_message=""
|
||||
|
||||
# Check for hg
|
||||
which hg &> /dev/null ||
|
||||
display_warning "Could not find mercurial
|
||||
error_message="${error_message}
|
||||
Could not find mercurial
|
||||
|
||||
linux: apt-get install mercurial
|
||||
mac: brew install mercurial
|
||||
" || exit 1
|
||||
"
|
||||
# Check for ar
|
||||
which ar &> /dev/null ||
|
||||
display_warning "Could not find binutils
|
||||
error_message="${error_message}
|
||||
Could not find binutils
|
||||
|
||||
linux: apt-get install binutils
|
||||
" || exit 1
|
||||
"
|
||||
# Check for bison
|
||||
which bison &> /dev/null ||
|
||||
display_warning "Could not find bison
|
||||
error_message="${error_message}
|
||||
Could not find bison
|
||||
|
||||
linux: apt-get install bison
|
||||
" || exit 1
|
||||
"
|
||||
# Check for gcc
|
||||
which gcc &> /dev/null ||
|
||||
display_warning "Could not find gcc
|
||||
error_message="${error_message}
|
||||
Could not find gcc
|
||||
|
||||
linux: apt-get install gcc
|
||||
" || exit 1
|
||||
"
|
||||
# Check for make
|
||||
which make &> /dev/null ||
|
||||
display_warning "Could not find make
|
||||
error_message="${error_message}
|
||||
Could not find make
|
||||
|
||||
linux: apt-get install make
|
||||
" || exit 1
|
||||
"
|
||||
|
||||
# All good!
|
||||
exit 0
|
||||
if [ -n "$error_message" ]; then
|
||||
display_warning "$error_message"
|
||||
exit 1
|
||||
else
|
||||
# All good!
|
||||
exit 0
|
||||
fi
|
||||
|
||||
+134
-23
@@ -7,6 +7,8 @@ function show_usage() {
|
||||
echo " -n, --name=NAME Override the default name for this version."
|
||||
echo " -pb, --with-protobuf Install Go protocol buffers."
|
||||
echo " -b, --with-build-tools Install package build tools."
|
||||
echo " -B, --binary Only install from binary."
|
||||
echo " --prefer-binary Attempt a binary install, falling back to source."
|
||||
echo " -h, --help Display this message."
|
||||
}
|
||||
|
||||
@@ -23,10 +25,10 @@ read_command_line() {
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-s=*|--source=*)
|
||||
GO_SOURCE_URL=$(echo "$i" | sed 's/[-a-zA-Z0-9]*=//')
|
||||
GO_SOURCE_URL=$(echo "$i" | sed 's/[-a-zA-Z0-9]*=//')
|
||||
;;
|
||||
-n=*|--name=*)
|
||||
GO_NAME=$(echo "$i" | sed 's/[-a-zA-Z0-9]*=//')
|
||||
GO_NAME=$(echo "$i" | sed 's/[-a-zA-Z0-9]*=//')
|
||||
;;
|
||||
-pb|--with-protobuf)
|
||||
INSTALL_PB="true"
|
||||
@@ -34,6 +36,12 @@ read_command_line() {
|
||||
-b|--with-build-tools)
|
||||
INSTALL_BUILD_TOOLS="true"
|
||||
;;
|
||||
-B|--binary)
|
||||
INSTALL_SOURCE="binary"
|
||||
;;
|
||||
--prefer-binary)
|
||||
INSTALL_SOURCE="prefer-binary"
|
||||
;;
|
||||
-h|--help)
|
||||
show_usage
|
||||
exit 0
|
||||
@@ -52,22 +60,22 @@ download_source() {
|
||||
[[ -d $GO_CACHE_PATH ]] && return
|
||||
display_message "Downloading Go source..."
|
||||
hg clone "$GO_SOURCE_URL" "$GO_CACHE_PATH" >> "$GVM_ROOT/logs/go-download.log" 2>&1 ||
|
||||
display_fatal "Couldn't download Go source\nCheck the logs $GVM_ROOT/logs/go-download.log"
|
||||
display_fatal "Couldn't download Go source. Check the logs $GVM_ROOT/logs/go-download.log"
|
||||
}
|
||||
|
||||
check_tag() {
|
||||
version=$(hg tags -R "$GO_CACHE_PATH" | awk '{print $1}' | $SORT_PATH | $GREP_PATH "$VERSION" | $HEAD_PATH -n 1 | $GREP_PATH -w "$VERSION")
|
||||
version=$(hg tags -R "$GO_CACHE_PATH" | awk '{print $1}' | $SORT_PATH | $GREP_PATH "$VERSION" | $HEAD_PATH -n 1 | $GREP_PATH -w "$VERSION")
|
||||
}
|
||||
|
||||
update_source() {
|
||||
display_message "Updating Go source..."
|
||||
hg pull -R "$GO_CACHE_PATH" >> "$GVM_ROOT/logs/go-download.log" 2>&1 ||
|
||||
display_fatal "Couldn't get latest Go version info\nCheck the logs $GVM_ROOT/logs/go-download.log"
|
||||
display_fatal "Couldn't get latest Go version info. Check the logs $GVM_ROOT/logs/go-download.log"
|
||||
}
|
||||
|
||||
copy_source() {
|
||||
hg clone -u "$version" "$GO_CACHE_PATH" "$GO_INSTALL_ROOT" >> "$GVM_ROOT/logs/go-$GO_NAME-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't copy source to target folder,\nCheck the logs $GVM_ROOT/logs/go-$GO_NAME-install.log"
|
||||
display_fatal "Couldn't copy source to target folder. Check the logs $GVM_ROOT/logs/go-$GO_NAME-install.log"
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +87,7 @@ compile_go() {
|
||||
export GOROOT=$GO_INSTALL_ROOT &&
|
||||
#cd $GO_INSTALL_ROOT/src && ./all.bash &> $GVM_ROOT/logs/go-$GO_NAME-compile.log ||
|
||||
cd "$GO_INSTALL_ROOT/src" && ./make.bash &> "$GVM_ROOT/logs/go-$GO_NAME-compile.log" ||
|
||||
(rm -rf "$GO_INSTALL_ROOT" && display_fatal "Failed to compile\nCheck the logs at $GVM_ROOT/logs/go-$GO_NAME-compile.log")
|
||||
(rm -rf "$GO_INSTALL_ROOT" && display_fatal "Failed to compile. Check the logs at $GVM_ROOT/logs/go-$GO_NAME-compile.log")
|
||||
}
|
||||
|
||||
create_enviroment() {
|
||||
@@ -102,6 +110,17 @@ create_enviroment() {
|
||||
unset GOPATH
|
||||
}
|
||||
|
||||
create_global_package_set() {
|
||||
# Create the global package set folder
|
||||
mkdir -p "$GVM_ROOT/pkgsets/$GO_NAME" >> "$GVM_ROOT/logs/go-$GO_NAME-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't create global package set folder. Check the logs at ${GVM_ROOT}/logs/go-${GO_NAME}-install.log"
|
||||
GVM_OVERLAY_ROOT="${GVM_ROOT}/pkgsets/${GO_NAME}/global/overlay"
|
||||
mkdir -p "${GVM_OVERLAY_ROOT}/lib/pkgconfig" >> "${GVM_ROOT}/logs/go-${GO_NAME}-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't create global overlay library directory. Check the logs at ${GVM_ROOT}/logs/go-${GO_NAME}-install.log"
|
||||
mkdir -p "${GVM_OVERLAY_ROOT}/bin" >> "${GVM_ROOT}/logs/go-${GO_NAME}-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't create global overlay bin directory. Check the logs at ${GVM_ROOT}/logs/go-${GO_NAME}-install.log"
|
||||
}
|
||||
|
||||
install_go() {
|
||||
GO_INSTALL_ROOT=$GVM_ROOT/gos/$GO_NAME
|
||||
trap 'rm -rf $GO_INSTALL_ROOT; display_fatal "Cancelled!"' INT
|
||||
@@ -122,19 +141,91 @@ install_go() {
|
||||
display_message "Installing $version..."
|
||||
fi
|
||||
|
||||
# Create the global package set folder
|
||||
mkdir -p "$GVM_ROOT/pkgsets/$GO_NAME" >> "$GVM_ROOT/logs/go-$GO_NAME-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't create global package set folder\nCheck the logs at ${GVM_ROOT}/logs/go-${GO_NAME}-install.log"
|
||||
GVM_OVERLAY_ROOT="${GVM_ROOT}/pkgsets/${GO_NAME}/global/overlay"
|
||||
mkdir -p "${GVM_OVERLAY_ROOT}/lib/pkgconfig" >> "${GVM_ROOT}/logs/go-${GO_NAME}-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't create global overlay library directory\nCheck the logs at ${GVM_ROOT}/logs/go-${GO_NAME}-install.log"
|
||||
mkdir -p "${GVM_OVERLAY_ROOT}/bin" >> "${GVM_ROOT}/logs/go-${GO_NAME}-install.log" 2>&1 ||
|
||||
display_fatal "Couldn't create global overlay bin directory\nCheck the logs at ${GVM_ROOT}/logs/go-${GO_NAME}-install.log"
|
||||
create_global_package_set
|
||||
copy_source
|
||||
compile_go
|
||||
create_enviroment
|
||||
}
|
||||
|
||||
download_binary() {
|
||||
mkdir -p $GO_INSTALL_ROOT >> "${GVM_ROOT}/logs/go-${GO_NAME}-download-binary" 2>&1
|
||||
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
GVM_OS="darwin"
|
||||
osx_major_version="$(sw_vers -productVersion | cut -d "." -f 2)"
|
||||
if [ "${osx_major_version}" -ge 8 ]; then
|
||||
GVM_OS_VERSION="-osx10.8"
|
||||
elif [ "${osx_major_version}" -ge 6 ]; then
|
||||
GVM_OS_VERSION="-osx10.6"
|
||||
else
|
||||
display_error "Binary Go unavailable for this platform"
|
||||
rm -rf $GO_INSTALL_ROOT
|
||||
rm -f $GO_BINARY_PATH
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
GVM_OS="linux"
|
||||
fi
|
||||
|
||||
if [ "$(uname -m)" == "x86_64" ]; then
|
||||
GVM_ARCH="amd64"
|
||||
else
|
||||
GVM_ARCH="386"
|
||||
fi
|
||||
|
||||
GO_BINARY_FILE=${VERSION}.${GVM_OS}-${GVM_ARCH}${GVM_OS_VERSION}.tar.gz
|
||||
GO_BINARY_URL="http://golang.org/dl/${GO_BINARY_FILE}"
|
||||
GO_BINARY_PATH=${GVM_ROOT}/archive/${GO_BINARY_FILE}
|
||||
|
||||
if [ ! -f $GO_BINARY_PATH ]; then
|
||||
curl -s -f -L $GO_BINARY_URL > ${GO_BINARY_PATH}
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_error "Failed to download binary go from http://golang.org. Trying https://storage.googleapis.com"
|
||||
GO_BINARY_URL="https://storage.googleapis.com/golang/${GO_BINARY_FILE}"
|
||||
|
||||
curl -s -f -L $GO_BINARY_URL > ${GO_BINARY_PATH}
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_error "Failed to download binary go"
|
||||
rm -rf $GO_INSTALL_ROOT
|
||||
rm -f $GO_BINARY_PATH
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
tar zxf ${GO_BINARY_PATH} -C $GO_INSTALL_ROOT --strip-components 1 >> "${GVM_ROOT}/logs/go-${GO_NAME}-download-binary" 2>&1
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_error "Failed to extract binary go"
|
||||
rm -rf $GO_INSTALL_ROOT
|
||||
rm -f $GO_BINARY_PATH
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_go_binary() {
|
||||
GO_INSTALL_ROOT=$GVM_ROOT/gos/$GO_NAME
|
||||
trap 'rm -rf $GO_INSTALL_ROOT; display_fatal "Cancelled!"' INT
|
||||
|
||||
# Check for existing install
|
||||
if [[ -d "$GO_INSTALL_ROOT" ]]; then
|
||||
if [[ -f "$GO_INSTALL_ROOT/manifest" ]]; then
|
||||
display_message "Already installed!"
|
||||
exit 0
|
||||
fi
|
||||
display_warning "Removing corrupt install..."
|
||||
gvm uninstall "$GO_NAME"
|
||||
fi
|
||||
|
||||
display_message "Installing $GO_NAME from binary source"
|
||||
|
||||
create_global_package_set
|
||||
download_binary
|
||||
create_enviroment
|
||||
}
|
||||
|
||||
install_gpkg() {
|
||||
display_message " * Installing gpkg..."
|
||||
$GVM_GOINSTALL github.com/moovweb/gpkg > "$GVM_ROOT/logs/$GO_NAME-gpkg.log" 2>&1 || return 1
|
||||
@@ -155,33 +246,30 @@ install_goprotobuf() {
|
||||
if [[ "$GVM_GOINSTALL" == "goinstall" ]]; then
|
||||
$GVM_GOINSTALL goprotobuf.googlecode.com/hg/proto > "$GVM_ROOT/logs/$GO_NAME-pb-compiler.log" 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_warning "Failed to install goprotobuf\nCheck the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
display_warning "Failed to install goprotobuf. Check the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
return 1
|
||||
fi
|
||||
cd "$GVM_ROOT/gos/$GO_NAME/src/pkg/goprotobuf.googlecode.com/hg/compiler"
|
||||
make install >> "$GVM_ROOT/logs/$GO_NAME-pb-compiler.log" 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_warning "Failed to install goprotobuf compiler\nCheck the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
display_warning "Failed to install goprotobuf compiler. Check the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
$GVM_GOINSTALL code.google.com/p/goprotobuf/proto > "$GVM_ROOT/logs/$GO_NAME-pb-compiler.log" 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_warning "Failed to install goprotobuf\nCheck the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
display_warning "Failed to install goprotobuf. Check the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
return 1
|
||||
fi
|
||||
$GVM_GOINSTALL code.google.com/p/goprotobuf/protoc-gen-go > "$GVM_ROOT/logs/$GO_NAME-pb-compiler.log" 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_warning "Failed to install goprotobuf compiler\nCheck the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
display_warning "Failed to install goprotobuf compiler. Check the logs at $GVM_ROOT/logs/$GO_NAME-pb-compiler.log"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
trap 'display_fatal "Canceled!"' INT
|
||||
read_command_line "$@"
|
||||
[[ "$VERSION" == "" ]] && display_fatal "No version specified"
|
||||
install_from_source() {
|
||||
download_source
|
||||
check_tag
|
||||
if [[ "$?" == "1" ]]; then
|
||||
@@ -211,4 +299,27 @@ main() {
|
||||
cd "$GO_INSTALL_ROOT" && find . > manifest
|
||||
}
|
||||
|
||||
main() {
|
||||
trap 'display_fatal "Canceled!"' INT
|
||||
read_command_line "$@"
|
||||
[[ "$VERSION" == "" ]] && display_fatal "No version specified"
|
||||
|
||||
if [[ "$GO_NAME" == "" ]]; then
|
||||
GO_NAME=$VERSION
|
||||
fi
|
||||
|
||||
if [[ "x$INSTALL_SOURCE" == "xbinary" ]]; then
|
||||
install_go_binary
|
||||
elif [[ "x$INSTALL_SOURCE" == "xprefer-binary" ]]; then
|
||||
install_go_binary || {
|
||||
display_message "Falling back to source installation of $GO_NAME"
|
||||
install_from_source
|
||||
}
|
||||
else
|
||||
install_from_source
|
||||
fi
|
||||
|
||||
cd "$GO_INSTALL_ROOT" && find . > manifest
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
## Cleanup test objects
|
||||
gvm uninstall tip > /dev/null 2>&1
|
||||
gvm uninstall go1.0.3 > /dev/null 2>&1
|
||||
gvm uninstall go1.1.1 > /dev/null 2>&1
|
||||
gvm uninstall go1.2 > /dev/null 2>&1
|
||||
gvm uninstall go1.2.2 > /dev/null 2>&1
|
||||
#######################
|
||||
|
||||
gvm install tip #status=0
|
||||
gvm list #status=0; match=/tip/
|
||||
gvm install go1.0.3 #status=0
|
||||
gvm list #status=0; match=/go1.0.3/
|
||||
gvm install go1.1.1 #status=0
|
||||
gvm list #status=0; match=/go1.1.1/
|
||||
gvm install go1.2 #status=0
|
||||
gvm list #status=0; match=/go1.2/
|
||||
gvm install go1.2.2 #status=0
|
||||
gvm list #status=0; match=/go1.2.2/
|
||||
|
||||
@@ -6,14 +6,14 @@ gvm alias delete bar
|
||||
#######################
|
||||
|
||||
gvm alias # status=0
|
||||
gvm alias create foo go1.2 # status=0
|
||||
gvm alias create bar go1.0.3 # status=0
|
||||
gvm alias list # status=0; match=/gvm go aliases/; match=/foo \(go1\.2\)/; match=/bar \(go1\.0\.3\)/
|
||||
gvm alias create foo go1.2.2 # status=0
|
||||
gvm alias create bar go1.1.1 # status=0
|
||||
gvm alias list # status=0; match=/gvm go aliases/; match=/foo \(go1\.2\.2\)/; match=/bar \(go1\.1\.1\)/
|
||||
gvm use foo # status=0
|
||||
go version # status=0; match=/go1\.2/
|
||||
go version # status=0; match=/go1\.2\.2/
|
||||
gvm use bar # status=0
|
||||
go version # status=0; match=/go1\.0\.3/
|
||||
go version # status=0; match=/go1\.1\.1/
|
||||
gvm alias delete foo
|
||||
gvm alias list # status=0; match=/gvm go aliases/; match!=/foo \(go1\.2\)/; match=/bar \(go1\.0\.3\)/
|
||||
gvm alias list # status=0; match=/gvm go aliases/; match!=/foo \(go1\.2\.2\)/; match=/bar \(go1\.1\.1\)/
|
||||
gvm alias delete bar
|
||||
gvm alias list # status=0; match=/gvm go aliases/; match!=/foo \(go1\.2\)/; match!=/bar \(go1\.0\.3\)/
|
||||
gvm alias list # status=0; match=/gvm go aliases/; match!=/foo \(go1\.2\.2\)/; match!=/bar \(go1\.1\.1\)/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
source $GVM_ROOT/scripts/gvm
|
||||
gvm use go1.2 # status=0
|
||||
go version # status=0; match=/go1\.2/
|
||||
gvm use go1.0.3 # status=0
|
||||
go version # status=0; match=/go1\.0\.3/
|
||||
gvm use go1.2.2 # status=0
|
||||
go version # status=0; match=/go1\.2\.2/
|
||||
gvm use go1.1.1 # status=0
|
||||
go version # status=0; match=/go1\.1\.1/
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
gvm install go1.2.2 --binary #status=0
|
||||
@@ -0,0 +1 @@
|
||||
gvm install go1.2.2 #status=0
|
||||
@@ -0,0 +1 @@
|
||||
gvm install go1.2 --prefer-binary #status=0
|
||||
Reference in New Issue
Block a user