Files
KomhandClaude Opus 5 084c2c1b8f feat(heidisql): add HeidiSQL SQL client (com.heidisql.HeidiSQL) (#270)
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]>
2026-08-28 08:09:29 +08:00
..