@@ -34,31 +34,14 @@ common_steps_template: &COMMON_STEPS_TEMPLATE
34
34
ctest --output-on-failure -R ldc2-unittest
35
35
run_lit_testsuite_script : |
36
36
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
42
37
python3 runlit.py -v -j $PARALLELISM .
43
38
run_dmd_testsuite_script : |
44
39
cd $CIRRUS_WORKING_DIR/../build
45
40
DMD_TESTSUITE_MAKE_ARGS=-j$PARALLELISM ctest -V -R dmd-testsuite
46
41
run_defaultlib_tests_script : |
47
42
# Run defaultlib unittests & druntime integration tests
48
43
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
62
45
63
46
# Performs the extra packaging steps for jobs producing a prebuilt package.
64
47
# 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
93
76
# Run dynamic-compile integration test
94
77
run_dynamic_compile_integration_test_script : |
95
78
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
98
81
installed/bin/ldc2 -enable-dynamic-compile -run $CIRRUS_WORKING_DIR/tests/dynamiccompile/array.d
99
82
fi
100
83
# Run ImportC integration test
@@ -126,7 +109,7 @@ packaging_steps_template: &PACKAGING_STEPS_TEMPLATE
126
109
# Build & copy reggae
127
110
build_reggae_script : |
128
111
cd $CIRRUS_WORKING_DIR/..
129
- git clone --recursive https://github.com/kinke /reggae.git
112
+ git clone --recursive https://github.com/atilaneves /reggae.git
130
113
cd reggae
131
114
git checkout "$(cat $CIRRUS_WORKING_DIR/packaging/reggae_version)"
132
115
# needs rdmd in PATH
@@ -161,7 +144,7 @@ packaging_steps_template: &PACKAGING_STEPS_TEMPLATE
161
144
fi
162
145
163
146
# 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.
165
148
install_ubuntu_prerequisites_template : &INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
166
149
install_prerequisites_script : |
167
150
cd $CIRRUS_WORKING_DIR/..
@@ -177,32 +160,21 @@ install_ubuntu_prerequisites_template: &INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
177
160
fi
178
161
apt-get -q update
179
162
apt-get -yq install \
180
- git-core ninja-build $gcc_pkg \
163
+ git-core cmake ninja-build $gcc_pkg \
181
164
zlib1g-dev $libcurl_pkg curl gdb python3 python3-pip tzdata unzip zip \
182
165
$EXTRA_APT_PACKAGES
183
166
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
190
168
if [[ "$CI_ARCH" == "x86_64" ]]; then
191
169
curl -fL --retry 3 --max-time 60 -O https://github.com/symmetryinvestments/ninja/releases/download/v1.11.1-sym1/ninja-linux.zip
192
170
mkdir ninja
193
171
unzip ninja-linux.zip -d ninja
194
172
rm ninja-linux.zip
173
+ ln -sf $PWD/ninja/ninja /usr/bin/ninja
195
174
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
201
175
202
176
environment :
203
177
CIRRUS_CLONE_DEPTH : 50
204
- HOST_LDC_VERSION : 1.31.0
205
- LLVM_VERSION : 19.1.3
206
178
GITHUB_TOKEN : ENCRYPTED[0955bd48c8d4e5391446fc0149d0719ad0b63df27ec9e6c180a5730a5b10dc7f28f09d1383423db158d21380ee2b022a]
207
179
208
180
task :
@@ -218,7 +190,6 @@ task:
218
190
EXTRA_APT_PACKAGES : " gdmd llvm-dev libclang-common-19-dev lld"
219
191
EXTRA_CMAKE_FLAGS : " -DBUILD_SHARED_LIBS=ON -DBUILD_LTO_LIBS=ON -DD_COMPILER=gdmd -DLDC_LINK_MANUALLY=ON"
220
192
PARALLELISM : 8
221
- PATH : ${CIRRUS_WORKING_DIR}/../cmake/bin:${CIRRUS_WORKING_DIR}/../ninja:${PATH}
222
193
# for gdmd:
223
194
LANG : C.UTF-8
224
195
<< : *INSTALL_UBUNTU_PREREQUISITES_TEMPLATE
@@ -235,85 +206,9 @@ task:
235
206
<< : *COMMON_STEPS_TEMPLATE
236
207
237
208
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
315
210
freebsd_instance :
316
- image_family : freebsd-13-3
211
+ image_family : freebsd-13-4
317
212
cpu : 4
318
213
memory : 8G
319
214
timeout_in : 60m
@@ -325,13 +220,17 @@ task:
325
220
-DD_COMPILER_FLAGS="-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto"
326
221
-DEXTRA_CXXFLAGS=-flto=full
327
222
PARALLELISM : 4
328
- CC : clang
223
+ CC : clang15
224
+ CXX : clang++15
329
225
install_prerequisites_script : |
330
226
cd $CIRRUS_WORKING_DIR/..
331
227
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
333
229
python3 --version
334
230
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
335
234
clone_submodules_early_script : |
336
235
cd $CIRRUS_WORKING_DIR
337
236
git submodule update --init --depth $CIRRUS_CLONE_DEPTH
@@ -344,6 +243,7 @@ task:
344
243
-DCMAKE_BUILD_TYPE=Release \
345
244
-DD_COMPILER=ldmd2 \
346
245
-DBUILD_SHARED_LIBS=OFF \
246
+ -DLDC_DYNAMIC_COMPILE=OFF \
347
247
-DBUILD_LTO_LIBS=ON
348
248
ninja -j$PARALLELISM
349
249
bin/ldc2 -version
0 commit comments