Release 0.13.1: retry stapler validate on Apple network errors

0.13.0's macOS release job failed twice at `stapler validate` right after a successful notarization
and staple: the CloudKit ticket lookup lost its connection (NSURLErrorDomain -1005, Error 68). Retry
the validate up to four times with a growing pause; a missing or bad ticket still fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas
2026-10-18 00:00:06 -04:00
co-authored by Claude Opus 5.5
parent 5e6810655f
commit 904f0fe522
3 changed files with 46 additions and 31 deletions
Generated
+28 -28
View File
@@ -4512,7 +4512,7 @@ dependencies = [
[[package]]
name = "vectorcraft"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"arboard",
"block2 0.6.2",
@@ -4547,7 +4547,7 @@ dependencies = [
[[package]]
name = "vectorcraft-affinity"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"crc32fast",
"flate2",
@@ -4558,7 +4558,7 @@ dependencies = [
[[package]]
name = "vectorcraft-brush"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"kurbo 0.13.1",
"serde",
@@ -4570,7 +4570,7 @@ dependencies = [
[[package]]
name = "vectorcraft-cad"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"image",
"kurbo 0.13.1",
@@ -4586,7 +4586,7 @@ dependencies = [
[[package]]
name = "vectorcraft-cli"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"log",
"objc2-core-foundation",
@@ -4608,7 +4608,7 @@ dependencies = [
[[package]]
name = "vectorcraft-color"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"kurbo 0.13.1",
"moxcms",
@@ -4620,7 +4620,7 @@ dependencies = [
[[package]]
name = "vectorcraft-doc"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"hayro-ccitt",
"image",
@@ -4638,7 +4638,7 @@ dependencies = [
[[package]]
name = "vectorcraft-effects"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"image",
"kurbo 0.13.1",
@@ -4654,7 +4654,7 @@ dependencies = [
[[package]]
name = "vectorcraft-engine"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"craft-docpath",
"crc32fast",
@@ -4692,7 +4692,7 @@ dependencies = [
[[package]]
name = "vectorcraft-eps"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"fax",
"flate2",
@@ -4715,7 +4715,7 @@ dependencies = [
[[package]]
name = "vectorcraft-format"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"flate2",
"proptest",
@@ -4730,7 +4730,7 @@ dependencies = [
[[package]]
name = "vectorcraft-geom"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"kurbo 0.13.1",
"proptest",
@@ -4742,7 +4742,7 @@ dependencies = [
[[package]]
name = "vectorcraft-mcp"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"image",
"log",
@@ -4761,7 +4761,7 @@ dependencies = [
[[package]]
name = "vectorcraft-metafile"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"image",
"kurbo 0.13.1",
@@ -4775,7 +4775,7 @@ dependencies = [
[[package]]
name = "vectorcraft-pathops"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"kurbo 0.13.1",
"linesweeper",
@@ -4787,7 +4787,7 @@ dependencies = [
[[package]]
name = "vectorcraft-pdf"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"aes",
"craft-pdf",
@@ -4817,7 +4817,7 @@ dependencies = [
[[package]]
name = "vectorcraft-plugins"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"serde",
"serde_json",
@@ -4831,7 +4831,7 @@ dependencies = [
[[package]]
name = "vectorcraft-render"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"flate2",
"gif",
@@ -4858,14 +4858,14 @@ dependencies = [
[[package]]
name = "vectorcraft-scriptcheck"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"proptest",
]
[[package]]
name = "vectorcraft-svg"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"craft-docpath",
"flate2",
@@ -4890,7 +4890,7 @@ dependencies = [
[[package]]
name = "vectorcraft-testkit"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"fax",
"image",
@@ -4908,7 +4908,7 @@ dependencies = [
[[package]]
name = "vectorcraft-text"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"harfrust 0.13.3",
"icu_segmenter",
@@ -4928,7 +4928,7 @@ dependencies = [
[[package]]
name = "vectorcraft-three-d"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"vectorcraft-geom",
"vectorcraft-pathops",
@@ -4936,7 +4936,7 @@ dependencies = [
[[package]]
name = "vectorcraft-tools"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"image",
"kurbo 0.13.1",
@@ -4952,7 +4952,7 @@ dependencies = [
[[package]]
name = "vectorcraft-trace"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"image",
"kurbo 0.13.1",
@@ -4964,7 +4964,7 @@ dependencies = [
[[package]]
name = "vectorcraft-ui-egui"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"craft-ui",
"egui",
@@ -4998,7 +4998,7 @@ dependencies = [
[[package]]
name = "vectorcraft-web"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"eframe",
"egui",
@@ -6108,7 +6108,7 @@ checksum = "9440ea3e5aeabb0ac63af70daf835274065238cdd0cec83418f417eae38bacee"
[[package]]
name = "xtask"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"serde_json",
]
+1 -1
View File
@@ -4,7 +4,7 @@ members = ["crates/*", "apps/*", "xtask"]
default-members = ["crates/*", "apps/vectorcraft", "apps/vectorcraft-cli", "xtask"]
[workspace.package]
version = "0.13.0"
version = "0.13.1"
edition = "2024"
license = "MIT OR Apache-2.0"
rust-version = "1.95"
+17 -2
View File
@@ -97,6 +97,21 @@ notarize() {
fi
}
# `stapler validate` looks the ticket up in Apple's CloudKit, and a dropped connection there
# (NSURLErrorDomain -1005, "Error 68") fails it although the staple worked. Retry with a pause; a
# missing or bad ticket still fails every try.
validate_stapled() {
local try
for try in 1 2 3 4; do
xcrun stapler validate "$1" && return 0
[ "$try" = 4 ] && break
echo "stapler validate failed (try $try of 4); retrying in $((try * 20)) s" >&2
sleep $((try * 20))
done
echo "error: stapler validate $(basename "$1") failed 4 times" >&2
exit 1
}
# ---- VectorCraft.app ----------------------------------------------------------------------------
echo "==> assembling $APP"
mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources"
@@ -121,7 +136,7 @@ if [ "$NOTARIZE" = 1 ]; then
ditto -c -k --keepParent "$APP" "$WORK/VectorCraft-notarize.zip"
notarize "$WORK/VectorCraft-notarize.zip"
xcrun stapler staple "$APP"
xcrun stapler validate "$APP"
validate_stapled "$APP"
spctl --assess --type execute -vvv "$APP"
fi
@@ -171,7 +186,7 @@ hdiutil_retry detach detach "$MOUNT" >/dev/null
if [ "$NOTARIZE" = 1 ]; then
notarize "$DMG"
xcrun stapler staple "$DMG"
xcrun stapler validate "$DMG"
validate_stapled "$DMG"
spctl --assess --type open --context context:primary-signature -vvv "$DMG"
fi