gui: Disassembler Preferences dialog — CE frmMemviewPreferencesUnit (… #458
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: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| ubuntu-build: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| # Lua 5.3 is vendored under third_party/lua and built by CMake, so no | |
| # upstream checkout is needed — the repo is self-contained. | |
| - name: Install apt dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| gcc-multilib \ | |
| g++-multilib \ | |
| libvulkan-dev \ | |
| dbus \ | |
| cmake \ | |
| ninja-build \ | |
| qt6-base-dev \ | |
| libcapstone-dev \ | |
| zlib1g-dev \ | |
| libdw-dev \ | |
| libasound2-dev \ | |
| libsoundtouch-dev \ | |
| linux-headers-generic \ | |
| ca-certificates | |
| - name: Cache FetchContent + build directory | |
| uses: actions/cache@v6 | |
| with: | |
| path: | | |
| build/_deps | |
| key: cecore-deps-${{ runner.os }}-keystone-0.9.2-capstone-system-v2 | |
| restore-keys: | | |
| cecore-deps-${{ runner.os }}- | |
| - name: Configure | |
| run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release | |
| - name: Build | |
| run: cmake --build build -j"$(nproc)" | |
| - name: Run regression suite | |
| timeout-minutes: 15 # fail fast on a hang instead of burning the whole job | |
| run: ./build/cecore_test | |
| - name: Run GUI debugger smoke test (offscreen Qt) | |
| run: ./build/gui_debugger_smoke | |
| - name: Run GUI theme smoke test (light/dark, offscreen Qt) | |
| run: ./build/gui_theme_smoke | |
| - name: Run Wayland GlobalShortcuts portal test (mock portal, private bus) | |
| run: | | |
| if [ -x ./build/wayland_shortcuts_test ]; then | |
| dbus-run-session -- ./build/wayland_shortcuts_test | |
| else | |
| echo "wayland_shortcuts_test not built (Qt6::DBus absent) — skipped" | |
| fi | |
| - name: Run cross-process scan test (root) | |
| run: sudo env "LD_LIBRARY_PATH=$PWD/build" ./build/scan_test | |
| - name: Verify cescan launches | |
| run: ./build/cescan list | head -5 | |
| - name: Build kernel module (out-of-tree) | |
| run: | | |
| set -e | |
| KDIR=/lib/modules/$(uname -r)/build | |
| if [ -d "$KDIR" ]; then | |
| make -C "$KDIR" M="$PWD/kernel" modules || \ | |
| echo "kernel module build skipped: kernel headers missing required pieces on the runner" | |
| else | |
| echo "kernel module build skipped: $KDIR not present on the runner" | |
| fi | |
| # The runner image may not always ship matching kernel headers; the | |
| # main build is what's enforced. | |
| continue-on-error: true | |
| sanitizers: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Install apt dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential cmake ninja-build libcapstone-dev \ | |
| zlib1g-dev libdw-dev ca-certificates | |
| - name: Cache FetchContent (ASan) | |
| uses: actions/cache@v6 | |
| with: | |
| path: build-asan/_deps | |
| key: cecore-asan-deps-${{ runner.os }}-keystone-0.9.2-v1 | |
| - name: Configure (ASan + UBSan) | |
| run: cmake -S . -B build-asan -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCECORE_SANITIZE=ON | |
| # Only the non-GUI test targets. The debugger-fault and dlopen-inject tests | |
| # auto-skip under __SANITIZE_ADDRESS__ (they deliberately fault / inject, | |
| # which conflicts with the sanitizer runtime — not product bugs). | |
| - name: Build test targets (instrumented) | |
| run: cmake --build build-asan --target cecore_test speedhack -j"$(nproc)" | |
| - name: Run suite under ASan + UBSan | |
| timeout-minutes: 20 # fail fast on a hang instead of burning the whole job | |
| env: | |
| # new_delete_type_mismatch=0: the vendored Keystone/LLVM MemoryBuffer | |
| # uses an operator-new/sized-delete pattern ASan flags as a mismatch. | |
| # It's third-party and benign (LLVM's own allocator idiom); disabling | |
| # that one check keeps every real check (heap-overflow/UAF/UB) on our code. | |
| ASAN_OPTIONS: detect_leaks=0:abort_on_error=1:new_delete_type_mismatch=0 | |
| UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1 | |
| run: ./build-asan/cecore_test |