build(windows): cible windows-release, pour ne plus enchaîner à la main
La production des artefacts Windows tenait en quatre gestes manuels — make windows, make helper, ISCC, puis le renommage — dont seul le dernier laissait une trace visible s'il était oublié. L'ordre y était contraint sans que rien ne le dise : wgsecure.iss source dist\wgsecure.exe et dist\wgsecure-helper.exe sous leurs noms bruts, si bien que renommer avant de compiler l'installeur l'aurait fait échouer, ou lui aurait fait embarquer les binaires de la version précédente. La cible fixe cet ordre et ajoute la vérification qui manquait : la version vit dans ce fichier et dans wgsecure.iss, sans rien pour les synchroniser. Bumper l'un sans l'autre produisait un installeur au mauvais numéro, que publish ne retrouvait pas. Le contrôle est un prérequis et non une étape de la recette : placé dans celle-ci, il n'aurait averti qu'après plusieurs minutes de PyInstaller d'un défaut connu dès la première seconde. La sortie d'Inno Setup part dans un journal recraché en cas d'échec seulement : l'afficher noyait le résultat sous les avertissements wow64 de Wine, la jeter aurait rendu toute panne muette. Outillage uniquement : aucun changement de comportement de l'application, donc pas d'incrément de version. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,7 @@ PI_OPTS := \
|
||||
--hidden-import cryptography.hazmat.primitives.asymmetric.x25519 \
|
||||
--collect-submodules PyQt6
|
||||
|
||||
.PHONY: all linux windows helper installer-deps release publish version changelog install install-gnome uninstall-gnome run run-admin icon reset-password setup-sudoers check-privileges clean clean-all help venv
|
||||
.PHONY: all linux windows helper windows-release check-windows-release installer-deps release publish version changelog install install-gnome uninstall-gnome run run-admin icon reset-password setup-sudoers check-privileges clean clean-all help venv
|
||||
|
||||
# ── Cible par défaut ────────────────────────────────────────────────────────
|
||||
all: linux
|
||||
@@ -187,6 +187,48 @@ release: linux
|
||||
@mv $(DIST)/$(APP) $(DIST)/$(APP)-$(VERSION)-linux-x86_64
|
||||
@echo " 📦 Release → $(DIST)/$(APP)-$(VERSION)-linux-x86_64"
|
||||
|
||||
# ── Chaîne Windows complète ───────────────────────────────────────────────────
|
||||
# Compile l'exe, le service, construit l'installeur, puis renomme le tout avec
|
||||
# la version — dans cet ordre : wgsecure.iss source `dist\wgsecure.exe` et
|
||||
# `dist\wgsecure-helper.exe` sous leurs noms bruts, renommer avant de compiler
|
||||
# l'installeur le ferait échouer (ou, pire, embarquer les binaires de la
|
||||
# version précédente).
|
||||
#
|
||||
# La version vit à deux endroits — ce fichier et wgsecure.iss — et rien ne les
|
||||
# synchronise : la garde ci-dessous refuse de produire un installeur dont le
|
||||
# numéro contredirait celui de la release.
|
||||
# Sortie d'ISCC journalisée plutôt qu'affichée : Wine y mêle ses propres
|
||||
# avertissements (wow64), sans intérêt quand tout se passe bien. En cas
|
||||
# d'échec le journal est recraché, sinon la raison serait perdue.
|
||||
ISCC_LOG := /tmp/wgsecure-iscc.log
|
||||
ISCC := $(HOME)/.wine/drive_c/Program Files (x86)/Inno Setup 6/ISCC.exe
|
||||
ISS_VERSION = $(shell sed -n 's/^#define MyAppVersion "\(.*\)"/\1/p' wgsecure.iss)
|
||||
|
||||
# Vérifications d'abord, compilations ensuite : placées dans la recette de
|
||||
# windows-release, elles n'auraient averti qu'après plusieurs minutes de
|
||||
# PyInstaller, pour un défaut connu dès la première seconde.
|
||||
check-windows-release:
|
||||
@test "$(ISS_VERSION)" = "$(VERSION)" \
|
||||
|| (echo " ❌ Version incohérente : Makefile $(VERSION), wgsecure.iss $(ISS_VERSION)"; \
|
||||
echo " → Alignez #define MyAppVersion dans wgsecure.iss"; exit 1)
|
||||
@test -f "$(ISCC)" \
|
||||
|| (echo " ❌ Inno Setup introuvable ($(ISCC))"; \
|
||||
echo " → Installez Inno Setup 6 dans Wine."; exit 1)
|
||||
|
||||
windows-release: check-windows-release installer-deps windows helper
|
||||
@echo ""
|
||||
@echo " 📦 Construction de l'installeur Windows…"
|
||||
@wine "$(ISCC)" wgsecure.iss > $(ISCC_LOG) 2>&1 \
|
||||
|| (echo " ❌ Échec de la compilation Inno Setup :"; \
|
||||
tail -20 $(ISCC_LOG); exit 1)
|
||||
@mv $(DIST)/$(APP).exe $(DIST)/$(APP)-$(VERSION)-windows-x86_64.exe
|
||||
@mv $(DIST)/$(APP)-helper.exe $(DIST)/$(APP)-helper-$(VERSION).exe
|
||||
@echo ""
|
||||
@echo " ✅ Windows → $(DIST)/$(APP)-$(VERSION)-windows-x86_64.exe"
|
||||
@echo " ✅ Service → $(DIST)/$(APP)-helper-$(VERSION).exe"
|
||||
@echo " ✅ Setup → $(DIST)/$(APP)-$(VERSION)-setup.exe"
|
||||
@echo ""
|
||||
|
||||
# ── Publication de la release sur Gitea ───────────────────────────────────────
|
||||
# Rebuild l'artefact Linux (fraîcheur garantie avec VERSION), joint aussi les
|
||||
# artefacts Windows présents dans dist/ s'ils ont déjà été produits pour cette
|
||||
@@ -351,6 +393,7 @@ help:
|
||||
@echo " ║ make helper Service Windows (Wine) ║"
|
||||
@echo " ║ make installer-deps Prérequis wgsecure.iss ║"
|
||||
@echo " ║ make release Linux + nommage release ║"
|
||||
@echo " ║ make windows-release Windows + exe + setup ║"
|
||||
@echo " ║ make publish Tague + publie sur Gitea ║"
|
||||
@echo " ║ make version Affiche la version ║"
|
||||
@echo " ║ make changelog Dernière entrée changelog║"
|
||||
|
||||
Reference in New Issue
Block a user