mirror of
https://github.com/Heretek-Games/flatpark.git
synced 2026-10-11 20:59:53 +00:00
Requested in #257; Ansgar Becker, HeidiSQL's author and maintainer, approved the listing in the same issue — "It would be ok for me if you release HeidiSQL on Flatpark" — so it ships with the developer-approved shield. He had already asked for help building a Flatpak in HeidiSQL#944 back in May 2025. Upstream publishes the Lazarus/FreePascal port as a .deb, an .rpm and three widgetset tarballs. The qt6 tarball is packaged here: its binary is byte-for-byte the one inside the .deb (same sha256), and it also carries the 256x256 icon, the functions-*.ini reference files and all 63 locale catalogues, so the .deb adds nothing but a .desktop file we write ourselves. Its members record uid 1001 (the CI runner), so apply_extra unpacks --no-same-owner or a system-wide install dies under the capability-less root Flatpak runs it as. First KDE-runtime app in the catalog. The payload is not self-contained: it links the system Qt 6 through libQt6Pas, exactly as upstream's .deb declares. It enters on the current branch, 6.11, whose freedesktop 25.08 base is the one the rest of the catalog's runtimes are built on. Two pieces the shared runtimes do not provide come in as extra-data beside the payload: * libQt6Pas 6.2.10, from the same official release upstream's own CI builds against and upstream's .deb depends on, taken unmodified rather than rebuilt. * the SQL client libraries, from flatpark/prebuilt's new sql-clients stack (libmariadb, libpq, libsybdb, sshpass). The runtimes ship libsqlite3 and nothing else, so without them HeidiSQL could only open SQLite files. HeidiSQL finds its drivers by parsing `ldconfig -p` and dlopen-ing the path it finds, not by linking them, so LD_LIBRARY_PATH alone leaves them invisible: the manifest installs an /app/etc/ld.so.conf naming both extra-data directories, which the runtime's own ld.so.conf already includes and Flatpak folds into the cache it regenerates at launch. The wrapper also points MARIADB_PLUGIN_DIR at the stack, since libmariadb's compiled-in plugin path does not exist under /app/extra and a MySQL 8 login would fail on the missing caching_sha2_password plugin. No filesystem grant: sessions live in the app's own config dir and files are picked through the portal. The persistent-path and ~/.ssh grants are documented as `flatpak override` in the metainfo. Verified on this branch: builds against org.kde.Sdk//6.11; installs; apply_extra survives check-apply-extra.sh (root, no capabilities); the app launches on Wayland; live connections against MariaDB 11.8, PostgreSQL 17.11 and a local SQLite file; settings persist across restarts. Also swaps DiscordChatExporter out of the homepage Editor's pick for HeidiSQL — the list stays at five, and DiscordChatExporter keeps its listing and its shield. Co-authored-by: Claude Opus 5 <[email protected]>