Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 103 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ jobs:
# two statements: a substitution inside echo would hide the script's exit code
run: |
set -eu
matrix=$(python3 ci/ci_matrix.py build '${{ github.event_name }}')
# TEMP: one cell only - win64 Release, the lane standalone_capi_dasbind fails on
matrix='{"include": [{"target": "windows", "architecture": 64, "cmake_preset": "Release", "sanitizers": "none", "release_target": "windows", "release_arch": "x86_64", "runner": "windows-latest", "architecture_string": "x64", "archive_ext": "zip", "llvm_disabled": "ON", "jit_disabled": "ON", "build_system": "cmake", "cmake_generator": "Ninja"}]}'
echo "matrix=$matrix" >> "$GITHUB_OUTPUT"

- name: Cache LLVM
Expand Down Expand Up @@ -294,7 +295,9 @@ jobs:
# daslang's MSVC debug info is /Z7 (CMakeCommon.txt) so sccache
# can cache it.
cmake --no-warn-unused-cli -B./build -G "${{ matrix.cmake_generator }}" -DCMAKE_BUILD_TYPE:STRING=${{ matrix.cmake_preset }} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DDAS_LLVM_DISABLED=${{ env.das_llvm_disabled }} -DCMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake"
cmake --build ./build --config ${{ matrix.cmake_preset }} --parallel
# TEMP: the debug step needs daslang and the fixture DLL, nothing else.
# Building ALL here costs about an hour of AOT translation units.
cmake --build ./build --config ${{ matrix.cmake_preset }} --parallel --target daslang standalone_init_fixture_shared
;;
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_HV_DISABLED=OFF -DDAS_SQLITE_DISABLED=OFF -DDAS_LLVM_DISABLED=${{ env.das_llvm_disabled }} -G \
Expand Down Expand Up @@ -332,6 +335,7 @@ jobs:
# warm sequential sweep, so a separate prewarm only duplicated the
# frontend-compile of every test. The target still exists for local use.
- name: "Test"
if: false # TEMP: debug run only needs the DEBUG step
run: |
set -eux
# When daslang is sanitizer-instrumented, its JIT-emitted .dll cache
Expand Down Expand Up @@ -410,7 +414,94 @@ jobs:
cmake --build ./build --config ${{ matrix.cmake_preset }} --target run_tests_interpreter || cmake --build ./build --config ${{ matrix.cmake_preset }} --target run_tests_interpreter_isolated
;;
esac
- name: "TEMP DEBUG: standalone_capi_dasbind on win64"
if: always()
shell: bash
run: |
set -x
H=tests-cpp/big/standalone_ctx
D=build/tests-cpp/big/standalone_ctx
BIN=bin/daslang.exe

echo "===== which CRT does each side link ====="
dumpbin //dependents "$BIN" || true
dumpbin //dependents "$D/standalone_init_fixture.dll" || true

echo "===== 0: bindings required, nothing called ====="
cat > "$H/_dbg0.das" <<'EOS'
options gen2
require _standalone_init_fixture_c
[export]
def main : int {
print("loaded, no call\n")
return 0
}
EOS
"$BIN" "$H/_dbg0.das" || true; echo "dbg0 exit=$?"

echo "===== 1: create only, no destroy ====="
cat > "$H/_dbg1.das" <<'EOS'
options gen2
require _standalone_init_fixture_c
[export]
def main : int {
print("before create\n")
var ctx = standalone_init_fixture_create()
print("created null={ctx == null}\n")
return 0
}
EOS
"$BIN" "$H/_dbg1.das" || true; echo "dbg1 exit=$?"

echo "===== 2: create + destroy ====="
cat > "$H/_dbg2.das" <<'EOS'
options gen2
require _standalone_init_fixture_c
[export]
def main : int {
var ctx = standalone_init_fixture_create()
print("created null={ctx == null}\n")
standalone_init_fixture_destroy(ctx)
print("destroyed\n")
return 0
}
EOS
"$BIN" "$H/_dbg2.das" || true; echo "dbg2 exit=$?"

