From 2f4766c7cbdad0e443964eb37132df56284cb661 Mon Sep 17 00:00:00 2001 From: magdev Date: Sun, 3 May 2026 11:20:27 +0200 Subject: [PATCH] bridge: fix doubled bin/ in bundled-mode frankenphp path resolution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolveFrankenphpBin() returned `applicationDirPath() + "/bin/frankenphp"`, but applicationDirPath() inside an AppImage is already `usr/bin/` — where the host binary itself runs from. The "/bin/" prefix produced the doubled path, e.g.: /tmp/appimage_extracted_/usr/bin/bin/frankenphp …which doesn't exist. The supervisor logged the lookup failure and kept retrying, eventually hitting the perfsmoke 8s cold-start deadline. build-appimage.sh:148 installs frankenphp at `usr/bin/frankenphp` (sibling of the host binary, per the layout comment at line 18). The fix is to drop the spurious `/bin/`. Other resolvers in the same file (resolveSymfonyDir, resolveCaddyfilePath) already use the correct `here + "/"` pattern. Bug shipped since the bundled-mode supervisor was added — would have hit anyone running the AppImage. Local `make quality` only exercises dev mode (BRIDGE_URL set), so the integration test loop never reached this codepath; CI's perfsmoke against the actual AppImage is the only thing that catches it. Manual test would be: launch the AppImage with BRIDGE_FRANKENPHP_BIN unset and watch the phpqml.bridge.bundled log. Co-Authored-By: Claude Opus 4.7 (1M context) --- framework/qml/src/BackendConnection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/qml/src/BackendConnection.cpp b/framework/qml/src/BackendConnection.cpp index 966cc1b..4be825c 100644 --- a/framework/qml/src/BackendConnection.cpp +++ b/framework/qml/src/BackendConnection.cpp @@ -135,7 +135,8 @@ QString BackendConnection::resolveFrankenphpBin() const { const QByteArray override = qgetenv("BRIDGE_FRANKENPHP_BIN"); if (!override.isEmpty()) return QString::fromUtf8(override); - return QCoreApplication::applicationDirPath() + QStringLiteral("/bin/frankenphp"); + // build-appimage.sh installs frankenphp as a sibling of the host binary at usr/bin/frankenphp. + return QCoreApplication::applicationDirPath() + QStringLiteral("/frankenphp"); } QString BackendConnection::resolveSymfonyDir() const