desktop: macOS baut ohne volles Xcode (BUILD-01, management#22)
Upstream setzt mac.icon auf build/icon.icon - das Icon-Composer-Bundle von macOS 26. Dessen Verarbeitung ruft actool auf, das es nur mit dem vollen Xcode gibt (~10 GB, App-Store-Login). Mit blossen CommandLineTools scheitert damit JEDER macOS-Build: ⨯ Failed to check actool version. Is Xcode 26 or higher installed? Die bisherige Diagnose in management#22 war falsch: Dort stand, nur das DMG-Target brauche actool und das ZIP baue problemlos. Tatsaechlich trifft es alle macOS-Targets, weil mac.icon fuer alle gilt - das ZIP scheitert genauso. Der dort empfohlene Ausweg (DMG per hdiutil bauen) haette ein Problem geloest, das gar nicht am DMG lag. Loesung: mac.icon und dmg.badgeIcon auf das klassische build/icon.icns. Damit baut electron-builder ZIP UND DMG selbst, inklusive Blockmap - verifiziert am 2026-08-06, beide Artefakte in Release v0.4.1. Umgesetzt als Variantenoption statt als Aenderung an Upstreams Defaults: Die Werte stehen in unserem axion1337/build.json, electron-builder.ts wird nur additiv um zwei optionale Schluessel erweitert - dieselbe Machart wie das bereits vorhandene linux.deb.name. Ein Upstream-Merge erzeugt an der mac.icon-Zeile damit keinen Konflikt. Preis: kein macOS-26-Icon-Rendering. Ohne Xcode gaebe es ohnehin keinen Build. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj
This commit is contained in:
co-authored by
Claude Fable 5
parent
6f1dfedde2
commit
6f33c7277a
@@ -3,5 +3,7 @@
|
||||
"name": "threadnet-desktop",
|
||||
"productName": "ThreadNet",
|
||||
"description": "ThreadNet — powered by Element",
|
||||
"protocols": ["io.element.desktop", "element"]
|
||||
"protocols": ["io.element.desktop", "element"],
|
||||
"mac.icon": "build/icon.icns",
|
||||
"dmg.badgeIcon": "build/icon.icns"
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@ interface Variant extends Metadata {
|
||||
"appId": string;
|
||||
"linux.executableName"?: string;
|
||||
"linux.deb.name"?: string;
|
||||
"mac.icon"?: string;
|
||||
"dmg.badgeIcon"?: string;
|
||||
"protocols": string[];
|
||||
}
|
||||
|
||||
@@ -202,6 +204,31 @@ if (variant["linux.deb.name"]) {
|
||||
config.deb.fpm.push("--name", variant["linux.deb.name"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* ThreadNet-Fork: Icon-Pfade fuer macOS ueberschreibbar machen.
|
||||
*
|
||||
* Upstream setzt `mac.icon` auf das Icon-Composer-Bundle `build/icon.icon`
|
||||
* (macOS 26). Dessen Verarbeitung ruft `actool` auf, das es nur mit dem vollen
|
||||
* Xcode gibt (~10 GB, App-Store-Login) - mit blossen CommandLineTools scheitert
|
||||
* damit JEDER macOS-Build, nicht nur das DMG:
|
||||
*
|
||||
* ⨯ Failed to check actool version. Is Xcode 26 or higher installed?
|
||||
*
|
||||
* Ueber die Variante laesst sich stattdessen das klassische `.icns` waehlen.
|
||||
* Bewusst hier als Variantenoption statt als Aenderung an den Defaults oben:
|
||||
* So bleibt Upstreams Wert unberuehrt und ein Upstream-Merge erzeugt keinen
|
||||
* Konflikt an dieser Zeile.
|
||||
*
|
||||
* Preis: kein macOS-26-Icon-Rendering. Ohne Xcode gaebe es ohnehin keinen Build.
|
||||
*/
|
||||
if (variant["mac.icon"]) {
|
||||
config.mac.icon = variant["mac.icon"];
|
||||
}
|
||||
|
||||
if (variant["dmg.badgeIcon"]) {
|
||||
config.dmg.badgeIcon = variant["dmg.badgeIcon"];
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow specifying windows signing cert via env vars
|
||||
* @param {string} process.env.ED_SIGNTOOL_SUBJECT_NAME
|
||||
|
||||
Reference in New Issue
Block a user