From ca9f6bfd430fddedff5eb378227eba0edb33246f Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Thu, 5 Apr 2018 02:58:45 +0200 Subject: [PATCH] Add support for rdmd in gdc + set $RDMD variable --- .travis.yml | 4 ++-- script/install.sh | 9 +++++++++ test/all.sh | 12 ++++++++++++ travis.sh => test/base.sh | 0 test/common.sh | 6 ++++++ test/rdmd.sh | 40 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 69 insertions(+), 2 deletions(-) create mode 100755 test/all.sh rename travis.sh => test/base.sh (100%) create mode 100644 test/common.sh create mode 100755 test/rdmd.sh diff --git a/.travis.yml b/.travis.yml index 86b52f77..667319b5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ matrix: - cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local . - make install -j$(nproc) - popd - script: kcov --exclude-pattern=travis.sh $PWD/coverage ./travis.sh + script: kcov --exclude-pattern=travis.sh $PWD/coverage ./test/all.sh after_success: bash <(curl -s https://codecov.io/bash) -s $PWD/coverage - os: osx - script: ./travis.sh + script: ./test/all.sh diff --git a/script/install.sh b/script/install.sh index 757958c1..c865d648 100755 --- a/script/install.sh +++ b/script/install.sh @@ -556,6 +556,12 @@ install_compiler() { download_without_verify "$ROOT/$1/bin/gdmd" "$url" chmod +x "$ROOT/$1/bin/gdmd" + url=https://raw.githubusercontent.com/dlang/tools/e88c44d1818996b852bd0dfa0406f60e391f0687/rdmd.d + log "Downloading rdmd $url" + download_without_verify "$ROOT/$1/bin/rdmd.d" "$url" + log "Building rdmd" + "$ROOT/$1/bin/gdc" -O3 -o "$ROOT/$1/bin/rdmd" "$ROOT/$1/bin/rdmd.d" + else fatal "Unknown compiler '$compiler'" fi @@ -648,6 +654,7 @@ binpath_for_compiler() { write_env_vars() { local -r binpath=$(binpath_for_compiler "$1") + local rdmd=rdmd case $1 in dmd*) local suffix @@ -689,6 +696,7 @@ deactivate() { unset _OLD_D_PS1 unset DMD unset DC + unset RDMD unset -f deactivate } @@ -702,6 +710,7 @@ export LIBRARY_PATH="$ROOT/$1/$libpath\${LIBRARY_PATH:+:}\${LIBRARY_PATH:-}" export LD_LIBRARY_PATH="$ROOT/$1/$libpath\${LD_LIBRARY_PATH:+:}\${LD_LIBRARY_PATH:-}" export DMD=$dmd export DC=$dc +export RDMD=$rdmd export PS1="($1)\${PS1:-}" EOF diff --git a/test/all.sh b/test/all.sh new file mode 100755 index 00000000..1bd18bc8 --- /dev/null +++ b/test/all.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -eu -o pipefail + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +. $DIR/common.sh + +for file in $(find "$DIR" -name "*.sh") ; do + if ! ( [[ "$file" == */all.sh ]] || [[ "$file" == */common.sh ]] ) ; then + $file + fi +done diff --git a/travis.sh b/test/base.sh similarity index 100% rename from travis.sh rename to test/base.sh diff --git a/test/common.sh b/test/common.sh new file mode 100644 index 00000000..ddefac40 --- /dev/null +++ b/test/common.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -eu -o pipefail + +ROOT="$DIR/../" +INSTALLER="$ROOT/script/install.sh" \ No newline at end of file diff --git a/test/rdmd.sh b/test/rdmd.sh new file mode 100755 index 00000000..91c878df --- /dev/null +++ b/test/rdmd.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +set -uexo pipefail + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +. $DIR/common.sh + +compilers=( + dmd-2.079.0 + ldc-1.8.0 + gdc-4.8.5 +) + +frontends=( + '2079L' + '2078L' + '2068L' +) + +for idx in "${!compilers[@]}" +do + compiler="${compilers[$idx]}" + echo "Testing: $compiler" + "$INSTALLER" $compiler + + . ~/dlang/$compiler/activate + echo "pragma(msg, __VERSION__);" > test.d + # test vanilla rdmd + compilerFrontend=$(tail -n1 <(rdmd --force -c test.d 2>&1)) + test "$compilerFrontend" = "${frontends[$idx]}" + + # test $RDMD + compilerFrontend=$(tail -n1 <("$RDMD" --force -c test.d 2>&1)) + test "$compilerFrontend" = "${frontends[$idx]}" + deactivate + + # cleanup + rm -rf test.d test.o + "$INSTALLER" uninstall $compiler +done