Add options to keep the build directory around #143

Merged
merged 5 commits into from May 22, 2012
View
@@ -53,6 +53,14 @@ ruby-build provides an `rbenv-install` command that shortens this to:
$ rbenv install 1.9.2-p290
+ruby-build supports $RUBY_BUILD_BUILD_PATH to override the location in which
+sources are downloaded and built. The -k/--keep flags will preserve this path
+after the build is complete.
+
+rbenv-install also supports the -k/--keep flag, and additionally supports an
+environment variable option $RBENV_BUILD_ROOT that when set, will always build
+sources under that location, and keep the sources after build completion.
+
### Version History
#### 20120423
View
@@ -23,10 +23,20 @@ case "$DEFINITION" in
} >&2
exit 1
;;
+"-k" | "--keep" )
+ [ -z "${RBENV_BUILD_ROOT}" ] && RBENV_BUILD_ROOT="${RBENV_ROOT}/srcs"
+ RUBY_BUILD_OPTIONS+=" -k"
+ ;;
esac
VERSION_NAME="${DEFINITION##*/}"
PREFIX="${RBENV_ROOT}/versions/${VERSION_NAME}"
-ruby-build "$DEFINITION" "$PREFIX"
-rbenv rehash
+# If RBENV_BUILD_ROOT is set, then always pass keep options to ruby-build
+if [ -n "${RBENV_BUILD_ROOT}" ]; then
+ export RUBY_BUILD_BUILD_PATH="${RBENV_BUILD_ROOT}/${VERSION_NAME}"
+ RUBY_BUILD_OPTIONS+=" -k"
+fi
+
+ruby-build "$DEFINITION" "$PREFIX" "$RUBY_BUILD_OPTIONS"
+rbenv rehash
View
@@ -28,8 +28,8 @@ build_failed() {
echo "BUILD FAILED"
echo
- if ! rmdir "${TEMP_PATH}" 2>/dev/null; then
- echo "Inspect or clean up the working tree at ${TEMP_PATH}"
+ if ! rmdir "${BUILD_PATH}" 2>/dev/null; then
+ echo "Inspect or clean up the working tree at ${BUILD_PATH}"
if file_is_not_empty "$LOG_PATH"; then
echo "Results logged to ${LOG_PATH}"
@@ -68,7 +68,7 @@ install_package_using() {
local package_name="$3"
shift 3
- pushd "$TEMP_PATH" >&4
+ pushd "$BUILD_PATH" >&4
"fetch_${package_type}" "$package_name" $*
shift $(($package_type_nargs))
make_package "$package_name" $*
@@ -396,6 +396,15 @@ if [ -z "$PREFIX_PATH" ]; then
usage
fi
+OPTIONS="$3"
+for option in $OPTIONS; do
+ case "$option" in
+ "-k" | "--keep" )
+ KEEP_BUILD_PATH="y"
+ ;;
+ esac
+done
+
if [ -z "$TMPDIR" ]; then
TMP="/tmp"
else
@@ -404,10 +413,15 @@ fi
SEED="$(date "+%Y%m%d%H%M%S").$$"
LOG_PATH="${TMP}/ruby-build.${SEED}.log"
-TEMP_PATH="${TMP}/ruby-build.${SEED}"
RUBY_BIN="${PREFIX_PATH}/bin/ruby"
CWD="$(pwd)"
+if [ -z $RUBY_BUILD_BUILD_PATH ]; then
+ BUILD_PATH="${TMP}/ruby-build.${SEED}"
+else
+ BUILD_PATH=$RUBY_BUILD_BUILD_PATH
+fi
@jeremy
jeremy May 22, 2012 Collaborator

Can use a default var here:
BUILD_PATH=${RUBY_BUILD_BUILD_PATH:-${TMP}/ruby-build.${SEED}}

+
exec 4<> "$LOG_PATH" # open the log file at fd 4
if [ -n "$VERBOSE" ]; then
tail -f "$LOG_PATH" &
@@ -421,7 +435,7 @@ unset RUBYOPT
unset RUBYLIB
trap build_failed ERR
-mkdir -p "$TEMP_PATH"
+mkdir -p "$BUILD_PATH"
source "$DEFINITION_PATH"
-rm -fr "$TEMP_PATH"
+[ -z "${KEEP_BUILD_PATH}" ] && rm -fr "$BUILD_PATH"
trap - ERR