KmyMoney Mac Os Build (ARM)
Thomas Baumgart
thb at net-bembel.de
Wed Apr 15 06:51:43 BST 2026
Hi Marco,
thanks for the lengthy report. I did not have the time to go through all
of it but will certainly do once time permits.
Are you aware of https://discuss.kde.org/t/successful-build-of-kmymoney-5-2-qt6-master-on-macos-arm64/45898
or is KTL even you?
Thomas
On Dienstag, 14. April 2026 23:26:31 CEST francem--- via KMyMoney-devel wrote:
>
> Hi,
>
> let me start saying I'm not an experienced macOS developer,
> but I used to be a Java developer, and I've been a happy KMyMoney user
> on Mac for several years.
>
> Being aware of KmyMoney build issue, I tried
> to see whether, with AI/ChatGPT support, I could make a local build on a
> fresh macOS environment.
> I created a VM on UTM on an Apple Silicon Mac,
> used Craft as the build tool, and with ChatGPT's support managed to
> produce a working KMyMoney app and DMG package.
>
> Beign able to complete
> the build I tried the same approach to test locally the CI/CD pipeline
> and found some fixes to be applied to let it work.
> I'm not saying this
> is perfect or the best but, with the following actions the pipeline
> completed the build.
> Don't know if anyone in the Dev team could check
> and verify but, please find hereafter a ChatGPT actions report:
>
> This
> document summarizes the changes and follow-up recommendations that
> should be shared with the developers after reproducing the macOS ARM64
> CI/CD build locally. It focuses on the concrete fixes that unblock the
> pipeline, the exact files involved, and why each change is necessary for
> automated builds.
>
> The local reproduction showed a sequence of failures
> and recoveries:
>
> *
>
> libs/zlib failed because the blueprint still
> requested zlib-1.3.1.tar.xz, which now returns 404.
> *
>
> After
> updating zlib to 1.3.2, the dependency chain progressed, but
> libs/gwenhywfar required a macOS ARM compile workaround for arm_acle.h.
>
> *
>
> After gwenhywfar succeeded, the main project configure failed
> because the macOS bundle install rule for the kmymoney executable was
> incomplete.
> *
>
> With that corrected, the full build completed
> successfully and produced macos-arm-clang/Applications/KDE/kmymoney.app.
>
>
> -------------------------
>
> FILE:
> craft-clone/blueprints/libs/zlib/zlib.py
>
> RELEVANT AREA: setTargets()
> and the version-specific patch/digest blocks around the 1.3.1 / 1.3.2
> entries.
>
> OBSERVED LOCAL BEHAVIOUR: the pipeline tried to download
> https://www.zlib.net/zlib-1.3.1.tar.xz and received HTTP 404. After
> changing the blueprint to 1.3.2, the tarball downloaded successfully and
> the archive was valid.
>
> The blueprint should use 1.3.2 as the default
> target instead of 1.3.1. The relevant changes are:
>
> *
>
> Update the
> target list so the supported release set includes 1.3.2 instead of
> 1.3.1.
> *
>
> Update the targetDigests entry to match the 1.3.2 tarball.
>
> *
>
> Set defaultTarget = "1.3.2".
> *
>
> Remove the
> zlib-1.3.1-20240818.diff patch from the 1.3.2 patch list.
>
> The
> pipeline failed at the very first dependency fetch because the version
> hardcoded in the blueprint no longer exists upstream. That makes the CI
> job deterministic but broken: every run repeats the same 404 until the
> blueprint is updated.
>
> The local reproduction proved that
> zlib-1.3.2.tar.xz exists, downloads cleanly, and passes archive
> validation. That means the change is not speculative; it is a direct fix
> for the CI artifact source.
>
> This is the highest-priority upstream
> change. It is a pipeline blocker and should be merged first because
> every later build stage depends on libs/zlib.
>
>
> -------------------------
>
> FILE: kmymoney/CMakeLists.txt
>
> RELEVANT
> AREA: the install(TARGETS kmymoney ...) block around the line reported
> by CMake, approximately line 204 in the local checkout.
>
> OBSERVED LOCAL
> BEHAVIOUR: CMake stopped with:
>
> install TARGETS given no BUNDLE
> DESTINATION for MACOSX_BUNDLE executable target "kmymoney"
>
> The build
> then aborted during the configure stage, before any compile or package
> install step could complete.
>
> Add a macOS bundle destination to the
> install rule for the kmymoney executable. The missing clause is:
>
>
> BUNDLE DESTINATION ${KDE_INSTALL_BUNDLEDIR}
>
> The install(TARGETS
> kmymoney ...) block should include a bundle destination alongside the
> runtime/library destinations already used by the project.
>
> On macOS,
> kmymoney is built as a MACOSX_BUNDLE application. CMake requires an
> explicit bundle destination when installing a bundle target. Without it,
> configure fails before the build can continue. This is not a runtime
> issue; it is a packaging/install rule issue that stops the CI job during
> the configure phase.
>
> The local build completed successfully after
> adding the bundle destination, and the final artifact was installed as:
>
>
> macos-arm-clang/Applications/KDE/kmymoney.app
>
> That confirms the
> destination is correct for the KDE macOS layout.
>
> This is a
> source-level fix in the project CMake files, not a Craft workaround. It
> should be treated as a real CI/CD compatibility fix for macOS.
>
>
> -------------------------
>
> FILE LOCATION: no upstream source file was
> identified during the local session; this was handled as a
> build-environment workaround.
>
> OBSERVED LOCAL BEHAVIOUR:
> libs/gwenhywfar failed during the Qt-related compile step because Qt 6
> headers on macOS ARM64 reached qyieldcpu.h, where __yield() was not
> declared. The error message pointed to:
>
> error: implicitly declaring
> library function '__yield' with type 'void ()'
>
> Adding -include
> arm_acle.h to the C++ compile flags allowed the gwenhywfar build to
> complete successfully.
>
> For the macOS ARM64 pipeline, inject the
> include only in the environment that builds gwenhywfar or the affected
> dependency group, rather than globally for every package.
>
> A
> conservative approach is:
>
> *
>
> apply the workaround only on macOS
> ARM64 jobs;
> *
>
> scope it to the dependency build stage that needs it;
>
> *
>
> avoid making it a permanent global flag if it can be limited to
> the specific package or platform.
>
> The dependency chain stalled before
> KMyMoney itself could be configured. Without the workaround, the
> pipeline never reaches the project build stage. Once the flag was added,
> gwenhywfar completed and the build progressed to the main project.
>
>
> This is likely a platform-specific CI environment issue rather than a
> KMyMoney source defect. The important part for developers is that macOS
> ARM64 builds currently need an additional compile-time include to
> satisfy the Qt-related ARM intrinsic reference.
>
>
> -------------------------
>
> After the above changes and workaround, the
> local macOS ARM64 build reached the final packaged application
> successfully.
>
> The final successful artifact path was:
>
>
> macos-arm-clang/Applications/KDE/kmymoney.app
>
> This confirms that the
> pipeline blockers were resolved in sequence:
>
> *
>
> zlib version
> mismatch and dead download fixed.
> *
>
> gwenhywfar ARM64 compile issue
> worked around.
> *
>
> KMyMoney macOS bundle install rule corrected.
> *
>
>
> Full build completed and installed successfully.
>
>
> -------------------------
>
> The three items to communicate are:
>
> *
>
>
> craft-clone/blueprints/libs/zlib/zlib.py
>
> *
>
> update the supported
> release from 1.3.1 to 1.3.2
> *
>
> update the digest for 1.3.2
> *
>
>
> remove the obsolete zlib-1.3.1-20240818.diff patch from the 1.3.2
> block
> *
>
> reason: upstream 1.3.1 tarball now returns 404 and blocks
> CI immediately
>
> *
>
> kmymoney/CMakeLists.txt
>
> *
>
> add BUNDLE
> DESTINATION ${KDE_INSTALL_BUNDLEDIR} to the install(TARGETS kmymoney
> ...) rule
> *
>
> reason: macOS bundle installation failed during
> configure because CMake requires a bundle destination for MACOSX_BUNDLE
> executables
>
> *
>
> macOS ARM64 build environment / Craft configuration
>
>
> *
>
> apply -include arm_acle.h only where needed for the gwenhywfar
> build path
> *
>
> reason: gwenhywfar failed on Qt 6 ARM64 because
> __yield() was not declared by the default include set
>
>
> -------------------------
>
> The local validation established the
> following facts:
>
> *
>
> zlib-1.3.2.tar.xz downloads successfully and the
> tarball contents are valid.
> *
>
> gwenhywfar passes once the ARM ACLE
> header workaround is present.
> *
>
> kmymoney configures and builds
> successfully after adding the macOS bundle destination.
> *
>
> The final
> application bundle is produced under KDE's macOS application path.
>
>
> Hope this could help to fix the Mac Os Pipeline,
> Marco
>
>
>
>
--
Regards
Thomas Baumgart
-------------------------------------------------------------
Life is better when you're laughing. (unknown source)
-------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 868 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20260415/25ddf19e/attachment-0001.sig>
More information about the KMyMoney-devel
mailing list