Skip to content

Replace old dotc/dotr scripts by wrappers around sbt-pack #3044

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 31, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ pipeline:

matrix:
include:
- CI_TEST: dotty-bin-tests/test
CI_PUBLISH: true
- CI_TEST: legacyTests
CI_PUBLISH: false
- CI_TEST: ;test;sbt-dotty/scripted compilerReporter/*;sbt-dotty/scripted discovery/*;sbt-dotty/scripted sbt-dotty/*
Expand Down
2 changes: 1 addition & 1 deletion .drone.yml.sig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eyJhbGciOiJIUzI1NiJ9.IyBBZnRlciB1cGRhdGluZyB0aGlzIGZpbGUsIHlvdSBuZWVkIHRvIHJlLXNpZ24gaXQ6CiMKIyAtIEluc3RhbGwgW2Ryb25lLWNsaV0oaHR0cDovL3JlYWRtZS5kcm9uZS5pby91c2FnZS9nZXR0aW5nLXN0YXJ0ZWQtY2xpLykKIyAtIENvcHkgeW91ciB0b2tlbiBmcm9tIGh0dHA6Ly9kb3R0eS1jaS5lcGZsLmNoL2FjY291bnQgKENsaWNrIFNIT1cgVE9LRU4pCiMgLSBEUk9ORV9UT0tFTj15b3VyLXRva2VuIERST05FX1NFUlZFUj1odHRwOi8vZG90dHktY2kuZXBmbC5jaCBkcm9uZSBzaWduIGxhbXBlcGZsL2RvdHR5CiMKIyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBzaWduaW5nIGNhbiBvbmx5IGJlIGRvbmUgYnkgY29sbGFib3JhdG9ycy4KCnBpcGVsaW5lOgogIHRlc3Q6CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjAxNy0wOC0zMAogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICIke0NJX1RFU1R9IgogICAgd2hlbjoKICAgICAgYnJhbmNoOgogICAgICAgIGV4Y2x1ZGU6IGdoLXBhZ2VzCgogIHB1Ymxpc2hfbmlnaHRseToKICAgIGltYWdlOiBsYW1wZXBmbC9kb3R0eToyMDE3LTA4LTMwCiAgICBjb21tYW5kczoKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9zYnQgIjtjbGVhbiA7cHVibGlzaExvY2FsIiAiJHtDSV9QVUJMSVNIfSIKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9zYnQgInNidC1kb3R0eS9zY3JpcHRlZCBzb3VyY2UtZGVwZW5kZW5jaWVzLyoiICIke0NJX1BVQkxJU0h9IgogICAgICAtIE5JR0hUTFlCVUlMRD0ieWVzIiAuL3Byb2plY3Qvc2NyaXB0cy9zYnRQdWJsaXNoICR7Q0lfUFVCTElTSH0gJFNPTkFUWVBFX1VTRVIgJFNPTkFUWVBFX1BXICRQR1BfUFcgIjtkb3R0eS1ib290c3RyYXBwZWQvcHVibGlzaFNpZ25lZCA7c29uYXR5cGVSZWxlYXNlIgogICAgdm9sdW1lczoKICAgICAgLSAvaG9tZS9kcm9uZS9rZXlzOi9rZXlzCiAgICB3aGVuOgogICAgICBldmVudDogZGVwbG95bWVudAogICAgICBlbnZpcm9ubWVudDogbmlnaHRseQoKICBwdWJsaXNoX3JlbGVhc2U6CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjAxNy0wOC0zMAogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICI7Y2xlYW4gO3B1Ymxpc2hMb2NhbCIgIiR7Q0lfUFVCTElTSH0iCiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICJzYnQtZG90dHkvc2NyaXB0ZWQgc291cmNlLWRlcGVuZGVuY2llcy8qIiAiJHtDSV9QVUJMSVNIfSIKICAgICAgLSBSRUxFQVNFQlVJTEQ9InllcyIgLi9wcm9qZWN0L3NjcmlwdHMvc2J0UHVibGlzaCAke0NJX1BVQkxJU0h9ICRTT05BVFlQRV9VU0VSICRTT05BVFlQRV9QVyAkUEdQX1BXICI7ZG90dHktYm9vdHN0cmFwcGVkL3B1Ymxpc2hTaWduZWQgO3NvbmF0eXBlUmVsZWFzZSIKICAgIHZvbHVtZXM6CiAgICAgIC0gL2hvbWUvZHJvbmUva2V5czova2V5cwogICAgd2hlbjoKICAgICAgZXZlbnQ6IGRlcGxveW1lbnQKICAgICAgZW52aXJvbm1lbnQ6IHJlbGVhc2UKCiAgcHVibGlzaF9zYnRfcmVsZWFzZToKICAgIGltYWdlOiBsYW1wZXBmbC9kb3R0eToyMDE3LTA4LTMwCiAgICBjb21tYW5kczoKICAgICAgLSBSRUxFQVNFQlVJTEQ9InllcyIgLi9wcm9qZWN0L3NjcmlwdHMvc2J0UHVibGlzaCAke0NJX1BVQkxJU0h9ICRTT05BVFlQRV9VU0VSICRTT05BVFlQRV9QVyAkUEdQX1BXICI7c2J0LWRvdHR5L3B1Ymxpc2hTaWduZWQgO3NvbmF0eXBlUmVsZWFzZSIKICAgIHZvbHVtZXM6CiAgICAgIC0gL2hvbWUvZHJvbmUva2V5czova2V5cwogICAgd2hlbjoKICAgICAgZXZlbnQ6IGRlcGxveW1lbnQKICAgICAgZW52aXJvbm1lbnQ6IHNidF9yZWxlYXNlCgogIGRvY3VtZW50YXRpb246CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjAxNy0wOC0zMAogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvZ2VuRG9jcyAiJHtDSV9QVUJMSVNIfSIgJEJPVF9QQVNTCiAgICB3aGVuOgogICAgICBicmFuY2g6IG1hc3RlcgoKICBzbGFjazoKICAgIGltYWdlOiBwbHVnaW5zL3NsYWNrCiAgICBjaGFubmVsOiBkb3R0eQogICAgd2hlbjoKICAgICAgYnJhbmNoOiBtYXN0ZXIKICAgICAgc3RhdHVzOiBjaGFuZ2VkCgptYXRyaXg6CiAgaW5jbHVkZToKICAgIC0gQ0lfVEVTVDogZG90dHktYmluLXRlc3RzL3Rlc3QKICAgICAgQ0lfUFVCTElTSDogdHJ1ZQogICAgLSBDSV9URVNUOiBsZWdhY3lUZXN0cwogICAgICBDSV9QVUJMSVNIOiBmYWxzZQogICAgLSBDSV9URVNUOiA7dGVzdDtzYnQtZG90dHkvc2NyaXB0ZWQgY29tcGlsZXJSZXBvcnRlci8qO3NidC1kb3R0eS9zY3JpcHRlZCBkaXNjb3ZlcnkvKjtzYnQtZG90dHkvc2NyaXB0ZWQgc2J0LWRvdHR5LyoKICAgICAgQ0lfUFVCTElTSDogZmFsc2UKICAgIC0gQ0lfVEVTVDogZG90dHktYm9vdHN0cmFwcGVkL3Rlc3QKICAgICAgQ0lfUFVCTElTSDogZmFsc2UKICAgIC0gQ0lfVEVTVDogO3NldCBib290c3RyYXBPcHRpbWlzZWQgaW4gVGhpc0J1aWxkIDo9IHRydWUgO2RvdHR5LWJvb3RzdHJhcHBlZC90ZXN0CiAgICAgIENJX1BVQkxJU0g6IGZhbHNlCg.vMnMkwV_hb5cYLtlhJfXezhGvbh-YMMIFSKwTvKCnX8
eyJhbGciOiJIUzI1NiJ9.IyBBZnRlciB1cGRhdGluZyB0aGlzIGZpbGUsIHlvdSBuZWVkIHRvIHJlLXNpZ24gaXQ6CiMKIyAtIEluc3RhbGwgW2Ryb25lLWNsaV0oaHR0cDovL3JlYWRtZS5kcm9uZS5pby91c2FnZS9nZXR0aW5nLXN0YXJ0ZWQtY2xpLykKIyAtIENvcHkgeW91ciB0b2tlbiBmcm9tIGh0dHA6Ly9kb3R0eS1jaS5lcGZsLmNoL2FjY291bnQgKENsaWNrIFNIT1cgVE9LRU4pCiMgLSBEUk9ORV9UT0tFTj15b3VyLXRva2VuIERST05FX1NFUlZFUj1odHRwOi8vZG90dHktY2kuZXBmbC5jaCBkcm9uZSBzaWduIGxhbXBlcGZsL2RvdHR5CiMKIyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBzaWduaW5nIGNhbiBvbmx5IGJlIGRvbmUgYnkgY29sbGFib3JhdG9ycy4KCnBpcGVsaW5lOgogIHRlc3Q6CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjAxNy0wOC0zMAogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICIke0NJX1RFU1R9IgogICAgd2hlbjoKICAgICAgYnJhbmNoOgogICAgICAgIGV4Y2x1ZGU6IGdoLXBhZ2VzCgogIHB1Ymxpc2hfbmlnaHRseToKICAgIGltYWdlOiBsYW1wZXBmbC9kb3R0eToyMDE3LTA4LTMwCiAgICBjb21tYW5kczoKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9zYnQgIjtjbGVhbiA7cHVibGlzaExvY2FsIiAiJHtDSV9QVUJMSVNIfSIKICAgICAgLSAuL3Byb2plY3Qvc2NyaXB0cy9zYnQgInNidC1kb3R0eS9zY3JpcHRlZCBzb3VyY2UtZGVwZW5kZW5jaWVzLyoiICIke0NJX1BVQkxJU0h9IgogICAgICAtIE5JR0hUTFlCVUlMRD0ieWVzIiAuL3Byb2plY3Qvc2NyaXB0cy9zYnRQdWJsaXNoICR7Q0lfUFVCTElTSH0gJFNPTkFUWVBFX1VTRVIgJFNPTkFUWVBFX1BXICRQR1BfUFcgIjtkb3R0eS1ib290c3RyYXBwZWQvcHVibGlzaFNpZ25lZCA7c29uYXR5cGVSZWxlYXNlIgogICAgdm9sdW1lczoKICAgICAgLSAvaG9tZS9kcm9uZS9rZXlzOi9rZXlzCiAgICB3aGVuOgogICAgICBldmVudDogZGVwbG95bWVudAogICAgICBlbnZpcm9ubWVudDogbmlnaHRseQoKICBwdWJsaXNoX3JlbGVhc2U6CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjAxNy0wOC0zMAogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICI7Y2xlYW4gO3B1Ymxpc2hMb2NhbCIgIiR7Q0lfUFVCTElTSH0iCiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvc2J0ICJzYnQtZG90dHkvc2NyaXB0ZWQgc291cmNlLWRlcGVuZGVuY2llcy8qIiAiJHtDSV9QVUJMSVNIfSIKICAgICAgLSBSRUxFQVNFQlVJTEQ9InllcyIgLi9wcm9qZWN0L3NjcmlwdHMvc2J0UHVibGlzaCAke0NJX1BVQkxJU0h9ICRTT05BVFlQRV9VU0VSICRTT05BVFlQRV9QVyAkUEdQX1BXICI7ZG90dHktYm9vdHN0cmFwcGVkL3B1Ymxpc2hTaWduZWQgO3NvbmF0eXBlUmVsZWFzZSIKICAgIHZvbHVtZXM6CiAgICAgIC0gL2hvbWUvZHJvbmUva2V5czova2V5cwogICAgd2hlbjoKICAgICAgZXZlbnQ6IGRlcGxveW1lbnQKICAgICAgZW52aXJvbm1lbnQ6IHJlbGVhc2UKCiAgcHVibGlzaF9zYnRfcmVsZWFzZToKICAgIGltYWdlOiBsYW1wZXBmbC9kb3R0eToyMDE3LTA4LTMwCiAgICBjb21tYW5kczoKICAgICAgLSBSRUxFQVNFQlVJTEQ9InllcyIgLi9wcm9qZWN0L3NjcmlwdHMvc2J0UHVibGlzaCAke0NJX1BVQkxJU0h9ICRTT05BVFlQRV9VU0VSICRTT05BVFlQRV9QVyAkUEdQX1BXICI7c2J0LWRvdHR5L3B1Ymxpc2hTaWduZWQgO3NvbmF0eXBlUmVsZWFzZSIKICAgIHZvbHVtZXM6CiAgICAgIC0gL2hvbWUvZHJvbmUva2V5czova2V5cwogICAgd2hlbjoKICAgICAgZXZlbnQ6IGRlcGxveW1lbnQKICAgICAgZW52aXJvbm1lbnQ6IHNidF9yZWxlYXNlCgogIGRvY3VtZW50YXRpb246CiAgICBpbWFnZTogbGFtcGVwZmwvZG90dHk6MjAxNy0wOC0zMAogICAgY29tbWFuZHM6CiAgICAgIC0gLi9wcm9qZWN0L3NjcmlwdHMvZ2VuRG9jcyAiJHtDSV9QVUJMSVNIfSIgJEJPVF9QQVNTCiAgICB3aGVuOgogICAgICBicmFuY2g6IG1hc3RlcgoKICBzbGFjazoKICAgIGltYWdlOiBwbHVnaW5zL3NsYWNrCiAgICBjaGFubmVsOiBkb3R0eQogICAgd2hlbjoKICAgICAgYnJhbmNoOiBtYXN0ZXIKICAgICAgc3RhdHVzOiBjaGFuZ2VkCgptYXRyaXg6CiAgaW5jbHVkZToKICAgIC0gQ0lfVEVTVDogbGVnYWN5VGVzdHMKICAgICAgQ0lfUFVCTElTSDogZmFsc2UKICAgIC0gQ0lfVEVTVDogO3Rlc3Q7c2J0LWRvdHR5L3NjcmlwdGVkIGNvbXBpbGVyUmVwb3J0ZXIvKjtzYnQtZG90dHkvc2NyaXB0ZWQgZGlzY292ZXJ5Lyo7c2J0LWRvdHR5L3NjcmlwdGVkIHNidC1kb3R0eS8qCiAgICAgIENJX1BVQkxJU0g6IGZhbHNlCiAgICAtIENJX1RFU1Q6IGRvdHR5LWJvb3RzdHJhcHBlZC90ZXN0CiAgICAgIENJX1BVQkxJU0g6IGZhbHNlCiAgICAtIENJX1RFU1Q6IDtzZXQgYm9vdHN0cmFwT3B0aW1pc2VkIGluIFRoaXNCdWlsZCA6PSB0cnVlIDtkb3R0eS1ib290c3RyYXBwZWQvdGVzdAogICAgICBDSV9QVUJMSVNIOiBmYWxzZQo.riMxzEKgDgKb1iyoMNu6XT39pIHxMd8MuX381zMhQQw
159 changes: 13 additions & 146 deletions bin/common
Original file line number Diff line number Diff line change
@@ -1,156 +1,23 @@
#!/usr/bin/env bash

# Finds in dotty build file a line containing PATTERN
# returns last "" escaped string in this line
function getLastStringOnLineWith {
PATTERN="$1"
grep "$PATTERN" "$DOTTY_ROOT/project/Build.scala"|sed -n 's/.*\"\(.*\)\".*/\1/'p
}
# Wrapper for the published dotc/dotr script that check for file changes
# and use sbt to re build the compiler as needed.

