mirror of
https://github.com/rbenv/ruby-build.git
synced 2025-10-27 15:21:01 +01:00
Merge branch 'provide-bundle-rake'
This commit is contained in:
commit
de409790d2
4 changed files with 100 additions and 15 deletions
|
|
@ -699,6 +699,34 @@ build_package_verify_openssl() {
|
||||||
end' >&4 2>&1
|
end' >&4 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rake() {
|
||||||
|
if [ -e "./Gemfile" ]; then
|
||||||
|
bundle exec rake "$@"
|
||||||
|
else
|
||||||
|
isolated_gem_dependency "rake --version" rake -v '~> 10.1.0'
|
||||||
|
command rake "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bundle() {
|
||||||
|
isolated_gem_dependency "bundle --version" bundler -v '~> 1.3.5'
|
||||||
|
command bundle "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
isolated_gem_dependency() {
|
||||||
|
local output="$(command $1 2>/dev/null || true)"
|
||||||
|
if [ -z "$output" ]; then
|
||||||
|
shift 1
|
||||||
|
isolated_gem_install "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
isolated_gem_install() {
|
||||||
|
export GEM_HOME="${PWD}/.gem"
|
||||||
|
export PATH="${GEM_HOME}/bin:${PATH}"
|
||||||
|
gem install "$@"
|
||||||
|
}
|
||||||
|
|
||||||
version() {
|
version() {
|
||||||
echo "ruby-build ${RUBY_BUILD_VERSION}"
|
echo "ruby-build ${RUBY_BUILD_VERSION}"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ setup() {
|
||||||
cached_tarball() {
|
cached_tarball() {
|
||||||
mkdir -p "$RUBY_BUILD_CACHE_PATH"
|
mkdir -p "$RUBY_BUILD_CACHE_PATH"
|
||||||
pushd "$RUBY_BUILD_CACHE_PATH" >/dev/null
|
pushd "$RUBY_BUILD_CACHE_PATH" >/dev/null
|
||||||
tarball "$1"
|
tarball "$@"
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -21,14 +21,20 @@ tarball() {
|
||||||
local name="$1"
|
local name="$1"
|
||||||
local path="$PWD/$name"
|
local path="$PWD/$name"
|
||||||
local configure="$path/configure"
|
local configure="$path/configure"
|
||||||
|
shift 1
|
||||||
|
|
||||||
mkdir -p "$path"
|
mkdir -p "$path"
|
||||||
cat > "$configure" <<OUT
|
cat > "$configure" <<OUT
|
||||||
#!$BASH
|
#!$BASH
|
||||||
echo "$name: \$@" > build.log
|
echo "$name: \$@" >> build.log
|
||||||
OUT
|
OUT
|
||||||
chmod +x "$configure"
|
chmod +x "$configure"
|
||||||
|
|
||||||
|
for file; do
|
||||||
|
mkdir -p "$(dirname "${path}/${file}")"
|
||||||
|
touch "${path}/${file}"
|
||||||
|
done
|
||||||
|
|
||||||
tar czf "${path}.tar.gz" -C "${path%/*}" "$name"
|
tar czf "${path}.tar.gz" -C "${path%/*}" "$name"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,23 +128,18 @@ OUT
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "mruby strategy overwrites non-writable files" {
|
@test "mruby strategy overwrites non-writable files" {
|
||||||
mkdir -p "$RUBY_BUILD_CACHE_PATH"
|
cached_tarball "mruby-1.0" build/host/bin/{mruby,mirb}
|
||||||
cd "$RUBY_BUILD_CACHE_PATH"
|
|
||||||
mkdir -p "mruby-1.0/build/host/bin"
|
|
||||||
touch "mruby-1.0/build/host/bin"/{mruby,mirb}
|
|
||||||
tar czf "mruby-1.0.tar.gz" "mruby-1.0"
|
|
||||||
|
|
||||||
mkdir -p "$INSTALL_ROOT/bin"
|
mkdir -p "$INSTALL_ROOT/bin"
|
||||||
touch "$INSTALL_ROOT/bin/mruby"
|
touch "$INSTALL_ROOT/bin/mruby"
|
||||||
chmod -w "$INSTALL_ROOT/bin/mruby"
|
chmod -w "$INSTALL_ROOT/bin/mruby"
|
||||||
|
|
||||||
cat > "definition" <<DEF
|
stub gem false
|
||||||
|
stub rake '--version : echo 1' true
|
||||||
|
|
||||||
|
run_inline_definition <<DEF
|
||||||
install_package "mruby-1.0" "http://ruby-lang.org/pub/mruby-1.0.tar.gz" mruby
|
install_package "mruby-1.0" "http://ruby-lang.org/pub/mruby-1.0.tar.gz" mruby
|
||||||
DEF
|
DEF
|
||||||
|
|
||||||
stub rake true
|
|
||||||
|
|
||||||
run ruby-build "definition" "$INSTALL_ROOT"
|
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
unstub rake
|
unstub rake
|
||||||
|
|
@ -147,3 +148,43 @@ DEF
|
||||||
assert [ -e "$INSTALL_ROOT/bin/ruby" ]
|
assert [ -e "$INSTALL_ROOT/bin/ruby" ]
|
||||||
assert [ -e "$INSTALL_ROOT/bin/irb" ]
|
assert [ -e "$INSTALL_ROOT/bin/irb" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "mruby strategy fetches rake if missing" {
|
||||||
|
cached_tarball "mruby-1.0" build/host/bin/mruby
|
||||||
|
|
||||||
|
stub rake '--version : false' true
|
||||||
|
stub gem 'install rake -v *10.1.0 : true'
|
||||||
|
|
||||||
|
run_inline_definition <<DEF
|
||||||
|
install_package "mruby-1.0" "http://ruby-lang.org/pub/mruby-1.0.tar.gz" mruby
|
||||||
|
DEF
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
unstub gem
|
||||||
|
unstub rake
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "rbx uses bundle then rake" {
|
||||||
|
cached_tarball "rubinius-2.0.0" "Gemfile"
|
||||||
|
|
||||||
|
stub gem false
|
||||||
|
stub rake false
|
||||||
|
stub bundle \
|
||||||
|
'--version : echo 1' \
|
||||||
|
' : echo bundle >> build.log' \
|
||||||
|
'--version : echo 1' \
|
||||||
|
" exec rake install : { cat build.log; echo bundle \"\$@\"; } >> '$INSTALL_ROOT/build.log'"
|
||||||
|
|
||||||
|
run_inline_definition <<DEF
|
||||||
|
install_package "rubinius-2.0.0" "http://releases.rubini.us/rubinius-2.0.0.tar.gz" rbx
|
||||||
|
DEF
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
unstub bundle
|
||||||
|
|
||||||
|
assert_build_log <<OUT
|
||||||
|
bundle
|
||||||
|
rubinius-2.0.0: --prefix=$INSTALL_ROOT
|
||||||
|
bundle exec rake install
|
||||||
|
OUT
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,11 @@ _STUB_RUN="${PROGRAM}_STUB_RUN"
|
||||||
_STUB_INDEX="${PROGRAM}_STUB_INDEX"
|
_STUB_INDEX="${PROGRAM}_STUB_INDEX"
|
||||||
_STUB_RESULT="${PROGRAM}_STUB_RESULT"
|
_STUB_RESULT="${PROGRAM}_STUB_RESULT"
|
||||||
_STUB_END="${PROGRAM}_STUB_END"
|
_STUB_END="${PROGRAM}_STUB_END"
|
||||||
|
_STUB_DEBUG="${PROGRAM}_STUB_DEBUG"
|
||||||
|
|
||||||
|
if [ -n "${!_STUB_DEBUG}" ]; then
|
||||||
|
echo "$program" "$@" >&${!_STUB_DEBUG}
|
||||||
|
fi
|
||||||
|
|
||||||
[ -e "${!_STUB_PLAN}" ] || exit 1
|
[ -e "${!_STUB_PLAN}" ] || exit 1
|
||||||
[ -n "${!_STUB_RUN}" ] || eval "${_STUB_RUN}"="${TMPDIR}/${program}-stub-run"
|
[ -n "${!_STUB_RUN}" ] || eval "${_STUB_RUN}"="${TMPDIR}/${program}-stub-run"
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,10 @@ export TMP="$BATS_TEST_DIRNAME/tmp"
|
||||||
if [ "$FIXTURE_ROOT" != "$BATS_TEST_DIRNAME/fixtures" ]; then
|
if [ "$FIXTURE_ROOT" != "$BATS_TEST_DIRNAME/fixtures" ]; then
|
||||||
export FIXTURE_ROOT="$BATS_TEST_DIRNAME/fixtures"
|
export FIXTURE_ROOT="$BATS_TEST_DIRNAME/fixtures"
|
||||||
export INSTALL_ROOT="$TMP/install"
|
export INSTALL_ROOT="$TMP/install"
|
||||||
export PATH="$BATS_TEST_DIRNAME/../bin:$PATH"
|
PATH=/usr/bin:/usr/sbin:/bin/:/sbin
|
||||||
export PATH="$TMP/bin:$PATH"
|
PATH="$BATS_TEST_DIRNAME/../bin:$PATH"
|
||||||
|
PATH="$TMP/bin:$PATH"
|
||||||
|
export PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
teardown() {
|
teardown() {
|
||||||
|
|
@ -34,9 +36,18 @@ unstub() {
|
||||||
|
|
||||||
export "${prefix}_STUB_END"=1
|
export "${prefix}_STUB_END"=1
|
||||||
|
|
||||||
"$path"
|
local STATUS=0
|
||||||
|
"$path" || STATUS="$?"
|
||||||
|
|
||||||
rm -f "$path"
|
rm -f "$path"
|
||||||
rm -f "${TMP}/${program}-stub-plan" "${TMP}/${program}-stub-run"
|
rm -f "${TMP}/${program}-stub-plan" "${TMP}/${program}-stub-run"
|
||||||
|
return "$STATUS"
|
||||||
|
}
|
||||||
|
|
||||||
|
run_inline_definition() {
|
||||||
|
local definition="${TMP}/build-definition"
|
||||||
|
cat > "$definition"
|
||||||
|
run ruby-build "$definition" "${1:-$INSTALL_ROOT}"
|
||||||
}
|
}
|
||||||
|
|
||||||
install_fixture() {
|
install_fixture() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue