Binárky pro Windows a macOS #9

Merged
david-spacil merged 2 commits from agents/claude/binarky-win-mac into main 2026-08-22 13:46:56 +02:00
Owner

Doplňuje k linuxové binárce ještě Windows a macOS (Intel i Apple Silicon).

Proč přes GitHub

PyInstaller neumí křížovou kompilaci — binárku pro každý systém musí postavit ten systém. Vlastní runner pro Windows a hlavně pro macOS by byl nepoměr, tak si tyhle stroje půjčujeme od GitHub Actions.

GitHub je jen půjčená dílna, ne druhý domov projektu. Repozitář se tam z Gitey zrcadlí, hotové soubory se posílají zpátky na zdejší release přes Gitea API a stránka s releasy zůstává jedna — tahle. Linux se tam schválně nestaví: doma to jde proti glibc 2.17 a je to zároveň pojistka, kdyby GitHub vypadl.

Kde Co staví
vlastní runner kostky-linux-x86_64
GitHub Actions kostky-windows-x86_64.exe, kostky-macos-x86_64, kostky-macos-arm64

Ke každé se jako dosud věší i .sha256.

Dvě opravy, bez kterých by to bylo poloviční

Adresy. Rozhraní se hledala linuxovým ioctl. Na Windows chybí fcntl, na macOS to číslo znamená něco jiného — obojí propadlo až na zálohu přes hostname, která na macOS vrátí jedinou adresu. Tabule by tam nabídla jednu volbu, přesně to, co jsme minule opravovali. Přibyla mezizáloha přes ifconfig; běží jen tam, kde ioctl nic nenašel, takže na Linuxu se neplatí nic. Parsování je zvlášť jako čistá funkce a je otestované proti skutečnému výstupu z macOS.

Databáze. Z binárky mířila do XDG adresáře na všech systémech, takže na Windows do C:\Users\…\.local\share\. Teď podle systému: LOCALAPPDATA, Library/Application Support, XDG.

Co to bude chtít ručně

Sám to nespustím, tohle je na tobě:

  1. založit veřejné repo na GitHubu,
  2. v Gitee Nastavení → Zrcadlení → Push mirror na něj s GitHub PATem,
  3. vyrobit Gitea token s write:repository a uložit ho na GitHubu jako secret GITEA_TOKEN.

Do té doby se v repu nic nezmění — .github/workflows/ je pro Giteu mrtvý soubor.

Ověřeno

99 testů (+4). Předpoklady té zkoušky po stavbě jsem projel proti běžícímu serveru: / i styly vrací 200, /board obsahuje vnucenou adresu a databáze se založí tam, kam se řekne.

Nepodepsané binárky si Gatekeeper ani SmartScreen nenechají líbit — README teď říká, co s tím. Certifikáty za tisíce ročně by na počitadlo kostek byly nesmysl.

Doplňuje k linuxové binárce ještě Windows a macOS (Intel i Apple Silicon). ## Proč přes GitHub PyInstaller neumí křížovou kompilaci — binárku pro každý systém musí postavit ten systém. Vlastní runner pro Windows a hlavně pro macOS by byl nepoměr, tak si tyhle stroje půjčujeme od GitHub Actions. **GitHub je jen půjčená dílna, ne druhý domov projektu.** Repozitář se tam z Gitey zrcadlí, hotové soubory se posílají zpátky na zdejší release přes Gitea API a stránka s releasy zůstává jedna — tahle. Linux se tam schválně nestaví: doma to jde proti glibc 2.17 a je to zároveň pojistka, kdyby GitHub vypadl. | Kde | Co staví | |---|---| | vlastní runner | `kostky-linux-x86_64` | | GitHub Actions | `kostky-windows-x86_64.exe`, `kostky-macos-x86_64`, `kostky-macos-arm64` | Ke každé se jako dosud věší i `.sha256`. ## Dvě opravy, bez kterých by to bylo poloviční **Adresy.** Rozhraní se hledala linuxovým ioctl. Na Windows chybí `fcntl`, na macOS to číslo znamená něco jiného — obojí propadlo až na zálohu přes hostname, která na macOS vrátí jedinou adresu. Tabule by tam nabídla jednu volbu, přesně to, co jsme minule opravovali. Přibyla mezizáloha přes `ifconfig`; běží jen tam, kde ioctl nic nenašel, takže na Linuxu se neplatí nic. Parsování je zvlášť jako čistá funkce a je otestované proti skutečnému výstupu z macOS. **Databáze.** Z binárky mířila do XDG adresáře na všech systémech, takže na Windows do `C:\Users\…\.local\share\`. Teď podle systému: `LOCALAPPDATA`, `Library/Application Support`, XDG. ## Co to bude chtít ručně Sám to nespustím, tohle je na tobě: 1. založit veřejné repo na GitHubu, 2. v Gitee **Nastavení → Zrcadlení → Push mirror** na něj s GitHub PATem, 3. vyrobit Gitea token s `write:repository` a uložit ho na GitHubu jako secret **`GITEA_TOKEN`**. Do té doby se v repu nic nezmění — `.github/workflows/` je pro Giteu mrtvý soubor. ## Ověřeno 99 testů (+4). Předpoklady té zkoušky po stavbě jsem projel proti běžícímu serveru: `/` i styly vrací 200, `/board` obsahuje vnucenou adresu a databáze se založí tam, kam se řekne. Nepodepsané binárky si Gatekeeper ani SmartScreen nenechají líbit — README teď říká, co s tím. Certifikáty za tisíce ročně by na počitadlo kostek byly nesmysl.
david-spacil added 2 commits 2026-08-22 13:14:36 +02:00
Než začneme rozdávat binárky pro macOS a Windows, musí se na nich chovat
rozumně to, co dosud počítalo s Linuxem.

Adresy rozhraní se hledaly linuxovým ioctl. Na Windows chybí fcntl, na
macOS to číslo znamená něco jiného, takže obojí propadlo až na poslední
zálohu přes hostname — a ta na macOS vrátí jednu adresu. Tabule by tam
nabídla jedinou volbu, přesně to, co jsme minule opravovali. Přibyla
mezizáloha přes ifconfig; spouští se jen tam, kde ioctl nic nenašel,
takže na Linuxu se neplatí nic. Parsování je zvlášť jako čistá funkce,
ať jde otestovat i bez macOS pod rukama.

Databáze z binárky mířila do XDG adresáře na všech systémech. Na Windows
by to znamenalo C:\Users\...\.local\share\, což tam nikdo nečeká. Teď se
volí podle systému: LOCALAPPDATA, Library/Application Support, XDG.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Binárky pro Windows a macOS přes GitHub Actions
binárka / linux (pull_request) Successful in 11s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 1s
testy / pytest (3.14) (pull_request) Successful in 0s
a7621bb01b
PyInstaller neumí křížovou kompilaci — binárku pro každý systém musí
postavit ten systém. Vlastní runner pro Windows a hlavně pro macOS by byl
nepoměr, tak si tyhle stroje půjčujeme od GitHub Actions.

GitHub je jen půjčená dílna, ne druhý domov projektu: repozitář se tam
z Gitey zrcadlí, hotové soubory se posílají zpátky na zdejší release přes
Gitea API a stránka s releasy zůstává jedna. Linux se tam schválně
nestaví; doma to jde proti glibc 2.17 a je to zároveň pojistka, kdyby
GitHub vypadl.

build.sh je společný pro všechny tři systémy, liší se jen tím, že Windows
dává spustitelné soubory venvu do Scripts/ místo bin/. Ořezání symbolů
zůstává jen Linuxu: na macOS by rozbilo podpis, který si PyInstaller sám
přidává a bez kterého se binárka na Apple Silicon vůbec nespustí.

Zkouška po stavbě je stejná jako u linuxové: nastartovat, stáhnout si
stránku i styly a ověřit, že se založila databáze.

Nepodepsané binárky si Gatekeeper ani SmartScreen nenechají líbit, tak je
v README napsané, co s tím — certifikáty za tisíce ročně by na počitadlo
kostek byly nesmysl.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
david-spacil merged commit 68a9f1d19f into main 2026-08-22 13:46:56 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: david-spacil/dice-counter#9