Skip to content

gui: Disassembler Preferences dialog — CE frmMemviewPreferencesUnit (… #458

gui: Disassembler Preferences dialog — CE frmMemviewPreferencesUnit (…

gui: Disassembler Preferences dialog — CE frmMemviewPreferencesUnit (… #458

Workflow file for this run

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