Skip to content

Commit 5e02e4a

Browse files
committed
Merge remote-tracking branch 'sym/sym-1.40.x' into newgc
Conflicts: .github/actions/4d-test-libs/action.yml .github/actions/6-integration-test/action.yml
2 parents a471670 + 61c11b7 commit 5e02e4a

File tree

121 files changed

+2322
-1650
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+2322
-1650
lines changed

.circleci/config.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ commonSteps: &commonSteps
3232
fi
3333
# Install lit
3434
python3 --version
35-
python3 -m pip install --user lit
35+
python3 -m pip install --user lit psutil
3636
python3 -c "import lit.main; lit.main.main();" --version . | head -n 1
3737
# Download & extract host LDC if HOST_LDC_VERSION is set
3838
if [[ -v HOST_LDC_VERSION ]]; then
@@ -83,7 +83,7 @@ commonSteps: &commonSteps
8383
- run:
8484
name: Run defaultlib unittests & druntime integration tests
8585
when: always
86-
command: cd ../build && ctest -j$PARALLELISM --output-on-failure -E "dmd-testsuite|ldc2-unittest|lit-tests"
86+
command: cd ../build && ctest -j$PARALLELISM --output-on-failure -E "dmd-testsuite|ldc2-unittest|lit-tests" --timeout 120
8787

8888
version: 2
8989
jobs:

.cirrus.yml

+17-117
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,14 @@ common_steps_template: &COMMON_STEPS_TEMPLATE
3434
ctest --output-on-failure -R ldc2-unittest
3535
run_lit_testsuite_script: |
3636
cd $CIRRUS_WORKING_DIR/../build/tests
37-
if [[ "$CI_OS-$CI_ARCH" == "linux-aarch64" ]]; then
38-
# FIXME: the following tests fail
39-
rm $CIRRUS_WORKING_DIR/tests/debuginfo/nested_gdb.d
40-
rm $CIRRUS_WORKING_DIR/tests/sanitizers/fuzz_basic.d
41-
fi
4237
python3 runlit.py -v -j $PARALLELISM .
4338
run_dmd_testsuite_script: |
4439
cd $CIRRUS_WORKING_DIR/../build
4540
DMD_TESTSUITE_MAKE_ARGS=-j$PARALLELISM ctest -V -R dmd-testsuite
4641
run_defaultlib_tests_script: |
4742
# Run defaultlib unittests & druntime integration tests
4843
cd $CIRRUS_WORKING_DIR/../build
49-
excludes="dmd-testsuite|ldc2-unittest|lit-tests"
50-
if [[ "$CI_OS-$CI_ARCH" == "linux-aarch64" ]]; then
51-
# FIXME: failing unittest(s)
52-
excludes+='|^std.internal.math.gammafunction'
53-
# FIXME: failing unittest(s) with enabled optimizations
54-
excludes+='|^std.math.exponential(-shared)?$'
55-
# FIXME: subtest rt_trap_exceptions fails
56-
excludes+='|^druntime-test-exceptions-debug$'
57-
# std.path unittests apparently need HOME, which happens not to be set
58-
export HOME=~
59-
echo "Setting HOME to '$HOME'"
60-
fi
61-
ctest -j$PARALLELISM --output-on-failure -E "$excludes"
44+
ctest -j$PARALLELISM --output-on-failure -E "dmd-testsuite|ldc2-unittest|lit-tests" --timeout 120
6245
6346
# Performs the extra packaging steps for jobs producing a prebuilt package.
6447
# Requires env variables CI_ARCH, CI_OS, GITHUB_TOKEN and PARALLELISM (and CC for FreeBSD).
@@ -93,8 +76,8 @@ packaging_steps_template: &PACKAGING_STEPS_TEMPLATE
9376
# Run dynamic-compile integration test
9477
run_dynamic_compile_integration_test_script: |
9578
cd $CIRRUS_WORKING_DIR/..
96-
# FIXME: disabled since LLVM 12, needs https://github.com/ldc-developers/ldc/pull/3184
97-
if false; then
79+
# FreeBSD's LLVM 15 is too old (need LLVM 18+ for dynamic-compile)
80+
if [[ "$CI_OS" != "freebsd" ]]; then
9881
installed/bin/ldc2 -enable-dynamic-compile -run $CIRRUS_WORKING_DIR/tests/dynamiccompile/array.d
9982
fi
10083
# Run ImportC integration test
@@ -126,7 +109,7 @@ packaging_steps_template: &PACKAGING_STEPS_TEMPLATE
126109
# Build & copy reggae
127110
build_reggae_script: |
128111
cd $CIRRUS_WORKING_DIR/..
129-
git clone --recursive https://github.com/kinke/reggae.git
112+
git clone --recursive https://github.com/atilaneves/reggae.git
130113
cd reggae
131114
git checkout "$(cat $CIRRUS_WORKING_DIR/packaging/reggae_version)"
132115
# needs rdmd in PATH
@@ -161,7 +144,7 @@ packaging_steps_template: &PACKAGING_STEPS_TEMPLATE
161144
fi
162145
163146
# Installs Ubuntu 20.04+ prerequisites.
164-
# Requires env variables CI_ARCH, HOST_LDC_VERSION, EXTRA_APT_PACKAGES and EXTRA_CMAKE_FLAGS.
147+
# Requires env variables CI_ARCH, EXTRA_APT_PACKAGES and EXTRA_CMAKE_FLAGS.
165148
install_ubuntu_prerequisites_template: &INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
166149
install_prerequisites_script: |
167150
cd $CIRRUS_WORKING_DIR/..
@@ -177,32 +160,21 @@ install_ubuntu_prerequisites_template: &INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
177160
fi
178161
apt-get -q update
179162
apt-get -yq install \
180-
git-core ninja-build $gcc_pkg \
163+
git-core cmake ninja-build $gcc_pkg \
181164
zlib1g-dev $libcurl_pkg curl gdb python3 python3-pip tzdata unzip zip \
182165
$EXTRA_APT_PACKAGES
183166
python3 --version
184-
# Download & extract CMake
185-
curl -fL --retry 3 --max-time 300 -o cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v3.27.1/cmake-3.27.1-linux-$CI_ARCH.tar.gz
186-
mkdir cmake
187-
tar -xf cmake.tar.gz --strip 1 -C cmake
188-
rm cmake.tar.gz
189-
# Download & extract custom Ninja on x86_64
167+
# Install custom Ninja on x86_64
190168
if [[ "$CI_ARCH" == "x86_64" ]]; then
191169
curl -fL --retry 3 --max-time 60 -O https://github.com/symmetryinvestments/ninja/releases/download/v1.11.1-sym1/ninja-linux.zip
192170
mkdir ninja
193171
unzip ninja-linux.zip -d ninja
194172
rm ninja-linux.zip
173+
ln -sf $PWD/ninja/ninja /usr/bin/ninja
195174
fi
196-
# Download & extract host LDC
197-
curl -fL --retry 3 --max-time 300 -o ldc2.tar.xz https://github.com/ldc-developers/ldc/releases/download/v$HOST_LDC_VERSION/ldc2-$HOST_LDC_VERSION-linux-$CI_ARCH.tar.xz
198-
mkdir host-ldc
199-
tar -xf ldc2.tar.xz --strip 1 -C host-ldc
200-
rm ldc2.tar.xz
201175
202176
environment:
203177
CIRRUS_CLONE_DEPTH: 50
204-
HOST_LDC_VERSION: 1.31.0
205-
LLVM_VERSION: 19.1.3
206178
GITHUB_TOKEN: ENCRYPTED[0955bd48c8d4e5391446fc0149d0719ad0b63df27ec9e6c180a5730a5b10dc7f28f09d1383423db158d21380ee2b022a]
207179