# Configuration
SCALA_VERSION=$(getLastStringOnLineWith "val scalacVersion")
SCALA_BINARY_VERSION=2.11
SCALA_ASM_VERSION=$(getLastStringOnLineWith "% \"scala-asm\" %")
SBT_VERSION=$(grep "sbt.version=" "$DOTTY_ROOT/project/build.properties" | sed 's/sbt.version=//')
bootcp=true
bootstrapped=false
default_java_opts="-Xmx768m -Xms768m"
programName=$(basename "$0")
# uncomment next line to enable debug output
#debug=true
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" >& /dev/null && pwd)/.."

declare -a java_args scala_args residual_args
unset verbose quiet cygwin toolcp colors saved_stty CDPATH
target="$1"

function find_jar {
# Usage:
# find_jar path/to/location file.jar
local artifact="$1/$2"
shift # Mutates $@ by deleting the first element ($1)

if [ ! -f "$artifact" ]; then
artifact=$(find "$HOME/.coursier/cache" -iname "$2" 2> /dev/null)
fi
# Marker file used to obtain the date of latest call to sbt-back
version="$ROOT/dist-bootstrapped/target/pack/VERSION"

echo "$artifact"
}
# Create the target if absent or if file changed in ROOT/compiler
new_files="$(find "$ROOT/compiler" \( -iname "*.scala" -o -iname "*.java" \) -newer "$version" >& /dev/null)"

