🇩🇪 German | 🇬🇧 English | 🇪🇸 Spanish | 🇫🇷 French | 🇮🇹 Italian
Makefile générique pour l'installation des plugins de script Lua et Shell et des fichiers associés pour Neutrino
- Generisches Makefile zum Installieren von Lua- und Shell-Skript-Plugins und zugehöriger Dateien für Neutrino
Dieses Makefile
wurde entwickelt, um die Installation, Deinstallation und Verwaltung von Lua- u. Shell-Skripten und zusätzlichen Dateien für die Neutrino-Umgebung nativ oder innerhalb eines Buildsystems zu ermöglichen. Es bietet verschiedene Anpassungsmöglichkeiten, die es flexibel und in unterschiedlichen Projekten wiederverwendbar machen.
Um Nutzungsinformationen anzuzeigen, verwende:
make help
Um dein Skript und die zugehörigen Dateien zu installieren, verwende:
make install SCRIPT_NAME=<name> [options]
Um die installierten Dateien zu deinstallieren, verwende:
make uninstall SCRIPT_NAME=<name> [options]
Hinweis: Das Ziel
uninstall
ist obligatorisch vorhanden und eignet sich gut für lokale Tests, um sicherzustellen, dass installierte Dateien einfach entfernt werden können.
Um sicherzustellen, dass alle erforderlichen Dateien vorhanden sind, verwende:
make check SCRIPT_NAME=<name>
Optionen können als Umgebungsvariablen oder in Makefile.local
festgelegt werden, um das Verhalten des Makefile
s zu steuern. Die Optionen können direkt beim Aufruf des Makefile
s übergeben werden oder als Umgebungsvariablen gesetzt werden, die für den gesamten Shell-Kontext gelten.
Beispielsweise kann SCRIPT_NAME
entweder beim Aufruf des Befehls oder vorher gesetzt werden:
export SCRIPT_NAME=my-script
make install
oder in einer Befehlszeile:
make install SCRIPT_NAME=my-script
Hier sind die unterstützten Optionen:
-
SCRIPT_NAME
(erforderlich): Basisname des zu installierenden Ursprungsskripts. Beispiel:make install SCRIPT_NAME=my-script
-
PROGRAM_PREFIX
(optional): Fügt allen installierten Dateien ein Präfix hinzu. -
PROGRAM_SUFFIX
(optional): Fügt allen installierten Dateien ein Suffix hinzu. -
TARGET_PROGRAM_NAME
(optional): Gibt den vollständigen Namen für das installierte Programm an. Dies kann besonders nützlich sein, wenn eine spezifische Benennung für die installierten Dateien erforderlich ist. -
INSTALLDIR
(optional): Verzeichnis, in das die Dateien installiert werden sollen. Standard ist/usr/share/tuxbox/neutrino/plugins
. -
SOURCE_DIR
(optional): Verzeichnis, in dem sich die Quelldateien befinden. Standard ist das Verzeichnis, welches dasMakefile
enthält. -
EXTRAFILES
(optional): Zusätzliche zu installierende Dateien. Diese können einen vollständigen Pfad haben, was ermöglicht, dass sie auch aus anderen Speicherorten stammen.
- Lua-Skripte (
*.lua
): Mit Ausführberechtigungen (755
) installiert. - Shell-Skripte (
*.sh
): Mit Ausführberechtigungen (755
) installiert. - Konfigurationsdateien (
*.cfg
): Mit Leseberechtigungen (644
) installiert. - Datenbankdateien (
*.db
): Mit Leseberechtigungen (644
) installiert. - Bilder (
*.png
): Mit Leseberechtigungen (644
) installiert. - Shell-Skripte (
*.sh
): Mit Ausführberechtigungen (755
) installiert. - Andere Dateien: Mit Leseberechtigungen (
644
) installiert.
all
(Standard): Führt dasinstall
-Ziel aus.help
: Zeigt Hilfeinformationen an, die alle Optionen und Nutzungsbeispiele auflisten.check
: Überprüft das Vorhandensein der erforderlichen Dateien vor der Installation.install
: Installiert das Skript und die zugehörigen Dateien in das angegebene Verzeichnis.uninstall
: Deinstalliert alle Dateien, die mit dem angegebenenSCRIPT_NAME
verbunden sind.clean
: Platzhalter für sämtliche Aufräumarbeiten (gibt derzeit "Nothing to clean." aus).
-
Einfache Installation
make install SCRIPT_NAME=my-script
-
Installation mit Präfix und Suffix
make install SCRIPT_NAME=my-script PROGRAM_PREFIX=test- PROGRAM_SUFFIX=-v1
-
Deinstallation
make uninstall SCRIPT_NAME=my-script
-
Überprüfen der Dateien vor der Installation
make check SCRIPT_NAME=my-script
-
Hilfe
make help
Du kannst eine Makefile.local
-Datei im selben Verzeichnis wie dieses Makefile
erstellen, um Standardwerte für die verwendeten Variablen festzulegen. Dies ist besonders nützlich für häufig verwendete Skripte oder benutzerdefinierte Aufgaben.
# Defaults for my-script
SCRIPT_NAME := my-script
PROGRAM_PREFIX := enhanced-
PROGRAM_SUFFIX := -v2
INSTALLDIR := /custom/install/directory
EXTRAFILES := /path/to/extra/file1 /path/to/extra/file2
# Defaults for my-script
SCRIPT_NAME := my-script
TARGET_PROGRAM_NAME := enhanced-my-script-v2
INSTALLDIR := /custom/install/directory
EXTRAFILES := /path/to/extra/file1 /path/to/extra/file2
Bei den oben genannten Beispielen würden die installierten Scripte und cfg
's den gleichen Namensraum haben:
enhanced-my-script-v2.*
Diese Variante würde die Ausgabe komplett ändern:
# Defaults for my-script
SCRIPT_NAME := my-script
TARGET_PROGRAM_NAME := enhanced-script-v2
INSTALLDIR := /custom/install/directory
EXTRAFILES := /path/to/extra/file1 /path/to/extra/file2
Damit würden die installierten Scripte und cfg
's diesen Namensraum haben:
enhanced-script-v2.*
Wenn du dieses Makefile
in ein Yocto/OE Buildsystem einbauen möchtest, kannst du ein entsprechendes Rezept erstellen, das dieses Makefile
verwendet, um die Skripte zu installieren. Angenommen, dein Quellcode besteht aus einer Lua-Datei und einer Konfigurationsdatei, und dieses Makefile
befindet sich zusammen mit den Quelldateien in einem Git-Repository, könnte das Rezept folgendermaßen aussehen:
my-script.bb
SUMMARY = "Lua Script for Neutrino"
DESCRIPTION = "Lua script and configuration for updating something in Neutrino."
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://${WORKDIR}/Makefile;md5=<checksum>"
SRC_URI = "git://your.git.repo/something.git;branch=main;protocol=https"
SRCREV = "<commit_hash>"
S = "${WORKDIR}/git"
# Abhängigkeiten für die Buildumgebung
DEPENDS = "lua-native"
do_install() {
export SCRIPT_NAME=my-script
oe_runmake install SCRIPT_NAME=my-script INSTALLDIR=${D}${bindir}
}
FILES_${PN} = "${bindir}/my-script.lua ${bindir}/my-script.cfg"
In diesem Rezept werden die grundlegenden Variablen wie SRC_URI
und SRCREV
gesetzt, um die Quelle aus dem Git-Repository zu beziehen. Die do_install()
-Funktion führt den Installationsschritt aus und nutzt die Parameter aus dem Makefile
. In diesem Beispiel wird SCRIPT_NAME
gesetzt, um das Zielskript zu spezifizieren.
Das folgende Beispiel zeigt, wie das Makefile
in ein selbsterstelltes Buildsystem oder ein Crosstool-NG-basiertes System integriert werden könnte. Dabei wird das Git-Repository geklont, das Makefile
verwendet und anschließend aufgeräumt.
#!/bin/sh
# Beispiel-Skript für die Integration des Makefiles in ein selbsterstelltes Buildsystem
# Variablen setzen
REPO_URL="https://your.git.repo/something.git"
SCRIPT_NAME="my-script"
INSTALL_DIR="/opt/custom/install/path"
BUILD_DIR="/tmp/build"
# Erforderliche Schritte ausführen
echo "Cloning repository..."
git clone $REPO_URL $BUILD_DIR
echo "Entering build directory..."
cd $BUILD_DIR
echo "Running make install..."
make install SCRIPT_NAME=$SCRIPT_NAME INSTALLDIR=$INSTALL_DIR
echo "Cleaning up..."
rm -rf $BUILD_DIR
echo "Installation complete."
Dieses Skript klont das Git-Repository in ein temporäres Verzeichnis (/tmp/build
), führt den Installationsbefehl aus und bereinigt anschließend den temporären Ordner. Auf diese Weise kann das Makefile
einfach in jedes benutzerdefinierte Buildsystem integriert werden.
Das Makefile
arbeitet, indem es eine Reihe von vordefinierten Zielen und Optionen verwendet, die die Installation und Verwaltung von Skripten und Dateien vereinfachen. Hier ist eine detaillierte Übersicht, wie das Makefile
funktioniert:
1. Skriptname festlegen (SCRIPT_NAME)
:
Der SCRIPT_NAME
definiert den Basisnamen des Skripts, das installiert werden soll. Diese Angabe ist in der Regel immer der Basisname des Scripts so wie es im jeweiligen Repository oder Archiv vorliegt. Dies ist eine zwingende Angabe, die vom Benutzer gemacht werden muss, damit das Makefile
weiß, welche Dateien es verarbeiten soll. Der SCRIPT_NAME
wird verwendet, um verschiedene Dateitypen zu identifizieren, die zu installieren sind, wie z.B. Lua-Skripte (.lua)
, Konfigurationsdateien (.cfg)
, und Shell-Skripte (.sh)
. Das Makefile
verwendet SCRIPT_NAME
als Basis, um automatisch alle relevanten Dateien zu finden, die mit dem Namen beginnen.
2. Dateisuche und Installation:
Mithilfe der Dateisuche (wildcard) identifiziert das Makefile
alle relevanten Dateien, die den vorgegebenen Namenskonventionen entsprechen. Dies beinhaltet:
-
Lua-Skripte
(*.lua)
-
Konfigurationsdateien
(*.cfg)
-
Shell-Skripte
(*.sh)
-
Bilder
(*.png)
-
Datenbankdateien
(*.db)
-
Zusätzliche Dateien
(EXTRAFILES)
Die gefundenen Dateien werden dann in das Zielverzeichnis (INSTALLDIR)
kopiert. Dabei sorgt das Makefile
dafür, dass jede Datei mit den passenden Berechtigungen installiert wird:
-
Ausführbare Dateien wie
.lua
- und.sh
-Skripte erhalten 755-Berechtigungen (Ausführung erlaubt). -
Andere Dateien wie
.cfg-
,.png-
und.db-
Dateien erhalten 644-Berechtigungen (nur Lesen und Schreiben für den Besitzer).
3. Präfix, Suffix und Zielname:
Um mögliche Konflikte bei der Installation zu vermeiden, können die installierten Dateien mit einem Präfix (PROGRAM_PREFIX)
und/oder Suffix (PROGRAM_SUFFIX)
versehen werden. Dies ermöglicht es, beispielsweise mehrere Versionen oder Varianten eines Skripts zu installieren, ohne dass Namenskonflikte entstehen. Der optionale TARGET_PROGRAM_NAME
erlaubt die vollständige Angabe eines alternativen Namens für die installierten Dateien.
Wichtig!:
SCRIPT_NAME
bleibt unberührt und muss unverändert bleiben!
4. Optionen und lokale Konfiguration:
Der Benutzer hat noch die Möglichkeit, Variablen über Umgebungsvariablen oder eine separate Makefile.local
-Datei zu definieren. Auf diese Weise können darin häufig verwendete Optionen und Pfade gespeichert und wiederverwendet werden. Dies ist besonders nützlich für die Verwendung in Buildsystemen oder Nutzung benutzerdefinierter Quellverzeichnisse von wo man noch weitere Dateien für die Installation einbinden kann, die z.B. nicht dem Namensraum von SCRIPT_NAME
entsprechen.
5. Ziele im Makefile:
Das Makefile
bietet verschiedene Ziele:
-
install
: Installiert die Skripte und zugehörigen Dateien im angegebenen Verzeichnis. -
uninstall
: Entfernt die installierten Dateien basierend auf demSCRIPT_NAME
. Dies ist besonders nützlich, um sicherzustellen, dass keine unerwünschten Dateien in der Umgebung verbleiben, vor allem während der Entwicklung und Tests. -
check
: Überprüft, ob alle erforderlichen Dateien für die Installation vorhanden sind. -
help
: Listet alle verfügbaren Befehle und Optionen zur Unterstützung des Benutzers auf. -
clean
: Ein Platzhalter, der derzeit keine Funktion hat, jedoch für zukünftige Aufräumarbeiten vorgesehen ist.
6. Kontrolle und Fehlerbehebung:
Bevor Dateien installiert werden, stellt das check-Ziel sicher, dass alle erforderlichen Dateien vorhanden sind. Wenn Dateien fehlen oder SCRIPT_NAME
nicht angegeben wurde, wird eine klare Fehlermeldung ausgegeben. Dies macht es einfach, häufige Fehler zu erkennen und zu beheben.
7. Deinstallation:
Die Deinstallation (uninstall)
ist nützlich, um sicherzustellen, dass während der Entwicklung oder nach einer fehlerhaften Installation keine Rückstände im Installationsverzeichnis verbleiben. Das Makefile
verwendet den SCRIPT_NAME
und entfernt alle Dateien, die bei der Installation hinzugefügt wurden. Berücksichtig werden auch (PROGRAM_PREFIX)
und/oder Suffix (PROGRAM_SUFFIX)
und auch TARGET_PROGRAM_NAME
, falls diese übergeben wurden.
Wichtig!: Wenn
(PROGRAM_PREFIX)
und/oder Suffix(PROGRAM_SUFFIX)
und/oder auchTARGET_PROGRAM_NAME
fürìnstall
verwendet wurden, müssen diese auch beiuninstall
übergeben werden, damit evtl. installerte Dateien mit geändertem Namensraum gefunden werden können.
Zusammenfassung
Dieses Makefile
ermöglicht eine strukturierte, konsistente und wiederholbare Methode, um Skripte und zugehörige Dateien zu installieren, zu verwalten und zu deinstallieren, sei es lokal für Entwicklungszwecke oder in einem automatisierten Buildsystem.
- Wenn
SCRIPT_NAME
nicht angegeben wird, bricht dasMakefile
mit einer Fehlermeldung ab. - Die Ziele
install
unduninstall
benötigenSCRIPT_NAME
, um die zu verarbeitenden Dateien zu identifizieren. - Das Standard-Installationsverzeichnis ist
/usr/share/tuxbox/neutrino/plugins
, kann jedoch überschrieben werden. - Die Ziele
help
undcheck
können ohne Angabe vonSCRIPT_NAME
verwendet werden. - Die Optionen
SCRIPT_NAME
,PROGRAM_PREFIX
,PROGRAM_SUFFIX
,INSTALLDIR
,SOURCE_DIR
undEXTRAFILES
können als Umgebungsvariablen gesetzt werden, um das Verhalten desMakefile
s zu steuern.
- Fehler "No Files Found": Stelle sicher, dass
SCRIPT_NAME
korrekt gesetzt ist und dem Basisnamen deiner Skriptdateien inSOURCE_DIR
entspricht. - Warnung "No Files Installed": Dies bedeutet, dass keine der Dateien gefunden wurden. Überprüfe
SCRIPT_NAME
undSOURCE_DIR
, um sicherzustellen, dass sie korrekt gesetzt sind und die Dateien existieren.
Dieses Makefile
ist ein eigenständiges Projekt und unter MIT
lizensiert und darf unabhängig von der Projektlizenz verwendet werden, in dem es verwendet wird!
Mit diesem Makefile
hast du eine flexible Möglichkeit, deine Lua-Skripte und zugehörigen Dateien für Neutrino zu installieren, zu deinstallieren und zu verwalten. Fühle dich frei, das Makefile
für andere Zwecke anzupassen und jegliche Verbesserungen zu teilen, die du vornimmst!