wie ändert man einen patch?

Ich habe folgenden patch: diff -ur fritz/src/main.c fritz.new/src/main.c --- fritz/src/main.c 2005-07-07 00:00:00.000000000 +0200 +++ fritz.new/src/main.c 2006-01-26 12:03:58.000000000 +0100 @@ -82,7 +82,6 @@ static struct usb_device_id usb_id_table struct usb_driver usb_driver = { - .owner = THIS_MODULE, .name = TARGET, .id_table = usb_id_table, .probe = usb_probe, ich will aber nur die Zeile " - .owner = THIS_MODULE," verwenden, wodurch die Zeile in der Datei main.c gelöscht werden soll. Der Text steht in Zeile 85 der Datei main.c Bisher habe ich einen patch mit -p1 < / installiert. Muß ich für obigen patch -ur verwenden? Wer kann mir - bitte - den patch entsprechend ändern und "-p1" bzw "-ur" bestätigen. Danke Gruß Arno -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Manfred Kreisl schrieb:
Ich denke, er macht mehr. Begründung Vor Anwendung des Patches erzeugt "make all" folgendes; arju:/usr/src/packages/SOURCES/fritz # make all make -C src make[1]: Entering directory `/usr/src/packages/SOURCES/fritz/src' make -C /lib/modules/2.6.27.21-0.1-default/build SUBDIRS=/usr/src/packages/SOURCES/fritz/src modules make[2]: Entering directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make -C ../../../linux-2.6.27.21-0.1 O=/usr/src/linux-2.6.27.21-0.1-obj/i386/default/. modules CC [M] /usr/src/packages/SOURCES/fritz/src/main.o /usr/src/packages/SOURCES/fritz/src/main.c:85: error: unknown field 'owner' specified in initializer /usr/src/packages/SOURCES/fritz/src/main.c:85: warning: initialization from incompatible pointer type make[5]: *** [/usr/src/packages/SOURCES/fritz/src/main.o] Fehler 1 make[4]: *** [_module_/usr/src/packages/SOURCES/fritz/src] Fehler 2 make[3]: *** [sub-make] Fehler 2 make[2]: *** [all] Fehler 2 make[2]: Leaving directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make[1]: *** [fxusb.o] Fehler 2 make[1]: Leaving directory `/usr/src/packages/SOURCES/fritz/src' make: *** [src/fxusb.ko] Fehler 2 arju:/usr/src/packages/SOURCES/fritz # Einziger Fehler = main.c:85 "make all" nach Anwendung des Patches: arju:/usr/src/packages/SOURCES/fritz # make all make -C src make[1]: Entering directory `/usr/src/packages/SOURCES/fritz/src' make -C /lib/modules/2.6.27.21-0.1-default/build SUBDIRS=/usr/src/packages/SOURCES/fritz/src modules make[2]: Entering directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make -C ../../../linux-2.6.27.21-0.1 O=/usr/src/linux-2.6.27.21-0.1-obj/i386/default/. modules CC [M] /usr/src/packages/SOURCES/fritz/src/main.o CC [M] /usr/src/packages/SOURCES/fritz/src/driver.o /usr/src/packages/SOURCES/fritz/src/driver.c:95: warning: type defaults to 'int' in declaration of 'DECLARE_MUTEX_LOCKED' /usr/src/packages/SOURCES/fritz/src/driver.c:95: warning: parameter names (without types) in function declaration /usr/src/packages/SOURCES/fritz/src/driver.c:96: warning: type defaults to 'int' in declaration of 'DECLARE_MUTEX_LOCKED' /usr/src/packages/SOURCES/fritz/src/driver.c:96: warning: parameter names (without types) in function declaration /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'select_config': /usr/src/packages/SOURCES/fritz/src/driver.c:250: warning: pointer type mismatch in conditional expression /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'reset': /usr/src/packages/SOURCES/fritz/src/driver.c:278: warning: passing argument 3 of 'select_config' from incompatible pointer type /usr/src/packages/SOURCES/fritz/src/driver.c:792:53: error: macro "INIT_WORK" passed 3 arguments, but takes just 2 /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'start_closing_worker': /usr/src/packages/SOURCES/fritz/src/driver.c:792: error: 'INIT_WORK' undeclared (first use in this function) /usr/src/packages/SOURCES/fritz/src/driver.c:792: error: (Each undeclared identifier is reported only once /usr/src/packages/SOURCES/fritz/src/driver.c:792: error: for each function it appears in.) /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'usb_write': /usr/src/packages/SOURCES/fritz/src/driver.c:1023: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'usb_read': /usr/src/packages/SOURCES/fritz/src/driver.c:1052: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'scheduler': /usr/src/packages/SOURCES/fritz/src/driver.c:1218: error: 'hotplug' undeclared (first use in this function) /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'kill_thread': /usr/src/packages/SOURCES/fritz/src/driver.c:1244: error: implicit declaration of function 'find_task_by_pid' /usr/src/packages/SOURCES/fritz/src/driver.c:1244: warning: comparison between pointer and integer /usr/src/packages/SOURCES/fritz/src/driver.c:1253: error: 'hotplug' undeclared (first use in this function) make[5]: *** [/usr/src/packages/SOURCES/fritz/src/driver.o] Fehler 1 make[4]: *** [_module_/usr/src/packages/SOURCES/fritz/src] Fehler 2 make[3]: *** [sub-make] Fehler 2 make[2]: *** [all] Fehler 2 make[2]: Leaving directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make[1]: *** [fxusb.o] Fehler 2 make[1]: Leaving directory `/usr/src/packages/SOURCES/fritz/src' make: *** [src/fxusb.ko] Fehler 2 arju:/usr/src/packages/SOURCES/fritz # Ich will nur die Zeile 85 aus main.c löschen, nichts weiter Zugegeben, die Zeile 85 ist gelöscht. Aber was löst den neuen Ärger (sieh oben) aus, wenn nicht der anfangs genannte Patch ? Wie kann ich die Zeile 85 löschen, ohne den Ärger auszulösen, um "make all" fehlerfrei zu Ende zu bringen? Gruß Arno -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Thu, 28 May 2009 14:08:46 +0200 schriebst Du:
Wenn der von Dir genannte Patch wirklich nur die von Dir geposteten Zeilen beinhaltet, dann löscht er auch wirklich nur diese eine Zeile! Das kannst Du mit einer beliebigen Text-Testdatei selber ausprobieren. Leg eine Kopie der Datei an, lösch in dieser eine Zeile und ruf dann 'diff -u Originaldatei Kopie >test.patch' auf. Der Patch sollte dann eben die Löschung dieser einen Zeile zeigen, zusammen mit drei Zeilen vorher und nachher, damit Patch genügend Kontext hat auch wenn sich die zu ändernde Zeile verschoben haben sollte. Der Compiler hat einfach nach dem ersten Fehler abgebrochen, was völlig zulässig ist. nach Beheben des ersten Fehlers kommt er nun weiter und entdeckt weitere Fehler.
Wie kann ich die Zeile 85 löschen, ohne den Ärger auszulösen, um "make all" fehlerfrei zu Ende zu bringen?
Nur indem Du die Fehler im Quellcode beseitigst, denn dort stecken noch weitaus mehr Fehler als nur die eine Zeile drin. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Philipp Thomas schrieb:
Am Thu, 28 May 2009 14:08:46 +0200 schriebst Du:
[ . . . .]
[ . . . ]
hallo hallo Philipp vielen Dank. Du machst mir richtig Mut. Kann es passieren, daß nach Ausräumen von div Fehlern und Hinzukommen neuer Fehler das nie aufhört, d.h. immer wieder Fehler angezeigt werden? Was heißt "Fehler im Quellcode" Bastle ich an der falschen Stelle? Gruß Arno -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Fre, 29 Mai 2009, Arno Jung schrieb:
Kann es passieren, daß nach Ausräumen von div Fehlern und Hinzukommen neuer Fehler das nie aufhört, d.h. immer wieder Fehler angezeigt werden?
Nein.
Was heißt "Fehler im Quellcode" Bastle ich an der falschen Stelle?
Der Treiber passt nicht zu deinem Kernel (sieht man an den "error" Meldungen) . Ohne recht intime Kenntnisse von C und v.a. vom Kernel hast du kaum Chancen, da etwas anzupassen. -dnh -- Bored? Want hours of entertainment? Just set the initdefault to 6! Whee! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Fr d. 29 Mai 2009 12:01:08 +0200 schriebst Du:
Kann es passieren, daß nach Ausräumen von div Fehlern und Hinzukommen neuer Fehler das nie aufhört, d.h. immer wieder Fehler angezeigt werden?
Solange im Quellcode des Treibers Fehler sind, wird der Compiler auch darüber stolpern.
Was heißt "Fehler im Quellcode"
Der Code des Treibers wurde für einen älteren Kernel geschrieben. Mittlerweile haben sich Dinge im Kernel geändert und jetzt passen Treiber und Kernel nicht mehr zu einander, was Du an den Fehlermeldungen des Compilers siehst. Um das zu ändern, müsstest Du solide Kenntnisse in C und Kernel-Architektur besitzen.
Bastle ich an der falschen Stelle?
Wahrscheinlich ja. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Donnerstag, 28. Mai 2009 schrieb Arno Jung:
Das passt, wenn Du dich im Verzeichnis fritz aufhältst, während Du das machst, denn -p1 nimmt die erste Ebene der Pfadangabe raus, also aus fritz/src/main.c wird src/main.c. Wenn Du ein "ls src/main.c" eintippst und dieses die Datei nicht findet, kann auch patch die Datei nicht finden und schlägt dementsprechend fehl.
Muß ich für obigen patch -ur verwenden?
Nein, -ur wurde beim erstellen des Patches verwendet, -u definiert das Format und -r sagt, dass die beiden Verzeichnisse, die als Parameter mitgeben wurden rekursiv durchsucht werden. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Manfred Kreisl schrieb:
Ich denke, er macht mehr. Begründung Vor Anwendung des Patches erzeugt "make all" folgendes; arju:/usr/src/packages/SOURCES/fritz # make all make -C src make[1]: Entering directory `/usr/src/packages/SOURCES/fritz/src' make -C /lib/modules/2.6.27.21-0.1-default/build SUBDIRS=/usr/src/packages/SOURCES/fritz/src modules make[2]: Entering directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make -C ../../../linux-2.6.27.21-0.1 O=/usr/src/linux-2.6.27.21-0.1-obj/i386/default/. modules CC [M] /usr/src/packages/SOURCES/fritz/src/main.o /usr/src/packages/SOURCES/fritz/src/main.c:85: error: unknown field 'owner' specified in initializer /usr/src/packages/SOURCES/fritz/src/main.c:85: warning: initialization from incompatible pointer type make[5]: *** [/usr/src/packages/SOURCES/fritz/src/main.o] Fehler 1 make[4]: *** [_module_/usr/src/packages/SOURCES/fritz/src] Fehler 2 make[3]: *** [sub-make] Fehler 2 make[2]: *** [all] Fehler 2 make[2]: Leaving directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make[1]: *** [fxusb.o] Fehler 2 make[1]: Leaving directory `/usr/src/packages/SOURCES/fritz/src' make: *** [src/fxusb.ko] Fehler 2 arju:/usr/src/packages/SOURCES/fritz # Einziger Fehler = main.c:85 "make all" nach Anwendung des Patches: arju:/usr/src/packages/SOURCES/fritz # make all make -C src make[1]: Entering directory `/usr/src/packages/SOURCES/fritz/src' make -C /lib/modules/2.6.27.21-0.1-default/build SUBDIRS=/usr/src/packages/SOURCES/fritz/src modules make[2]: Entering directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make -C ../../../linux-2.6.27.21-0.1 O=/usr/src/linux-2.6.27.21-0.1-obj/i386/default/. modules CC [M] /usr/src/packages/SOURCES/fritz/src/main.o CC [M] /usr/src/packages/SOURCES/fritz/src/driver.o /usr/src/packages/SOURCES/fritz/src/driver.c:95: warning: type defaults to 'int' in declaration of 'DECLARE_MUTEX_LOCKED' /usr/src/packages/SOURCES/fritz/src/driver.c:95: warning: parameter names (without types) in function declaration /usr/src/packages/SOURCES/fritz/src/driver.c:96: warning: type defaults to 'int' in declaration of 'DECLARE_MUTEX_LOCKED' /usr/src/packages/SOURCES/fritz/src/driver.c:96: warning: parameter names (without types) in function declaration /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'select_config': /usr/src/packages/SOURCES/fritz/src/driver.c:250: warning: pointer type mismatch in conditional expression /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'reset': /usr/src/packages/SOURCES/fritz/src/driver.c:278: warning: passing argument 3 of 'select_config' from incompatible pointer type /usr/src/packages/SOURCES/fritz/src/driver.c:792:53: error: macro "INIT_WORK" passed 3 arguments, but takes just 2 /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'start_closing_worker': /usr/src/packages/SOURCES/fritz/src/driver.c:792: error: 'INIT_WORK' undeclared (first use in this function) /usr/src/packages/SOURCES/fritz/src/driver.c:792: error: (Each undeclared identifier is reported only once /usr/src/packages/SOURCES/fritz/src/driver.c:792: error: for each function it appears in.) /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'usb_write': /usr/src/packages/SOURCES/fritz/src/driver.c:1023: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'usb_read': /usr/src/packages/SOURCES/fritz/src/driver.c:1052: warning: passing argument 6 of 'usb_fill_bulk_urb' from incompatible pointer type /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'scheduler': /usr/src/packages/SOURCES/fritz/src/driver.c:1218: error: 'hotplug' undeclared (first use in this function) /usr/src/packages/SOURCES/fritz/src/driver.c: In function 'kill_thread': /usr/src/packages/SOURCES/fritz/src/driver.c:1244: error: implicit declaration of function 'find_task_by_pid' /usr/src/packages/SOURCES/fritz/src/driver.c:1244: warning: comparison between pointer and integer /usr/src/packages/SOURCES/fritz/src/driver.c:1253: error: 'hotplug' undeclared (first use in this function) make[5]: *** [/usr/src/packages/SOURCES/fritz/src/driver.o] Fehler 1 make[4]: *** [_module_/usr/src/packages/SOURCES/fritz/src] Fehler 2 make[3]: *** [sub-make] Fehler 2 make[2]: *** [all] Fehler 2 make[2]: Leaving directory `/usr/src/linux-2.6.27.21-0.1-obj/i386/default' make[1]: *** [fxusb.o] Fehler 2 make[1]: Leaving directory `/usr/src/packages/SOURCES/fritz/src' make: *** [src/fxusb.ko] Fehler 2 arju:/usr/src/packages/SOURCES/fritz # Ich will nur die Zeile 85 aus main.c löschen, nichts weiter Zugegeben, die Zeile 85 ist gelöscht. Aber was löst den neuen Ärger (sieh oben) aus, wenn nicht der anfangs genannte Patch ? Wie kann ich die Zeile 85 löschen, ohne den Ärger auszulösen, um "make all" fehlerfrei zu Ende zu bringen? Gruß Arno -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Thu, 28 May 2009 14:08:46 +0200 schriebst Du:
Wenn der von Dir genannte Patch wirklich nur die von Dir geposteten Zeilen beinhaltet, dann löscht er auch wirklich nur diese eine Zeile! Das kannst Du mit einer beliebigen Text-Testdatei selber ausprobieren. Leg eine Kopie der Datei an, lösch in dieser eine Zeile und ruf dann 'diff -u Originaldatei Kopie >test.patch' auf. Der Patch sollte dann eben die Löschung dieser einen Zeile zeigen, zusammen mit drei Zeilen vorher und nachher, damit Patch genügend Kontext hat auch wenn sich die zu ändernde Zeile verschoben haben sollte. Der Compiler hat einfach nach dem ersten Fehler abgebrochen, was völlig zulässig ist. nach Beheben des ersten Fehlers kommt er nun weiter und entdeckt weitere Fehler.
Wie kann ich die Zeile 85 löschen, ohne den Ärger auszulösen, um "make all" fehlerfrei zu Ende zu bringen?
Nur indem Du die Fehler im Quellcode beseitigst, denn dort stecken noch weitaus mehr Fehler als nur die eine Zeile drin. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Philipp Thomas schrieb:
Am Thu, 28 May 2009 14:08:46 +0200 schriebst Du:
[ . . . .]
[ . . . ]
hallo hallo Philipp vielen Dank. Du machst mir richtig Mut. Kann es passieren, daß nach Ausräumen von div Fehlern und Hinzukommen neuer Fehler das nie aufhört, d.h. immer wieder Fehler angezeigt werden? Was heißt "Fehler im Quellcode" Bastle ich an der falschen Stelle? Gruß Arno -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Fre, 29 Mai 2009, Arno Jung schrieb:
Kann es passieren, daß nach Ausräumen von div Fehlern und Hinzukommen neuer Fehler das nie aufhört, d.h. immer wieder Fehler angezeigt werden?
Nein.
Was heißt "Fehler im Quellcode" Bastle ich an der falschen Stelle?
Der Treiber passt nicht zu deinem Kernel (sieht man an den "error" Meldungen) . Ohne recht intime Kenntnisse von C und v.a. vom Kernel hast du kaum Chancen, da etwas anzupassen. -dnh -- Bored? Want hours of entertainment? Just set the initdefault to 6! Whee! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
Arno Jung
-
David Haller
-
Manfred Kreisl
-
Manfred Tremmel
-
Martin Hofius
-
Philipp Thomas