Cleans repo from built artefaktes
Qt6 Migration CI / migrate (push) Waiting to run

This commit is contained in:
torsten committed 2026-09-11 16:01:42 +00:00
1 parent 365417237c
commit f882ca2a85
10 files changed
-910

No files matched your search

-15
View File
@@ -1,15 +0,0 @@
Final migration helper
This folder contains scripts to perform the final build and test invocation after successful Qt6.8 migration.
Files:
- build.sh -> configure & build (Ninja). Pass --qt-root to override Qt location.
- run_tests.sh -> run ctest (parallel) and the Strix per-file runner (if Strix installed).
Recommended use (inside the prepared Docker container):
./app/run_docker.sh "$PWD" -- bash -lc "./final-migration/build.sh --release && ./final-migration/run_tests.sh"
Notes:
- Strix requires LLM credentials: set STRIX_LLM and LLM_API_KEY in the environment before running Strix.
- If you want to install Strix in the container manually, activate the venv at /opt/venv and pip install strix-agent (Dockerfile already attempts to install it).
-32
View File
@@ -1,32 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Final build script for migrated project
# Usage:
# ./final-migration/build.sh [--release] [--qt-root PATH]
# Run inside the Docker container created by ./app/run_docker.sh or on a host with Qt6 installed.
BUILD_TYPE=Release
QT_ROOT=${QT_ROOT:-/opt/Qt/6.8.3/gcc_64}
JOBS=5
while [[ $# -gt 0 ]]; do
case "$1" in
--release) BUILD_TYPE=Release; shift;;
--debug) BUILD_TYPE=Debug; shift;;
--qt-root) QT_ROOT="$2"; shift 2;;
--jobs) JOBS="$2"; shift 2;;
-j*) JOBS="${1#-j}"; shift;;
*) echo "Unknown arg: $1"; exit 1;;
esac
done
echo "Using Qt root: ${QT_ROOT}"
mkdir -p build
cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="${QT_ROOT}" -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
cmake --build build -- -j${JOBS}
# Optional: install into target prefix (uncomment when ready)
# sudo cmake --install build --prefix /shd/CTC
echo "Build complete. Artifacts are in ./build"
-52
View File
@@ -1,52 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Run final clean configure / build / test in Docker using app/run_docker.sh
# Usage: ./final-migration/run_final_migration.sh [--jobs N]
# Requires the Docker image from ./app/run_docker.sh to be available (run ./app/run_docker.sh --build once if needed).
# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule)
JOBS=5
while [[ $# -gt 0 ]]; do
case "$1" in
--jobs) JOBS="$2"; shift 2;;
-j*) JOBS="${1#-j}"; shift;;
*) echo "Unknown arg: $1"; exit 1;;
esac
done
# Submodule path containing the migrated Qt6 code
SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus"
# Run inside Docker: perform clean build directory, configure with Qt6, build and run ctest
# Note: Pass HOST path (pwd) which gets mounted to /repo in container
HOST_REPO_PATH="$(cd "$(dirname "$0")/.." && pwd)"
./app/run_docker.sh "$HOST_REPO_PATH" -- bash -lc \
"set -euo pipefail && \
export LD_LIBRARY_PATH=/opt/Qt/6.8.3/gcc_64/lib:\${LD_LIBRARY_PATH:-} && \
export QT_QPA_PLATFORM=offscreen && \
export RTI_LICENSE_FILE=/repo/rti_license.dat && \
export DDS_PATH=/repo/external/rti_connext_dds-7.7.0 && \
export CMAKE_CXX_STANDARD=17 && \
unset MIGRATE_MODULE && \
(rm -rf /repo/build || sudo rm -rf /repo/build) && \
mkdir -p /repo/build/bin && \
if [ -f /repo/build_rti_off/bin/ngl_codegen ]; then \
cp /repo/build_rti_off/bin/ngl_codegen /repo/build/bin/ngl_codegen && \
echo 'Copied pre-built ngl_codegen to build/bin'; \
else \
echo 'Warning: Pre-built ngl_codegen not found, build may fail if codegen is needed'; \
fi && \
cmake -S /repo/${SUBMODULE_PATH} -B /repo/build -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DBUILD_WS=ON -DBUILD_TESTING=ON -DBUILD_RTI=ON && \
if [ -f /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS/Core/core_json.cpp ]; then \
echo 'Patching core_json.cpp for Qt6/C++17 compatibility...' && \
/repo/patch_core_json.sh; \
fi && \
if [ -f /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS/Core/core_dtc.h ]; then \
echo 'Patching core_dtc.h for DTC type aliases...' && \
/repo/patch_core_dtc_h.sh; \
fi && \
cmake --build /repo/build -- -j${JOBS} && \
ctest --test-dir /repo/build --output-on-failure"
echo "Final migration build + tests complete. See ./build for artifacts and test logs in ./build/Testing/Temporary."
-42
View File
@@ -1,42 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Run a non-interactive Strix quick scan inside an ephemeral container.
# Expects ./.env-swy (not checked into VCS) containing STRIX/LLM credentials.
# Mounts the repo at the same absolute path so Strix's sandbox can access it.
REPO_DIR="$(pwd)"
ENV_FILE="$REPO_DIR/.env-swy"
PY_IMAGE="python:3.12-slim"
if [[ ! -f "$ENV_FILE" ]]; then
echo "Missing env file: $ENV_FILE"
echo "Create it with STRIX_LLM, LLM_API_KEY, LLM_API_BASE (and any provider keys)."
exit 1
fi
# Run container with host docker binary and socket mounted (required by Strix sandbox)
# Keep container ephemeral. The container will install strix-agent on-the-fly.
docker run --rm -i \
-v "$REPO_DIR":"$REPO_DIR" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker:ro \
-w "$REPO_DIR" \
--env-file "$ENV_FILE" \
"$PY_IMAGE" bash -lc '
set -euo pipefail
apt-get update >/dev/null
apt-get install -y --no-install-recommends python3-pip >/tmp/apt-install.log 2>&1
pip3 install --no-cache-dir --upgrade pip strix-agent >/tmp/pip-install.log 2>&1
# Map generic LLM envs for OpenAI-compatible clients and prefer recommended model
export OPENAI_API_KEY="${LLM_API_KEY:-}"
export OPENAI_API_BASE="${LLM_API_BASE:-}"
export STRIX_LLM="openai/gpt-5.4"
# Run Strix non-interactively; adjust --scan-mode or additional args as needed
strix -n -t "'$REPO_DIR'" --scan-mode quick
'
echo "Strix run complete (exit code reported above). Output is written by Strix into ./strix_runs/ or printed above."
-18
View File
@@ -1,18 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Final test invocation script
# Usage: ./final-migration/run_tests.sh
# Run inside Docker (recommended) or on host with test deps installed.
JOBS=5
echo "Running unit tests with ctest"
cmake --build build --target test || true
# Prefer ctest directly for parallel runs
ctest --test-dir build -j ${JOBS} --output-on-failure
# Strix runs removed from this script by request
# To re-enable a similar AI-driven scan, add your chosen tool's invocation here.
echo "All tests invoked."
-41
View File
@@ -1,41 +0,0 @@
Migration checklist and template
Purpose
This document standardizes the per-module migration steps to Qt6/C++20 and the minimal CMake/Docker changes required so new folders (./Lts, ./...) can be migrated repeatedly and reproducibly.
Preconditions
- app/Dockerfile and app/run_docker.sh are present and produce a Qt6 dev image with these tools: cmake (>=3.20), ninja, clang/gcc with C++20, pkg-config, libpoppler-qt6-dev, python3 + aqtinstall, and dependencies needed for Log4Qt.
- cmake/ contains helper modules created during earlier migration (Qt6-first shim, NGLMacros.cmake, FindPopplerQt5.cmake).
Per-module migration steps (template)
1) Add module to repo (new folder under ./): keep sources in place.
2) Create or adapt CMakeLists.txt for module:
- Add a top-level target and use `find_package(Qt6 REQUIRED COMPONENTS Widgets Core Gui)` or the project's required Qt modules.
- Use project-wide cmake/NGLMacros.cmake helper macros to set AUTOUIC/AUTOMOC/AUTORCC compatibility.
- If the module uses Poppler, rely on cmake/FindPopplerQt5.cmake so existing find_package(PopplerQt5) calls remain valid.
- Set C++ standard: target_compile_features(${proj} PUBLIC cxx_std_20) or -DCMAKE_CXX_STANDARD=20 in configure.
3) Source edits checklist (common fixes):
- qAsConst -> std::as_const
- QLibraryInfo::location(...) -> QLibraryInfo::path(...)
- QVariant::type() usages: replace logging with typeName()/metaType() or use var.metaType()
- QDateTime(..., Qt::UTC) -> QTimeZone::utc()
- Replace Qt key operator+ with operator| for QKeyCombination/QKeySequence
- qChecksum(...): use QByteArrayView overload
- Poppler: prefer poppler-qt6 API adjustments (unique_ptr release or adopt ownership as needed)
- Replace QMouseEvent::localPos() with position() where necessary
4) Add resources (.qrc) into target via qt_add_resources when building with Qt6.
5) Tests: add GoogleTest scaffolding under tests/gtest for module-specific unit tests.
6) CMake: keep old find_package(PopplerQt5) calls — cmake/FindPopplerQt5.cmake will map to poppler-qt6.
7) Local verification: run migration/migrate_module.sh <module-path> and inspect output in ./build. Fix compile/test failures iteratively.
8) Commit: small, focused commits per change group (CMake, API fixes, tests). Add Co-authored-by trailer if requested.
Automation / CI suggestions
- Create a GitHub Actions job (or CI) that runs ./final-migration/run_final_migration.sh to verify the whole tree after each merge.
- Optionally enable a migration pipeline job that accepts a module path and runs migration/migrate_module.sh (use matrix for multiple modules).
- Consider adding clang-tidy/clang-format step with a strict ruleset after migration completes.
Notes
- Keep build/ ignored and out of Git. Use tags/releases for stable snapshots.
- If a module depends on third-party libs, add detection or build steps into app/Dockerfile or cmake/Find* helpers.
Use the included migration/migrate_module.sh to run and test each migration iteration reproducibly in Docker.
-85
View File
@@ -1,85 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# automate_migrate_Lts_DDS.sh
# Run inside migration Docker image (migration-pipeline:ubuntu26.04)
# - Installs lightweight tooling (clang-tidy, clang-format, pip)
# - Runs clang-tidy fixes (safe checks) over Lts/DDS
# - Runs strix to generate tests for modified functions (if strix available)
# - Commits changes incrementally
REPO_DIR="/repo"
MODULE="Lts/DDS"
BUILD_DIR="/repo/build_migrate_Lts_DDS"
echo "This script must run inside the migration image with network access. It will attempt to install tools and
apply automated clang-tidy fixes. Review changes before pushing."
apt-get update
apt-get install -y --no-install-recommends clang-tidy clang-format python3-pip git || true
# Install strix via pip if available (strix has a pip package 'strix' — fallback: clone usestrix/strix)
if ! python3 -m pip show strix >/dev/null 2>&1; then
pip install --upgrade pip setuptools || true
if python3 -m pip install strix; then
echo "Installed strix via pip"
else
echo "strix pip install failed; cloning repository as fallback"
TMP=$(mktemp -d)
git clone --depth 1 https://github.com/usestrix/strix.git "$TMP" || true
if [ -d "$TMP" ]; then
pip install --upgrade "$TMP" || true
fi
fi
fi
# Run clang-tidy fixes (safe subset)
# NOTE: This uses compile_commands from the build dir. Ensure build_migrate_Lts_DDS has been configured.
if [ ! -f "${BUILD_DIR}/compile_commands.json" ]; then
echo "Configuring build dir to generate compile_commands.json"
mkdir -p "${BUILD_DIR}"
cd "${BUILD_DIR}"
cmake -S "${REPO_DIR}" -B "${BUILD_DIR}" -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64:/usr/local -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=${MODULE} -DBUILD_TESTING=OFF
cd "${REPO_DIR}"
fi
# Safe checks: modernize-use-nullptr, modernize-loop-convert, readability-identifier-naming (no-apply)
CHECKS="-checks=modernize-*,-modernize-use-trailing-return-type,-modernize-raw-string-literal"
# Run clang-tidy and auto-fix per file
FILES=$(git ls-files "${MODULE}" | grep -E "\.(cpp|cc|cxx|h|hpp)$" || true)
for f in $FILES; do
echo "Running clang-tidy on $f"
clang-tidy $f -p "${BUILD_DIR}" ${CHECKS} --format-style=file -fix -quiet || true
done
# Format changed files
for f in $FILES; do
git ls-files -m | grep -q "^$f$" && clang-format -i "$f" || true
done
# Commit changes if any
if [ -n "$(git status --porcelain)" ]; then
git add ${MODULE}
git commit -m "migrate(Lts/DDS): apply clang-tidy modernization fixes\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>" || true
echo "Committed automated clang-tidy fixes for ${MODULE}"
else
echo "No changes from clang-tidy"
fi
# Attempt to run strix to produce tests (best-effort). Honor SKIP_STRIX=1 to skip.
if [ "${SKIP_STRIX:-0}" = "1" ]; then
echo "SKIP_STRIX=1 set; skipping strix test generation"
else
if python3 -m strix --help >/dev/null 2>&1; then
echo "Running strix to generate tests (best-effort)"
# Example invocation: strix --target <binary> --out tests/
mkdir -p migration/strix-tests
# This is a placeholder; actual strix usage depends on build artifacts and symbols
echo "Stripe test generation placeholder: run strix manually against built binaries."
else
echo "strix not available; skipping test generation"
fi
fi
echo "Automated migration script finished. Review git status and run full builds."
-53
View File
@@ -1,53 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# migration/migrate_module.sh
# Usage: ./migration/migrate_module.sh <module-path> [--jobs N]
# Runs a reproducible configure/build/test of the specified module inside the app docker
# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule)
MODULE_PATH=${1:-}
if [[ -z "$MODULE_PATH" ]]; then
echo "Usage: $0 <module-path> [--jobs N]"
exit 1
fi
JOBS=4
shift || true
while [[ $# -gt 0 ]]; do
case "$1" in
--jobs) JOBS="$2"; shift 2;;
-j*) JOBS="${1#-j}"; shift;;
*) echo "Unknown arg: $1"; exit 1;;
esac
done
# Submodule path containing the migrated Qt6 code
SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus"
# Ensure path is relative to repo root and compute absolute module path inside container
REPO_DIR="$(pwd)"
MODULE_ABS="/repo/${SUBMODULE_PATH}/$(realpath --relative-to="$REPO_DIR/${SUBMODULE_PATH}" "$MODULE_PATH" 2>/dev/null || echo "$MODULE_PATH")"
# Use app/run_docker.sh to run the migration inside the prepared Qt6 image
# The container will configure just the requested module in a clean build directory.
# Try using app/run_docker.sh; if it fails, fall back to direct docker run using the built image.
# Use a dedicated build dir per-module to avoid permission issues on /repo/build created by earlier runs.
SANITIZED_MODULE_NAME=$(echo "${MODULE_PATH}" | sed -e 's#/#_#g' -e 's/[^A-Za-z0-9_.-]/_/g')
BUILD_DIR="/repo/build_migrate_${SANITIZED_MODULE_NAME}"
if ./app/run_docker.sh "$REPO_DIR" -- bash -lc \
"set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.10.2/gcc_64/lib:\${LD_LIBRARY_PATH:-} && export QT_QPA_PLATFORM=offscreen && rm -rf ${BUILD_DIR} && mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} && \
cmake -S /repo/${SUBMODULE_PATH} -B ${BUILD_DIR} -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64 -DCMAKE_CXX_STANDARD=23 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && \
cmake --build ${BUILD_DIR} -- -j${JOBS} && ctest --test-dir ${BUILD_DIR} --output-on-failure"; then
echo "Migration run for module ${MODULE_PATH} finished via run_docker.sh. Check ${BUILD_DIR} for logs and artifacts."
else
echo "run_docker.sh failed or did not forward command args correctly; falling back to direct docker run"
# Build image (cached by Dockerfile in app/)
docker build -t migration-pipeline:ubuntu26.04 ./app >/dev/null || true
docker run --rm --user "$(id -u):$(id -g)" -v "$REPO_DIR":/repo -w /repo -e CMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64 -e Qt6_ROOT=/opt/Qt/6.10.2/gcc_64 -e QT_QPA_PLATFORM=offscreen migration-pipeline:ubuntu26.04 bash -lc "set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.10.2/gcc_64/lib:\${LD_LIBRARY_PATH:-} && rm -rf ${BUILD_DIR} && mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} && cmake -S /repo/${SUBMODULE_PATH} -B ${BUILD_DIR} -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64 -DCMAKE_CXX_STANDARD=23 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && cmake --build ${BUILD_DIR} -- -j${JOBS} && ctest --test-dir ${BUILD_DIR} --output-on-failure"
echo "Migration run for module ${MODULE_PATH} finished via direct docker run. Check ${BUILD_DIR} for logs and artifacts."
fi
echo "Migration run for module ${MODULE_PATH} finished. Check ./build for logs and artifacts."
-39
View File
@@ -1,39 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule)
SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus"
echo "Ensuring clang-tidy and clang-format are installed"
sudo apt-get update
sudo apt-get install -y clang-tidy clang-format || true
BUILD_DIR=/repo/build_migrate_Lts_Common
if [ ! -f "$BUILD_DIR/compile_commands.json" ]; then
echo "Regenerating compile_commands.json"
cmake -S /repo/${SUBMODULE_PATH} -B $BUILD_DIR -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=Lts/Common -DBUILD_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
fi
echo "Running clang-tidy (safe modernize checks)"
CHECKS="modernize-*,-modernize-use-trailing-return-type,-modernize-raw-string-literal"
# Process each C/C++ source/header under Lts/Common (relative to submodule path)
git ls-files ${SUBMODULE_PATH}/Lts/Common | grep -E '\.(cpp|cc|cxx|h|hpp)$' | while read -r f; do
echo "clang-tidy $f"
clang-tidy "$f" -p "$BUILD_DIR" -checks="$CHECKS" --format-style=file -fix -quiet || true
done
# Format any modified files
git ls-files -m | grep "^${SUBMODULE_PATH}/Lts/Common" | while read -r f; do
echo "clang-format $f"
clang-format -i "$f" || true
done
# Commit changes if any
if [ -n "$(git status --porcelain)" ]; then
git add ${SUBMODULE_PATH}/Lts/Common || true
git commit -m "migrate(Lts/Common): apply clang-tidy modernization fixes\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>" || true
fi
echo "Done. Modified files:"
git status --porcelain
-533
View File
@@ -1,533 +0,0 @@
{
"header": {
"reportVersion": 5,
"event": "Allocation failed - JavaScript heap out of memory",
"trigger": "OOMError",
"filename": "report.20260831.171900.523095.0.001.json",
"dumpEventTime": "2026-08-31T17:19:00Z",
"dumpEventTimeStamp": "1788189540825",
"processId": 523095,
"threadId": null,
"cwd": "/home/torsten/swy/sandbox",
"commandLine": [
"/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot",
"--no-warnings",
"--report-on-fatalerror",
"--optimize-for-size",
"--expose-gc",
"/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot",
"--resume=9364ea1f-2ece-4ccb-8e2d-77e7a8886a06"
],
"nodejsVersion": "v24.18.1",
"glibcVersionRuntime": "2.35",
"glibcVersionCompiler": "2.28",
"wordSize": 64,
"arch": "x64",
"platform": "linux",
"componentVersions": {
"acorn": "8.16.0",
"ada": "3.4.4",
"amaro": "1.1.9",
"ares": "1.34.6",
"brotli": "1.2.0",
"cldr": "48.0",
"icu": "78.3",
"llhttp": "9.4.3",
"merve": "1.2.2",
"modules": "137",
"napi": "10",
"nbytes": "0.1.4",
"ncrypto": "0.0.1",
"nghttp2": "1.69.0",
"nghttp3": "",
"ngtcp2": "",
"node": "24.18.1",
"openssl": "3.5.7",
"simdjson": "4.6.4",
"simdutf": "6.4.0",
"sqlite": "3.53.1",
"tz": "2026b",
"undici": "7.29.0",
"unicode": "17.0",
"uv": "1.52.1",
"uvwasi": "0.0.23",
"v8": "13.6.233.17-node.50",
"zlib": "1.3.1-e00f703",
"zstd": "1.5.7"
},
"release": {
"name": "node",
"lts": "Krypton",
"headersUrl": "https://nodejs.org/download/release/v24.18.1/node-v24.18.1-headers.tar.gz",
"sourceUrl": "https://nodejs.org/download/release/v24.18.1/node-v24.18.1.tar.gz"
},
"osName": "Linux",
"osRelease": "6.8.0-138-generic",
"osVersion": "#138~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 7 13:43:15 UTC ",
"osMachine": "x86_64",
"cpus": [
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1200,
"user": 28033220,
"nice": 1220,
"sys": 6338280,
"idle": 193668950,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1200,
"user": 30616800,
"nice": 1250,
"sys": 6388110,
"idle": 191722580,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1200,
"user": 31061030,
"nice": 3640,
"sys": 6275850,
"idle": 191559400,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1200,
"user": 31442470,
"nice": 0,
"sys": 6325340,
"idle": 191191890,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1200,
"user": 31343800,
"nice": 2550,
"sys": 6301370,
"idle": 191342630,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1200,
"user": 31014280,
"nice": 1150,
"sys": 6266060,
"idle": 191718140,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 2397,
"user": 32232060,
"nice": 10,
"sys": 6084410,
"idle": 190632960,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 2202,
"user": 31312870,
"nice": 2550,
"sys": 6193440,
"idle": 191417740,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 2397,
"user": 31862130,
"nice": 3000,
"sys": 6391540,
"idle": 190640530,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 2675,
"user": 31361090,
"nice": 2400,
"sys": 6366350,
"idle": 191188460,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 2675,
"user": 31839490,
"nice": 1630,
"sys": 6399080,
"idle": 190694920,
"irq": 0
},
{
"model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz",
"speed": 1198,
"user": 31651110,
"nice": 1230,
"sys": 6468570,
"idle": 190791060,
"irq": 0
}
],
"networkInterfaces": [
{
"name": "lo",
"internal": true,
"mac": "00:00:00:00:00:00",
"address": "127.0.0.1",
"netmask": "255.0.0.0",
"family": "IPv4"
},
{
"name": "bond0",
"internal": false,
"mac": "56:b6:06:26:68:50",
"address": "192.168.178.114",
"netmask": "255.255.255.0",
"family": "IPv4"
},
{
"name": "lo",
"internal": true,
"mac": "00:00:00:00:00:00",
"address": "::1",
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
"family": "IPv6",
"scopeid": 0
},
{
"name": "bond0",
"internal": false,
"mac": "56:b6:06:26:68:50",
"address": "fe80::54b6:6ff:fe26:6850",
"netmask": "ffff:ffff:ffff:ffff::",
"family": "IPv6",
"scopeid": 6
}
],
"host": "greifserv"
},
"javascriptStack": {
"message": "No stack.",
"stack": [
"Unavailable."
],
"errorProperties": {
}
},
"javascriptHeap": {
"totalMemory": 4297117696,
"executableMemory": 11276288,
"totalCommittedMemory": 4207837184,
"availableMemory": 3284640,
"totalGlobalHandlesMemory": 16318464,
"usedGlobalHandlesMemory": 16318368,
"usedMemory": 4052251208,
"memoryLimit": 4298113024,
"mallocedMemory": 1073224,
"externalMemory": 36427342,
"peakMallocedMemory": 1119858984,
"nativeContextCount": 1,
"detachedContextCount": 0,
"doesZapGarbage": 0,
"heapSpaces": {
"read_only_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
},
"new_space": {
"memorySize": 2097152,
"committedMemory": 2097152,
"capacity": 1048512,
"used": 0,
"available": 1048512
},
"old_space": {
"memorySize": 4243980288,
"committedMemory": 4154716160,
"capacity": 4003991920,
"used": 4003799696,
"available": 192224
},
"code_space": {
"memorySize": 9961472,
"committedMemory": 9945088,
"capacity": 8715328,
"used": 8715328,
"available": 0
},
"shared_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
},
"trusted_space": {
"memorySize": 8495104,
"committedMemory": 8495104,
"capacity": 7265360,
"used": 7265360,
"available": 0
},
"shared_trusted_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
},
"new_large_object_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 1048576,
"used": 0,
"available": 1048576
},
"large_object_space": {
"memorySize": 30875648,
"committedMemory": 30875648,
"capacity": 30773456,
"used": 30773456,
"available": 0
},
"code_large_object_space": {
"memorySize": 1314816,
"committedMemory": 1314816,
"capacity": 1307840,
"used": 1307840,
"available": 0
},
"shared_large_object_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
},
"shared_trusted_large_object_space": {
"memorySize": 0,
"committedMemory": 0,
"capacity": 0,
"used": 0,
"available": 0
},
"trusted_large_object_space": {
"memorySize": 393216,
"committedMemory": 393216,
"capacity": 389528,
"used": 389528,
"available": 0
}
}
},
"nativeStack": [
{
"pc": "0x00000000009ed504",
"symbol": "node::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, v8::Local<v8::Value>) [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x00000000009edaa7",
"symbol": "node::TriggerNodeReport(v8::Isolate*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, v8::Local<v8::Value>) [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x000000000074ea9c",
"symbol": "node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000c43660",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000c4374f",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000ee6fa5",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000ee6fd2",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000ee72ca",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000ef7fca",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x0000000000efc370",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
},
{
"pc": "0x000000000198e911",
"symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]"
}
],
"resourceUsage": {
"free_memory": 26890231808,
"total_memory": 50378096640,
"rss": 21758709760,
"constrained_memory": 18446744073709551615,
"available_memory": 26890231808,
"userCpuSeconds": 216985,
"kernelCpuSeconds": 39688.4,
"cpuConsumptionPercent": 252.416,
"userCpuConsumptionPercent": 213.386,
"kernelCpuConsumptionPercent": 39.03,
"maxRss": 21766455296,
"pageFaults": {
"IORequired": 142,
"IONotRequired": 1797944442
},
"fsActivity": {
"reads": 599360,
"writes": 1691200
}
},
"uvthreadResourceUsage": {
"userCpuSeconds": 85742.7,
"kernelCpuSeconds": 5490.88,
"cpuConsumptionPercent": 89.72,
"userCpuConsumptionPercent": 84.3202,
"kernelCpuConsumptionPercent": 5.39979,
"fsActivity": {
"reads": 330264,
"writes": 16
}
},
"libuv": [
],
"workers": [
],
"environmentVariables": {
"SHELL": "/bin/bash",
"NVM_INC": "/home/torsten/.nvm/versions/node/v22.23.1/include/node",
"STRIX_LLM": "openai/qwen3.5-397b-a17b",
"COPILOT_PROVIDER_MAX_OUTPUT_TOKENS": "8192",
"TERMCAP": "SC|screen.xterm-256color|VT 100/ANSI X3.64 virtual terminal:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:li#38:co#146:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mh=\\E[2m:mr=\\E[7m:me=\\E[m:ms:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:po=\\E[5i:pf=\\E[4i:Km=\\E[<:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:k5=\\E[15~:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:k9=\\E[20~:k;=\\E[21~:F1=\\E[23~:F2=\\E[24~:kB=\\E[Z:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:@7=\\E[4~:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:kd=\\EOB:kr=\\EOC:kl=\\EOD:km:",
"LC_ADDRESS": "C.UTF-8",
"LC_NAME": "C.UTF-8",
"DIRENV_DIR": "-/home/torsten/swy/sandbox",
"WINDOW": "0",
"LC_MONETARY": "C.UTF-8",
"ACCESSIBLE": "1",
"PWD": "/home/torsten/swy/sandbox",
"LLM_API_KEY": "fefc420f-0933-41ee-b659-eeb6c6be4a74",
"LOGNAME": "torsten",
"SCW_SECRET_KEY": "fefc420f-0933-41ee-b659-eeb6c6be4a74",
"XDG_SESSION_TYPE": "tty",
"PROJDIR_MIGRATE_QT5_TO_QT6": "/home/torsten/swy/sandbox/qt-migration-legatus",
"MOTD_SHOWN": "pam",
"HOME": "/home/torsten",
"LANG": "en_US.UTF-8",
"LC_PAPER": "C.UTF-8",
"LS_COLORS": "rs=0:di=00;45:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:",
"COPILOT_PROVIDER_TYPE": "openai",
"COPILOT_PROVIDER_MAX_PROMPT_TOKENS": "32768",
"COPILOT_PROVIDER_BASE_URL": "https://api.scaleway.ai/v1",
"SSH_CONNECTION": "127.0.0.1 49818 127.0.0.1 2022",
"DIRENV_DIFF": "eJyUk0uTojoYhv_LtxaRixeoOguEqCgQDLFb3aRAg2IrIJdW7Or_fspzamacGmemeps8-d7krScfkIP-8dmCFPQPMEwTBYE9dBDoIEELTOzbDqbMxRZyQIcs52mYiOcLT5V2V1C0fiSEUj96QH2CX2wLEWb4NpuhFegQ83ijyp1Y6GiKIqgS50LU62oC51Fv04u4GvbVZxOGRoDYgtyD91WVl7oohnnSLjfhkV_Cph0m4rv07KBrLBleUH9BGcUz5AWgw0DS5N-xPsGu_8Aqcr83eAbTlY--1wAtsGyCvBdm2QR0EMR9duJilRVlxVOxvDRiGabbKLv-IF8Nak7QPYNPr51bOZpdLWM-rIdKE6UlxefTKab1IjbqycGZLqUi83ILKatC7Vfqy1KwDpyVTdEfv68PYee4r7OjlvWs09mncnFtRjmua1OV5Pl4IE0bRVYvJVskNy-admST33qKtK7X3GeGxlxvq-VOQk-yN1oHSlJ7eLNlzq5rbKb2oTm6Lup292uUrOJJfJXKYDxCvBmGWzqa5WQS3qRCelt0eKKx11y1loogKenANAyLMcmdB0v3H2gB8qhN0P_VsoBicu8vTo786R7zDToBHX5usr3J0jjZiTytkuK-_MbTsn0osxRa4Djuf6rdZfmbKN_YL2mJfeQZ9rOMh_nQAp_gqWUT5tpjYlDE5rTLKGZz2vvlQQ9qiOdKOCW7IqySLBWOfBdWdQktCMxXFiCTIPq12waU2EvmOO6ffuvn578BAAD__y6AOMI=",
"NVM_DIR": "/home/torsten/.nvm",
"LESSCLOSE": "/usr/bin/lesspipe %s %s",
"XDG_SESSION_CLASS": "user",
"TERM": "screen.xterm-256color",
"LC_IDENTIFICATION": "C.UTF-8",
"LESSOPEN": "| /usr/bin/lesspipe %s",
"USER": "torsten",
"COPILOT_MODEL": "openai/qwen3.5-397b-a17b",
"SHLVL": "3",
"NVM_CD_FLAGS": "",
"LC_TELEPHONE": "C.UTF-8",
"LC_MEASUREMENT": "C.UTF-8",
"XDG_SESSION_ID": "35",
"ENTIRE_TOKEN_STORE_PATH": "/home/torsten/.config/entire/tokens.json",
"COPILOT_PROVIDER_API_KEY": "fefc420f-0933-41ee-b659-eeb6c6be4a74",
"XDG_RUNTIME_DIR": "/run/user/1000",
"LLM_API_BASE": "https://api.scaleway.ai/v1",
"SSH_CLIENT": "127.0.0.1 49818 2022",
"OPENAI_API_BASE": "https://scaleway.ai",
"LC_TIME": "C.UTF-8",
"XDG_DATA_DIRS": "/usr/local/share:/usr/share:/var/lib/snapd/desktop",
"PATH": "/home/torsten/.local/bin:/home/torsten/bin:/home/torsten/.nvm/versions/node/v22.23.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/torsten/bin:/home/torsten/bin:/home/torsten/bin",
"STY": "2148.swy",
"DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus",
"DIRENV_WATCHES": "eJx0zsFKxDAQBuB3ybnsTOqmmfTuUfAuHjLJX1roNpDE3Yr47t4VX-Dje_syr7GvZja0lhuol9o6DmqPT2rxyFpOuuC412QG81Jy324ws_UizNbJ02Cez631ZuZeP_A9_MNd9pLiTm2NFZS3iuNOcd_Lg5AcJIjylMME55hZEiYfHfx1sSGFEeyBadTFKpRHaz1r1kU0ei9_Wp4DX3-13n8CAAD__1MQSXM=",
"NVM_BIN": "/home/torsten/.nvm/versions/node/v22.23.1/bin",
"SSH_TTY": "/dev/pts/0",
"ENTIRE_TOKEN_STORE": "file",
"LC_NUMERIC": "C.UTF-8",
"OLDPWD": "/home/torsten",
"_": "/home/torsten/.nvm/versions/node/v22.23.1/bin/copilot",
"COPILOT_CLI_BINARY_VERSION": "1.0.82",
"COPILOT_LOADER_PID": "523095",
"NODE_ENV": "production"
},
"userLimits": {
"core_file_size_blocks": {
"soft": 0,
"hard": "unlimited"
},
"data_seg_size_bytes": {
"soft": "unlimited",
"hard": "unlimited"
},
"file_size_blocks": {
"soft": "unlimited",
"hard": "unlimited"
},
"max_locked_memory_bytes": {
"soft": 6297260032,
"hard": 6297260032
},
"max_memory_size_bytes": {
"soft": "unlimited",
"hard": "unlimited"
},
"open_files": {
"soft": 1048576,
"hard": 1048576
},
"stack_size_bytes": {
"soft": 8388608,
"hard": "unlimited"
},
"cpu_time_seconds": {
"soft": "unlimited",
"hard": "unlimited"
},
"max_user_processes": {
"soft": 190827,
"hard": 190827
},
"virtual_memory_bytes": {
"soft": "unlimited",
"hard": "unlimited"
}
},
"sharedObjects": [
"linux-vdso.so.1",
"/lib/x86_64-linux-gnu/libdl.so.2",
"/lib/x86_64-linux-gnu/libstdc++.so.6",
"/lib/x86_64-linux-gnu/libm.so.6",
"/lib/x86_64-linux-gnu/libgcc_s.so.1",
"/lib/x86_64-linux-gnu/libpthread.so.0",
"/lib/x86_64-linux-gnu/libc.so.6",
"/lib64/ld-linux-x86-64.so.2",
"/home/torsten/.cache/copilot/pkg/linux-x64/1.0.82/prebuilds/linux-x64/runtime.node",
"/home/torsten/.cache/copilot/pkg/linux-x64/1.0.82/prebuilds/linux-x64/cli-native.node"
]
}