Hi,
Siehe https://github.com/MarkusEh/vdr-plugin-live/issues/66 .
Also, ich bin da für Änderungen im Makefile offen. Mir ist nur nicht so richtig klar, was ich ändern muss. Was meint ihr?
~ Markus
Hi,
Siehe https://github.com/MarkusEh/vdr-plugin-live/issues/66 .
Also, ich bin da für Änderungen im Makefile offen. Mir ist nur nicht so richtig klar, was ich ändern muss. Was meint ihr?
~ Markus
Eine wirklich gute Idee habe ich auch nicht. Man könnte aber eine Variable SUDO ins Makefile einbringen, die standardmäßig leer ist, bei Aufruf des Makefiles per SUDO=sudo make install aber erlauben würde, die Installation mit Abfrage zur Erweiterung der Zugriffsrechte auszustatten, beispielsweise:
Oder alternativ (wenn man darauf verzichten kann, sudo noch Parameter mitgeben zu können):
$(SOINST): $(SOFILE)
$(call PRETTY_PRINT,"IN" $<)
$(Q)install -D $< $@ || $(Q)sudo install -D $< $@
Per /etc/sudoers.d könnte das Ganze wohl auch automatisch ablaufen. Dennoch sollte man bedenken, dass die Verwendung von sudo immer auch Sicherheitsprobleme aufwerfen könnte.
Ich denke, man müsste den Git-Fehler abfangen:
--- version-util.orig
+++ version-util
@@ -118,8 +118,18 @@
fi
if [ -d .git ]; then
- checkVers gitVers
- exit 0
+ git branch > /dev/null
+ if [ $? -eq 0 ]; then
+ checkVers gitVers
+ exit 0
+ else
+ if [ -e ${VERS_FILE} ]; then
+ echo "GitError. Keeping existing $VERS_FILE!"
+ exit 0
+ else
+ echo "GitError!"
+ fi
+ fi
fi
checkVers emptyVers
Display More
Oder so ähnlich ...
Ich würde gen_version_suffix.h komplett weglassen.
Die Datei generiert nur umständlich diese eine Information:
Dafür dann in das Makefile
VERS_B := $(shell git branch | grep '^*' | sed -e's/^* //')
VERS_H := $(shell git show --pretty=format:"%h_%ci" HEAD | head -1 | tr -d ' \-:')
VERSION_SUFFIX := _git_$(VERS_B)_$(VERS_H)
und zu den DEFINES hinzufügen
Der Ordner build_util könnte dann auch entfallen. Und im Makefile alles von VERSIONSUFFIX löschen.
Gute Idee. Auf die Unterstützung der "alten" Versionierungssysteme (in diesem Fall CVS) kann man wohl mittlerweile verzichten.
Ich fände es noch gut, wenn in VERSION_SUFFIX vermerkt würde, ob der Commit "clean" ist oder ob modifizierte Dateien vorliegen:
VERS_B := $(shell git branch | grep '^*' | sed -e's/^* //')
VERS_H := $(shell git show --pretty=format:"%h_%ci" HEAD | head -1 | tr -d ' \-:')
VERS_P := $(shell git status -uno --porcelain | grep -qc . && echo "_patched")
VERSION_SUFFIX := _git_$(VERS_B)_$(VERS_H)$(VERS_P)
Ansonsten kann man in About ("?") nicht unterscheiden, ob man einen genuinen oder einen gepatchten Commit gebaut hat und gerade testet. Ich füge einen solchen About-Screenshot oft meinen Rückmeldungen bei, um deutlich zu machen, dass ein Problem schon im offiziellen Repository und nicht in lokalen Anpassungen zu suchen ist.
Zusatzfrage, was passiert eigentlich, wenn jmd kein 'git' command im Pfad hat?
Das Problem ändert sich durch die Makefile Änderung ja nicht, aber wenn man die Stelle anschaut..
… oder gar nicht in einen Git-Repository baut, weil das bspw. nur in einem expandierten Tarball passiert. Auch version-util hat das auch nicht sauber unterschieden.
Wie wäre es also damit:
ifneq ($(shell which git),)
ifeq ($(shell test -d .git || echo void),)
VERS_B := $(shell git branch | grep '^*' | sed -e's/^* //')
VERS_H := $(shell git show --pretty=format:"%h_%ci" HEAD | head -1 | tr -d ' \-:')
VERS_P := $(shell git status -uno --porcelain | grep -qc . && echo "_patched")
VERSION_SUFFIX := _git_$(VERS_B)_$(VERS_H)$(VERS_P)
$(info VERSION_SUFFIX = $(VERSION_SUFFIX))
endif
endif
Der erste Aufruf prüft, ob Git verfügbar ist, der zweite, ob das Makefile innerhalb eine Repositories ausgeführt wird.
Ansatz ist gut, aber wenn kein git vorhanden ist, fehlt einfach der zweite Teil still und leise. Vllt. wäre ein 'non-git' oder etwas ähnliches besser.
Mal abwarten, was Markus zu der Idee als solches denkt.
> Mal abwarten, was Markus zu der Idee als solches denkt.
Ich bin glücklich, wenn es bei bei Euch problemlos baut. git sollten wir unterstützen, andere Versionierungssysteme sind optional und müssen nicht unterstützt werden.
Im git ist ein Update, basierend auf Euren Vorschlägen. Bitte testen.
Don’t have an account yet? Register yourself now and be a part of our community!