Debian Patches
Status for gfan/0.8~beta-4
| Patch | Description | Author | Forwarded | Bugs | Origin | Last update |
|---|---|---|---|---|---|---|
| compile-on-more-systems.patch | Build gfan on a wider variety of systems Gfan 0.8beta builds only on a fairly narrow set of toolchains. This patch collects the changes needed to build it with the system compiler on macOS, with clang, and with the compilers shipped by older distributions, back to GCC 7.5 on Ubuntu 18.04 and GCC 8.5 on RHEL 8. It adds no dependency: gfan already links TBB unconditionally, and the memory_resource fallback uses what libstdc++ has shipped since GCC 6. . Parallelism: gfan drove its parallel loops through std::for_each with std::execution::par. libc++ has no <execution> at all and libstdc++ only gained it in GCC 9; where it does exist it is implemented on top of TBB. Call TBB directly. That also removes the reason for the include-ordering workaround at the top of log.h, which pulled <execution> into all 110 translation units that include it, and it exposes two files that had been getting <atomic> through that include. Two loops are deliberately left sequential: they walk a std::set, so libstdc++ never parallelised them, and their body writes to std::cout unlocked and names output files after an index that is not unique across threads. . Library features that are too new: <semaphore> (GCC 11, Xcode 14) was needed only by unreachable scratch code, which is removed; std::erase_if and std::filesystem each had one call site and are replaced with older equivalents; and std::pmr, which is threaded through the core matrix and vector types, falls back to <experimental/memory_resource>, the Library Fundamentals TS version that std::pmr came from. . Language features that are too new: operator!= was left to the C++20 rewritten candidate for operator==, which GCC 9 does not synthesise, and a multimap was left to default construct a lambda comparator, which is only possible from C++20. With those gone, gfan compiles as C++17, so the hardcoded -std=c++20 becomes -std=c++17; GCC 9 spells that standard c++2a and GCC 7 does not have it at all. . Makefile: the macOS pin to gcc-15/g++-15 is gone, so macOS uses its own compiler; a -fno-guess-branch-probability workaround for a gcc 4.7.2 bug goes with it, since clang rejects the option; and -march=native is no longer passed unconditionally, which clang rejects outright on arm64 and which otherwise leaves a binary tuned for whichever machine compiled it. The existing vectorize= switch, which previously set the same value in both of its branches, now turns it back on. . One change is not a build fix but was made along the way: virtual destructors for EnumerationTarget and EnumerationAlgorithm, which are deleted through base class pointers. . Verified by building and running the gfan test suite (50/50) on Ubuntu 18.04, 20.04, 22.04, 24.04 and 25.04 (GCC 7.5 through 14.2), Rocky Linux 8 (GCC 8.5), macOS 26 on arm64, and with clang. diff --git a/Makefile b/Makefile index 1d5fad9..e64e65d 100644 |
Claude Opus 5 <noreply@anthropic.com> | invalid | 2026-08-13 | ||
| fix_spelling_errors.patch | Doug Torrance <dtorrance@debian.org> | invalid | 2020-11-13 | |||
| remove_failing_tests_on_32bits.patch | remove 0009RenderStairCase tests This test fails on 32 bit architectures, causing the build to fail | Cédric Boutillier <boutil@debian.org> | no | debian | 2018-06-27 | |
| fix_other_warnings_clang.diff | fix some warnings emmitted by clang - typo in macro - type warning in format strings |
Cédric Boutillier <boutil@debian.org> | invalid | 2020-11-13 | ||
| make_tests_return_error.patch | Nonzero return code if tests fail | invalid | https://git.sagemath.org/sage.git/commit/build/pkgs/gfan/patches/maketestsreturnerror.patch?h=develop&id=4ad830c4cbb10ce81d49eb92cbd3b1be2df31e7b | 2020-11-13 | ||
| int128.patch | Use 128-bit integers from Abseil when not available natively. | Doug Torrance <dtorrance@debian.org> | no | 2024-10-24 | ||
| link-libatomic.patch | Link against libatomic where required Some architectures (e.g. powerpc and sh4) do not provide lock-free 64-bit atomics inline and instead emit calls into libatomic, resulting in undefined references such as __atomic_fetch_add_8 at link time. Since gfan does not use autoconf, probe for this in the Makefile: try to link a small program using a 64-bit atomic without -latomic, and only add the flag when that fails but succeeds with -latomic. On architectures with inline atomics (e.g. amd64, arm64) no extra library is linked. |
Claude Opus 4.8 <noreply@anthropic.com> | no | 2026-07-12 |
All known versions for source package 'gfan'
- 0.8~beta-4 (sid, forky)
- 0.7-3 (trixie)
- 0.6.2-6 (bookworm)
