Skip to content

Fix Linux PyInstaller onedir spec for AppImage builds - #2

Merged
evildevill merged 2 commits into
mainfrom
copilot/fix-build-linux-appimage
Jul 25, 2026
Merged

evildevill merged 2 commits into
mainfrom
copilot/fix-build-linux-appimage

Conversation

Copilot AI commented Jul 25, 2026 •

Copy link
Copy Markdown
Contributor

The Linux AppImage workflow was failing before packaging because the PyInstaller Linux spec emitted the executable and collected bundle to the same dist/PlaylistForge path. This change removes that path collision so the AppImage job can produce the onedir bundle expected by the workflow.

  • PyInstaller Linux spec

    • Switch the Linux spec to the standard onedir pattern by setting exclude_binaries=True on EXE(...)
    • Keep binaries and data collection in COLLECT(...), avoiding the dist/PlaylistForge file-vs-directory conflict that broke the CI job
  • Regression coverage

    • Add a focused spec test that parses playlistforge.linux.spec and asserts the Linux build keeps exclude_binaries=True
exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name="PlaylistForge",
    ...
)

Copilot AI changed the title [WIP] Fix failing GitHub Actions job Build Linux (AppImage) Fix Linux PyInstaller onedir spec for AppImage builds Jul 25, 2026
Copilot AI requested a review from evildevill July 25, 2026 08:39
@evildevill
evildevill marked this pull request as ready for review July 25, 2026 08:39
Copilot AI review requested due to automatic review settings July 25, 2026 08:39
@evildevill
evildevill merged commit 37c5a56 into main Jul 25, 2026
5 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes the Linux PyInstaller onedir spec used for AppImage builds by eliminating a dist/PlaylistForge path collision (file vs directory) and adds a regression test to prevent reintroducing the issue.

Changes:

  • Update playlistforge.linux.spec to use the standard onedir pattern (exclude_binaries=True) and move binaries/datas collection to COLLECT(...).
  • Add a packaging-spec regression test that parses the Linux spec and asserts exclude_binaries=True on the EXE(...) call.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
packaging/pyinstaller/playlistforge.linux.spec Switches Linux PyInstaller output to proper onedir layout by excluding binaries from EXE and collecting them in COLLECT.
tests/test_packaging_specs.py Adds a focused AST-based regression test to ensure exclude_binaries=True remains set in the Linux spec.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@evildevill
evildevill deleted the copilot/fix-build-linux-appimage branch July 25, 2026 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants