Skip to content

feat(flathub): stage Flathub-strict manifest in packaging/flathub/ - #16

Merged
got3nks merged 3 commits into
amule-org:masterfrom
got3nks:feat/flathub-submission-prep
Jun 8, 2026
Merged

feat(flathub): stage Flathub-strict manifest in packaging/flathub/#16
got3nks merged 3 commits into
amule-org:masterfrom
got3nks:feat/flathub-submission-prep

Conversation

@got3nks

@got3nks got3nks commented Jun 8, 2026

Copy link
Copy Markdown

Summary

Stages the Flathub-strict version of the aMule Flatpak manifest in packaging/flathub/ for review and refresh tracking. This is the file we will submit to flathub/flathub to land aMule on the Flathub catalogue.

The internal day-to-day Flatpak build keeps using packaging/linux/flatpak/org.amule.aMule.yaml.in (template with ${...} vars, branch: master for aMule); the Flathub-strict manifest is parallel and standalone.

What's different from the internal template

Module Internal template Flathub-strict
cryptopp tag: CRYPTOPP_${CRYPTOPP_TAG_SUFFIX} tag: CRYPTOPP_8_9_0 + commit: 041cf66e...
amule branch: ${AMULE_REVISION} (default master) tag: 3.0.0 + commit: <SHA>
every other module ${...} template variables concrete version pins (no envsubst)

All other modules were already archive+sha256 pinned; no functional change. The runtime, finish-args, build-options, and cleanup rules are unchanged from the internal template.

Blocked on

This PR is held in draft until #15 lands. That PR adds the higher-resolution Linux hicolor icons and pins the metainfo screenshot URLs to the 3.0.0 tag. If we submit Flathub before #15 merges, Flathub builds will render with the old 128×128 icon and screenshot URLs that drift with master.

When #15 lands, the amule source block will be updated to point at the new master tip:

- type: git
  url: https://github.com/amule-org/amule.git
  tag: '3.0.0'                                  # ← still says 3.0.0 (binary version unchanged)
  commit: <40-char SHA of master tip post-#15>  # ← bump to pick up icon fixes

Flathub does not require the pin to be at a release tag — an immutable commit anywhere on a public branch is sufficient. The Flatpak still self-identifies as 3.0.0 because the source's version macro is unchanged; only icons + a metainfo URL moved.

Files

  • packaging/flathub/org.amule.aMule.yaml — the Flathub-strict manifest, 12 modules, all sources immutably pinned. YAML validated; every module is either archive+sha256 or git+tag+commit, zero branch refs.
  • packaging/flathub/README.md — workflow doc: why two manifests, how to refresh on release, how to submit to flathub/flathub.

Next steps after this lands

  1. Wait for feat(icons): refresh per-platform icon assets from new 256x256 master #15 to merge.
  2. Bump the amule commit: to the new master tip.
  3. Fork flathub/flathub, add org.amule.aMule/org.amule.aMule.yaml (verbatim copy), open PR to flathub/flathub:new-pr.
  4. Respond to the Flathub reviewer's feedback (likely: justify --filesystem=home, demonstrate domain ownership for org.amule.aMule).

Companion to the existing internal Flatpak build template — adds a
parallel, fully-pinned manifest formatted to Flathub's submission
policy (every source pinned by sha256 or tag+commit, no template
variables, no mutable branch refs).

Internal day-to-day Flatpak builds continue to use
packaging/linux/flatpak/org.amule.aMule.yaml.in (branch: master for
flexibility); the Flathub-strict version is parallel and standalone.

Differences from the internal template, by module:
- cryptopp: existing tag augmented with commit SHA.
- amule: branch ${AMULE_REVISION} replaced with tag + commit.
- everything else: ${...} template vars resolved to concrete values.

The amule commit SHA points at 3.0.0 for now and will be bumped to
the post-icon-refresh master tip once amule-org#15 lands.
…+ amule-project#17

PR amule-project#15 (icon refresh) and amule-project#17 (metainfo/desktop polish) have merged.
The new master tip eb75041 carries both, so the Flathub build now
ships with the higher-resolution icons, 3.0.0-tag-pinned screenshot
URLs in metainfo, the <release> description + URL, and the .desktop
GenericName/Keywords additions.
…project#19

Two updates piggybacked onto the same yaml since they target the same
manifest block:

1. -DENABLE_BFD=NO config-opt for the amule module. Mirrors the change
   the internal flatpak manifest got in amule-project#19 — needed because the
   GNOME 49 runtime doesn't ship libbfd. Without this, the Flathub-
   built bundle would hit the same startup failure as the local
   bundle did before amule-project#19 (libbfd-2.46.so: cannot open shared object
   file, see amule-project#13).

2. amule source pin bumped from eb75041 (post-amule-project#15 + amule-project#17) to
   6985ba0 (master tip including amule-project#19). Keeps the immutable commit
   reference aligned with the latest stabilisation work intended for
   the Flathub listing.
@got3nks
got3nks marked this pull request as ready for review June 8, 2026 16:10
@got3nks
got3nks merged commit d9f964a into amule-org:master Jun 8, 2026
9 checks passed
@got3nks
got3nks deleted the feat/flathub-submission-prep branch June 8, 2026 16:32
got3nks added a commit that referenced this pull request Jun 14, 2026
…atforms

The macOS-only `std::_Exit(0)` block in OnExit() was added to dodge a
wxWebSessionURLSession dtor bug under wx 3.3.2. Turns out the
Linux backend (wxWebSessionCURL, wx 3.2.6) hits the same class of
shutdown crash: its dtor calls curl_multi_cleanup, libcurl invokes the
registered socket callback (wxWebSessionCURL::SocketCallback) to drop
tracked sockets, and that callback dereferences session state the
dtor's earlier steps have already torn down. wxASSERT fires,
wxFatalSignalHandler raise(SIGABRT)s.

Verified with a debug-symbol Flatpak + gdb on a user-supplied core,
fully symbolicated:

    #19 main                                amule-gui.cpp:98
    #18 wxEntry                             wx/init.cpp:500
    #17 wxEntryCleanup                      wx/init.cpp:205
    #16 wxModule::CleanUpModules            wx/module.cpp:191
    #15 wxModule::DoCleanUpModules          wx/module.cpp:200
    #14 wxRefCounterMT::DecRef
        wxWebSession::Close                 wx/webrequest.cpp:1074
    #13 wxWebSessionCURL::~wxWebSessionCURL wx/webrequest_curl.cpp:932
    #12 wxWebSessionCURL::~wxWebSessionCURL wx/webrequest_curl.cpp:929
    #11-#6 libcurl curl_multi_cleanup
    #5  wxWebSessionCURL::SocketCallback    wx/webrequest_curl.cpp:1047
    #4  raise()
    #3  wxFatalSignalHandler                wx/unix/utilsunx.cpp:1523
    #0  abort

Same justification used for the macOS guard applies on every
platform: by this point in OnExit we have saved state, joined
threads, and flushed logs -- nothing aMule-owned remains to clean up.
_Exit bypasses atexit and static destructors uniformly, so the buggy
wx dtor never runs and the process terminates cleanly.

Remove this once the upstream wx fix lands in a release we depend on.

Reported in #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.

1 participant