patch erstellen: Probleme mit autotools?

G

Gast1

Hi
Ich versuche nun schon seit bestimmt 5 Stunden einen Patch zu erstellen, habe aber nur Probleme damit. Vielleicht kennt ja hier jemand ein paar gute Hilfen die über das Patchen einer simplen Textdatei hinaus gehen.

Ich habe zu dem Programm htop ein neues Feature hinzugefügt. Dazu musste ich einige Dateien bearbeiten, und 2 neue hinzufügen.
Um das Programm dann kompilieren zu können habe ich folgendes getan:
Code:
./autogen.sh
./configure
make
./htop
Funktionierte. Anschließend natürlich mit make distclean wieder alles sauber gemacht.

Ich weiß nicht ob's wichtig ist, aber das steht in autogen.sh drin:
Code:
aclocal -I m4
autoconf
autoheader
libtoolize --copy --force
automake --add-missing --copy


Nun wollte ich nur noch "mal eben" einen Patch erstellen, damit die Änderungen mit der Zeit bzw. dem nächsten Update nicht verloren gehen, und ich die Änderungen leicht auf anderen System.

Code:
diff -urN -x "*.m4" htop-1.0.2-orig htop-1.0.2 > htop-1.0.2-temperature.patch
$? war 1, aber der Patch schien in Ordnung zu sein. Ich vermute das Problem lag daran, dass die geänderten Dateien nun UTF-8 codiert waren, während die originalen ASCII verwendeten. (das ergab kurzes googlen und ein Check mit file)

Wenn ich nun aber den Patch in das htop auf meinem Linux From Scratch einspiele bekomme ich Probleme:
Code:
patch < ../htop-1.0.2-temperature.patch
./configure --prefix=/usr --mandir=/usr/share/man  --enable-unicode --enable-cgroup
make
#scripts/MakeHeader.py Header.c
#make: scripts/MakeHeader.py: Command not found
#make: *** [Header.h] Error 127
Das Command not found bezieht sich auf python, das Script selber ist vorhanden. Ohne dem Patch bekomme ich keine Probleme.

Was habe ich falsch gemacht? Wie geht man an so etwas ran? :think:
 
Zuletzt bearbeitet von einem Moderator:
G

Gast1

So, habe jetzt eine funktionierende Lösung, aber ist allerdings äußerst hässlich.
Zunächst habe ich ein Patch erstellt der die die Erwähnung des Python-Scripts aus den Makefiles entfernt.
Anschließend habe ich dann wie folgt den anderen Patch erstellt. (Hier wurde wieder der original-code, also mit den Python-aufrufen genommen)
Code:
cp -v ../*.c .

#CRT.c
#Header.c
#TemperatureMeter.c
#Meter.c

vim Makefile.am
# Die neue c-datei, und den Namen des später erzeugten Headers hinzufügen:
#>myhtopsources = … TemperatureMeter.c
#>myhtopheaders = … TemperatureMeter.h

./autogen.sh
./configure
make
# hier wird das Script aufgerufen und erzeugt die Header

make distclean
# distclean löscht die Header nicht, sodass ein erneutes aufrufen des Python-Scripts nicht nötig ist, was im Regelfall auch nicht getan wird.
cd ..

# Anschließend wird der Patch erzeugt. - Da ich eine neuere Version der Autotools habe nehme ich einiges an Ballast aus dem Patch, der dadurch verschuldet ist.
diff -urN -x ltmain.sh -x "config*" -x "*.m4" -x "autom4te.cache" -x "htop.1" htop-1.0.2-orig htop-1.0.2 > htop-1.0.2-temperature.patch

Schade dass ein eigentlich nützlicher Code durch dieses Rumgehampel mit den Autotools nur mit der Brechstange in ein Projekt reingepatcht werden kann… Diese beiden Patches sind jedenfalls kaum dazu geeignet an andere weiter gegeben zu werden. (Ich werde sie dennoch hochladen, und den Link später hier posten. Allerdings ohne dieses Python-gefrickel.)

Nachtrag
Hier gibt's den vereinfachten Patch der nur den Code hinzufügt. https://gist.github.com/redeagle/5227747
Sauer angewendet wird das ganze wie folgt:
Code:
tar xf htop-1.0.2.tar.gz
cd htop-1.0.2
patch < ../htop-1.0.2-temperature.patch
./autogen.sh
./configure
make -j8
Als Abhängigkeiten kommt, wie der Thread es erahnen lässt, Python hinzu :) Zudem muss auch das lm_sensors Paket installiert sein, da ich die Temperaturwerte mit dem Programm sensors abfrage.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

NagiosGrapher 1.7.1 funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Ubuntu X / dbus problem

XFCE freezes at startup

Oben