dasSQLITE chunk 14b: typed ALTER macros + module rename #8334
This file contains hidden or 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
| name: build | |
| on: | |
| push: | |
| branches: [master] | |
| pull_request: | |
| workflow_dispatch: | |
| release: | |
| types: prereleased | |
| defaults: | |
| run: | |
| shell: bash | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| ########################################################### | |
| pre_job: | |
| ########################################################### | |
| # continue-on-error: true # Uncomment once integration is finished | |
| runs-on: ubuntu-latest-fat | |
| # Map a step output to a job output | |
| outputs: | |
| should_skip: ${{ steps.skip_check.outputs.should_skip }} | |
| steps: | |
| - id: skip_check | |
| uses: fkirc/skip-duplicate-actions@v5 | |
| with: | |
| # All of these options are optional, so you can remove them if you are happy with the defaults | |
| concurrent_skipping: 'same_content' | |
| do_not_skip: '["pull_request", "workflow_dispatch", "release"]' | |
| - name: Cache LLVM | |
| uses: actions/cache@v3 | |
| id: llvm-cache | |
| with: | |
| # Cache LLVM.dll, to make CI faster. | |
| path: build/_deps/das_llvm_shared_lib-src | |
| key: ${{ runner.os }}-${{ hashFiles('modules/dasLLVM/CMakeLists.txt') }} | |
| ########################################################### | |
| build: | |
| ########################################################### | |
| needs: pre_job | |
| if: needs.pre_job.outputs.should_skip != 'true' | |
| runs-on: ${{ matrix.runner }} | |
| env: | |
| das_dll_build: 'NO' | |
| das_llvm_disabled: 'OFF' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: [linux, linux_arm, darwin15, darwin26, windows] | |
| architecture: [32, 64, arm64] | |
| cmake_preset: [ Debug, Release ] | |
| sanitizers: [none] | |
| include: | |
| - target: linux | |
| release_target: linux | |
| release_arch: x86_64 | |
| runner: ubuntu-latest-fat | |
| archive_ext: tar.gz | |
| sanitizers: none | |
| # Sanitizer matrix — Linux + Release + full tests (dastest + test_aot | |
| # + ctest). Release keeps walltime in budget; the previous Debug+ASAN | |
| # was prohibitive for production CI. See issue #2530. | |
| - target: linux | |
| architecture: 64 | |
| runner: ubuntu-latest-fat | |
| cmake_preset: Release | |
| sanitizers: asan | |
| build_name: linux_asan | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: linux | |
| architecture: 64 | |
| runner: ubuntu-latest-fat | |
| cmake_preset: Release | |
| sanitizers: tsan | |
| build_name: linux_tsan | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: linux | |
| architecture: 64 | |
| runner: ubuntu-latest-fat | |
| cmake_preset: Release | |
| sanitizers: ubsan | |
| build_name: linux_ubsan | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: linux_arm | |
| release_target: linux | |
| release_arch: arm64 | |
| runner: ubuntu-24.04-arm-fat | |
| archive_ext: tar.gz | |
| - target: darwin15 | |
| architecture: 64 | |
| release_target: darwin15 | |
| release_arch: x86_64 | |
| runner: macos-15-large # Intel x86_64, 12 CPU | |
| architecture_string: x86_64 | |
| archive_ext: tar.gz | |
| - target: darwin15 | |
| architecture: arm64 | |
| release_target: darwin15 | |
| release_arch: arm64 | |
| runner: macos-15-xlarge # Apple Silicon arm64, M2 | |
| architecture_string: arm64 | |
| archive_ext: tar.gz | |
| - target: darwin26 | |
| release_target: darwin26 | |
| release_arch: arm64 | |
| runner: macos-26-xlarge # Apple Silicon arm64, M2 | |
| architecture_string: arm64 | |
| archive_ext: tar.gz | |
| - target: windows | |
| runner: windows-latest-fat | |
| archive_ext: zip | |
| - target: windows | |
| build_system: cmake | |
| cmake_generator: Visual Studio 17 2022 | |
| - target: darwin15 | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: darwin26 | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: linux | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: linux_arm | |
| build_system: cmake | |
| cmake_generator: Ninja | |
| - target: windows | |
| release_target: windows | |
| release_arch: x86 | |
| architecture: 32 | |
| architecture_string: Win32 | |
| - target: windows | |
| release_target: windows | |
| release_arch: x86_64 | |
| architecture: 64 | |
| architecture_string: x64 | |
| # RelWithDebInfo only on Windows x64 | |
| - target: windows | |
| architecture: 64 | |
| cmake_preset: RelWithDebInfo | |
| sanitizers: none | |
| runner: windows-latest-fat | |
| archive_ext: zip | |
| build_system: cmake | |
| cmake_generator: Visual Studio 17 2022 | |
| release_target: windows | |
| release_arch: x86_64 | |
| architecture_string: x64 | |
| exclude: | |
| - target: darwin15 | |
| architecture: 64 | |
| cmake_preset: Debug | |
| - target: darwin15 | |
| architecture: 32 | |
| - target: darwin26 | |
| architecture: 32 | |
| - target: darwin26 | |
| architecture: 64 | |
| - target: linux | |
| architecture: 32 | |
| - target: linux | |
| architecture: arm64 | |
| - target: linux_arm | |
| architecture: 32 | |
| - target: linux_arm | |
| architecture: arm64 # todo | |
| - target: windows | |
| architecture: arm64 # todo https://github.com/actions/partner-runner-images/tree/main?tab=readme-ov-file#available-images | |
| steps: | |
| - name: "SCM Checkout" | |
| uses: actions/checkout@v4 | |
| - name: "Install CMake and Ninja" | |
| uses: lukka/get-cmake@latest | |
| - name: "Install: Required Dev Packages" | |
| run: | | |
| set -eux | |
| case "${{ matrix.target }}${{ matrix.architecture }}" in | |
| darwin15arm64|darwin26arm64) | |
| brew install bison | |
| echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile | |
| export LDFLAGS="-L/usr/local/opt/bison/lib" | |
| ;; | |
| darwin1564|darwin2664) | |
| brew install bison | |
| echo 'export PATH="/opt/homebrew/opt/bison/bin:$PATH"' >> ~/.bash_profile | |
| export LDFLAGS="-L/opt/homebrew/opt/bison/lib" | |
| ;; | |
| esac | |
| case "${{ matrix.target }}${{ matrix.architecture }}" in | |
| linux64) | |
| echo "MARCH=64" >> $GITHUB_ENV | |
| sudo apt-get update -y | |
| sudo apt-get install --no-install-recommends -y \ | |
| libatomic-ops-dev \ | |
| libglu1-mesa-dev \ | |
| freeglut3-dev \ | |
| mesa-common-dev \ | |
| libglfw3-dev \ | |
| libfreetype6-dev \ | |
| libudev-dev \ | |
| libopenal-dev \ | |
| libvorbis-dev \ | |
| libflac-dev \ | |
| libclang-dev \ | |
| libx11-dev \ | |
| libxrandr-dev \ | |
| libxcursor-dev \ | |
| libxinerama-dev \ | |
| libxi-dev | |
| ;; | |
| esac | |
| - name: "Build: Daslang" | |
| run: | | |
| set -eux | |
| mkdir build | |
| case "${{ matrix.build_system }}" in | |
| cmake) | |
| case "${{ matrix.target }}${{ matrix.architecture }}" in | |
| linux64) | |
| CC=clang CXX=clang++ cmake --no-warn-unused-cli -B./build -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake_preset }} -G \ | |
| "${{ matrix.cmake_generator }}" -DDAS_USE_SANITIZER=${{ matrix.sanitizers }} -DDAS_LLVM_DISABLED=${{ env.das_llvm_disabled }} | |
| cd build | |
| ninja | |
| ;; | |
| windows32) | |
| cmake --no-warn-unused-cli -B./build -G "${{ matrix.cmake_generator }}" -T host=x64 -A ${{ matrix.architecture_string }} | |
| cmake --build ./build --config ${{ matrix.cmake_preset }} --parallel | |
| ;; | |
| windows64) | |
| cmake --no-warn-unused-cli -B./build -G "${{ matrix.cmake_generator }}" -T host=x64 -A ${{ matrix.architecture_string }} -DDAS_LLVM_DISABLED=${{ env.das_llvm_disabled }} | |
| cmake --build ./build --config ${{ matrix.cmake_preset }} --parallel | |
| ;; | |
| linux_arm*) | |
| CC=clang CXX=clang++ cmake --no-warn-unused-cli -B./build -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake_preset }} -DDAS_GLFW_DISABLED=ON -DDAS_LLVM_DISABLED=${{ env.das_llvm_disabled }} -G \ | |
| "${{ matrix.cmake_generator }}" | |
| cd build | |
| ninja | |
| ;; | |
| *) | |
| CC=clang CXX=clang++ cmake --no-warn-unused-cli -B./build -DCMAKE_OSX_ARCHITECTURES="${{ matrix.architecture_string }}" -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake_preset }} -DDAS_LLVM_DISABLED=${{ env.das_llvm_disabled }} -G "${{ matrix.cmake_generator }}" | |
| cd build | |
| ninja | |
| ;; | |
| esac | |
| ;; | |
| esac | |
| - name: "Test" | |
| run: | | |
| set -eux | |
| case "${{ matrix.target }}${{ matrix.architecture }}" in | |
| linux64) | |
| cd bin | |
| # LSan suppressions: format_error (fmt::throw_format_error allocates | |
| # std::runtime_error whose internal string is reported as leaked | |
| # because the exception object isn't always destroyed); uriParseSingleUriA | |
| # / uriMakeOwner (Uri handle bound to daslang without auto-finalize — | |
| # tracked separately, real fix is in the binding). | |
| printf 'leak:format_error\nleak:uriParseSingleUriA\nleak:uriMakeOwner\n' > suppressions.txt | |
| export LSAN_OPTIONS="suppressions=$(pwd)/suppressions.txt" | |
| # Use more time to pass UBSAN and disable leaks in JIT mode because we exit using exit(), and do not call destructors. | |
| [ "${{ env.das_llvm_disabled }}" = "ON" ] || ASAN_OPTIONS=detect_leaks=0 ./daslang _dasroot_/dastest/dastest.das -jit -- --color --failures-only --timeout 900 --test ../tests || ASAN_OPTIONS=detect_leaks=0 ./daslang _dasroot_/dastest/dastest.das -jit -- --color --failures-only --isolated-mode --timeout 3600 --test ../tests | |
| ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --timeout 900 --test ../tests || ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --isolated-mode --timeout 3600 --test ../tests | |
| ;; | |
| windows32) | |
| cd bin/"${{ matrix.cmake_preset }}" | |
| ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --timeout 900 --test ../../tests || ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --isolated-mode --timeout 3600 --test ../../tests | |
| ;; | |
| windows*) | |
| cd bin/"${{ matrix.cmake_preset }}" | |
| [ "${{ env.das_llvm_disabled }}" = "ON" ] || ./daslang _dasroot_/dastest/dastest.das -jit -- --timeout 900 --color --failures-only --test ../../tests || ./daslang _dasroot_/dastest/dastest.das -jit -- --color --failures-only --isolated-mode --timeout 3600 --test ../../tests | |
| ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --timeout 900 --test ../../tests || ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --isolated-mode --timeout 3600 --test ../../tests | |
| ;; | |
| *) | |
| cd bin | |
| [ "${{ env.das_llvm_disabled }}" = "ON" ] || ./daslang _dasroot_/dastest/dastest.das -jit -- --color --failures-only --timeout 900 --test ../tests || ./daslang _dasroot_/dastest/dastest.das -jit -- --color --failures-only --isolated-mode --timeout 3600 --test ../tests | |
| ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --timeout 900 --test ../tests || ./daslang _dasroot_/dastest/dastest.das -- --color --failures-only --isolated-mode --timeout 3600 --test ../tests | |
| ;; | |
| esac | |
| - name: "Small C++ Tests" | |
| run: | | |
| set -eux | |
| # Suppress LSan false-positives from format_error and JIT-mode exit() paths; | |
| # see "Test" step above for the same suppressions. | |
| printf 'leak:format_error\nleak:uriParseSingleUriA\nleak:uriMakeOwner\n' > build/suppressions.txt | |
| export LSAN_OPTIONS="suppressions=$(pwd)/build/suppressions.txt" | |
| cd build | |
| case "${{ matrix.target }}${{ matrix.architecture }}" in | |
| windows*) | |
| ctest --build-config "${{ matrix.cmake_preset }}" -L small --output-on-failure | |
| ;; | |
| *) | |
| ctest -L small --output-on-failure | |
| ;; | |
| esac | |
| - name: "Slow Release Tests" | |
| if: matrix.cmake_preset == 'Release' | |
| run: | | |
| set -eux | |
| case "${{ matrix.target }}${{ matrix.architecture }}" in | |
| windows32) | |
| echo "Skipping AOT tests on 32-bit Windows" | |
| ;; | |
| windows*) | |
| cd bin/"${{ matrix.cmake_preset }}" | |
| ./test_aot -use-aot _dasroot_/dastest/dastest.das -- --use-aot --color --failures-only --timeout 900 --test ../../tests | |
| ;; | |
| *) | |
| cd bin | |
| # Same suppressions as the "Test" step — sanitizer matrix entries | |
| # need them here too. | |
| printf 'leak:format_error\nleak:uriParseSingleUriA\nleak:uriMakeOwner\n' > suppressions.txt | |
| export LSAN_OPTIONS="suppressions=$(pwd)/suppressions.txt" | |
| ./test_aot -use-aot _dasroot_/dastest/dastest.das -- --use-aot --color --failures-only --timeout 900 --test ../tests | |
| ;; | |
| esac | |
| - name: "Install binaries" | |
| if: matrix.cmake_preset == 'Release' | |
| shell: bash | |
| run: | | |
| mkdir daslang_install | |
| mkdir artifacts | |
| cmake --install ./build --prefix ./daslang_install --config ${{ matrix.cmake_preset }} --strip | |
| 7z a artifacts/daslang-${{ matrix.release_target }}-${{ matrix.release_arch }}.zip ./daslang_install | |
| - name: "Upload release asset" | |
| if: github.event.action == 'prereleased' && matrix.cmake_preset == 'Release' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: gh release upload "${{ github.event.release.tag_name }}" artifacts/daslang-${{ matrix.release_target }}-${{ matrix.release_arch }}.zip --clobber |