echo "===== 3: create + scalar call + destroy ====="
cat > "$H/_dbg3.das" <<'EOS'
options gen2
require _standalone_init_fixture_c
[export]
def main : int {
var ctx = standalone_init_fixture_create()
let first = standalone_init_fixture_get_first(ctx)
print("get_first={first}\n")
standalone_init_fixture_destroy(ctx)
print("destroyed\n")
return 0
}
EOS
"$BIN" "$H/_dbg3.das" || true; echo "dbg3 exit=$?"

echo "===== 4: the real host, with its output ====="
"$BIN" "$H/test_standalone_bindings_host.das" || true; echo "host exit=$?"

echo "===== 4b: a stack for the create crash, under cdb ====="
CDB="/c/Program Files (x86)/Windows Kits/10/Debuggers/x64/cdb.exe"
ls "$CDB" || CDB=$(find "/c/Program Files (x86)/Windows Kits" -name cdb.exe 2>/dev/null | head -1)
if [ -n "$CDB" ] && [ -x "$CDB" ]; then
"$CDB" -g -G -c 'g; .lastevent; k 40; !heap -p -a @rcx; q' \
"$(cygpath -w "$PWD/bin/daslang.exe")" "$(cygpath -w "$PWD/$H/_dbg1.das")" 2>&1 | tail -80 || true
else
echo "no cdb on this runner"
fi

echo "===== 5: through ctest, for the record ====="
ctest --test-dir build --build-config Release -R standalone_capi_dasbind --output-on-failure || true

- name: "Small C++ Tests"
if: false # TEMP: debug run only needs the DEBUG step
run: |
set -eux
# Suppress LSan false-positives from the Uri binding; see "Test" step above
Expand All @@ -437,7 +528,7 @@ jobs:
# per-PR ctest is -L small, so only this step executes a generated
# context. memory_model_4gb allocates a real 4 GB chunk and stays
# local-only.
if: matrix.cmake_preset == 'Release' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
if: false # TEMP: debug run only needs the DEBUG step
run: |
set -eux
case "${{ matrix.target }}${{ matrix.architecture }}" in
Expand Down Expand Up @@ -466,9 +557,7 @@ jobs:
# duplicates the Release/Debug compile and interpreter coverage on every
# PR. Keep it on the canonical nightly and explicit full-workflow runs.
needs: pre_job
if: >-
(github.event_name == 'schedule' && github.repository == 'GaijinEntertainment/daScript')
|| github.event_name == 'workflow_dispatch'
if: false # TEMP: win64 debug run
runs-on: windows-latest
permissions:
contents: read
Expand Down Expand Up @@ -560,6 +649,7 @@ jobs:
run: cmake --build ./build --config RelWithDebInfo --target run_tests_interpreter

- name: "Small C++ Tests"
if: false # TEMP: debug run only needs the DEBUG step
run: ctest --test-dir build --build-config RelWithDebInfo -L small --output-on-failure

###########################################################
Expand All @@ -570,9 +660,7 @@ jobs:
# The regular matrix cell is the fast LLVM-free MSVC gate. Its scheduled
# run still owns the full AOT suite, so do not duplicate that sweep here.
needs: pre_job
if: >-
(github.event_name == 'schedule' && github.repository == 'GaijinEntertainment/daScript')
|| github.event_name == 'workflow_dispatch'
if: false # TEMP: win64 debug run
runs-on: windows-latest
permissions:
contents: read
Expand Down Expand Up @@ -652,6 +740,7 @@ jobs:
cmake --build ./build --config Release --target run_tests_interpreter || cmake --build ./build --config Release --target run_tests_interpreter_isolated

- name: "Small C++ Tests"
if: false # TEMP: debug run only needs the DEBUG step
run: ctest --test-dir build --build-config Release -L small --output-on-failure