# Log used to communicate errors from a command substitution, for example:
# $(sbt package || (echo msg >> $ERROR_LOG; kill -SIGTERM $$))
ERROR_LOG=error.log
trap onTerminate SIGTERM

onTerminate() {
if [ -f "$ERROR_LOG" ]; then
cat "$ERROR_LOG"
rm -f "$ERROR_LOG"
fi
exit 1 # $? is lost from subprocess in command substitution.
}

function build_jar {
# Usage:
# build_jar package path/to/jar/dir ['/some/sed/command']
#
# Last arg is optional
cd "$DOTTY_ROOT" >& /dev/null
local build_output=$(sbt "$1" || (echo "failed to run: sbt $1" >> $ERROR_LOG; kill -SIGTERM $$))
local jar=$(echo $build_output | sed -n 's/.*Packaging //g; s/ \.\.\..*//g; /^\/.*/p')

local sedjar="$3"
if [ "$sedjar" == "" ]; then
sedjar="/tests/d; /javadoc/d; /.*\.jar/p"
fi

if [ "$jar" == "" ]; then
# Didn't build a jar - could've run sbt by oneself, get latest jar in target:
jar="$DOTTY_ROOT/$2/$(ls -1t "$2" | sed -n "$sedjar" | awk 'NR==1')"
fi

cd - >& /dev/null

echo "$jar"
}

