Update
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
## ──────────────────────────────────────────────
|
||||
## WGSecure (WGS) — Makefile
|
||||
## Compilation Linux & Windows via PyInstaller
|
||||
## ──────────────────────────────────────────────
|
||||
|
||||
APP := wgsecure
|
||||
VERSION := 0.4.0
|
||||
PYTHON := python3
|
||||
SRC := main.py
|
||||
DIST := dist
|
||||
BUILD := build
|
||||
ICON := /tmp/wgsecure_icon_build.png
|
||||
|
||||
# Options PyInstaller communes aux deux plateformes
|
||||
PI_OPTS := \
|
||||
--noconfirm \
|
||||
--clean \
|
||||
--name $(APP) \
|
||||
--hidden-import pyotp \
|
||||
--hidden-import qrcode \
|
||||
--hidden-import qrcode.image.pil \
|
||||
--hidden-import PIL \
|
||||
--hidden-import PIL.Image \
|
||||
--hidden-import cryptography \
|
||||
--hidden-import cryptography.hazmat.primitives.asymmetric.x25519 \
|
||||
--collect-submodules PyQt6
|
||||
|
||||
.PHONY: all linux windows release install run run-admin icon clean help
|
||||
|
||||
# ── Cible par défaut ────────────────────────────────────────────────────────
|
||||
all: linux
|
||||
|
||||
# ── Génération de l'icône PNG (utilisée par PyInstaller) ────────────────────
|
||||
icon:
|
||||
@$(PYTHON) -c "\
|
||||
import sys; sys.path.insert(0,'.');\
|
||||
from PyQt6.QtWidgets import QApplication; app=QApplication(sys.argv);\
|
||||
from app.ui.icons import icon_app;\
|
||||
pix=icon_app().pixmap(256,256); pix.save('$(ICON)','PNG');\
|
||||
print(' Icône générée →', '$(ICON)')" 2>/dev/null
|
||||
@test -f $(ICON) || (echo " ❌ Génération icône échouée"; exit 1)
|
||||
|
||||
# ── Binaire Linux ────────────────────────────────────────────────────────────
|
||||
linux: icon
|
||||
@echo ""
|
||||
@echo " 🐧 Compilation Linux (PyInstaller onefile)…"
|
||||
@echo ""
|
||||
$(PYTHON) -m PyInstaller $(PI_OPTS) \
|
||||
--onefile \
|
||||
--icon=$(ICON) \
|
||||
$(SRC)
|
||||
@echo ""
|
||||
@echo " ✅ Binaire Linux → $(DIST)/$(APP)"
|
||||
@echo ""
|
||||
|
||||
# ── Binaire Windows (via Wine + Python Windows) ──────────────────────────────
|
||||
windows: icon
|
||||
@echo ""
|
||||
@echo " 🪟 Compilation Windows (Wine + PyInstaller)…"
|
||||
@echo ""
|
||||
@which wine > /dev/null 2>&1 \
|
||||
|| (echo " ❌ Wine non installé → sudo apt install wine"; exit 1)
|
||||
@wine python -m PyInstaller $(PI_OPTS) \
|
||||
--onefile \
|
||||
--windowed \
|
||||
--icon=$(ICON) \
|
||||
$(SRC) \
|
||||
|| (echo ""; \
|
||||
echo " ❌ Échec : Python Windows introuvable dans Wine."; \
|
||||
echo " → Installez-le avec : make setup-wine"; \
|
||||
echo ""; exit 1)
|
||||
@echo ""
|
||||
@echo " ✅ Binaire Windows → $(DIST)/$(APP).exe"
|
||||
@echo ""
|
||||
|
||||
# ── Installation de Python dans Wine ─────────────────────────────────────────
|
||||
setup-wine:
|
||||
@echo " 📦 Installation Python + pip dans Wine…"
|
||||
winetricks python3
|
||||
wine pip install -r requirements.txt
|
||||
wine pip install pyinstaller
|
||||
|
||||
# ── Release (Linux renommé avec version) ─────────────────────────────────────
|
||||
release: clean linux
|
||||
@mv $(DIST)/$(APP) $(DIST)/$(APP)-$(VERSION)-linux-x86_64
|
||||
@echo " 📦 Release → $(DIST)/$(APP)-$(VERSION)-linux-x86_64"
|
||||
|
||||
# ── Dépendances Python ────────────────────────────────────────────────────────
|
||||
install:
|
||||
$(PYTHON) -m pip install -r requirements.txt
|
||||
$(PYTHON) -m pip install pyinstaller
|
||||
@echo " ✅ Dépendances installées"
|
||||
|
||||
# ── Lancer l'application ─────────────────────────────────────────────────────
|
||||
run:
|
||||
DISPLAY=:0 $(PYTHON) $(SRC)
|
||||
|
||||
run-admin:
|
||||
DISPLAY=:0 $(PYTHON) $(SRC) --admin
|
||||
|
||||
# ── Nettoyage ────────────────────────────────────────────────────────────────
|
||||
clean:
|
||||
@echo " 🧹 Nettoyage…"
|
||||
@rm -rf $(BUILD) $(DIST) *.spec
|
||||
@find . -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null; true
|
||||
@find . -name "*.pyc" -delete 2>/dev/null; true
|
||||
@echo " ✅ Artefacts supprimés"
|
||||
|
||||
# ── Aide ─────────────────────────────────────────────────────────────────────
|
||||
help:
|
||||
@echo ""
|
||||
@echo " ╔════════════════════════════════════════════╗"
|
||||
@echo " ║ 🛡️ WGSecure v$(VERSION) — Makefile ║"
|
||||
@echo " ╠════════════════════════════════════════════╣"
|
||||
@echo " ║ make install Installe les dépendances ║"
|
||||
@echo " ║ make linux Binaire Linux (onefile) ║"
|
||||
@echo " ║ make windows Binaire Windows (Wine) ║"
|
||||
@echo " ║ make release Linux + nommage release ║"
|
||||
@echo " ║ make setup-wine Python Windows dans Wine ║"
|
||||
@echo " ║ make run Lance l'application ║"
|
||||
@echo " ║ make run-admin Lance en mode admin ║"
|
||||
@echo " ║ make clean Supprime les artefacts ║"
|
||||
@echo " ╚════════════════════════════════════════════╝"
|
||||
@echo ""
|
||||
Reference in New Issue
Block a user