Commit f68c8f50 authored by Sam Stephenson's avatar Sam Stephenson
Browse files

Merge pull request #143 from raggi/keep_builds

Add options to keep the build directory around
parents 933b371a fed031a2
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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
+12 −2
Original line number Diff line number Diff line
@@ -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"
# 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
+20 −6
Original line number Diff line number Diff line
@@ -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

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