function update_packages {
echo "$INTERFACES_JAR" > "$DOTTY_ROOT/.packages"
echo "$MAIN_JAR" >> "$DOTTY_ROOT/.packages"
echo "$DOTTY_LIB_JAR" >> "$DOTTY_ROOT/.packages"
echo "$TEST_JAR" >> "$DOTTY_ROOT/.packages"
}

function build_all {
echo "The script is going to build the required jar files"

printf "Building dotty-interfaces..."
INTERFACES_JAR=$(build_jar dotty-interfaces/package interfaces/target)
printf "done\n"

printf "Building dotty-compiler..."
MAIN_JAR=$(build_jar dotty-compiler/package "compiler/target/scala-$SCALA_BINARY_VERSION")
printf "done\n"

printf "Building dotty library..."
DOTTY_LIB_JAR=$(build_jar dotty-library/package "library/target/scala-$SCALA_BINARY_VERSION")
printf "done\n"

printf "Building tests..."
TEST_JAR=$(build_jar test:package "compiler/target/scala-$SCALA_BINARY_VERSION" '/dotty.*-tests\.jar/p')
printf "done\n"

update_packages
}

# Check if .packages file does not exist - if so assume old build and rebuild all
if [ ! -f "$DOTTY_ROOT/.packages" ]; then
build_all
else
IFS=$'\r\n' GLOBIGNORE='*' command eval 'JARS=($(cat $DOTTY_ROOT/.packages))'

