.titleBar { margin-bottom: 5px!important; }

Patches erstellen

Dieses Thema im Forum "Freetz" wurde erstellt von ao, 13 Feb. 2009.

  1. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 ao, 13 Feb. 2009
    Zuletzt bearbeitet: 13 Feb. 2009
    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}]
     
  2. Silent-Tears

    Silent-Tears IPPF-Promi

    Registriert seit:
    3 Aug. 2007
    Beiträge:
    7,456
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BI
    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. ;)
     
  3. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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
     
  4. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  5. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #5 ao, 13 Feb. 2009
    Zuletzt bearbeitet: 13 Feb. 2009
    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.