Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4719 from wilzbach/switch_to_circleci
Switch to CircleCi
- Loading branch information
Showing
4 changed files
with
152 additions
and
38 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
dependencies: | ||
pre: | ||
- ./circleci.sh install-deps | ||
cache_directories: | ||
- "~/dlang" | ||
|
||
test: | ||
override: | ||
- ./circleci.sh style | ||
- ./circleci.sh setup-repos | ||
- ./circleci.sh coverage: | ||
parallel: true | ||
|
||
post: | ||
- bash <(curl -s https://codecov.io/bash) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
#!/bin/bash | ||
|
||
set -uexo pipefail | ||
|
||
HOST_DMD_VER=2.068.2 # same as in dmd/src/posix.mak | ||
CURL_USER_AGENT="CirleCI $(curl --version | head -n 1)" | ||
N=2 | ||
|
||
case $CIRCLE_NODE_INDEX in | ||
0) MODEL=64 ;; | ||
1) MODEL=32 ;; | ||
esac | ||
|
||
install_deps() { | ||
if [ $MODEL -eq 32 ]; then | ||
sudo apt-get update | ||
sudo apt-get install g++-multilib | ||
fi | ||
|
||
for i in {0..4}; do | ||
if curl -fsS -A "$CURL_USER_AGENT" --max-time 5 https://dlang.org/install.sh -O; then | ||
break | ||
elif [ $i -ge 4 ]; then | ||
sleep $((1 << $i)) | ||
else | ||
echo 'Failed to download install script' 1>&2 | ||
exit 1 | ||
fi | ||
done | ||
|
||
source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash install.sh dmd-$HOST_DMD_VER --activate)" | ||
$DC --version | ||
env | ||
} | ||
|
||
# clone dmd and druntime | ||
clone() { | ||
local url="$1" | ||
local path="$2" | ||
local branch="$3" | ||
for i in {0..4}; do | ||
if git clone --depth=1 --branch "$branch" "$url" "$path"; then | ||
break | ||
elif [ $i -lt 4 ]; then | ||
sleep $((1 << $i)) | ||
else | ||
echo "Failed to clone: ${url}" | ||
exit 1 | ||
fi | ||
done | ||
} | ||
|
||
# setup dmd and druntime | ||
setup_repos() | ||
{ | ||
# set a default in case we run into rate limit restrictions | ||
local base_branch="master" | ||
if [ -n "${CIRCLE_PR_NUMBER:-}" ]; then | ||
base_branch=$(curl -fsSL https://api.github.com/repos/dlang/dmd/pulls/$CIRCLE_PR_NUMBER | jq -r '.base.ref') | ||
else | ||
base_branch=$CIRCLE_BRANCH | ||
fi | ||
|
||
clone https://github.com/dlang/dmd.git ../dmd $base_branch | ||
clone https://github.com/dlang/druntime.git ../druntime $base_branch | ||
|
||
# load environment for bootstrap compiler | ||
source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)" | ||
|
||
# build dmd and druntime | ||
make -j$N -C ../dmd/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD all | ||
make -j$N -C ../druntime -f posix.mak MODEL=$MODEL HOST_DMD=$DMD | ||
} | ||
|
||
# verify style guide | ||
style() | ||
{ | ||
# load dmd to build dscanner | ||
source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)" | ||
make -f posix.mak style | ||
} | ||
|
||
# run unittest with coverage | ||
coverage() | ||
{ | ||
make -f posix.mak clean | ||
# remove all existing coverage files (just in case) | ||
rm -rf $(find -name '*.lst') | ||
|
||
# currently using the test_runner yields wrong code coverage results | ||
# see https://github.com/dlang/phobos/pull/4719 for details | ||
#ENABLE_COVERAGE="1" make -f posix.mak MODEL=$MODEL unittest-debug | ||
|
||
# instead we run all tests individually | ||
make -f posix.mak $(find std etc -name "*.d" | sed "s/[.]d$/.test/" | grep -vE '(std.algorithm.sorting|std.encoding|net.curl)' ) | ||
} | ||
|
||
case $1 in | ||
install-deps) install_deps ;; | ||
coverage) coverage ;; | ||
setup-repos) setup_repos ;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters