Skip to content

Fix the signing goals failing where no Dev.xcconfig exists - #634

Merged
hannesa2 merged 1 commit into
gitx:masterfrom
goneng:make-devxcconfig-a-prerequisite
Sep 13, 2026
Merged

hannesa2 merged 1 commit into
gitx:masterfrom
goneng:make-devxcconfig-a-prerequisite

Conversation

@goneng

@goneng goneng commented Sep 13, 2026

Copy link
Copy Markdown
Collaborator

A gitignored file cannot arrive with a clone or a worktree.

git worktree add and a fresh clone both start without Dev.xcconfig, so
make smoke-test and make dmg-signed archive ad-hoc and then fail in dyld
with a Team ID error that reads like a broken branch rather than a missing
local file. The Makefile already knows how to write that file; nothing ever
asked it to.

  • Have the archive want Dev.xcconfig when smoke-test or dmg-signed asked
    for it, which is early enough that the archive itself is signed with it
  • Leave the other goals alone: CI archives with a Developer ID certificate
    make-dev-xcconfig.sh does not look for, and dmg signs ad-hoc on purpose

The prerequisite hangs off archive rather than off smoke-test, since
smoke-test: app: archive - asking at the top would let the archive be built
ad-hoc first, and the hardened-runtime guard would then fail exactly as it does
today.

Test plan

  • In a fresh worktree with no Dev.xcconfig, make -n asks for it from
    smoke-test and dmg-signed, and not from archive, dmg, app, build
    or unit-test
  • In that dry run, scripts/make-dev-xcconfig.sh is the first line printed, so
    the config is written before xcodebuild archives
  • make Dev.xcconfig in that worktree wrote a valid config from the keychain
    certificate, and git status stays clean, since the file is ignored
  • make map still parses the Makefile

With no certificate at all the script exits with its own explanation of how to
get one, which is a better answer than the dyld error.

One wrinkle worth knowing: make map will not show the new edge, since the
prerequisite only exists while one of those two goals is being asked for.

@goneng
goneng force-pushed the make-devxcconfig-a-prerequisite branch from 1f67bbc to 298c10e Compare September 13, 2026 17:17
A gitignored file cannot arrive with a clone or a worktree.

`git worktree add` and a fresh clone both start without Dev.xcconfig, so
smoke-test and dmg-signed archive ad-hoc and then fail in dyld with a Team
ID error that reads like a broken branch. The Makefile already knows how to
write the file; nothing ever asked it to.

* Have the archive want Dev.xcconfig when smoke-test or dmg-signed asked
  for it, which is early enough that the archive is signed with it
* Leave the other goals alone: CI archives with a Developer ID certificate
  the script does not look for, and `dmg` signs ad-hoc on purpose
@goneng
goneng force-pushed the make-devxcconfig-a-prerequisite branch from 298c10e to 477f66c Compare September 13, 2026 19:51
@goneng
goneng marked this pull request as ready for review September 13, 2026 19:54
@hannesa2
hannesa2 merged commit 3596129 into gitx:master Sep 13, 2026
3 checks passed
@hannesa2 hannesa2 added the pipeline CI pipeline label Sep 13, 2026
@goneng
goneng deleted the make-devxcconfig-a-prerequisite branch September 13, 2026 20:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pipeline CI pipeline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants