# SPDX-License-Identifier: CC0-1.0 language = 'D' display = 'D (GDC 15.2)' license = [ { name = 'GPL-3.0-only', url = 'https://gcc.gnu.org/onlinedocs/gcc-15.2.0/gcc/Copying.html' }, ] library.mir = { license = [ { name = 'BSL-1.0', url = 'https://github.com/libmir/mir/blob/master/LICENSE.txt' }, ], version = '3.2.3' } filename = 'source/app.d' install = ''' AC2025_GDC_VERSION=15 AC2025_MIR_VERSION=3.2.3 sudo apt-get update sudo apt-get install --no-install-recommends -y software-properties-common sudo add-apt-repository -y ppa:puni070/gcc-noble sudo apt-get install -y gdc-${AC2025_GDC_VERSION} libgmp-dev libmpfr-dev libmpc-dev libisl-dev libzstd-dev zlib1g-dev pushd /tmp # Install dub dub_download_url=$(curl -s https://api.github.com/repos/dlang/dub/releases/latest | grep browser_download_url | grep linux-x86_64.tar.gz | awk '{ print $NF }' | sed 's/"//g') wget -q -O dub.tar.gz "$dub_download_url" sudo tar -C /usr/local/bin -xf dub.tar.gz popd dub init -n dub add mir@${AC2025_MIR_VERSION} dub fetch --recursive mir@${AC2025_MIR_VERSION} # Apply patches to resolve `error: ‘auto’ and ‘ref’ storage classes should be adjacent [-Werror=deprecated]` # sed -i 's/auto return ref/auto ref return/' $HOME/.dub/packages/mir-core/*/mir-core/source/mir/exception.d sed -i 's/auto return ref/auto ref return/' $HOME/.dub/packages/mir-core/*/mir-core/source/mir/qualifier.d sed -i 's/auto scope ref/auto ref scope/' $HOME/.dub/packages/mir-algorithm/*/mir-algorithm/source/mir/format.d sed -i 's/auto scope ref/auto ref scope/' $HOME/.dub/packages/mir-algorithm/*/mir-algorithm/source/mir/interpolate/spline.d dub build --compiler=gdc-${AC2025_GDC_VERSION} --build=release-nobounds rm judge source/app.d ''' compile = ''' dub build --quiet --compiler=gdc-15 --skip-registry=all --nodeps --build=release-nobounds ''' object = 'judge' execution = [ './judge', ]