208180
task:
@@ -218,7 +190,6 @@ task:
218190
EXTRA_APT_PACKAGES: "gdmd llvm-dev libclang-common-19-dev lld"
219191
EXTRA_CMAKE_FLAGS: "-DBUILD_SHARED_LIBS=ON -DBUILD_LTO_LIBS=ON -DD_COMPILER=gdmd -DLDC_LINK_MANUALLY=ON"
220192
PARALLELISM: 8
221-
PATH: ${CIRRUS_WORKING_DIR}/../cmake/bin:${CIRRUS_WORKING_DIR}/../ninja:${PATH}
222193
# for gdmd:
223194
LANG: C.UTF-8
224195
<< : *INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
@@ -235,85 +206,9 @@ task:
235206
<< : *COMMON_STEPS_TEMPLATE
236207

237208
task:
238-
name: Ubuntu 20.04 aarch64
239-
compute_engine_instance:
240-
image_project: ubuntu-os-cloud
241-
image: family/ubuntu-2004-lts-arm64
242-
platform: linux
243-
architecture: arm64
244-
cpu: 4
245-
memory: 8G
246-
disk: 20
247-
timeout_in: 60m
248-
environment:
249-
CI_ARCH: aarch64
250-
CI_OS: linux
251-
EXTRA_APT_PACKAGES: libxml2-dev libzstd-dev p7zip-full
252-
EXTRA_CMAKE_FLAGS: >-
253-
-DBUILD_LTO_LIBS=ON
254-
-DD_COMPILER_FLAGS="-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto"
255-
-DEXTRA_CXXFLAGS=-flto=full
256-
-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++
257-
-DJITRT_EXTRA_LDFLAGS=-static-libstdc++
258-
-DCOMPILER_RT_LIBDIR_OS=aarch64-unknown-linux-gnu
259-
-DLLVM_ROOT_DIR=$CIRRUS_WORKING_DIR/../llvm
260-
-DD_COMPILER=$CIRRUS_WORKING_DIR/../bootstrap-ldc/bin/ldmd2
261-
PARALLELISM: 4
262-
PATH: ${CIRRUS_WORKING_DIR}/../cmake/bin:${PATH}
263-
CLANG_VERSION: '15.0.3' # 15.0.6 requires a more recent libstdc++.so.6 than shipped with Ubuntu 20
264-
CC: $CIRRUS_WORKING_DIR/../clang/bin/clang
265-
CXX: $CIRRUS_WORKING_DIR/../clang/bin/clang++
266-
<< : *INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
267-
# Download & extract LDC-flavoured LLVM
268-
download_prebuilt_llvm_script: |
269-
cd $CIRRUS_WORKING_DIR/..
270-
assertsSuffix=""
271-
if [[ "${CIRRUS_TAG:-}" == "" ]]; then
272-
echo 'Using LLVM with enabled assertions'
273-
assertsSuffix="-withAsserts"
274-
fi
275-
llvm_tag="CI"
276-
if [[ "$LLVM_VERSION" = *.* ]]; then llvm_tag="ldc-v$LLVM_VERSION"; fi
277-
llvm_url="https://github.com/ldc-developers/llvm-project/releases/download/$llvm_tag/llvm-$LLVM_VERSION-linux-$CI_ARCH$assertsSuffix.tar.xz"
278-
curl -fL --retry 3 --max-time 300 -o llvm.tar.xz $llvm_url
279-
mkdir -p llvm
280-
tar -xf llvm.tar.xz --strip 1 -C llvm
281-
rm llvm.tar.xz
282-
# Make lld the default linker (likely with enabled assertions unfortunately)
283-
ln -sf "$PWD/llvm/bin/ld.lld" /usr/bin/ld
284-
ld --version
285-
# Make sure to link libzstd statically
286-
rm /usr/lib/aarch64-linux-gnu/libzstd.so
287-
# Download & extract clang
288-
download_prebuilt_clang_script: |
289-
cd $CIRRUS_WORKING_DIR/..
290-
curl -fL --retry 3 --max-time 300 -o clang.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-$CLANG_VERSION/clang+llvm-$CLANG_VERSION-$CI_ARCH-linux-gnu.tar.xz
291-
mkdir clang
292-
tar -xf clang.tar.xz --strip 1 -C clang
293-
rm clang.tar.xz
294-
clone_submodules_early_script: |
295-
cd $CIRRUS_WORKING_DIR
296-
git submodule update --init --depth $CIRRUS_CLONE_DEPTH
297-
# Build a first LDC as host compiler for the actual build
298-
build_bootstrap_ldc_script: |
299-
cd $CIRRUS_WORKING_DIR/..
300-
mkdir bootstrap-ldc
301-
cd bootstrap-ldc
302-
cmake -G Ninja $CIRRUS_WORKING_DIR \
303-
-DCMAKE_BUILD_TYPE=Release \
304-
-DLLVM_ROOT_DIR=$PWD/../llvm \
305-
-DD_COMPILER=$PWD/../host-ldc/bin/ldmd2 \
306-
-DBUILD_SHARED_LIBS=OFF \
307-
-DBUILD_LTO_LIBS=ON
308-
ninja -j$PARALLELISM obj/ldc2.o all
309-
bin/ldc2 -version
310-
<< : *COMMON_STEPS_TEMPLATE
311-
<< : *PACKAGING_STEPS_TEMPLATE
312-
313-
task:
314-
name: FreeBSD 13.3 x64
209+
name: FreeBSD 13.4 x64
315210
freebsd_instance:
316-
image_family: freebsd-13-3
211+
image_family: freebsd-13-4
317212
cpu: 4
318213
memory: 8G
319214
timeout_in: 60m
@@ -325,13 +220,17 @@ task:
325220
-DD_COMPILER_FLAGS="-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto"
326221
-DEXTRA_CXXFLAGS=-flto=full
327222
PARALLELISM: 4
328-
CC: clang
223+
CC: clang15
224+
CXX: clang++15
329225
install_prerequisites_script: |
330226
cd $CIRRUS_WORKING_DIR/..
331227
sysctl -n hw.ncpu
332-
pkg install -y git cmake ninja gmake llvm bash gtar 7-zip ldc
228+
pkg install -y git cmake ninja gmake llvm15 bash gtar 7-zip ldc
333229
python3 --version
334230
python3 -m ensurepip
231+
# set up default llvm-config
232+
ls -l /usr/local/bin/llvm-config*
233+
ln -sf llvm-config15 /usr/local/bin/llvm-config
335234
clone_submodules_early_script: |
336235
cd $CIRRUS_WORKING_DIR
337236
git submodule update --init --depth $CIRRUS_CLONE_DEPTH
@@ -344,6 +243,7 @@ task:
344243
-DCMAKE_BUILD_TYPE=Release \
345244
-DD_COMPILER=ldmd2 \
346245
-DBUILD_SHARED_LIBS=OFF \
246+
-DLDC_DYNAMIC_COMPILE=OFF \
347247
-DBUILD_LTO_LIBS=ON
348248
ninja -j$PARALLELISM
349249
bin/ldc2 -version

0 commit comments

Comments
 (0)