Initial
This commit is contained in:
79
Makefile
Normal file
79
Makefile
Normal file
@@ -0,0 +1,79 @@
|
||||
PYTHON ?= python3
|
||||
PREFIX ?= $(HOME)/.local
|
||||
BINDIR := $(PREFIX)/bin
|
||||
SHAREDIR := $(PREFIX)/share/assembly-player
|
||||
APPDIR := $(PREFIX)/share/applications
|
||||
ICONDIR := $(PREFIX)/share/icons/hicolor
|
||||
BUILDDIR := build
|
||||
|
||||
APT_PACKAGES := python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-webkit2-4.1 \
|
||||
gir1.2-ayatanaappindicator3-0.1 gir1.2-notify-0.7 gir1.2-rsvg-2.0
|
||||
|
||||
.PHONY: help deps check-deps icons install uninstall run test clean autostart-enable autostart-disable
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
help: ## Afficher cette aide
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
||||
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
check-deps: ## Vérifier que les bibliothèques système requises sont installées
|
||||
@$(PYTHON) -c "import gi; gi.require_version('Gtk','3.0'); gi.require_version('WebKit2','4.1'); from gi.repository import Gtk, WebKit2" \
|
||||
|| { echo "❌ GTK3 / WebKit2GTK (4.1) introuvables. Lancez 'make deps'."; exit 1; }
|
||||
@echo "✅ Dépendances Python/GTK présentes."
|
||||
|
||||
deps: ## Installer les paquets système requis (Debian/Ubuntu, sudo)
|
||||
@command -v apt-get >/dev/null || { echo "❌ apt-get introuvable ; installez manuellement : $(APT_PACKAGES)"; exit 1; }
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y $(APT_PACKAGES)
|
||||
|
||||
icons: ## Générer les icônes PNG (hicolor) à partir du SVG source
|
||||
@$(PYTHON) -c "import gi; gi.require_version('Rsvg','2.0')" \
|
||||
|| { echo "❌ gir1.2-rsvg-2.0 introuvable. Lancez 'make deps'."; exit 1; }
|
||||
$(PYTHON) tools/gen_icons.py $(BUILDDIR)/icons
|
||||
|
||||
install: check-deps icons ## Installer l'application pour l'utilisateur courant (PREFIX=$(PREFIX))
|
||||
install -d $(BINDIR) $(SHAREDIR) $(APPDIR)
|
||||
cp -r assembly_player $(SHAREDIR)/
|
||||
sed -e 's#__PYTHONPATH__#$(SHAREDIR)#' packaging/assembly-player.in > $(BUILDDIR)/assembly-player
|
||||
install -m 755 $(BUILDDIR)/assembly-player $(BINDIR)/assembly-player
|
||||
install -m 644 packaging/assembly-player.desktop $(APPDIR)/assembly-player.desktop
|
||||
@for size in 16 22 24 32 48 64 128 256 512; do \
|
||||
install -d $(ICONDIR)/$${size}x$${size}/apps; \
|
||||
install -m 644 $(BUILDDIR)/icons/$${size}x$${size}/apps/assembly-player.png $(ICONDIR)/$${size}x$${size}/apps/assembly-player.png; \
|
||||
done
|
||||
install -d $(ICONDIR)/scalable/apps
|
||||
install -m 644 $(BUILDDIR)/icons/scalable/apps/assembly-player.svg $(ICONDIR)/scalable/apps/assembly-player.svg
|
||||
@command -v update-desktop-database >/dev/null && update-desktop-database $(APPDIR) 2>/dev/null || true
|
||||
@command -v gtk-update-icon-cache >/dev/null && gtk-update-icon-cache -f -t $(ICONDIR) 2>/dev/null || true
|
||||
@echo "✅ Installé. Lancez 'assembly-player' (vérifiez que $(BINDIR) est dans votre PATH)."
|
||||
|
||||
uninstall: ## Désinstaller l'application (PREFIX=$(PREFIX))
|
||||
rm -f $(BINDIR)/assembly-player
|
||||
rm -rf $(SHAREDIR)
|
||||
rm -f $(APPDIR)/assembly-player.desktop
|
||||
@for size in 16 22 24 32 48 64 128 256 512; do \
|
||||
rm -f $(ICONDIR)/$${size}x$${size}/apps/assembly-player.png; \
|
||||
done
|
||||
rm -f $(ICONDIR)/scalable/apps/assembly-player.svg
|
||||
rm -f $(HOME)/.config/autostart/assembly-player.desktop
|
||||
@echo "✅ Désinstallé."
|
||||
|
||||
run: check-deps ## Lancer l'application depuis les sources (développement)
|
||||
$(PYTHON) -m assembly_player
|
||||
|
||||
test: ## Vérifier que les modules Python compilent
|
||||
$(PYTHON) -m py_compile assembly_player/*.py tools/gen_icons.py
|
||||
@echo "✅ Compilation OK."
|
||||
|
||||
autostart-enable: ## Activer le lancement automatique au démarrage du PC
|
||||
@$(PYTHON) -c "from assembly_player import config; config.set_autostart(True)"
|
||||
@echo "✅ Démarrage automatique activé."
|
||||
|
||||
autostart-disable: ## Désactiver le lancement automatique au démarrage du PC
|
||||
@$(PYTHON) -c "from assembly_player import config; config.set_autostart(False)"
|
||||
@echo "✅ Démarrage automatique désactivé."
|
||||
|
||||
clean: ## Supprimer les fichiers générés
|
||||
rm -rf $(BUILDDIR)
|
||||
find . -name '__pycache__' -type d -exec rm -rf {} +
|
||||
Reference in New Issue
Block a user