mirror of
https://github.com/wahyd4/gvm.git
synced 2026-08-16 16:27:16 +10:00
Major cleanup of install script. Default is now clean install.
This commit is contained in:
+57
-27
@@ -4,7 +4,9 @@
|
||||
function show_usage() {
|
||||
echo "Usage: gvm install [version] [options]"
|
||||
echo " -s, --source=SOURCE Install Go from specified source."
|
||||
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 " -h, --help Display this message."
|
||||
}
|
||||
|
||||
@@ -21,11 +23,17 @@ read_command_line() {
|
||||
for i in $*; do
|
||||
case $i in
|
||||
-s=*|--source=*)
|
||||
GO_SOURCE_URL=$i
|
||||
GO_SOURCE_URL=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
|
||||
;;
|
||||
-n=*|--name=*)
|
||||
GO_NAME=`echo $i | sed 's/[-a-zA-Z0-9]*=//'`
|
||||
;;
|
||||
-pb|--with-protobuf)
|
||||
INSTALL_PB="true"
|
||||
;;
|
||||
-b|--with-build-tools)
|
||||
INSTALL_BUILD_TOOLS="true"
|
||||
;;
|
||||
-h|--help)
|
||||
show_usage
|
||||
exit 0
|
||||
@@ -58,7 +66,7 @@ update_source() {
|
||||
}
|
||||
|
||||
copy_source() {
|
||||
hg clone -u $version $GO_CACHE_PATH $GO_INSTALL_ROOT >> $GVM_ROOT/logs/go-$version-install.log 2>&1 ||
|
||||
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"
|
||||
}
|
||||
|
||||
@@ -69,28 +77,28 @@ compile_go() {
|
||||
export GOBIN=$GO_INSTALL_ROOT/bin &&
|
||||
export PATH=$GOBIN:$PATH &&
|
||||
export GOROOT=$GO_INSTALL_ROOT &&
|
||||
#cd $GO_INSTALL_ROOT/src && ./all.bash &> $GVM_ROOT/logs/go-$version-compile.log ||
|
||||
cd $GO_INSTALL_ROOT/src && ./make.bash &> $GVM_ROOT/logs/go-$version-compile.log ||
|
||||
#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")
|
||||
}
|
||||
|
||||
create_enviroment() {
|
||||
new_env_file=$GVM_ROOT/environments/$version
|
||||
new_env_file=$GVM_ROOT/environments/$GO_NAME
|
||||
echo "export GVM_ROOT; GVM_ROOT=\"$GVM_ROOT\"" > $new_env_file
|
||||
echo "export gvm_go_name; gvm_go_name=\"$version\"" >> $new_env_file
|
||||
echo "export gvm_go_name; gvm_go_name=\"$GO_NAME\"" >> $new_env_file
|
||||
echo "export gvm_pkgset_name; gvm_pkgset_name=\"global\"" >> $new_env_file
|
||||
echo "export GOROOT; GOROOT=\"\$GVM_ROOT/gos/$version\"" >> $new_env_file
|
||||
echo "export GOPATH; GOPATH=\"\$GVM_ROOT/pkgsets/$version/global\"" >> $new_env_file
|
||||
echo "export PATH; PATH=\"\$GVM_ROOT/pkgsets/$version/global/bin:\$GVM_ROOT/gos/$version/bin:\$GVM_ROOT/bin:\$PATH\"" >> $new_env_file
|
||||
echo "export GOROOT; GOROOT=\"\$GVM_ROOT/gos/$GO_NAME\"" >> $new_env_file
|
||||
echo "export GOPATH; GOPATH=\"\$GVM_ROOT/pkgsets/$GO_NAME/global\"" >> $new_env_file
|
||||
echo "export PATH; PATH=\"\$GVM_ROOT/pkgsets/$GO_NAME/global/bin:\$GVM_ROOT/gos/$GO_NAME/bin:\$GVM_ROOT/bin:\$PATH\"" >> $new_env_file
|
||||
. $GVM_ROOT/scripts/env/use
|
||||
gvm_use $version &> /dev/null ||
|
||||
gvm_use $GO_NAME &> /dev/null ||
|
||||
display_fatal "Failed to use installed version"
|
||||
gvm pkgset create global
|
||||
unset GOPATH
|
||||
}
|
||||
|
||||
install_go() {
|
||||
GO_INSTALL_ROOT=$GVM_ROOT/gos/$version
|
||||
GO_INSTALL_ROOT=$GVM_ROOT/gos/$GO_NAME
|
||||
trap 'rm -rf $GO_INSTALL_ROOT; display_fatal "Canceled!"' INT
|
||||
|
||||
# Check for existing install
|
||||
@@ -98,13 +106,17 @@ install_go() {
|
||||
[[ -f "$GO_INSTALL_ROOT/manifest" ]] &&
|
||||
display_fatal "Already installed!"
|
||||
display_warning "Removing corrupt install..."
|
||||
gvm uninstall $version
|
||||
gvm uninstall $GO_NAME
|
||||
fi
|
||||
|
||||
display_message "Installing $version..."
|
||||
if [[ "$version" != "$GO_NAME" ]]; then
|
||||
display_message "Installing $version as $GO_NAME..."
|
||||
else
|
||||
display_message "Installing $version..."
|
||||
fi
|
||||
|
||||
# Create the global package set folder
|
||||
mkdir -p $GVM_ROOT/pkgsets/$version >> $GVM_ROOT/logs/go-$version-install.log 2>&1 ||
|
||||
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"
|
||||
|
||||
copy_source
|
||||
@@ -114,12 +126,12 @@ install_go() {
|
||||
|
||||
install_gpkg() {
|
||||
display_message " * Installing gpkg..."
|
||||
$GVM_GOINSTALL github.com/moovweb/gpkg > $GVM_ROOT/logs/$version-gpkg.log 2>&1 || return 1
|
||||
$GVM_GOINSTALL github.com/moovweb/gpkg > $GVM_ROOT/logs/$GO_NAME-gpkg.log 2>&1 || return 1
|
||||
}
|
||||
|
||||
install_gb() {
|
||||
display_message " * Installing gb..."
|
||||
$GVM_GOINSTALL github.com/jbussdieker/go-gb/gb > $GVM_ROOT/logs/$version-gb.log 2>&1 || return 1
|
||||
$GVM_GOINSTALL github.com/jbussdieker/go-gb/gb > $GVM_ROOT/logs/$GO_NAME-gb.log 2>&1 || return 1
|
||||
}
|
||||
|
||||
install_goprotobuf() {
|
||||
@@ -129,19 +141,30 @@ install_goprotobuf() {
|
||||
mac: brew install protobuf
|
||||
"
|
||||
display_message " * Installing goprotobuf..."
|
||||
$GVM_GOINSTALL goprotobuf.googlecode.com/hg/proto > $GVM_ROOT/logs/$version-pb-compiler.log 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
display_warning "Failed to install goprotobuf"
|
||||
return 1
|
||||
fi
|
||||
#if [[ $version == "release.r60.3" ]]; then
|
||||
cd $GVM_ROOT/gos/$version/src/pkg/goprotobuf.googlecode.com/hg/compiler
|
||||
make install >> $GVM_ROOT/logs/$version-pb-compiler.log 2>&1
|
||||
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"
|
||||
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"
|
||||
return 1
|
||||
fi
|
||||
#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"
|
||||
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"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
@@ -150,19 +173,26 @@ main() {
|
||||
[[ "$VERSION" == "" ]] && display_fatal "No version specified"
|
||||
download_source
|
||||
check_tag || (update_source && check_tag) || display_fatal "Unrecognized Go version"
|
||||
if [[ "$GO_NAME" == "" ]]; then
|
||||
GO_NAME=$version
|
||||
fi
|
||||
install_go
|
||||
|
||||
GVM_GOINSTALL="goinstall"
|
||||
which goinstall &> /dev/null ||
|
||||
GVM_GOINSTALL="go get"
|
||||
|
||||
x="`hg tags -R ~/.gvm/archive/go`"; echo ${x#*b0819469a6df} | $GREP_PATH "$version " &> /dev/null
|
||||
if [[ "$?" == "1" ]]; then
|
||||
install_gb || display_warning "Failed to install gb"
|
||||
install_gpkg || display_warning "Failed to install gpkg"
|
||||
if [[ "$INSTALL_BUILD_TOOLS" == "true" ]]; then
|
||||
install_gb || display_warning "Failed to install gb"
|
||||
install_gpkg || display_warning "Failed to install gpkg"
|
||||
fi
|
||||
if [[ "$INSTALL_PB" == "true" ]]; then
|
||||
install_goprotobuf
|
||||
fi
|
||||
fi
|
||||
|
||||
cd $GO_INSTALL_ROOT && find . > manifest
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user