From ba20d967e0b27770f8b344bbed21d079dbd18c83 Mon Sep 17 00:00:00 2001 From: Joshua Bussdieker Date: Wed, 28 Mar 2012 23:43:54 -0700 Subject: [PATCH] Major cleanup of install script. Default is now clean install. --- scripts/install | 84 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 57 insertions(+), 27 deletions(-) diff --git a/scripts/install b/scripts/install index 577c26e..a49aad1 100755 --- a/scripts/install +++ b/scripts/install @@ -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 }