Run 31992 crashed the test host at launch: the dynamically-linked ICCeryCore package framework embedded in ICCery.app is unsigned, and dyld on macOS 12 requires every loaded dylib to carry at least an ad-hoc cdhash (mapped file has no cdhash, completely unsigned?). Run 32003 then showed that forcing the product .static fails on Xcode 14.2 — a static package product cannot be shared between the app and its hosted ICCeryCoreTests bundle.
Changes:
Packages/ICCeryCore/Package.swift — revert .static back to automatic linkage.
project.yml — DISABLE_LIBRARY_VALIDATION: YES on the ICCery target's Debug config only (belt-and-suspenders; Xcode already disables hardened runtime for ad-hoc signing).
.gitea/workflows/macos.yml — new Sign package product frameworks step between build-for-testing and the test steps that ad-hoc-signs every *_PackageProduct.framework in the derived-data products (app copy, xctest copy, PackageFrameworks source). Signing inside a build-script phase does not work: the embed copy step runs after script phases and strips signatures.
Verified locally on Xcode 16.2: build-for-testing + test-without-building launches the test host and all 339 ICCeryCoreTests pass. Release packaging unaffected — the package job builds only the app target (static link) and signs with Developer ID.
Closes #119.
Run 31992 crashed the test host at launch: the dynamically-linked `ICCeryCore` package framework embedded in `ICCery.app` is unsigned, and dyld on macOS 12 requires every loaded dylib to carry at least an ad-hoc cdhash (`mapped file has no cdhash, completely unsigned?`). Run 32003 then showed that forcing the product `.static` fails on Xcode 14.2 — a static package product cannot be shared between the app and its hosted `ICCeryCoreTests` bundle.
Changes:
- `Packages/ICCeryCore/Package.swift` — revert `.static` back to automatic linkage.
- `project.yml` — `DISABLE_LIBRARY_VALIDATION: YES` on the ICCery target's Debug config only (belt-and-suspenders; Xcode already disables hardened runtime for ad-hoc signing).
- `.gitea/workflows/macos.yml` — new `Sign package product frameworks` step between build-for-testing and the test steps that ad-hoc-signs every `*_PackageProduct.framework` in the derived-data products (app copy, xctest copy, PackageFrameworks source). Signing inside a build-script phase does not work: the embed copy step runs after script phases and strips signatures.
Verified locally on Xcode 16.2: `build-for-testing` + `test-without-building` launches the test host and all 339 `ICCeryCoreTests` pass. Release packaging unaffected — the package job builds only the app target (static link) and signs with Developer ID.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #119.
Run 31992 crashed the test host at launch: the dynamically-linked
ICCeryCorepackage framework embedded inICCery.appis unsigned, and dyld on macOS 12 requires every loaded dylib to carry at least an ad-hoc cdhash (mapped file has no cdhash, completely unsigned?). Run 32003 then showed that forcing the product.staticfails on Xcode 14.2 — a static package product cannot be shared between the app and its hostedICCeryCoreTestsbundle.Changes:
Packages/ICCeryCore/Package.swift— revert.staticback to automatic linkage.project.yml—DISABLE_LIBRARY_VALIDATION: YESon the ICCery target's Debug config only (belt-and-suspenders; Xcode already disables hardened runtime for ad-hoc signing)..gitea/workflows/macos.yml— newSign package product frameworksstep between build-for-testing and the test steps that ad-hoc-signs every*_PackageProduct.frameworkin the derived-data products (app copy, xctest copy, PackageFrameworks source). Signing inside a build-script phase does not work: the embed copy step runs after script phases and strips signatures.Verified locally on Xcode 16.2:
build-for-testing+test-without-buildinglaunches the test host and all 339ICCeryCoreTestspass. Release packaging unaffected — the package job builds only the app target (static link) and signs with Developer ID.