File: config.yml

package info (click to toggle)
ldc 1%3A1.30.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 59,248 kB
  • sloc: cpp: 61,598; ansic: 14,545; sh: 1,014; makefile: 972; asm: 510; objc: 135; exp: 48; python: 12
file content (153 lines) | stat: -rw-r--r-- 5,955 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
commonSteps: &commonSteps
  steps:
    # Each step starts in the checked-out source directory.
    - run:
        name: Install prerequisites
        command: |
          set -x
          cd ..
          if [ "$CI_OS" = "linux" ]; then
            export DEBIAN_FRONTEND=noninteractive
            if [[ "$EXTRA_CMAKE_FLAGS" = *-DMULTILIB?ON* ]]; then
              dpkg --add-architecture i386
              gcc_pkg="g++-multilib"
              libcurl_pkg="libcurl4 libcurl4:i386"
            else
              gcc_pkg="g++"
              libcurl_pkg="libcurl4"
            fi
            apt-get -q update
            apt-get -yq install \
              git-core cmake ninja-build $gcc_pkg \
              zlib1g-dev $libcurl_pkg curl gdb python3 python3-pip tzdata unzip zip \
              $EXTRA_APT_PACKAGES
          else
            # Download & extract CMake
            curl -fL --retry 3 --max-time 300 -o cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v3.20.3/cmake-3.20.3-macos-universal.tar.gz
            mkdir cmake
            tar -xf cmake.tar.gz --strip 3 -C cmake
            rm cmake.tar.gz
            # Download & extract Ninja
            curl -fL --retry 3 --max-time 60 -O https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-mac.zip
            mkdir ninja
            tar -xf ninja-mac.zip -C ninja
            rm ninja-mac.zip
            # Download & extract LDC-flavoured LLVM with enabled assertions
            curl -fL --retry 3 --max-time 300 -o llvm.tar.xz https://github.com/ldc-developers/llvm-project/releases/download/ldc-v$LLVM_VERSION/llvm-$LLVM_VERSION-osx-x86_64-withAsserts.tar.xz
            mkdir llvm
            tar -xf llvm.tar.xz --strip 1 -C llvm
            rm llvm.tar.xz
            # Add CMake, Ninja and LLVM to PATH for future steps
            echo "export PATH=$PWD/cmake/bin:$PWD/ninja:$PWD/llvm/bin:$PATH" >> $BASH_ENV
          fi
          # Install lit
          python3 --version
          python3 -m pip install --user setuptools wheel
          python3 -m pip install --user lit
          python3 -c "import lit.main; lit.main.main();" --version . | head -n 1
          # Download & extract host LDC
          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-$CI_OS-x86_64.tar.xz
          mkdir host-ldc
          tar -xf ldc2.tar.xz --strip 1 -C host-ldc
          rm ldc2.tar.xz
    - checkout
    - run:
        name: Checkout git submodules
        command: git submodule update --init
    - run:
        name: Build LDC & LDC D unittests & defaultlib unittest runners
        command: |
          set -x
          cd ..
          cmake --version
          ninja --version
          mkdir build
          cd build
          cmake -G Ninja $CIRCLE_WORKING_DIRECTORY \
            -DCMAKE_BUILD_TYPE=Release \
            -DD_COMPILER=$PWD/../host-ldc/bin/ldmd2 \
            -DLDC_LINK_MANUALLY=OFF \
            $EXTRA_CMAKE_FLAGS
          # Work around out-of-memory errors - retry once with parallelization and one last time serially
          targets='all ldc2-unittest all-test-runners'
          for i in {1..2}; do
            ninja -j$PARALLELISM -k0 $targets && break || true
          done
          ninja -j1 $targets
          bin/ldc2 -version
    - run:
        name: Run LDC D unittests
        when: always
        command: cd ../build && ctest --output-on-failure -R ldc2-unittest
    - run:
        name: Run LIT testsuite
        when: always
        command: cd ../build/tests && python3 runlit.py -v -j $PARALLELISM .
    - run:
        name: Run DMD testsuite
        when: always
        command: |
          cd ../build
          if [ "$CI_OS" = "linux" ]; then
            # Circle's RAM disk FS apparently doesn't allow long paths.
            rm ../project/tests/d2/dmd-testsuite/compilable/issue17167.sh
          fi
          DMD_TESTSUITE_MAKE_ARGS=-j$PARALLELISM ctest -V -R dmd-testsuite
    - run:
        name: Run defaultlib unittests & druntime integration tests
        when: always
        command: cd ../build && ctest -j$PARALLELISM --output-on-failure -E "dmd-testsuite|ldc2-unittest|lit-tests"

version: 2
jobs:
  Ubuntu-18.04-multilib-rtSanitizers:
    <<: *commonSteps
    docker:
      - image: ubuntu:18.04
    environment:
      - PARALLELISM: 2
      - CI_OS: linux
      - EXTRA_APT_PACKAGES: llvm-9-dev libclang-common-9-dev
      - HOST_LDC_VERSION: 1.24.0
      - EXTRA_CMAKE_FLAGS: "-DMULTILIB=ON -DRT_SUPPORT_SANITIZERS=ON -DBUILD_LTO_LIBS=ON"
  Ubuntu-20.04-sharedLibsOnly-gdmd:
    <<: *commonSteps
    docker:
      - image: ubuntu:20.04
    environment:
      - PARALLELISM: 2
      - CI_OS: linux
      - EXTRA_APT_PACKAGES: gdmd llvm-dev libclang-common-10-dev
      - HOST_LDC_VERSION: 1.24.0
      - EXTRA_CMAKE_FLAGS: "-DBUILD_SHARED_LIBS=ON -DBUILD_LTO_LIBS=ON -DD_COMPILER=gdmd -DLDC_LINK_MANUALLY=ON"
  macOS-x64:
    <<: *commonSteps
    macos:
      xcode: "13.2.1"
    environment:
      - PARALLELISM: 4
      - CI_OS: osx
      - LLVM_VERSION: 14.0.3
      - HOST_LDC_VERSION: 1.24.0
      - EXTRA_CMAKE_FLAGS: "-DD_COMPILER_FLAGS=-gcc=/usr/bin/c++ -DBUILD_LTO_LIBS=ON"
      - MACOSX_DEPLOYMENT_TARGET: 11.0 # silence `ld: warning: object file (…/libphobos2-ldc.a(adler32.c.o)) was built for newer macOS version (11.6) than being linked (11.0)`
  macOS-x64-sharedLibsOnly:
    <<: *commonSteps
    macos:
      xcode: "13.2.1"
    environment:
      - PARALLELISM: 4
      - CI_OS: osx
      - LLVM_VERSION: 14.0.3
      - HOST_LDC_VERSION: 1.24.0
      - EXTRA_CMAKE_FLAGS: "-DD_COMPILER_FLAGS=-gcc=/usr/bin/c++ -DBUILD_SHARED_LIBS=ON -DBUILD_LTO_LIBS=ON"
      - MACOSX_DEPLOYMENT_TARGET: 11.0

workflows:
  version: 2
  build:
    jobs:
      - Ubuntu-18.04-multilib-rtSanitizers
      - Ubuntu-20.04-sharedLibsOnly-gdmd
      - macOS-x64
      - macOS-x64-sharedLibsOnly