if [ "${#JARS[@]}" == "4" ]; then
INTERFACES_JAR="${JARS[0]}"
MAIN_JAR="${JARS[1]}"
DOTTY_LIB_JAR="${JARS[2]}"
TEST_JAR="${JARS[3]}"
else
echo "Failed to parse .packages file"
build_all
fi

if [ ! -f "$INTERFACES_JAR" -o ! -f "$MAIN_JAR" -o ! -f "$DOTTY_LIB_JAR" -o ! -f "$TEST_JAR" ]; then
echo ".packages file corrupted, rebuilding"
build_all
fi
if [ ! -f "$target" ] || [ ! -z "$new_files" ]; then
echo "Building Dotty..."
sbt "dist-bootstrapped/pack"
fi

################# After this point, jar variables will be set #################
function check_jar {
# Usage:
# check_jar "name" "path/to/package.jar" "sources/dir" 'lambda to exec on failure'
local new_files="$(find "$DOTTY_ROOT/$3" \( -iname "*.scala" -o -iname "*.java" \) -newer "$2")"
# If the find failed, or if it found new files...
if [ "$?" -ne 0 ] || [ ! -z "$new_files" ]; then
printf "New files detected in $1, rebuilding..."
rm "$2"
eval "$4"
printf "done\n"
update_packages
fi
}

check_jar "dotty-interfaces" "$INTERFACES_JAR" "interfaces/src" 'INTERFACES_JAR=$(build_jar dotty-interfaces/package interfaces/target)'
check_jar "dotty-compiler" "$MAIN_JAR" "compiler/src" 'MAIN_JAR=$(build_jar dotty-compiler/package compiler/target/scala-$SCALA_BINARY_VERSION)'
check_jar "dotty-library" "$DOTTY_LIB_JAR" "library/src" 'DOTTY_LIB_JAR=$(build_jar dotty-library/package library/target/scala-$SCALA_BINARY_VERSION)'
check_jar "dotty-tests" "$TEST_JAR" "compiler/test" 'TEST_JAR=$(build_jar dotty-compiler/test:package compiler/target/scala-$SCALA_BINARY_VERSION /dotty.*-tests\.jar/p)'

# Autodetecting the scala-library location, in case it wasn't provided by an environment variable
if [ "$SCALA_LIBRARY_JAR" == "" ]; then
SCALA_LIBRARY_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang/scala-library/jars" "scala-library-$SCALA_VERSION.jar")
fi

if [ "$SCALA_ASM_JAR" == "" ]; then
SCALA_ASM_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-lang.modules/scala-asm/bundles" "scala-asm-$SCALA_ASM_VERSION.jar")
fi

if [ "$SBT_INTERFACE_JAR" == "" ]; then
SBT_INTERFACE_JAR=$(find_jar "$HOME/.ivy2/cache/org.scala-sbt/interface/jars" "interface-$SBT_VERSION.jar")
fi
eval "$target" "$@"
Loading