Argyll sidecar fetch & binary resolution (#3) #35

Merged
gronod merged 1 commits from feat/3-argyll-resolution into milestone/m1-foundation 2026-09-08 19:01:02 +01:00
Owner

Implements issue #3 (M1).

  • scripts/fetch-argyll.sh — POSIX sh + curl + tar (no Node). Queries $ARGYLL_SERVER_URL/api/v1/repos/$ARGYLL_REPO/releases/(tags/$TAG|latest), picks the *_macOS_universal_bin.tgz asset by browser_download_url suffix, extracts Argyll_V*/bin, chmod 0755, xattr -dr com.apple.quarantine. Env overrides: ARGYLL_SERVER_URL, ARGYLL_REPO, ARGYLL_RELEASE_TAG, GITEA_TOKEN. Marker binary instlist. Verified live: pulled v3.5.0-ICCery1.8 → 51 universal (x86_64+arm64) tools in Vendor/Argyll/macos-universal/.
  • BinaryResolver: argyll_binary_dir override (existence-gated) → bundled Argyll/<platform>/, macos-universal preferred when the instlist marker exists, else macos-arm64/macos-x86_64; missing → constructed path returned so spawn surfaces process:error (v1 semantic).
  • Vendored tracked resources under Resources/Argyll/ (folder reference, structure preserved): mocks/{chartread,colprof,profcheck}.mock, reference_gamuts/sRGB.gam — from ICCery v1.
  • Post-build phase rsyncs Vendor/Argyll/Contents/Resources/Argyll/.
  • AppDelegate defers termination (terminateLater) until ProcessManager.shared.killAll() has signaled children — #147/#149.

Verified: bundle contains Argyll/macos-universal/instlist, Argyll/mocks/, Argyll/reference_gamuts/; 29/29 tests pass.

Closes #3

Implements issue #3 (M1). - `scripts/fetch-argyll.sh` — POSIX sh + curl + tar (no Node). Queries `$ARGYLL_SERVER_URL/api/v1/repos/$ARGYLL_REPO/releases/(tags/$TAG|latest)`, picks the `*_macOS_universal_bin.tgz` asset by `browser_download_url` suffix, extracts `Argyll_V*/bin`, `chmod 0755`, `xattr -dr com.apple.quarantine`. Env overrides: `ARGYLL_SERVER_URL`, `ARGYLL_REPO`, `ARGYLL_RELEASE_TAG`, `GITEA_TOKEN`. Marker binary `instlist`. **Verified live**: pulled `v3.5.0-ICCery1.8` → 51 universal (x86_64+arm64) tools in `Vendor/Argyll/macos-universal/`. - `BinaryResolver`: `argyll_binary_dir` override (existence-gated) → bundled `Argyll/<platform>/`, `macos-universal` preferred when the `instlist` marker exists, else `macos-arm64`/`macos-x86_64`; missing → constructed path returned so spawn surfaces `process:error` (v1 semantic). - Vendored tracked resources under `Resources/Argyll/` (folder reference, structure preserved): `mocks/{chartread,colprof,profcheck}.mock`, `reference_gamuts/sRGB.gam` — from ICCery v1. - Post-build phase rsyncs `Vendor/Argyll/` → `Contents/Resources/Argyll/`. - `AppDelegate` defers termination (`terminateLater`) until `ProcessManager.shared.killAll()` has signaled children — #147/#149. Verified: bundle contains `Argyll/macos-universal/instlist`, `Argyll/mocks/`, `Argyll/reference_gamuts/`; 29/29 tests pass. Closes #3
gronod added the
Priority
High
2
Project/ICCery-v2Feature/Backend
labels 2026-09-08 19:00:54 +01:00
gronod added 1 commit 2026-09-08 19:00:54 +01:00
- scripts/fetch-argyll.sh: POSIX sh port of fetch-argyll.mjs; queries
  the Gitea release API for the *_macOS_universal_bin.tgz asset,
  extracts Argyll_V*/bin, chmod+x, strips quarantine xattr; honors
  ARGYLL_SERVER_URL / ARGYLL_REPO / ARGYLL_RELEASE_TAG / GITEA_TOKEN.
  Verified end-to-end: 51 universal tools from v3.5.0-ICCery1.8.
- BinaryResolver: settings argyll_binary_dir override (existence-gated)
  → bundled Argyll/<platform>/, macos-universal preferred when instlist
  marker present, else macos-arm64/macos-x86_64; constructed path
  returned even when absent (spawn surfaces process:error). Mock and
  reference-gamut helpers.
- Vendored tracked resources: mocks/{chartread,colprof,profcheck}.mock
  + reference_gamuts/sRGB.gam from ICCery v1, copied as a folder
  reference so the Argyll/ subtree structure survives into the bundle.
- Build phase rsyncs Vendor/Argyll/ → Contents/Resources/Argyll/.
- AppDelegate: killAll via terminateLater so children are signaled
  before teardown (#147/#149).
- 6 resolver tests + fetch script smoke-verified against real release.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
gronod merged commit 6b122b2cbc into milestone/m1-foundation 2026-09-08 19:01:02 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#35