mirror of https://github.com/sbt/sbt.git
Use `preloaded` from `-sbt-dir`
This commit is contained in:
parent
9ba283a1f1
commit
b791da704c
|
|
@ -1,12 +1,12 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
## https://github.com/travis-ci/travis-ci/issues/8408
|
## https://github.com/travis-ci/travis-ci/issues/8408
|
||||||
export _JAVA_OPTIONS=
|
unset _JAVA_OPTIONS
|
||||||
|
|
||||||
java -version
|
java -version
|
||||||
## end of Java switching
|
## end of Java switching
|
||||||
|
|
||||||
mkdir freshly-baked
|
mkdir -p freshly-baked
|
||||||
unzip -qo ../target/universal/sbt.zip -d ./freshly-baked
|
unzip -qo ../target/universal/sbt.zip -d ./freshly-baked
|
||||||
|
|
||||||
export SBT_OPTS=-Dfile.encoding=UTF-8
|
export SBT_OPTS=-Dfile.encoding=UTF-8
|
||||||
|
|
@ -16,3 +16,16 @@ export SBT_OPTS=-Dfile.encoding=UTF-8
|
||||||
export SBT_OPTS="-Dfile.encoding=UTF-8 -Xms2048M -Xmx2048M -Xss2M -XX:MaxPermSize=512M"
|
export SBT_OPTS="-Dfile.encoding=UTF-8 -Xms2048M -Xmx2048M -Xss2M -XX:MaxPermSize=512M"
|
||||||
|
|
||||||
./freshly-baked/sbt/bin/sbt about run
|
./freshly-baked/sbt/bin/sbt about run
|
||||||
|
|
||||||
|
env HOME=./target/home1 ./freshly-baked/sbt/bin/sbt about
|
||||||
|
test -d ./target/home1/.sbt/preloaded || echo "expected to find preloaded in ./target/home1/.sbt"
|
||||||
|
|
||||||
|
env HOME=./target/home2 ./freshly-baked/sbt/bin/sbt -sbt-dir ./target/home2/alternate-sbt about
|
||||||
|
test -d ./target/home2/alternate-sbt/preloaded || echo "expected to find preloaded in ./target/home2/alternate-sbt"
|
||||||
|
|
||||||
|
env HOME=./target/home3 ./freshly-baked/sbt/bin/sbt -J-Dsbt.preloaded=./target/home3/alternate-preloaded about
|
||||||
|
test -d ./target/home3/alternate-preloaded || echo "expected to find preloaded in ./target/home3/alternate-preloaded"
|
||||||
|
|
||||||
|
env HOME=./target/home4 ./freshly-baked/sbt/bin/sbt -J-Dsbt.global.base=./target/home4/global-base about
|
||||||
|
test -d ./target/home4/global-base || echo "expected to find preloaded in ./target/home4/global-base"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -213,17 +213,54 @@ process_args () {
|
||||||
vlog "[process_args] java_version = '$java_version'"
|
vlog "[process_args] java_version = '$java_version'"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Extracts the preloaded directory from either -Dsbt.preloaded or -Dsbt.global.base
|
||||||
|
# properties by looking at:
|
||||||
|
# - _JAVA_OPTIONS environment variable,
|
||||||
|
# - SBT_OPTS environment variable,
|
||||||
|
# - JAVA_OPTS environment variable and
|
||||||
|
# - properties set by command-line options
|
||||||
|
# in that order. The last one will be chosen such that `sbt.preloaded` is
|
||||||
|
# always preferred over `sbt.global.base`.
|
||||||
|
getPreloaded() {
|
||||||
|
local -a _java_options_array
|
||||||
|
local -a sbt_opts_array
|
||||||
|
local -a java_opts_array
|
||||||
|
read -a _java_options_array <<< "$_JAVA_OPTIONS"
|
||||||
|
read -a sbt_opts_array <<< "$SBT_OPTS"
|
||||||
|
read -a java_opts_array <<< "$JAVA_OPTS"
|
||||||
|
|
||||||
|
local args_to_check=(
|
||||||
|
"${_java_options_array[@]}"
|
||||||
|
"${sbt_opts_array[@]}"
|
||||||
|
"${java_opts_array[@]}"
|
||||||
|
"${java_args[@]}")
|
||||||
|
local via_global_base="$HOME/.sbt/preloaded"
|
||||||
|
local via_explicit=""
|
||||||
|
|
||||||
|
for opt in "${args_to_check[@]}"; do
|
||||||
|
if [[ "$opt" == -Dsbt.preloaded=* ]]; then
|
||||||
|
via_explicit="${opt#-Dsbt.preloaded=}"
|
||||||
|
elif [[ "$opt" == -Dsbt.global.base=* ]]; then
|
||||||
|
via_global_base="${opt#-Dsbt.global.base=}/preloaded"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "${via_explicit:-${via_global_base}}"
|
||||||
|
}
|
||||||
|
|
||||||
syncPreloaded() {
|
syncPreloaded() {
|
||||||
|
local source_preloaded="$sbt_home/lib/local-preloaded"
|
||||||
|
local target_preloaded="$(getPreloaded)"
|
||||||
if [[ "$init_sbt_version" == "" ]]; then
|
if [[ "$init_sbt_version" == "" ]]; then
|
||||||
# FIXME: better $init_sbt_version detection
|
# FIXME: better $init_sbt_version detection
|
||||||
init_sbt_version="$(ls -1 "$sbt_home/lib/local-preloaded/org.scala-sbt/sbt/")"
|
init_sbt_version="$(ls -1 "$source_preloaded/org.scala-sbt/sbt/")"
|
||||||
fi
|
fi
|
||||||
[[ -f "$HOME/.sbt/preloaded/org.scala-sbt/sbt/$init_sbt_version/jars/sbt.jar" ]] || {
|
[[ -f "$target_preloaded/org.scala-sbt/sbt/$init_sbt_version/jars/sbt.jar" ]] || {
|
||||||
# lib/local-preloaded exists (This is optional)
|
# lib/local-preloaded exists (This is optional)
|
||||||
[[ -d "$sbt_home/lib/local-preloaded/" ]] && {
|
[[ -d "$source_preloaded" ]] && {
|
||||||
command -v rsync >/dev/null 2>&1 && {
|
command -v rsync >/dev/null 2>&1 && {
|
||||||
mkdir -p "$HOME/.sbt/preloaded"
|
mkdir -p "$target_preloaded"
|
||||||
rsync -a --ignore-existing "$sbt_home/lib/local-preloaded/" "$HOME/.sbt/preloaded"
|
rsync -a --ignore-existing "$source_preloaded" "$target_preloaded"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -277,6 +314,12 @@ copyRt() {
|
||||||
}
|
}
|
||||||
|
|
||||||
run() {
|
run() {
|
||||||
|
# process the combined args, then reset "$@" to the residuals
|
||||||
|
process_args "$@"
|
||||||
|
set -- "${residual_args[@]}"
|
||||||
|
argumentCount=$#
|
||||||
|
|
||||||
|
# Copy preloaded repo to user's preloaded directory
|
||||||
syncPreloaded
|
syncPreloaded
|
||||||
|
|
||||||
# no jar? download it.
|
# no jar? download it.
|
||||||
|
|
@ -286,11 +329,6 @@ run() {
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# process the combined args, then reset "$@" to the residuals
|
|
||||||
process_args "$@"
|
|
||||||
set -- "${residual_args[@]}"
|
|
||||||
argumentCount=$#
|
|
||||||
|
|
||||||
# TODO - java check should be configurable...
|
# TODO - java check should be configurable...
|
||||||
checkJava "6"
|
checkJava "6"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue