Patches erstellen

ao

Aktives Mitglied
Mitglied seit
15 Aug 2005
Beiträge
2,158
Punkte für Reaktionen
2
Punkte
38
Hallo,

ich hätte da einige (einfachere) Dinge, bei denen ich im Freetz WebGUI gerne etwas ergänzen würde (rein informativ, z.B. die Syntax zu crontab), weiß aber nicht, wo ich die Sachen wie am besten finde, um ein diff zu erstellen und um einen Patch zum Testen hier im Forum anzubieten.

Wenn ich im Trac z.B. nach crontab suche, kommen gar keine Resultate, obwohl "crontab" im Freetz WebGUI erscheint. Müsste das Wort "crontab" daher nicht auch irgendwo im Sourcecode im Trac vorhanden sein und angezeigt werden?

Im Wiki-Artikel "Patch" steht leider nicht, wie man als Laie die richtigen Stellen am besten findet.
Sorry wegen der evtl. DAU-Frage und vielen Dank für Eure Hilfe!

PS:
Ansonsten muss ich es so probieren: find . -type f | xargs grep {string} [> {filename_to_save}]
 
Zuletzt bearbeitet:
Auch die Profis wissen entweder wo sie suchen müssen, weil sie es schon einmal getan haben, oder setzen sich entweder mit Standardsuchen auseinander(grep und find z.B. oder die eingebaute Suche in der IDE) oder "raten" einfach mal, wo das passieren kann. ;)
 
Die Trac Suche durchsucht nicht den gesamten Text im Subversion-Repository. Und da in dieser Datei noch nie was geändert wurde kommt der Text in Changesets nicht vor...

Code:
root/etc/default.mod/crontab.def
MfG Oliver
 
Du meinst, im Wiki steht nicht, wie Du dir richtige Stelle findest, an der Du Deine beabsichtigte Änderung machen mußt?
Das ist kein Wunder, weil das hat nichts mit der Fragestellung zu tun, wie ein Patch erstellt wird. Im Wiki steht, wie man den Patch erstellt hat, nachdem man die Änderung gemacht hat.

Wenn ich Deine Frage richtig verstanden habe, geht es Dir darum, die richtige Stelle zu finden, um eine Änderung durchzuführen. Diese Frage wird in dieser allgemeinen Form im Wiki aus gutem Grund nicht beantwortet, weil es darauf nur eine Antwort gibt: "Es kommt darauf an, worum es geht".

In Deinem konkreten Fall willst Du anscheinend etwas am cron Frontend ändern. Da cron nicht ein extra Paket ist, sondern zum Freetz Basis-System gehört, liegen die Dateien für cron unter dem Verzeichnis "root". Wenn es ein eigenes Paket wäre, z.B. inetd, wären die Dateien unter "make/inetd/files/root".

Weiterhin willst Du in diesem konkreten Fall etwas an der Web-Oberfläche ändern. Am einfachsten findest Du die Datei, wenn Du nach einem Text suchst, der sonst hoffentlich selten vorkommt. "Crontab" scheint hier ein guter Wert zu sein.
Code:
$ grep -r Crontab root make 2> /dev/null | fgrep -v /.svn/
root/etc/default.mod/crontab.def:CAPTION='Crontab'
root/etc/init.d/rc.crond:               modreg file 'crontab' 'Crontab' 0 "$deffile"
Das suchen in "root" und "make" ist nur für den Fall, daß man nicht sicher ist, in welchem Verzeichnis sich die Dateien befinden. Wenn man weiß, daß cron zum Hauptsystem gehört, kann man das Verzeichnis "make" aus weglassen, dann geht es schneller. Die Umleitung "2> /dev/null" unterdrückt Fehlermeldungen wegen nicht gefundenen Dateien/Links.
Die Ergebnisse in Dateien mit "/.svn/" im Pfad sind hier nicht von Bedeutung.
Die zweite Zeile mit "modreg" ist auch uninteressant. Der Text "Crontab" kommt also aus der Datei root/etc/default.mod/crontab.def. Das sagt uns leider noch nicht, was man machen muß, um eine Hilfe auf die Seite zu bringen. Also suchen wir einmal nach Hosts, weil auf der Hosts-Seite schon eine Hilfe da ist.
Code:
$ grep -r Hosts root make 2> /dev/null | fgrep -v /.svn/
root/etc/default.mod/exhosts.def:CAPTION='Hosts'
root/etc/init.d/rc.mod:         modreg file 'exhosts' 'Hosts' 1 "$deffile"
... und noch viele Treffer unter make/
Die Definitionsdatei, aus der der Text Hosts kommt, ist also root/etc/default.mod/exhosts.def. Schauen wir uns also mal die Datei an:
Code:
$ cat root/etc/default.mod/exhosts.def
CAPTION='Hosts'
DESCRIPTION='Syntax: &lt;ip&gt; &lt;mac&gt; &lt;interface&gt; &lt;host&gt; [&lt;aliases|#description&gt;]<br>
($(lang de:"z.B.: 10.0.0.1 * * www.local mfh1 # Mein Server" en:"e.g. 10.0.0.1 * * www.local mfh1 # my server")) *=&quot;$(lang de:"nicht definiert" en:"not defined")&quot;'

... hier nicht von Bedeutung
Wir sehen also, daß die Beschreibung aus dem Eintrag DESCRIPTION kommt, der in der Datei root/etc/default.mod/crontab.def nicht vorhanden ist.

Die Antwort auf die konkrete Frage ist also, Du mußt in der Datei root/etc/default.mod/crontab.def einen Eintrag DESCRIPTION anlegen.

Wenn man will, daß mehrere Sprachen mit $(lang ...) unterstützt werden, dann muß man auch sicherstellen, daß die Datei in der passenden Liste hinterlegt ist. Dies ist die datei ".language", entweder im Hauptverzeichnis oder im Verzeichnis make/<Paket>/files. Da hier um die Datei unter dem Verzeichnis "root" liegt, muß sie in die Datei ".language" im Hauptverzeichnis eingetragen werden.

Die Datei sieht so aus:
Code:
$ cat .language
languages
{ de en }
default
{ en }
files
{
        etc/default.mod/exhosts.def
        etc/default.mod/rc_custom.def
        etc/default.mod/modules.def
        ...
}
Wir sehen hier die Datei etc/default.mod/exhosts.def. Also machen wir davor noch einen Eintrag etc/default.mod/crontab.def. Die Reihenfolge der hier genannten Dateien hat keine Bedeutung, aber vor exhosts paßt es gut, weil auch in der Konfiguration Crontab vor Hosts steht.

Nach dieser Änderung machst Du den Patch so wie im Wiki beschrieben, wobei hoffentlich klar ist, daß die geänderten Dateien in diesem Fall root/etc/default.mod/crontab.def und .language sind.
 
Danke für den Hinweis! Bzgl. "find", "grep" etc. habe ich oben (auch zu meiner eigenen Referenz/Doku) noch ein PS editiert.
Aber das WebGUI findet sich wiederum woanders, nehme ich an, oder?
Naja, ich suche halt selbst noch weiter.

EDIT:
Sorry, RalfFriedl, habe irgendwie Deinen genialen Beitrag hier überlesen, als ich antwortete!
Also dafür ein ganz dickes Danke! :groesste:
Und damit es nicht in diesem Thread untergeht, habe ich es (etwas angepasst) im Wiki unter Patch verewigt.
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.