aurupdater

trojita

Build times (auto-updated)


2026-09-10 (same day): real fix landed – pkgrel 16 -> 17, builds and publishes clean

Found where the C++ standard was actually pinned: build()’s own cmake -B build ... -DCMAKE_CXX_STANDARD=14 ... line in the PKGBUILD itself – not CMakeLists.txt (which never sets CMAKE_CXX_STANDARD at all; the -std=c++11 seen in compiler invocations comes from cmake/FindCXXFeatures.cmake’s own detection, a lower-priority flag). An earlier attempt at this same fix tried patching CMakeLists.txt with set(CMAKE_CXX_STANDARD 17), which would have been silently overridden by this PKGBUILD-level -D cache variable (command-line -D definitions win over a plain set() in CMakeLists.txt) – caught before publishing, so no wasted build. Fix: bumped -DCMAKE_CXX_STANDARD=14 to =17 directly in the PKGBUILD, no CMakeLists.txt patch needed at all.

That alone would have broken on std::binary_function/std::bind2nd as predicted, so also swept the whole source tree for every C++17- removed pre-C++11 relic (not just the two MailAddress.h/ Recipients.cpp sites known about already) and found a third, previously unnoticed category: dynamic exception specifications (throw(SomeType) / throw()), also removed outright in C++17, in Exceptions.h/.cpp (what()/destructor overrides – replaced with noexcept, since std::exception::what() itself is noexcept) and Response.h/.cpp (kindFromString()/NumberResponse’s constructor – specific-type throw(X) specs have no direct modern equivalent, so just dropped). Also found Response.h’s CompareListDataIdentifier template deriving from std::unary_function (same removed-in-C++17 issue as binary_function) – safe to drop outright, its operator() already declares an explicit bool return and nothing else in the codebase touches its argument_type/result_type typedefs.

New patch trojita-0.7-cxx17-compat.patch covers all of the above in one patch (generated via real diff -u against a working copy, not hand-written – an earlier hand-written attempt at the MailAddress.h piece had malformed hunks that patch rejected outright). bind2nd call sites in Recipients.cpp became lambdas (the standard C++11+ replacement; the original code even had a resigned “I want to stop this madness. I want C++11.” comment right above them).

Verified via a full local build (not just --dry-run patch checks): patch --dry-run clean, then a real repo_release.sh maintained/trojita run – built, signed, and published cleanly on x86_64 (5m56s, pkgrel 0.7-17). No further C++17-removed constructs surfaced during the actual compile.

(historical, resolved) 2026-07-07 patch checksum failure