cleanup: retire autotools, debian/, and dead platform/subtool trees - #466
Merged
mrjimenez merged 9 commits intoApr 24, 2026
Merged
Conversation
Prep for deleting platforms/MacOSX/aMule-Xcode/ in a follow-up commit. The .icns is the only asset in that tree still referenced by the active CMake build (src/CMakeLists.txt AMULE_ICNS / AMULEGUI_ICNS); move it to platforms/MacOSX/amule.icns so the Xcode directory becomes pure dead code. No behaviour change.
platforms/Windows/MSVC10/ and platforms/Windows/MSVC12/ carry ~90 .vcxproj/.sln files for Visual Studio 2010 and 2013. Both are flagged UNMAINTAINED in their own 00WARNING.txt and are not referenced from any CMakeLists.txt, Makefile.am or CI job. VS 2010 reached EOL in 2020 and VS 2013 in 2024. Every supported Windows build path now goes through the MSYS2 MINGW64 / CLANGARM64 + CMake + Ninja pipeline documented in .github/workflows/ccpp.yml. Pure deletion, 90 files, 14080 lines.
- platforms/MacOSX/aMule-Xcode/: Xcode 3 project (objectVersion=46), MACOSX_DEPLOYMENT_TARGET=10.4/10.6, -framework Carbon. Flagged UNMAINTAINED in 00WARNING.txt. Not referenced by CMake. - platforms/MacOSX/cocoa-mule/: unmaintained native-Cocoa GUI experiment. Also flagged UNMAINTAINED. Not referenced by CMake. - src/utils/scripts/MacOSX/: defs-*.sh + full_build.sh + application_packager.sh. Hard-codes SDKNUMBER=10.6, -arch i386 -arch ppc, AUTOPORT=carbon, --with-carbon (wx 2.8 Carbon port, dropped in wx 3). Not invoked by any current workflow. The only asset still used from aMule-Xcode was amule.icns, which was relocated to platforms/MacOSX/amule.icns in the previous commit.
- src/utils/xas/: plugin for XChat 2, whose last release was 2010.
XChat's open-source successor (HexChat) was also EOL'd in 2024.
- src/utils/amps/: Ampache PHP frontend. Orphaned from the build — no
add_subdirectory() in any CMakeLists.txt, only referenced from
autotools' EXTRA__DIST__SUBDIRS. No callers in the rest of the tree.
- src/utils/plasmamule/: KDE 4 Plasma applet + engine. KDE 4 itself
was EOL'd in 2016. Required Qt4, also long-EOL.
Also strips the matching CMake plumbing:
- cmake/options.cmake: BUILD_PLASMAMULE / BUILD_XAS options + the
BUILD_AMULE_DEVELOPER force-on block that turned them on.
- CMakeLists.txt: find_package(Qt4) gate + xas status line.
- src/utils/CMakeLists.txt: the BUILD_{PLASMAMULE,XAS} ADD_SUBDIRECTORY
branches.
- .github/workflows/ccpp.yml: -DBUILD_PLASMAMULE=0 in cmake_common_config_flags
and the matching comment (no longer needed now that the option is gone).
Autotools references (Makefile.am / configure.ac) are left alone — they
will go with the autotools retirement commit later in this series.
- amule_build_install.sh: 2004-era helper script that fetched and built every aMule dependency from source. Superseded by distro package managers (and Homebrew on macOS, MSYS2 on Windows). Not referenced by any build system. - BUILDING_MACOSX.txt: instructions that pointed at the Xcode project (deleted in a previous commit) and a macOS 10.6 SDK target. - aMule.spec, aMule-CVS.spec: RPM spec files tied to the autotools build (--enable-* flags). Distro maintainers carry their own spec files. - amule.xpm, amulegui.xpm: legacy X11 pixmaps. The only install rules that shipped them were dist_icon_DATA in Makefile.am; CMake installs from src/aMule.xpm instead, so the root copies were duplicates. - README.Debian-Packages: documented the autotools --enable-* flags that produced each Debian binary package. Debian maintainers carry their own packaging in the BTS.
- Delete docs/Releases.dia (orphaned Dia diagram). - Delete docs/README.Asio.txt, docs/README.Mac.txt, docs/README.Windows.txt. None are installed by CMake; all reference the Xcode / MSVC / autotools paths that are being removed in this PR series. - Rewrite docs/INSTALL around the CMake build (it said wx >= 2.8.0 recommended 2.8.9, and only documented ./configure --enable-* flags). The new version matches MIN_WX_VERSION=3.2.0 in CMakeLists.txt and lists the BUILD_* / ENABLE_* options actually exposed by the current cmake/options.cmake. The authoritative platform recipes still live in .github/workflows/ccpp.yml; INSTALL points there so the two can't drift.
CMake is the only supported build system. Deletes the entire autotools surface, which has been redundant since the CMake build reached feature parity and is now the reference path in CI for all three supported platforms. Files removed: - configure.ac, autogen.sh, acinclude.m4 - 26 Makefile.am files across the tree - m4/ (all .m4 macros) - automake/ (custom autotools helpers) - docs/man/po4a.config (only used by docs/man/Makefile.am) CI changes (.github/workflows/ccpp.yml): - Drop the build_autotools_ubuntu job. - Drop autotools_config_flags env var. - CMake-only jobs on Ubuntu, macOS and Windows MinGW64 remain. Downstream packaging impact: - Distro packagers that still invoke ./configure need to switch to cmake -B build && cmake --build build && cmake --install build. docs/INSTALL (rewritten in the previous commit) documents the flag equivalents. - The debian/ tree in this repo still had autotools-based rules; it is removed in the following commit.
Upstream aMule no longer ships Debian packaging. The Debian project carries its own debian/ in their packaging repo (tracked on the Debian BTS), and the tree in this repo had drifted — the rules file invoked the autotools build that was removed in the previous commit, and the per-package .install / .dirs / .menu / .manpages metadata referenced --enable-* flags that no longer exist. 154 files, ~1.5 MB removed. The Debian CI badges in README.md keep working because they point at buildd.debian.org, not this tree. Distro maintainers who want upstream-tracked packaging metadata should open an issue; the project can consider vendoring RPM or Debian spec files again once there is a concrete packager willing to own them.
Twenty stale files committed back in the 2011 Xcode/wx-2.8 era: - Contents/Info.plist: hard-coded to version 2.4.0 and copyright 2011. CMake now synthesises a fresh Info.plist at build time from the MACOSX_BUNDLE_* target properties in src/CMakeLists.txt, so nothing reads the repo copy. - Contents/PkgInfo: legacy 8-byte APPL+signature file. Optional on modern macOS and we don't install it anyway. - Icon (zero-byte): custom-icon sidecar that only works paired with a com.apple.FinderInfo extended attribute, which git does not preserve. Empty file, no xattr -> inert. - Contents/Frameworks/libupnp.3.dylib + libixml.2.dylib + libthreadutil.2.dylib: 2011-vintage libupnp binaries, almost certainly 32-bit i386/PPC. Won't load on Apple Silicon. Modern builds link against Homebrew libupnp at build time. - Contents/Resources/English.lproj/MainMenu.nib/*: Interface Builder NIB for a Cocoa menu bar. wx 3 builds its menu bar programmatically via wxMenuBar; the NIB is never loaded (Info.plist's NSMainNibFile points at a non-existent name, which AppKit silently ignores). - aMule.app/Contents/MacOS/ed2kHelperScript.app: 32-bit PowerPC/i386 Carbon AppleScript helper for ed2k:// URL clicks. Broken on modern macOS. The monolithic amule registers the URL scheme at runtime via LSSetDefaultHandlerForURLScheme, so no helper needed. No build system references any of these files. The authoritative .app bundles continue to be built fresh under build/src/ by the CMake MACOSX_BUNDLE machinery.
Collaborator
|
Sorry for being late in this, but the po4a stuff wasn't autotools related. I didn't check if it's still a (maintained) thing, but I think it's a handy concept enabling translator that are familiar with the normal .po files to also use their tools for the manpages. |
3 tasks
Contributor
Author
|
@Vollstrecker — opened #485 to restore
That keeps the same workflow translators had under autotools (regen by hand, commit the artifacts) while leaving the build itself po4a-free. |
mrjimenez
pushed a commit
that referenced
this pull request
Apr 27, 2026
PR #466 retired the autotools surface and, alongside it, deleted docs/man/po4a.config (only used by docs/man/Makefile.am). The .po / .pot files in docs/man/po/ and the committed *.LANG.1 manpages were kept, but the driver that lets translators refresh them was lost. po4a was never wired into the default build (autotools or otherwise); the autotools tree only EXTRA_DIST'd po4a.config. Translators ran 'po4a po4a.config' out-of-band and committed the regenerated *.LANG.1 files. This change restores that workflow without making po4a a build dependency. - docs/man/po4a.config: restored verbatim from the pre-PR-466 tree, with the xas entry dropped (xas itself was removed in #466). - docs/man/CMakeLists.txt: find_program(po4a). When found, add an optional 'po4a-update' custom target that invokes 'po4a po4a.config' from docs/man/. When po4a is absent, the target simply isn't generated -- no configure error, no impact on CI. - docs/INSTALL: short maintainer note pointing at 'cmake --build build --target po4a-update'. Verified on macOS (po4a 0.74 from Homebrew): configure discovers po4a, 'cmake --build build --target po4a-update' runs the same 'po4a po4a.config' invocation translators would run by hand, and regenerates the *.LANG.1 / *.po / .pot files in place when their content has drifted from the English masters.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix) but src/CMakeLists.txt has been reading the bare LIBBFD at four target_link_libraries sites (amulecmd, amuled, amule monolithic, amulegui). LIBBFD is undefined here, so it expands to empty -- those four target_link_libraries calls have been silently linking nothing for years. The variable-name mismatch predates the cmake-only migration in amule-project#466. Why amule still linked at all on most distros: until recently libbfd either shipped as a shared library that auto-resolved its own deps via DT_NEEDED, or its transitive deps (libiberty, libintl) were short enough that the linker auto-pulled them via implicit search. Why this surfaces now (amule-project#487 follow-up): OpenSuse Tumbleweed ships libbfd only as a static archive, with no bfd.pc, and modern ld --as-needed defaults. The archive's transitive deps (zstd/sframe/iberty) aren't on the link line at all because target_link_libraries has been adding nothing. With the variable name corrected, cmake/bfd.cmake's probe-loop output finally reaches the link line, and the loop's job of discovering the correct combination becomes load-bearing.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Apr 27, 2026
Modern cmake (4.x, the default on Tumbleweed/Arch/Homebrew/MSYS2)
prints a deprecation warning for any project declaring
cmake_minimum_required < 3.10:
Compatibility with CMake < 3.10 will be removed from a future
version of CMake. Update the VERSION argument <min> value.
3.10 is the floor that silences the warning, and it's also already
documented as the minimum in docs/INSTALL (rewritten in amule-project#466), so
this just closes the gap between the docs and the actual policy.
Use the modern <min>...<max> form so cmake enables policies up to
3.31 (more predictable behaviour on recent toolchains) without
raising the floor for distro packagers on older systems --
3.10 was released Nov 2017 and is available everywhere.
Two files affected: the root CMakeLists.txt, and the standalone
abstracts/CMakeLists.txt sub-script (run via cmake -P, hence its
own cmake_minimum_required).
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare ${LIBBFD} at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). ${LIBBFD} is undefined here, so it expands to empty --
those four target_link_libraries calls have been silently linking
nothing. The variable-name mismatch predates the cmake-only
migration in amule-project#466.
The build worked anyway on most distros because libbfd's transitive
deps were either short enough that the linker auto-pulled them via
implicit search, or libbfd was a shared library whose own DT_NEEDED
entries dragged its deps in. On OpenSuse Tumbleweed (amule-project#487 follow-up
report) libbfd ships only as a static archive without bfd.pc, so
the explicit transitive deps cmake/bfd.cmake collects must actually
reach the link line for the build to succeed.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare ${LIBBFD} at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). ${LIBBFD} is undefined here, so it expands to empty --
those four target_link_libraries calls have been silently linking
nothing. The variable-name mismatch predates the cmake-only
migration in amule-project#466.
The build worked anyway on most distros because libbfd's transitive
deps were either short enough that the linker auto-pulled them via
implicit search, or libbfd was a shared library whose own DT_NEEDED
entries dragged its deps in. On OpenSuse Tumbleweed (amule-project#487 follow-up
report) libbfd ships only as a static archive without bfd.pc, so
the explicit transitive deps cmake/bfd.cmake collects must actually
reach the link line for the build to succeed.
This was referenced Apr 27, 2026
mrjimenez
pushed a commit
that referenced
this pull request
Apr 27, 2026
cmake/bfd.cmake sets BFD_LIBRARY (with underscore + _LIBRARY suffix)
but src/CMakeLists.txt has been reading the bare ${LIBBFD} at four
target_link_libraries sites (amulecmd, amuled, amule monolithic,
amulegui). ${LIBBFD} is undefined here, so it expands to empty --
those four target_link_libraries calls have been silently linking
nothing. The variable-name mismatch predates the cmake-only
migration in #466.
The build worked anyway on most distros because libbfd's transitive
deps were either short enough that the linker auto-pulled them via
implicit search, or libbfd was a shared library whose own DT_NEEDED
entries dragged its deps in. On OpenSuse Tumbleweed (#487 follow-up
report) libbfd ships only as a static archive without bfd.pc, so
the explicit transitive deps cmake/bfd.cmake collects must actually
reach the link line for the build to succeed.
mrjimenez
pushed a commit
that referenced
this pull request
Apr 27, 2026
Modern cmake (4.x, the default on Tumbleweed/Arch/Homebrew/MSYS2)
prints a deprecation warning for any project declaring
cmake_minimum_required < 3.10:
Compatibility with CMake < 3.10 will be removed from a future
version of CMake. Update the VERSION argument <min> value.
3.10 is the floor that silences the warning. It's already
documented as the minimum in docs/INSTALL (rewritten in #466), so
this just closes the gap between the docs and the actual policy.
Use the modern <min>...<max> form so cmake enables policies up to
3.31 (more predictable behaviour on recent toolchains) without
raising the floor for distro packagers on older systems --
3.10 was released Nov 2017 and is available everywhere.
Two files affected: the root CMakeLists.txt, and the standalone
abstracts/CMakeLists.txt sub-script (run via cmake -P, hence its
own cmake_minimum_required).
Depends on the previous commit's CMAKE_BINARY_DIR fix for
version.rc -- the policies enabled by <max>=3.31 stop the
silent CMAKE_CURRENT_BINARY_DIR fallback that masked the wrong
${CMAKE_SOURCE_DIR}/version.rc references.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jul 13, 2026
…mule-project#466) The Shared Files view could only show static counters (transferred, requests, accepts, complete sources) — unlike Downloads, there was no way to tell an actively-seeded file from an idle one. Surface per-file upload activity over EC so clients (the REST API now, the desktop GUI later) can add the corresponding columns. Core (CKnownFile): * GetUploadDatarate() / GetTransferringClientCount() — live, summed from m_ClientUploadList: current upload speed and peers uploading now. * m_lastUploadDatetime — stamped in CFileStatistic::AddTransferred (the single point where sent bytes are attributed to a file), the upload-side analogue of the download's m_lastDateChanged. * m_dateShared — stamped once when a file completes (CompleteFileEnded) or is first hashed into the share (CKnownFileList::Append, afterHashing). Both persist in known.met as new FT_ tags (FT_LASTUPLOADED / FT_SHAREDSINCE); absent on a pre-feature known.met => 0 (unknown). Uploading never rewrites the shared file, so the timestamp can't ride the .met date the way downloads do — it needs its own tag. The unknown-tag preserve-and-rewrite path keeps this forward/backward compatible. EC / dirty-marking: * New tags EC_TAG_KNOWNFILE_UPLOAD_SPEED / _UPLOADING_COUNT / _LAST_UPLOAD (live, emitted before the UPDATE early-return) and _SHARED_SINCE (full detail). * SetUploadState marks the file EC-dirty on US_UPLOADING transitions so a file that stops uploading but stays queued drops its speed to 0 — completed/shared files have no per-tick Process() sweep like downloads. REST + SSE (amuleapi): * /shared list + detail gain upload_speed_bps, uploading, last_upload, shared_since; the SSE shared_added/shared_updated payload and EqualShared comparator carry them so live changes emit events. Tests: RefresherTest decodes the new tags; curl 04 asserts the fields. Docs: docs/api/REFERENCE.md.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jul 13, 2026
…mule-project#466) (amule-project#473) The Shared Files view could only show static counters (transferred, requests, accepts, complete sources) — unlike Downloads, there was no way to tell an actively-seeded file from an idle one. Surface per-file upload activity over EC so clients (the REST API now, the desktop GUI later) can add the corresponding columns. Core (CKnownFile): * GetUploadDatarate() / GetTransferringClientCount() — live, summed from m_ClientUploadList: current upload speed and peers uploading now. * m_lastUploadDatetime — stamped in CFileStatistic::AddTransferred (the single point where sent bytes are attributed to a file), the upload-side analogue of the download's m_lastDateChanged. * m_dateShared — stamped once when a file completes (CompleteFileEnded) or is first hashed into the share (CKnownFileList::Append, afterHashing). Both persist in known.met as new FT_ tags (FT_LASTUPLOADED / FT_SHAREDSINCE); absent on a pre-feature known.met => 0 (unknown). Uploading never rewrites the shared file, so the timestamp can't ride the .met date the way downloads do — it needs its own tag. The unknown-tag preserve-and-rewrite path keeps this forward/backward compatible. EC / dirty-marking: * New tags EC_TAG_KNOWNFILE_UPLOAD_SPEED / _UPLOADING_COUNT / _LAST_UPLOAD (live, emitted before the UPDATE early-return) and _SHARED_SINCE (full detail). * SetUploadState marks the file EC-dirty on US_UPLOADING transitions so a file that stops uploading but stays queued drops its speed to 0 — completed/shared files have no per-tick Process() sweep like downloads. REST + SSE (amuleapi): * /shared list + detail gain upload_speed_bps, uploading, last_upload, shared_since; the SSE shared_added/shared_updated payload and EqualShared comparator carry them so live changes emit events. Tests: RefresherTest decodes the new tags; curl 04 asserts the fields. Docs: docs/api/REFERENCE.md.
ngosang
added a commit
to ngosang/amule
that referenced
this pull request
Jul 30, 2026
…oject#466) (amule-project#730) The Shared Files view only had static counters, so an actively seeded file looked the same as an idle one. Surface the four fields 5722207 added to GET /shared (list and detail alike). Table (shared.js): * New columns: "Up speed" (upload_speed_bps) and "Uploading" (uploading), both live off the existing SSE shared channel, plus "Last upload" and "Shared since" hidden by default -- the timestamps are wide and rarely watched, one click away in the column picker. * The totals line now sums the upload speed, mirroring the downloads view. Detail panel (shared-detail.js): the same four values as rows in the Sharing section, with tooltips. The existing queued-clients row is left alone so "uploading" and "queued" read as two neighbouring rows. format.js: fmtTs, until now local to download-detail.js, becomes the exported formatTimestamp and is reused by both panels. Unknown timestamps (0 -- never uploaded, or a known.met entry written before the feature) render as a dash. i18n: new keys in en.json and es.json.
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.
Summary
Pure deletion PR that removes build systems and subprojects that no longer compile, run, or get shipped. 466 files, −48,835 lines, no added behaviour. The CMake build continues to be the only supported path and is now also the only build system in the tree.
Split into 9 atomic commits so each leaves
cmake --build buildgreen and the whole series is bisectable:amule.icnsout of the Xcode project subdirplatforms/MacOSX/aMule-Xcode/platforms/Windows/MSVC10/,platforms/Windows/MSVC12/— VS2010 EOL'd 2020, VS2013 EOL'd 2024, both marked UNMAINTAINED, no CMake referenceplatforms/MacOSX/{aMule-Xcode, cocoa-mule}/,src/utils/scripts/MacOSX/— Xcode 3 project targeting 10.4/10.6 with-framework Carbon, Carbon-port wx 2.8 scripts, unmaintained Cocoa GUI experimentxas,amps,plasmamule)BUILD_XAS/BUILD_PLASMAMULEoptions and the-DBUILD_PLASMAMULE=0line from CIamule_build_install.sh(2004 helper),BUILDING_MACOSX.txt,aMule.spec/aMule-CVS.spec(autotools-based RPM), rootamule.xpm/amulegui.xpm(CMake installs fromsrc/aMule.xpminstead),README.Debian-Packagesdocs/and rewriteINSTALLfor CMakeReleases.dia+README.{Asio,Mac,Windows}.txt; rewriteINSTALLaround CMake (it still said "wx >= 2.8.0 recommended 2.8.9" and only documented./configure --enable-*flags)Makefile.am,configure.ac,autogen.sh,acinclude.m4,m4/,automake/,docs/man/po4a.config, thebuild_autotools_ubuntuCI job,autotools_config_flagsenv vardebian/treeaMule.app/aMuleGUI.apptemplate fossilsInfo.plisthard-coded to version 2.4.0, 32-bit libupnp dylibs that won't load on Apple Silicon, MainMenu NIB never read by wx, PPC/i386 Carboned2kHelperScript.app. None referenced by CMake; the live bundles underbuild/src/are synthesised byMACOSX_BUNDLE_*target properties.Why
aMule.app/aMuleGUI.appfossils haven't built since the wx 3.0 migration; upstream has no plan to restore them, they all carry explicit UNMAINTAINED notices.debian/in an upstream tree is usually stale — Debian's real packaging metadata is owned in the BTS by the Debian aMule maintainer../configure --enable-*flags that no longer exist, or targeted macOS 10.6.Impact on downstream packagers
Distros that currently invoke
./configuremust switch to:The rewritten
docs/INSTALLlists the CMake equivalents of the old--enable-*flags.Debian's source package will want to maintain its own
debian/overlay (it already does; the one in this tree was drifting).RPM-based distros that relied on
aMule.spec/aMule-CVS.specneed their own spec (Fedora carries one in dist-git).Verified
cmake -B build && cmake --build build.cmake --install --prefix /tmp/amule-mac-installproducesaMule.appandaMuleGUI.appwithamule.icnsin place.sudo cmake --install build; hicolor icons from PR icons, bundle: Linux hicolor PNG, Windows .rc icon, macOS amulegui.app #464 still wire up in GNOME Shell.cmake --install build --prefix ~/amule-portable; portable tree still bundles MSYS2 DLLs +ca-bundle.crt, and.exefiles still carry the icon embedded by PR icons, bundle: Linux hicolor PNG, Windows .rc icon, macOS amulegui.app #464.Risk
Zero runtime change. Every deletion is either (a) a file not referenced by the active CMake build at all, or (b) an asset moved, with the referencing CMake paths updated in the same commit. No C/C++ sources touched.