fix: tell a dropped install reply apart from a failed install (+ cross fixes) (#67)

* fix: drop krb5 from the runtime package list

krb5 does not cross-evaluate to mingw -- it carries a host-platform bash,
so the splice fails with "Refusing to evaluate package 'bash-5.3p9'", an
error naming bash rather than krb5. metadata.json has no per-platform
mechanism, so this cannot be guarded the way the Nix-level sites in
logos-basecamp were.

Removing it outright is safe: nothing here links Kerberos. It arrives
only as an optional Qt transitive, and Qt resolves it itself --
libQt6Network.so.6 carries krb5 in its own RUNPATH on Linux, macOS uses
GSS.framework instead, and the cross-built Qt6Network.dll imports
Secur32.dll (Windows SSPI) with no krb5 anywhere in its import table.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: drop abseil-cpp from the runtime package list

abseil-cpp does not cross-compile to mingw -- absl/base/internal/
thread_identity.cc includes <pthread.h>, which mingw-w64 with mcfgthread
does not ship. Nothing here uses it: "absl" appears only in the README.
metadata.json has no per-platform mechanism, so it cannot be guarded.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: treat an installPlugin reply without an "error" key as success

The install predicate required a non-empty "path". A QML-only ui_qml package
ships no backend library, so package_manager used to report an empty path for
it on a completely successful install — and this row went red with a RETRY
action. Basecamp's own PackageCoordinator::installPluginSucceeded has always
keyed off the "error" key alone; this brings PMU in line.

contains("path") is retained deliberately so an empty or malformed reply (module
unreachable) does not read as success: every real installPlugin reply carries
the key, even when its value is empty.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: give installing the same IPC budget as downloading

Downloading had a five-minute deadline (kDownloadIpcDeadlineMs) while
installing was left on the 20 s default from logos_mode.h — backwards.
Downloading is network-bound and retryable; installing is disk-bound over a
payload package_manager reads, gunzips and tar-parses three times and
Merkle-hashes twice, then extracts and copies. Measured at ~1 s on a warm dev
box and unbounded on a slow disk, a large package, or a machine whose
antivirus scans each DLL as it lands.

Blowing the deadline cancels none of that work: the files still install and
only the reply is abandoned, so the user is told the install failed when it
did not — which is exactly what a Windows install looked like while a separate
read-only-payload bug was making the reply never arrive at all.

Also names the empty-reply case instead of reporting the generic
"Installation failed". A dropped or timed-out call arrives here as a
default-constructed QVariantMap because installPluginAsync's callback has no
error slot; every real reply carries "path", so an empty map is never a
genuine answer. That inference is INTERIM: logos-cpp-sdk master f3369fa (#132)
already provides installPluginAsyncResult with logos::AsyncResult<T> carrying
the real CallError, and both call sites should switch to it once
feat/windows-cross picks that up — it is 12 commits behind master today. The
comments say so at both sites. f3369fa did not change the async default
deadline, so this Timeout is required either way.

* fix: tell a dropped install reply apart from a failed install

Both call sites used installPluginAsync, whose callback receives a bare
QVariantMap — so a transport failure and a provider that legitimately returned
an empty map are the same thing to the caller. A timed-out call therefore
surfaced as the generic "Installation failed", pointing the user at a package
that was very likely fine, and on Windows that is exactly what a separate
read-only-payload bug produced: every file installed, no reply came back, and
the row went red.

Switches to installPluginAsyncResult, whose callback takes
logos::AsyncResult<QVariantMap> and carries the value and the error together.
Transport failure is now checked FIRST, before `value` is read at all — on a
timeout `value` is default-constructed, and interpreting it as an install
verdict is the precise mistake this channel exists to remove.

The message says the deadline expired and that the package may in fact be
installed, because blowing the deadline cancels nothing already underway.

This replaces an interim heuristic that inferred a dropped reply from an empty
map. The inference was sound — a real reply always carries "path" — but it was
an inference. The real channel arrived on this branch with logos-cpp-sdk
f3369fa (#132, "async callers can see the error, sync callers can set a
deadline"), picked up by the master merge; the comments left at both sites
named it as the thing to switch to.

Builds for x86_64-linux and x86_64-windows in both repos.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Dario Lipicar
2026-08-11 20:33:14 -03:00
committed by GitHub
co-authored by Claude Opus 5 Cursor
parent f17eed53a7
commit 39a5fa5abb
3 changed files with 355 additions and 146 deletions
Generated
+309 -139
View File
@@ -7407,11 +7407,11 @@
]
},
"locked": {
"lastModified": 1786388838,
"narHash": "sha256-X8CD/kD/+SEspCVCc0MzSoOphUqfFab8pNtCN3z/Qtc=",
"lastModified": 1786467089,
"narHash": "sha256-225xM64Ym9loeIOgS8W3Qc0iKHtpLbQVAaO9ppBpLQc=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "9d508292eb03cc5922ef7b1e0cf747de501427a1",
"rev": "e3744fb84ceff2dc7cb1630a1301bb93c64d7a8a",
"type": "github"
},
"original": {
@@ -16528,11 +16528,11 @@
]
},
"locked": {
"lastModified": 1782492700,
"narHash": "sha256-Cfu9C6wMubyWTDLEh738rfCt3CuI91BZNWLj2GfTXAY=",
"lastModified": 1786467089,
"narHash": "sha256-225xM64Ym9loeIOgS8W3Qc0iKHtpLbQVAaO9ppBpLQc=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "350a2891e60a40aba93f273d85e8accb4803ac29",
"rev": "e3744fb84ceff2dc7cb1630a1301bb93c64d7a8a",
"type": "github"
},
"original": {
@@ -21459,11 +21459,11 @@
]
},
"locked": {
"lastModified": 1785470541,
"narHash": "sha256-5fVAbSGMRhEfRXfhaoq26LZeJuziRT/NMFsfhtd0ogA=",
"lastModified": 1786415321,
"narHash": "sha256-Oe98SavQSVGBIY7WIc8RQ5l+Bl4KLsdmjb+PyscfdNw=",
"owner": "logos-co",
"repo": "logos-lidl",
"rev": "35f33d87b7d6c22d9d4658c58855ae887ce515f1",
"rev": "ffeebf2e90fa0c65e8c486988271fe0ca029d1e1",
"type": "github"
},
"original": {
@@ -24295,11 +24295,11 @@
]
},
"locked": {
"lastModified": 1785470541,
"narHash": "sha256-5fVAbSGMRhEfRXfhaoq26LZeJuziRT/NMFsfhtd0ogA=",
"lastModified": 1786415321,
"narHash": "sha256-Oe98SavQSVGBIY7WIc8RQ5l+Bl4KLsdmjb+PyscfdNw=",
"owner": "logos-co",
"repo": "logos-lidl",
"rev": "35f33d87b7d6c22d9d4658c58855ae887ce515f1",
"rev": "ffeebf2e90fa0c65e8c486988271fe0ca029d1e1",
"type": "github"
},
"original": {
@@ -25967,11 +25967,11 @@
]
},
"locked": {
"lastModified": 1781653473,
"narHash": "sha256-8l2tE2K5nY1grcFROQHC1By1jVI0NrfkS3k2v2y6R2I=",
"lastModified": 1786415321,
"narHash": "sha256-Oe98SavQSVGBIY7WIc8RQ5l+Bl4KLsdmjb+PyscfdNw=",
"owner": "logos-co",
"repo": "logos-lidl",
"rev": "8c95d4f0cc6a10195c70ed71e85b7a4cddca02f8",
"rev": "ffeebf2e90fa0c65e8c486988271fe0ca029d1e1",
"type": "github"
},
"original": {
@@ -25998,11 +25998,11 @@
]
},
"locked": {
"lastModified": 1781653473,
"narHash": "sha256-8l2tE2K5nY1grcFROQHC1By1jVI0NrfkS3k2v2y6R2I=",
"lastModified": 1786415321,
"narHash": "sha256-Oe98SavQSVGBIY7WIc8RQ5l+Bl4KLsdmjb+PyscfdNw=",
"owner": "logos-co",
"repo": "logos-lidl",
"rev": "8c95d4f0cc6a10195c70ed71e85b7a4cddca02f8",
"rev": "ffeebf2e90fa0c65e8c486988271fe0ca029d1e1",
"type": "github"
},
"original": {
@@ -27706,11 +27706,11 @@
]
},
"locked": {
"lastModified": 1782766905,
"narHash": "sha256-oYE7sMr7PS+kDoX//Cx90HmRiRHBnHONx6r4Ekkc7DI=",
"lastModified": 1786415910,
"narHash": "sha256-7zcTkY6r0iXXaFnZaWKNBMHh53RkQh2P455421TX7Gk=",
"owner": "logos-co",
"repo": "logos-module",
"rev": "2ec64c4a65f8966b5137cdba3a19a6498ce17b6d",
"rev": "9812dc8c69cfbfed3eea06510a5c1ff33c1fcf7f",
"type": "github"
},
"original": {
@@ -27743,11 +27743,11 @@
"rust-overlay": "rust-overlay_8"
},
"locked": {
"lastModified": 1786478728,
"narHash": "sha256-YvyiBMKZqZT3ockrU4zQQsDP0cd7ANRdZBnxJiSE2TI=",
"lastModified": 1786482470,
"narHash": "sha256-nAOcRVGLvcqP26akjwT7qNUnjmUL66uRdugiwCHEBVw=",
"owner": "logos-co",
"repo": "logos-module-builder",
"rev": "d7427f9801e1f325e6433f3e3506db9e21c53ff3",
"rev": "9d3b7cc1f5a283d056e21c077bafb49f1b00e24f",
"type": "github"
},
"original": {
@@ -35002,11 +35002,11 @@
]
},
"locked": {
"lastModified": 1776369033,
"narHash": "sha256-ehePoUEd/u3Ng0TvCmjocXYJWWH6P61PA7tNpgV59lo=",
"lastModified": 1786415910,
"narHash": "sha256-7zcTkY6r0iXXaFnZaWKNBMHh53RkQh2P455421TX7Gk=",
"owner": "logos-co",
"repo": "logos-module",
"rev": "194778491ef4dd36967ac40cc2fec6b8a8b1d660",
"rev": "9812dc8c69cfbfed3eea06510a5c1ff33c1fcf7f",
"type": "github"
},
"original": {
@@ -39051,11 +39051,11 @@
]
},
"locked": {
"lastModified": 1776369033,
"narHash": "sha256-ehePoUEd/u3Ng0TvCmjocXYJWWH6P61PA7tNpgV59lo=",
"lastModified": 1786415910,
"narHash": "sha256-7zcTkY6r0iXXaFnZaWKNBMHh53RkQh2P455421TX7Gk=",
"owner": "logos-co",
"repo": "logos-module",
"rev": "194778491ef4dd36967ac40cc2fec6b8a8b1d660",
"rev": "9812dc8c69cfbfed3eea06510a5c1ff33c1fcf7f",
"type": "github"
},
"original": {
@@ -42588,14 +42588,15 @@
},
"logos-nix": {
"inputs": {
"nixpkgs": "nixpkgs"
"nixpkgs": "nixpkgs",
"nixpkgs-windows": "nixpkgs-windows"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -42606,14 +42607,15 @@
},
"logos-nix_10": {
"inputs": {
"nixpkgs": "nixpkgs_10"
"nixpkgs": "nixpkgs_10",
"nixpkgs-windows": "nixpkgs-windows_10"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -55225,7 +55227,7 @@
"logos-nix_1630": {
"inputs": {
"nixpkgs": "nixpkgs_1630",
"nixpkgs-windows": "nixpkgs-windows_21"
"nixpkgs-windows": "nixpkgs-windows_31"
},
"locked": {
"lastModified": 1786399295,
@@ -55244,7 +55246,7 @@
"logos-nix_1631": {
"inputs": {
"nixpkgs": "nixpkgs_1631",
"nixpkgs-windows": "nixpkgs-windows_22"
"nixpkgs-windows": "nixpkgs-windows_32"
},
"locked": {
"lastModified": 1786399295,
@@ -55299,7 +55301,7 @@
"logos-nix_1634": {
"inputs": {
"nixpkgs": "nixpkgs_1634",
"nixpkgs-windows": "nixpkgs-windows_23"
"nixpkgs-windows": "nixpkgs-windows_33"
},
"locked": {
"lastModified": 1786399295,
@@ -55336,7 +55338,7 @@
"logos-nix_1636": {
"inputs": {
"nixpkgs": "nixpkgs_1636",
"nixpkgs-windows": "nixpkgs-windows_24"
"nixpkgs-windows": "nixpkgs-windows_34"
},
"locked": {
"lastModified": 1786399295,
@@ -62591,7 +62593,7 @@
"logos-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_2",
"nixpkgs-windows": "nixpkgs-windows"
"nixpkgs-windows": "nixpkgs-windows_2"
},
"locked": {
"lastModified": 1786399295,
@@ -68334,7 +68336,7 @@
"logos-nix_2286": {
"inputs": {
"nixpkgs": "nixpkgs_2286",
"nixpkgs-windows": "nixpkgs-windows_25"
"nixpkgs-windows": "nixpkgs-windows_35"
},
"locked": {
"lastModified": 1786399295,
@@ -74509,7 +74511,7 @@
"logos-nix_2595": {
"inputs": {
"nixpkgs": "nixpkgs_2595",
"nixpkgs-windows": "nixpkgs-windows_26"
"nixpkgs-windows": "nixpkgs-windows_36"
},
"locked": {
"lastModified": 1786399295,
@@ -74528,7 +74530,7 @@
"logos-nix_2596": {
"inputs": {
"nixpkgs": "nixpkgs_2596",
"nixpkgs-windows": "nixpkgs-windows_27"
"nixpkgs-windows": "nixpkgs-windows_37"
},
"locked": {
"lastModified": 1786399295,
@@ -74583,7 +74585,7 @@
"logos-nix_2599": {
"inputs": {
"nixpkgs": "nixpkgs_2599",
"nixpkgs-windows": "nixpkgs-windows_28"
"nixpkgs-windows": "nixpkgs-windows_38"
},
"locked": {
"lastModified": 1786399295,
@@ -74692,7 +74694,7 @@
"logos-nix_2603": {
"inputs": {
"nixpkgs": "nixpkgs_2603",
"nixpkgs-windows": "nixpkgs-windows_29"
"nixpkgs-windows": "nixpkgs-windows_39"
},
"locked": {
"lastModified": 1786399295,
@@ -74729,7 +74731,7 @@
"logos-nix_2605": {
"inputs": {
"nixpkgs": "nixpkgs_2605",
"nixpkgs-windows": "nixpkgs-windows_30"
"nixpkgs-windows": "nixpkgs-windows_40"
},
"locked": {
"lastModified": 1786399295,
@@ -74748,7 +74750,7 @@
"logos-nix_2606": {
"inputs": {
"nixpkgs": "nixpkgs_2606",
"nixpkgs-windows": "nixpkgs-windows_31"
"nixpkgs-windows": "nixpkgs-windows_41"
},
"locked": {
"lastModified": 1786399295,
@@ -74767,7 +74769,7 @@
"logos-nix_2607": {
"inputs": {
"nixpkgs": "nixpkgs_2607",
"nixpkgs-windows": "nixpkgs-windows_32"
"nixpkgs-windows": "nixpkgs-windows_42"
},
"locked": {
"lastModified": 1786399295,
@@ -74840,7 +74842,7 @@
"logos-nix_2610": {
"inputs": {
"nixpkgs": "nixpkgs_2610",
"nixpkgs-windows": "nixpkgs-windows_33"
"nixpkgs-windows": "nixpkgs-windows_43"
},
"locked": {
"lastModified": 1786399295,
@@ -74859,7 +74861,7 @@
"logos-nix_2611": {
"inputs": {
"nixpkgs": "nixpkgs_2611",
"nixpkgs-windows": "nixpkgs-windows_34"
"nixpkgs-windows": "nixpkgs-windows_44"
},
"locked": {
"lastModified": 1786399295,
@@ -74878,7 +74880,7 @@
"logos-nix_2612": {
"inputs": {
"nixpkgs": "nixpkgs_2612",
"nixpkgs-windows": "nixpkgs-windows_35"
"nixpkgs-windows": "nixpkgs-windows_45"
},
"locked": {
"lastModified": 1786399295,
@@ -74897,7 +74899,7 @@
"logos-nix_2613": {
"inputs": {
"nixpkgs": "nixpkgs_2613",
"nixpkgs-windows": "nixpkgs-windows_36"
"nixpkgs-windows": "nixpkgs-windows_46"
},
"locked": {
"lastModified": 1786399295,
@@ -74916,7 +74918,7 @@
"logos-nix_2614": {
"inputs": {
"nixpkgs": "nixpkgs_2614",
"nixpkgs-windows": "nixpkgs-windows_37"
"nixpkgs-windows": "nixpkgs-windows_47"
},
"locked": {
"lastModified": 1786399295,
@@ -74935,7 +74937,7 @@
"logos-nix_2615": {
"inputs": {
"nixpkgs": "nixpkgs_2615",
"nixpkgs-windows": "nixpkgs-windows_38"
"nixpkgs-windows": "nixpkgs-windows_48"
},
"locked": {
"lastModified": 1786399295,
@@ -74990,7 +74992,7 @@
"logos-nix_2618": {
"inputs": {
"nixpkgs": "nixpkgs_2618",
"nixpkgs-windows": "nixpkgs-windows_39"
"nixpkgs-windows": "nixpkgs-windows_49"
},
"locked": {
"lastModified": 1786399295,
@@ -75009,7 +75011,7 @@
"logos-nix_2619": {
"inputs": {
"nixpkgs": "nixpkgs_2619",
"nixpkgs-windows": "nixpkgs-windows_40"
"nixpkgs-windows": "nixpkgs-windows_50"
},
"locked": {
"lastModified": 1786399295,
@@ -75046,7 +75048,7 @@
"logos-nix_2620": {
"inputs": {
"nixpkgs": "nixpkgs_2620",
"nixpkgs-windows": "nixpkgs-windows_41"
"nixpkgs-windows": "nixpkgs-windows_51"
},
"locked": {
"lastModified": 1786399295,
@@ -75065,7 +75067,7 @@
"logos-nix_2621": {
"inputs": {
"nixpkgs": "nixpkgs_2621",
"nixpkgs-windows": "nixpkgs-windows_42"
"nixpkgs-windows": "nixpkgs-windows_52"
},
"locked": {
"lastModified": 1786399295,
@@ -75084,7 +75086,7 @@
"logos-nix_2622": {
"inputs": {
"nixpkgs": "nixpkgs_2622",
"nixpkgs-windows": "nixpkgs-windows_43"
"nixpkgs-windows": "nixpkgs-windows_53"
},
"locked": {
"lastModified": 1786399295,
@@ -75103,7 +75105,7 @@
"logos-nix_2623": {
"inputs": {
"nixpkgs": "nixpkgs_2623",
"nixpkgs-windows": "nixpkgs-windows_44"
"nixpkgs-windows": "nixpkgs-windows_54"
},
"locked": {
"lastModified": 1786399295,
@@ -75158,7 +75160,7 @@
"logos-nix_2626": {
"inputs": {
"nixpkgs": "nixpkgs_2626",
"nixpkgs-windows": "nixpkgs-windows_45"
"nixpkgs-windows": "nixpkgs-windows_55"
},
"locked": {
"lastModified": 1786399295,
@@ -75896,14 +75898,15 @@
},
"logos-nix_3": {
"inputs": {
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_3",
"nixpkgs-windows": "nixpkgs-windows_3"
},
"locked": {
"lastModified": 1773955630,
"narHash": "sha256-KqzMoWYIVp2xMgphs7v02T/BE54RKMFxpdC2duhJKG0=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "0e9e6d66ab8eb34f59e45ed448f7dc29130feb88",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -77894,14 +77897,15 @@
},
"logos-nix_4": {
"inputs": {
"nixpkgs": "nixpkgs_4"
"nixpkgs": "nixpkgs_4",
"nixpkgs-windows": "nixpkgs-windows_4"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -79892,14 +79896,15 @@
},
"logos-nix_5": {
"inputs": {
"nixpkgs": "nixpkgs_5"
"nixpkgs": "nixpkgs_5",
"nixpkgs-windows": "nixpkgs-windows_5"
},
"locked": {
"lastModified": 1773955630,
"narHash": "sha256-KqzMoWYIVp2xMgphs7v02T/BE54RKMFxpdC2duhJKG0=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "0e9e6d66ab8eb34f59e45ed448f7dc29130feb88",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -81890,14 +81895,15 @@
},
"logos-nix_6": {
"inputs": {
"nixpkgs": "nixpkgs_6"
"nixpkgs": "nixpkgs_6",
"nixpkgs-windows": "nixpkgs-windows_6"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -82953,7 +82959,7 @@
"logos-nix_652": {
"inputs": {
"nixpkgs": "nixpkgs_652",
"nixpkgs-windows": "nixpkgs-windows_2"
"nixpkgs-windows": "nixpkgs-windows_11"
},
"locked": {
"lastModified": 1786399295,
@@ -83889,14 +83895,15 @@
},
"logos-nix_7": {
"inputs": {
"nixpkgs": "nixpkgs_7"
"nixpkgs": "nixpkgs_7",
"nixpkgs-windows": "nixpkgs-windows_7"
},
"locked": {
"lastModified": 1773955630,
"narHash": "sha256-KqzMoWYIVp2xMgphs7v02T/BE54RKMFxpdC2duhJKG0=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "0e9e6d66ab8eb34f59e45ed448f7dc29130feb88",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -85887,14 +85894,15 @@
},
"logos-nix_8": {
"inputs": {
"nixpkgs": "nixpkgs_8"
"nixpkgs": "nixpkgs_8",
"nixpkgs-windows": "nixpkgs-windows_8"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -87885,14 +87893,15 @@
},
"logos-nix_9": {
"inputs": {
"nixpkgs": "nixpkgs_9"
"nixpkgs": "nixpkgs_9",
"nixpkgs-windows": "nixpkgs-windows_9"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -89128,7 +89137,7 @@
"logos-nix_961": {
"inputs": {
"nixpkgs": "nixpkgs_961",
"nixpkgs-windows": "nixpkgs-windows_3"
"nixpkgs-windows": "nixpkgs-windows_12"
},
"locked": {
"lastModified": 1786399295,
@@ -89147,7 +89156,7 @@
"logos-nix_962": {
"inputs": {
"nixpkgs": "nixpkgs_962",
"nixpkgs-windows": "nixpkgs-windows_4"
"nixpkgs-windows": "nixpkgs-windows_13"
},
"locked": {
"lastModified": 1786399295,
@@ -89202,7 +89211,7 @@
"logos-nix_965": {
"inputs": {
"nixpkgs": "nixpkgs_965",
"nixpkgs-windows": "nixpkgs-windows_5"
"nixpkgs-windows": "nixpkgs-windows_14"
},
"locked": {
"lastModified": 1786399295,
@@ -89275,7 +89284,7 @@
"logos-nix_969": {
"inputs": {
"nixpkgs": "nixpkgs_969",
"nixpkgs-windows": "nixpkgs-windows_6"
"nixpkgs-windows": "nixpkgs-windows_15"
},
"locked": {
"lastModified": 1786399295,
@@ -89330,7 +89339,7 @@
"logos-nix_971": {
"inputs": {
"nixpkgs": "nixpkgs_971",
"nixpkgs-windows": "nixpkgs-windows_7"
"nixpkgs-windows": "nixpkgs-windows_16"
},
"locked": {
"lastModified": 1786399295,
@@ -89349,7 +89358,7 @@
"logos-nix_972": {
"inputs": {
"nixpkgs": "nixpkgs_972",
"nixpkgs-windows": "nixpkgs-windows_8"
"nixpkgs-windows": "nixpkgs-windows_17"
},
"locked": {
"lastModified": 1786399295,
@@ -89368,7 +89377,7 @@
"logos-nix_973": {
"inputs": {
"nixpkgs": "nixpkgs_973",
"nixpkgs-windows": "nixpkgs-windows_9"
"nixpkgs-windows": "nixpkgs-windows_18"
},
"locked": {
"lastModified": 1786399295,
@@ -89404,14 +89413,15 @@
},
"logos-nix_975": {
"inputs": {
"nixpkgs": "nixpkgs_975"
"nixpkgs": "nixpkgs_975",
"nixpkgs-windows": "nixpkgs-windows_19"
},
"locked": {
"lastModified": 1774455309,
"narHash": "sha256-3AN7aFnArdysrbQQ2UskWzjNSFADb4hDCsnx69Fa0ng=",
"lastModified": 1786399295,
"narHash": "sha256-Bl1A0UgsIXioZw5uEW8Jl5u7FfZcFMnpYlpsdezFwK0=",
"owner": "logos-co",
"repo": "logos-nix",
"rev": "e637a1f5e871244d1c2df1e3c52a067f2eb406f2",
"rev": "6e0f4a7120fced10829b0b3a698ff619a11d4605",
"type": "github"
},
"original": {
@@ -89423,7 +89433,7 @@
"logos-nix_976": {
"inputs": {
"nixpkgs": "nixpkgs_976",
"nixpkgs-windows": "nixpkgs-windows_10"
"nixpkgs-windows": "nixpkgs-windows_20"
},
"locked": {
"lastModified": 1786399295,
@@ -89442,7 +89452,7 @@
"logos-nix_977": {
"inputs": {
"nixpkgs": "nixpkgs_977",
"nixpkgs-windows": "nixpkgs-windows_11"
"nixpkgs-windows": "nixpkgs-windows_21"
},
"locked": {
"lastModified": 1786399295,
@@ -89461,7 +89471,7 @@
"logos-nix_978": {
"inputs": {
"nixpkgs": "nixpkgs_978",
"nixpkgs-windows": "nixpkgs-windows_12"
"nixpkgs-windows": "nixpkgs-windows_22"
},
"locked": {
"lastModified": 1786399295,
@@ -89480,7 +89490,7 @@
"logos-nix_979": {
"inputs": {
"nixpkgs": "nixpkgs_979",
"nixpkgs-windows": "nixpkgs-windows_13"
"nixpkgs-windows": "nixpkgs-windows_23"
},
"locked": {
"lastModified": 1786399295,
@@ -89517,7 +89527,7 @@
"logos-nix_980": {
"inputs": {
"nixpkgs": "nixpkgs_980",
"nixpkgs-windows": "nixpkgs-windows_14"
"nixpkgs-windows": "nixpkgs-windows_24"
},
"locked": {
"lastModified": 1786399295,
@@ -89536,7 +89546,7 @@
"logos-nix_981": {
"inputs": {
"nixpkgs": "nixpkgs_981",
"nixpkgs-windows": "nixpkgs-windows_15"
"nixpkgs-windows": "nixpkgs-windows_25"
},
"locked": {
"lastModified": 1786399295,
@@ -89591,7 +89601,7 @@
"logos-nix_984": {
"inputs": {
"nixpkgs": "nixpkgs_984",
"nixpkgs-windows": "nixpkgs-windows_16"
"nixpkgs-windows": "nixpkgs-windows_26"
},
"locked": {
"lastModified": 1786399295,
@@ -89610,7 +89620,7 @@
"logos-nix_985": {
"inputs": {
"nixpkgs": "nixpkgs_985",
"nixpkgs-windows": "nixpkgs-windows_17"
"nixpkgs-windows": "nixpkgs-windows_27"
},
"locked": {
"lastModified": 1786399295,
@@ -89629,7 +89639,7 @@
"logos-nix_986": {
"inputs": {
"nixpkgs": "nixpkgs_986",
"nixpkgs-windows": "nixpkgs-windows_18"
"nixpkgs-windows": "nixpkgs-windows_28"
},
"locked": {
"lastModified": 1786399295,
@@ -89648,7 +89658,7 @@
"logos-nix_987": {
"inputs": {
"nixpkgs": "nixpkgs_987",
"nixpkgs-windows": "nixpkgs-windows_19"
"nixpkgs-windows": "nixpkgs-windows_29"
},
"locked": {
"lastModified": 1786399295,
@@ -89667,7 +89677,7 @@
"logos-nix_988": {
"inputs": {
"nixpkgs": "nixpkgs_988",
"nixpkgs-windows": "nixpkgs-windows_20"
"nixpkgs-windows": "nixpkgs-windows_30"
},
"locked": {
"lastModified": 1786399295,
@@ -105722,11 +105732,11 @@
]
},
"locked": {
"lastModified": 1781532038,
"narHash": "sha256-C6SXkO2efD7rNK5iIbxqLZKtOOsUVSNxw2m3DVEhijE=",
"lastModified": 1786468080,
"narHash": "sha256-fXHooA0wgvuncMDPBsrnXC2cgf0VKW57wCwwH7B8gRI=",
"owner": "logos-co",
"repo": "logos-plugin-qt",
"rev": "f33f264abb6d628cc78cf926f9f33c7cc8252151",
"rev": "b8b9b4141f0110d1da88d4b4f187b9656d48fbc8",
"type": "github"
},
"original": {
@@ -107858,11 +107868,11 @@
]
},
"locked": {
"lastModified": 1781532038,
"narHash": "sha256-C6SXkO2efD7rNK5iIbxqLZKtOOsUVSNxw2m3DVEhijE=",
"lastModified": 1786468080,
"narHash": "sha256-fXHooA0wgvuncMDPBsrnXC2cgf0VKW57wCwwH7B8gRI=",
"owner": "logos-co",
"repo": "logos-plugin-qt",
"rev": "f33f264abb6d628cc78cf926f9f33c7cc8252151",
"rev": "b8b9b4141f0110d1da88d4b4f187b9656d48fbc8",
"type": "github"
},
"original": {
@@ -109993,11 +110003,11 @@
]
},
"locked": {
"lastModified": 1786381943,
"narHash": "sha256-/EsIMBCNs3BvssVP/lImCFjEar++cAtusMT7KSoe4VU=",
"lastModified": 1786452265,
"narHash": "sha256-yEBT+tG6jD26tcVixy3OYGO+gYmcyzrwR5uZVGqVTOs=",
"owner": "logos-co",
"repo": "logos-protocol",
"rev": "0183e8c26aa3e98ed3603258f2f640385bf61954",
"rev": "03842db5c1496f5ab29ba35ac0016b6b1f5048ba",
"type": "github"
},
"original": {
@@ -111452,11 +111462,11 @@
]
},
"locked": {
"lastModified": 1782490644,
"narHash": "sha256-IRHFIBa/+a10tVNEexm6DDZ0JPF8YQgUbxWoNwIytt4=",
"lastModified": 1786452265,
"narHash": "sha256-yEBT+tG6jD26tcVixy3OYGO+gYmcyzrwR5uZVGqVTOs=",
"owner": "logos-co",
"repo": "logos-protocol",
"rev": "d5d58e7e230768505c683150f651358612abd442",
"rev": "03842db5c1496f5ab29ba35ac0016b6b1f5048ba",
"type": "github"
},
"original": {
@@ -111479,11 +111489,11 @@
]
},
"locked": {
"lastModified": 1786030193,
"narHash": "sha256-Z5rxmZBMJsNsUSb37ljbDMKrtrds9Enw5oPJcf8wbVU=",
"lastModified": 1786452265,
"narHash": "sha256-yEBT+tG6jD26tcVixy3OYGO+gYmcyzrwR5uZVGqVTOs=",
"owner": "logos-co",
"repo": "logos-protocol",
"rev": "0f26ffdeef18fb9582dc0a95e2bee482464da40d",
"rev": "03842db5c1496f5ab29ba35ac0016b6b1f5048ba",
"type": "github"
},
"original": {
@@ -115925,11 +115935,11 @@
]
},
"locked": {
"lastModified": 1786160726,
"narHash": "sha256-u7J0endCh5+D+uQEgOg+quYNXJXpbCcqQChaNhwd7n4=",
"lastModified": 1786469121,
"narHash": "sha256-8sM8d98dquIUOcu9YRlAnpRZ5zcTqWCZii5AyhCwi1k=",
"owner": "logos-co",
"repo": "logos-qt-sdk",
"rev": "60d7a08313d66cae129faa104749c562106b4c72",
"rev": "c6be61d0ba3f1c06c1a5ff7ad6d42f3eda254877",
"type": "github"
},
"original": {
@@ -117206,11 +117216,11 @@
]
},
"locked": {
"lastModified": 1782493580,
"narHash": "sha256-n0WnqIAejwE/GVb3qSFTiVVwOp/dyjSgfhPGg15YgOA=",
"lastModified": 1786469121,
"narHash": "sha256-8sM8d98dquIUOcu9YRlAnpRZ5zcTqWCZii5AyhCwi1k=",
"owner": "logos-co",
"repo": "logos-qt-sdk",
"rev": "6c9a0de131fee6a0fa2edff924913bb76caf0316",
"rev": "c6be61d0ba3f1c06c1a5ff7ad6d42f3eda254877",
"type": "github"
},
"original": {
@@ -128071,11 +128081,11 @@
]
},
"locked": {
"lastModified": 1786113978,
"narHash": "sha256-X3qVyaMqk3pA7rEdr9YIrvRNHjUBO75eNQXghBwDs5w=",
"lastModified": 1786470548,
"narHash": "sha256-Kvdtm2Hc0Riaa7TeSkO3v/iqDd55dX+gB1wzw0KwCWs=",
"owner": "logos-co",
"repo": "logos-view-module-runtime",
"rev": "2b178f74ad1266d54113960aba22fbfa0370f9ea",
"rev": "471dd56640331cd7b1a94c0623d419002da383a6",
"type": "github"
},
"original": {
@@ -161316,6 +161326,70 @@
"type": "github"
}
},
"nixpkgs-windows_46": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_47": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_48": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_49": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_5": {
"locked": {
"lastModified": 1782723713,
@@ -161332,6 +161406,102 @@
"type": "github"
}
},
"nixpkgs-windows_50": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_51": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_52": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_53": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_54": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_55": {
"locked": {
"lastModified": 1782723713,
"narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8",
"type": "github"
}
},
"nixpkgs-windows_6": {
"locked": {
"lastModified": 1782723713,
+1 -3
View File
@@ -17,9 +17,7 @@
"build": [],
"runtime": [
"qt6.qtdeclarative",
"zstd",
"krb5",
"abseil-cpp"
"zstd"
]
},
"external_libraries": [
+45 -4
View File
@@ -970,10 +970,50 @@ void PackageManagerBackend::installOnePackage(const QVariantMap& dl,
qDebug() << "Download complete for" << packageName << "at" << filePath << "— installing...";
LogosModules logos(m_logosAPI);
QPointer<PackageManagerBackend> self(this);
logos.package_manager.installPluginAsync(filePath, false,
[self, packageName, onDone](QVariantMap installResult) {
// Installing was left on the default 20 s IPC deadline while DOWNLOADING
// gets five minutes -- backwards. Downloading is network-bound and can be
// retried; installing is disk-bound over a payload package_manager reads,
// gunzips and tar-parses three times and Merkle-hashes twice, then extracts
// and copies. Blowing the deadline does not cancel any of that: the files
// still install and only the reply is abandoned, so the user is told the
// install failed when it did not.
constexpr int kInstallIpcDeadlineMs = 5 * 60 * 1000;
// `installPluginAsyncResult`, not `installPluginAsync`: the plain async
// wrapper hands the callback a bare QVariantMap, so a transport failure is
// indistinguishable from a provider that legitimately returned an empty
// one. AsyncResult<T> carries the value and the error together.
logos.package_manager.installPluginAsyncResult(filePath, false,
[self, packageName, onDone](logos::AsyncResult<QVariantMap> r) {
if (!self) return;
bool success = !installResult.value("path").toString().isEmpty()
// Transport-level failure FIRST. On a timeout `value` is
// default-constructed, so reading it as an install verdict is the
// exact mistake this channel removes -- and the honest thing to
// tell the user is that the deadline expired, not that the install
// failed: blowing it cancels nothing that was already underway.
if (!r.ok()) {
qWarning() << "installPlugin failed for" << packageName << ":"
<< QString::fromStdString(r.error.code)
<< QString::fromStdString(r.error.message);
const QString detail = QString::fromStdString(r.error.message);
if (onDone) onDone(false,
QStringLiteral("%1 — the package may in fact be installed; check before retrying")
.arg(detail.isEmpty()
? QStringLiteral("package_manager did not reply")
: detail));
return;
}
const QVariantMap installResult = r.value;
// Success is the ABSENCE of an "error" key, not the presence of a
// non-empty "path". package_manager reports a QML-only ui_qml
// package's install location as the installed module directory,
// but an older package_manager left "path" empty for those (they
// ship no backend library) — which this read as failure and drew a
// red RETRY on a package that had installed perfectly.
// `contains("path")` is still required so that a malformed reply
// does not read as success: every real installPlugin reply carries
// the key, even when its value is empty. (A DROPPED reply no longer
// reaches here at all — r.ok() catches it above.)
bool success = installResult.contains("path")
&& !installResult.contains("error");
QString err = installResult.value("error").toString();
if (onDone) onDone(success, success
@@ -981,7 +1021,8 @@ void PackageManagerBackend::installOnePackage(const QVariantMap& dl,
: (err.isEmpty()
? QStringLiteral("Installation failed")
: err));
});
},
Timeout(kInstallIpcDeadlineMs));
}
void PackageManagerBackend::installNextPackage(const QVariantList& results, int index, int completed, int totalPackages)