feat: multi-arch Linux AppImage build workflow (x86_64 + aarch64)#2
Open
Copilot wants to merge 14 commits into
Open
feat: multi-arch Linux AppImage build workflow (x86_64 + aarch64)#2Copilot wants to merge 14 commits into
Copilot wants to merge 14 commits into
Conversation
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/4896c4af-2769-44a6-84bc-0a89aac0a078 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
…k comment Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/4896c4af-2769-44a6-84bc-0a89aac0a078 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/4896c4af-2769-44a6-84bc-0a89aac0a078 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add GitHub Actions workflow for optimized Linux builds of QLC+
feat: multi-arch Linux AppImage build workflow (x86_64 + aarch64)
Apr 27, 2026
Owner
|
@copilot Firewall off, try to veirfy and finish the work |
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/cd1b2937-1365-4589-a711-370f517fb912 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/cd1b2937-1365-4589-a711-370f517fb912 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
…ckages Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/cd1b2937-1365-4589-a711-370f517fb912 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
…ch64 Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/cd1b2937-1365-4589-a711-370f517fb912 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
…k on aarch64 Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/cd1b2937-1365-4589-a711-370f517fb912 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Copilot stopped work on behalf of
abossard due to an error
April 27, 2026 17:39
…tory The aarch64 build fails because lprodump is missing from /usr/lib/qt6/libexec/. The old workaround checked if the directory existed, but on aarch64 Ubuntu the directory exists while the binary is absent. Fix: - Add qt6-tools-dev-tools package (provides lprodump) - Check for the binary (! -x lprodump) instead of the directory (! -d libexec) - Apply same fix to armv7 container build section Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Owner
|
@copilot fix the ci for linux |
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/78fccb82-719f-4c54-a2c9-a73f8068b292 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/78fccb82-719f-4c54-a2c9-a73f8068b292 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/78fccb82-719f-4c54-a2c9-a73f8068b292 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Agent-Logs-Url: https://github.com/abossard/qlcplus/sessions/78fccb82-719f-4c54-a2c9-a73f8068b292 Co-authored-by: abossard <86611+abossard@users.noreply.github.com>
Copilot stopped work on behalf of
abossard due to an error
April 30, 2026 23:11
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
0707db8passed bothBuild (x86_64)andBuild (aarch64)AppImage jobs plusCI Success-Werror=maybe-uninitializedby initializingInputPatch::InputValue::valueto0QStyleHints::setColorScheme(Qt::ColorScheme::Dark)behindQT_VERSION >= 6.5.0/usr/lib/qt6/bintoPATH, avoiding the qtchooserlreleasewrapper errorv*tags, and manual dispatchOriginal prompt
Goal
Add a new, modern GitHub Actions workflow that produces optimized, self-contained Linux builds of QLC+ (the QML/v5 variant,
qlcplus-qml) for multiple architectures:The artifacts should be as self-contained as possible so end users can download and run them on a wide range of modern Linux distributions without installing Qt or QLC+ dependencies system-wide.
Background / Repo context
qlcplus-qml(built when-Dqmlui=ON), located atbuild/qmlui/qlcplus-qml.qlcplusmcp(statically linked into the app per the project notes)..github/workflows/— please inspect what already exists before adding a new one and avoid breaking current jobs. Add a new workflow file rather than rewriting existing ones unless an existing Linux workflow is clearly stale/broken and the user would benefit from replacing it (in that case, leave the old one alone and add a new one alongside, named clearly).platforms/linux/directory historically used for packaging — please look at it and reuse helpful pieces (icons, .desktop files, install rules) where appropriate.Requirements for the new workflow
File location & naming
.github/workflows/linux-build.yml(or a similarly clear name likebuild-linux.yml). Do not collide with existing workflow filenames.Triggers
workflow_dispatch(manual run with optional inputs).pushon tags matchingv*(to produce release artifacts).pull_requestfor branches that touch build files / sources (use sensiblepaths:filters so it doesn't run on doc-only changes), but only build x86_64 on PRs to keep CI fast. Build all architectures on tag pushes and manual dispatch.Architectures & strategy
ubuntu-22.04(orubuntu-latestif it's already 24.04+; pick whatever gives the oldest reasonable glibc for portability — prefer 22.04 for broader compatibility).ubuntu-22.04-armorubuntu-24.04-arm) if available to the repo. Fall back to QEMU +docker/setup-qemu-actioncross-build inside an Ubuntu 22.04 container if ARM runners aren't available. Document the choice in a comment in the YAML.workflow_dispatchinput only and document.Use a matrix strategy for architectures with
fail-fast: false.Dependencies
Install Qt 6 + required modules. Investigate what Qt modules QLC+ actually needs by looking at the top-level
CMakeLists.txtandqmlui/CMakeLists.txt. At minimum it likely needs: Core, Gui, Widgets, Qml, Quick, QuickControls2, Network, Multimedia, SerialPort, PrintSupport, Xml, Concurrent, Svg. Confirm by reading the CMake files.Two reasonable approaches — pick the one that produces the most self-contained binary:
jurplel/install-qt-action@v4to install official Qt prebuilts (works great for x86_64; may not support ARM Linux — verify and fall back to apt'sqt6-*-devpackages if needed).qt6-base-dev,qt6-declarative-dev,qt6-multimedia-dev,qt6-serialport-dev,qt6-svg-dev,qt6-tools-dev,qml6-module-*, etc.) when 22.04+ has Qt 6 available. This is more portable across architectures.Also install:
build-essential,cmake,ninja-build,pkg-config,libusb-1.0-0-dev,libftdi1-dev,libasound2-dev,libudev-dev, plus anything else discovered while inspecting the CMake / plugin sources.Build flags
cmake -G Ninja -Dqmlui=ON -DCMAKE_BUILD_TYPE=Release ...qlcplus-qmland the plugins. Runcmake --build . -j$(nproc).mcp_vc_query_filter_test,mcp_vc_validation_test, etc. — discover them).Self-contained packaging
Produce a portable artifact. Two options — implement whichever is cleaner:
linuxdeploy+linuxdeploy-plugin-qt(with the QML plugin) to bundle Qt 6, QML modules, and all.sodeps into a single executable AppImage per architecture. Output:QLC+-${VERSION}-${ARCH}.AppImage.linuxdeploy(without AppImage output) or a manualcmake --install+ldd+cpscript to assemble anAppDir-style folder, then tar.gz it. Output:qlcplus-${VERSION}-linux-${ARCH}.tar.gz.Prefer AppImage. For ARM, use the matching arm64/armhf
linuxdeploy*-aarch64.AppImage/*-armhf.AppImagereleases. Note that running AppImage tools under QEMU sometimes requires--appimage-extract-and-runor extracting first — handle this.Ma...
This pull request was created from Copilot chat.