Files
FTStore/manager/Makefile
T
Felitendo 305c431530 fix(ci): bring back the dynamic island download progress
The island has been dead since June. The two iOS apps in this repo shared one
Xcode build directory: the Manager is a fork of the app, so both build a
project, a scheme and a target of the same name out of a project file carrying
the same internal ids, and Xcode's build database is keyed on exactly those.
Only the source path differs, which is not enough to tell them apart.

The Manager has no Live Activity target, so its build treated the app's
extension as a leftover file and swept it, while the app's build picked up the
Manager's object files. What shipped was an app whose embedded extension came
from some older build and no longer matched the code around it, so the island
had nothing to render.

It only ever happened on the self-hosted runner. The hosted ones handed every
job a fresh machine, so the directory was always empty and every build was a
clean one.

Each product now derives its build directory from its own folder, so no two can
share one. Both release workflows also assert the extension is inside the IPA
before publishing, because an app missing it installs and runs perfectly and
says nothing about what is wrong.
2026-08-05 22:20:15 +02:00

63 lines
1.8 KiB
Makefile

NAME := FTStore
SCHEME := FTStore
PLATFORMS := iphoneos maccatalyst
# Derived data is keyed on the product directory, never on $(NAME) alone: this
# tree is a fork of ios/, down to the pbxproj GUIDs Xcode's build database is
# keyed on, so a shared $(TMPDIR)/FTStore made the two builds indistinguishable
# to it. See the longer note in ios/Makefile — that side is the one that lost
# its Live Activity extension to this build's stale-file sweep.
TMP := $(TMPDIR)/$(NAME)-$(notdir $(CURDIR))
CERT_JSON_URL := https://backloop.dev/pack.json
.PHONY: all clean deps $(PLATFORMS)
all: $(PLATFORMS)
clean:
rm -rf $(TMP)
rm -rf packages
rm -rf Payload
deps:
rm -rf deps || true
mkdir -p deps
curl -fsSL "$(CERT_JSON_URL)" -o cert.json
jq -r '.cert' cert.json > deps/server.crt
jq -r '.key1, .key2' cert.json > deps/server.pem
jq -r '.info.domains.commonName' cert.json > deps/commonName.txt
$(PLATFORMS): deps
rm -rf _build
@if [ "$@" = "iphoneos" ]; then \
DEST="generic/platform=iOS"; \
else \
DEST="generic/platform=macOS,variant=Mac Catalyst"; \
fi; \
xcodebuild \
-project FTStore.xcodeproj \
-scheme $(SCHEME) \
-configuration Release \
-destination "$$DEST" \
-derivedDataPath $(TMP)/$@ \
-skipPackagePluginValidation \
CODE_SIGNING_ALLOWED=NO \
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO
mkdir -p _build/Payload
cp -R _build/Applications/*.app _build/Payload/FTStore.app
chmod -R 0755 _build/Payload/FTStore.app
codesign --force --sign - --timestamp=none _build/Payload/FTStore.app
cp deps/* _build/Payload/FTStore.app/ || true
mkdir -p packages
@if [ "$@" = "iphoneos" ]; then \
ditto -c -k --sequesterRsrc --keepParent _build/Payload "packages/FTStore-Manager.ipa"; \
else \
ditto -c -k --sequesterRsrc --keepParent _build/Payload/FTStore.app "packages/FTStore_Catalyst.zip"; \
fi