###########################################################
Expand All @@ -668,9 +757,7 @@ jobs:
# Per-PR/push lane and manual dispatch, plus the nightly cron on the canonical repo: the cron
# is what seeds this job's sccache slot below (a master push run is usually pre_job-skipped
# as a concurrent duplicate of the PR that just merged, so its save rarely lands).
if: >-
(github.event_name == 'schedule' && github.repository == 'GaijinEntertainment/daScript')
|| (github.event_name != 'schedule' && needs.pre_job.outputs.should_skip != 'true')
if: false # TEMP: win64 debug run
runs-on: ubuntu-latest
# actions: write needed for `gh cache delete` in the sccache refresh step.
permissions:
Expand Down Expand Up @@ -778,7 +865,7 @@ jobs:
# scheduled cron runs the toolchains only on the canonical repo, so forks
# don't run (and fail) the nightly — that would email every fork owner.
# Manual workflow_dispatch still runs them anywhere.
if: (github.event_name == 'schedule' && github.repository == 'GaijinEntertainment/daScript') || github.event_name == 'workflow_dispatch'
if: false # TEMP: win64 debug run
runs-on: windows-latest
defaults:
run:
Expand Down Expand Up @@ -867,6 +954,7 @@ jobs:
|| cmake --build ./build-mingw --config Release --target run_tests_jit_isolated

- name: "Small C++ Tests"
if: false # TEMP: debug run only needs the DEBUG step
run: |
set -eux
cd build-mingw
Expand Down Expand Up @@ -935,7 +1023,7 @@ jobs:
# scheduled cron runs the toolchains only on the canonical repo, so forks
# don't run (and fail) the nightly — that would email every fork owner.
# Manual workflow_dispatch still runs them anywhere.
if: (github.event_name == 'schedule' && github.repository == 'GaijinEntertainment/daScript') || github.event_name == 'workflow_dispatch'
if: false # TEMP: win64 debug run
runs-on: windows-latest
steps:
- name: "SCM Checkout"
Expand Down Expand Up @@ -1037,7 +1125,7 @@ jobs:
# (core + HV/SQLITE/Audio/PUGIXML/UnitTest modules) is covered without it.
###########################################################
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true' && github.event_name != 'schedule'
if: false # TEMP: win64 debug run
runs-on: ubuntu-latest
steps:
- name: "SCM Checkout"
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/build_eastl.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
name: build_eastl

on:
push:
branches: [master]
pull_request:
# TEMP: push trigger off for the win64 debug run
# TEMP: pull_request trigger off for the win64 debug run
workflow_dispatch:

# Compile-coverage for the dagor config: EASTL containers, dag::Vector as
Expand Down
18 changes: 2 additions & 16 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,8 @@ name: "CodeQL"
# CodeQL — that surface is covered by the in-tree lint.

on:
push:
branches: [master]
paths:
- 'src/**'
- 'include/**'
- 'modules/**'
- 'tests-cpp/**'
- '.github/workflows/codeql.yml'
pull_request:
branches: [master]
paths:
- 'src/**'
- 'include/**'
- 'modules/**'
- 'tests-cpp/**'
- '.github/workflows/codeql.yml'
# TEMP: push trigger off for the win64 debug run
# TEMP: pull_request trigger off for the win64 debug run
schedule:
# weekly full refresh keeps the master baseline current even when no
# C++-touching push happens (PR alert diffing compares against it)
Expand Down
10 changes: 1 addition & 9 deletions .github/workflows/cpp_mcp_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,7 @@ name: cpp-mcp release
# modules, so every external module (dasHV/OpenSSL, GLFW, Audio, ...) is disabled
# — no vcpkg/openssl/apt module deps, and a ~360-step build instead of 2000+.
on:
pull_request:
paths:
- 'utils/mcp/**'
- 'utils/common/**'
- 'tree-sitter-daslang/*.yml' # ast-grep rule files the bundle ships
- 'ci/make_cpp_mcp_bundle.sh'
- 'ci/smoke_test_cpp_mcp.sh'
- '.github/workflows/cpp_mcp_release.yml'
- 'CMakeLists.txt'
# TEMP: pull_request trigger off for the win64 debug run
workflow_dispatch:
release:
types: [prereleased]
Expand Down
13 changes: 2 additions & 11 deletions .github/workflows/dasllama-server-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,8 @@ name: dasllama-server control page e2e
# fixtures; regeneration rail: utils/dasllama-server/tests/fixtures/README.md.

on:
pull_request:
paths:
- 'utils/dasllama-server/control.html'
- 'utils/dasllama-server/tests/**'
- '.github/workflows/dasllama-server-e2e.yml'
push:
branches-ignore: [master]
paths:
- 'utils/dasllama-server/control.html'
- 'utils/dasllama-server/tests/**'
- '.github/workflows/dasllama-server-e2e.yml'
# TEMP: pull_request trigger off for the win64 debug run
# TEMP: push trigger off for the win64 debug run
workflow_dispatch:

jobs:
Expand Down
13 changes: 1 addition & 12 deletions .github/workflows/dasllama_server_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,7 @@ name: dasllama-server release
# it, and 22.04's (glibc 2.35) admits Debian 12 and every later Ubuntu, where 24.04's (2.39)
# refused Debian 12 with `GLIBC_2.38 not found`.
on:
push:
branches-ignore: [master]
paths:
- '.github/workflows/dasllama_server_release.yml'
- 'utils/dasllama-server/**'
- 'utils/watchdog/**'
- 'utils/daspkg/**'
- 'daslib/daspkg.das'
- 'modules/dasHV/**'
- 'modules/dasLLAMA/benchmarks/lcpp_bench.das'
- 'modules/dasLLAMA/dasllama/dasllama_bench.das'
- '!**/*.md'
# TEMP: push trigger off for the win64 debug run
workflow_dispatch:
inputs:
publish:
Expand Down
19 changes: 2 additions & 17 deletions .github/workflows/doc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,8 @@ name: Build doc
on:
release:
types: prereleased
push:
paths:
- 'doc/**'
- 'daslib/**'
- 'src/builtin/**'
- 'modules/dasLLAMA/dasllama/**'
- 'modules/dasImgui/**'
- 'modules/dasVulkan/**'
pull_request:
paths:
- 'doc/**'
- 'daslib/**'
- 'src/builtin/**'
- 'modules/dasLLAMA/dasllama/**'
- 'modules/dasImgui/**'
- 'modules/dasVulkan/**'

# TEMP: push trigger off for the win64 debug run
# TEMP: pull_request trigger off for the win64 debug run
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/extended_checks.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
name: extended checks

on:
push:
branches: [master]
pull_request:
# TEMP: push trigger off for the win64 debug run
# TEMP: pull_request trigger off for the win64 debug run
# 04:00 UTC — after build.yml (02:00), the daspkg index (02:30) and imgui (03:00).
# The nightly is what SEEDS the sccache slots below. Their save is master-only,
# but the master PUSH run is usually skipped by pre_job as a concurrent duplicate
Expand Down
9 changes: 1 addition & 8 deletions .github/workflows/fatman.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,7 @@
name: fatman

on:
pull_request:
paths:
- 'CMakeLists.txt'
- 'web/CMakeLists.txt'
- 'examples/fatman/**'
- '.github/workflows/fatman.yml'
- 'include/**'
- 'src/**'
# TEMP: pull_request trigger off for the win64 debug run
workflow_dispatch:

concurrency:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: Deploy daslang.io

on:
push:
branches: [master]
# TEMP: push trigger off for the win64 debug run
workflow_dispatch:

# Only one site deployment at a time
Expand Down
13 changes: 2 additions & 11 deletions .github/workflows/playground-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,8 @@ name: Playground e2e (no WASM)
# job wasm_specs).

on:
pull_request:
paths:
- 'site/**'
- 'web/examples/ui/**'
- '.github/workflows/playground-e2e.yml'
push:
branches-ignore: [master]
paths:
- 'site/**'
- 'web/examples/ui/**'
- '.github/workflows/playground-e2e.yml'
# TEMP: pull_request trigger off for the win64 debug run
# TEMP: push trigger off for the win64 debug run
workflow_dispatch:

jobs:
Expand Down
Loading
Loading