Benutzer:Tijuca: Unterschied zwischen den Versionen

Aus TuxBoxWIKI
Zur Navigation springen Zur Suche springen
 
(28 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 19: Zeile 19:


===optionales Installieren Plugin "Toggle Word Wrap"===
===optionales Installieren Plugin "Toggle Word Wrap"===
Wenn man zwischen dem Fliestext und umgebrochenen Text wechseln muss oder will kann man sich das Plugin "Toggle Word Wrap" von [https://addons.mozilla.org/de/thunderbird/search/?q=word%20wrap Mozilla Plugins] installieren. Damit kann man dann bequem zwischen beiden Textflussarten umschalten.
Wenn man zwischen dem Fließtext und umgebrochenen Text wechseln muss oder will kann man sich das Plugin "Toggle Word Wrap" von [https://addons.mozilla.org/de/thunderbird/search/?q=word%20wrap Mozilla Plugins] installieren. Damit kann man dann bequem zwischen beiden Textflussarten umschalten.


[[Bild:TB_ID_Einstellungen-4.png|300px|Textfluss ein- ausschalten]]
[[Bild:TB_ID_Einstellungen-4.png|300px|Textfluss ein- ausschalten]]


==Patch(es) mit Git versenden==
===optionales Installieren Plugin "Colored Diffs"===
Git kann ohne extra Aufruf eines Mailprogrammes Patches versenden. Dazu dient der Befehl <code>git send-email [Parameter]</code>. Dies ist sehr praktisch da man nicht extra einen Mailclient öffnen muss oder kann (z.B. wenn man Remote auf einem PC/Server arbeitet). Voraussetzung ist natürlich das der PC einen Zugang zum Internet hat. In größeren Projekten ist das der übliche Weg und einzig akzeptierte Weg um seine Veränderungsvorschläge zu publizieren.


===Paketabhängigkeiten===
Um Diffs bzw. Patches für das menschliche Auge lesbarer darzustellen kann man sich das Plugin "Colored Diffs" von [http://code.google.com/p/colorediffs/downloads/list Google Code] nach installieren. Damit werden Diffs auf Wunsch ähnlich dargestellt wie man das vom Git Webfrontend, Trac, ViewCS oder WebSVN kennt.
<code>git send-email</code> benötigt zusätzliche Software die eventuell nicht automatisch durch die Paketverwaltungssoftware aufgelöst wird. Eventuell müssen folgende Pakete nachinstalliert werden:
 
<br style="clear:right;" />
[[Bild:TB_ID_Einstellungen-5.png|800px|Ansicht mit Colored Diffs]]
<div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]] '''Debian:'''
 
==Codeblocks Installation==
 
===der bequeme Weg (bevorzugt!)===
Jens Lody ist Developer bei C::B und stellt Debianpakete als 'stable releases' als auch als 'nightly build' zur Verfügung. Zum Installieren der 'stable releases' per apt-get geht man wie folgt vor.
* Superuser werden
$ sudo su
* Apt Eintrag erstellen, Quellen updaten, es erscheint eine Fehlermeldung die man nach dem Update der Quellen durch das Importieren des angemahnten Keys beseitigen kann
# für die stable Releases
# echo -e "deb http://apt.jenslody.de/stable squeeze main\ndeb-src http://apt.jenslody.de/stable squeeze main" > /etc/apt/sources.list.d/codeblocks.list
# apt-get update
...
# für testing und experimental, Achtung! hier muss manuell nach gearbeitet werden
# echo -e "deb http://apt.jenslody.de/testing wheezy main\ndeb-src http://apt.jenslody.de/testing wheezy main" > /etc/apt/sources.list.d/codeblocks.list
# apt-get update
...
W: GPG-Fehler: http://apt.jenslody.de any Release: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY C96E627C6EEB25C9
* Importieren des Keyrings von Jens Lody
# apt-get install jens-lody-debian-keyring
* Optional (im Beispiel für 64bit!)!!! wenn man die nightly builds verwenden will müssen zwei Pakete von Hand installiert werden da selbst in Squeeze nur die älteren Varianten sind (im Beispiel für 64bit)
# cd /tmp
# wget http://apt.wxwidgets.org/dists/squeeze-wx/main/binary-amd64/libwxbase2.8-0_2.8.12.1-0_amd64.deb && dpkg -i libwxbase2.8-0_2.8.12.1-0_amd64.deb
# wget http://apt.wxwidgets.org/dists/squeeze-wx/main/binary-amd64/libwxgtk2.8-0_2.8.12.1-0_amd64.deb && dpkg -i libwxgtk2.8-0_2.8.12.1-0_amd64.deb
* Quellen erneut updaten
# apt-get update
* nun Codeblocks (und die deutsche Dokumentation installieren)
# apt-get install codeblocks codeblocks-doc-de
 
Die hervorragende Dokumentation ist nun unter <code>file:///usr/share/doc/codeblocks-doc-de/html/main_codeblocks_de.html</code> zu finden.
* Installation von Plugins wie z.B. DoxyBlocks, Valgrind, ..., gibt es aber nur vollständig in den nightly builds! (und wieder User werden gfs.)
# apt-get install codeblocks-additional codeblocks-additional-common codeblocks-contrib codeblocks-contrib-common
...
# exit
 
===der manuelle Weg mit dpkg===
 
http://www.codeblocks.org/downloads/26
 
wget http://download.berlios.de/codeblocks/codeblocks-10.05-1-debian-amd64.tar.bz2
tar xvjf codeblocks-10.05-1-debian-amd64.tar.bz2
<source lang="bash">
<source lang="bash">
$ sudo apt-get install git-email sendmail libnet-smtp-ssl-perl \
$ dpkg -s codeblocks
                      libauthen-sasl-perl libnet-perl libio-socket-ssl-perl \
Package: codeblocks
                      libmime-tools-perl
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 5792
Maintainer: Jens Lody <jens@codeblocks.org>
Architecture: amd64
Version: 10.05-1
Depends: libatk1.0-0 (>= 1.20.0), libc6 (>= 2.7-1), libcairo2 (>= 1.2.4), libcodeblocks0 (= 10.05-1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.12.0), libpango1.0-0 (>= 1.20.3), libstdc++6 (>= 4.1.1), libwxbase2.8-0 (>= 2.8.10.1), libwxgtk2.8-0 (>= 2.8.10.1), codeblocks-common (= 10.05-1)
Recommends: gcc | g++, gdb, codeblocks-contrib (= 10.05-1)
Suggests: libwxgtk2.8-dev, wx-common, xterm
Description: cross-platform integrated development environment (IDE)
Code::Blocks is the open-source, cross-platform Integrated Development
Environment (IDE).
It is based on a self-developed plugin framework allowing unlimited
extensibility. Most of its functionality is already provided by plugins.
Plugins included in the base package are:
    * Compiler frontend to many free compilers
    * Debugger frontend for GDB (and CDB for windows platforms)
    * Source formatter (based on AStyle)
    * Wizard to create new C++ classes
    * Code-completion / symbols-browser (work in progress)
    * Default MIME handler
    * Wizard to create new Code::Blocks plugins
    * To-do list
    * Extensible wizard based on scripts (for creating new projects/targets/etc)
    * Autosave (saves your work in the unfortunate case of a crash)
It\'s a svn-download and may contain bugs.
Homepage: http://www.codeblocks.org
</source>
</source>
</div>
sudo apt-get install libwxgtk2.8-0
sudo dpkg -i libcodeblocks0_10.05-1_amd64.deb codeblocks-common_10.05-1_all.deb
sudo dpkg -i codeblocks_10.05-1_amd64.deb
 
===Lokalisierung von Codeblocks===
<br style="clear:right;" />
<br style="clear:right;" />
<div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]] '''Suse:'''
<div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]] '''HINWEIS:'''
<source lang="bash">
'''Die Lokalisierung von Codeblocks ist unvollständig und wird es auch immer sein!'''
wenn jemand weiß was hier anzugeben ist ...
Wer diese oder auch eine andere IDE einsetzen sollte wirklich prüfen ob er eine deutsche Oberfläche der GUI benötigt. Viele Begriffe aus dem Developer und Softwarebereich sind englisch und lassen sich nur bedingt übersetzen. International üblich ist eine englische GUI. Dies hilft Missverständnisse zu vermeiden.
</source>
</div>
</div>
Die Standardinstallation von Codeblocks (C::B) ist wie für eine IDE üblich mit einer englischen GUI. Codeblocks bietet aber auch Lokalisierungen an. Diese kann man auf der [https://translations.launchpad.net/codeblocks Launchpad Projektseite] herunterladen bzw. anfordern. Dazu benötigt man allerdings einen Account bei Launchpad denn nur angemeldete User können den [https://translations.launchpad.net/codeblocks/trunk/+pots/codeblocks/de/+export Downloadhinweis] sehen.


===manuelle Vorgehensweise===
Wenn man sich eingeloggt hat kann man entweder die <code>.po</code> oder die fertig Übersetzte <code>.mo</code> Datei von der Lauchpad Webseite anfordern. Die <code>.po</code> Dateien sind die eigentliche Lokalisierungen in die die passenden Übersetzungen eingetragen werden. Damit kann aber Codeblocks nichts anfangen, da es die Lokalisierungen im Binärformat, also als Datei <code>.mo</code> erwartet. Wer also die <code>.mo</code> Datei herunterladen will kann folgende Schritte überspringen.
Zum Testen oder gezielten Übergehen von Einstellungen kann man alle Parameter des Git Befehls von Hand angeben. Damit git einen oder mehrere Patches versenden kann müssen die Parameter für den E-Mail Versand angebenden werden.<br />
 
<code>git send-email</code>
Egal welchen Dateityp man auf der Launchpad Webseite anfordert, man erhält einen Downloadlink in dem ein Archiv <code>launchpad-export.tar.gz</code> liegt. Dieses kann man mit
# <code><Patch></code>
$ tar xvf launchpad-export.tar.gz
# <code>--from <Name></code> am besten mir Realname, Nickname ist nicht überall gerne gesehen (optional)
in einem temporären Ordner entpacken kann. In diesem findet Ihr, wenn Ihr <code>.po</code> angefordert habt nun die entsprechenden Quelldateien mit den jeweiligen Übersetzungen. Für die deutschen Übersetzungen entsprechend <code>codeblocks-de.po</code>. Diese Datei kann man mit POEdit oder auch mit jedem anderen Editor bearbeiten.
# <code>--to <E-Mail Adresse></code> Zieladresse, z.B. eine Mailingliste
 
# <code>--smtp-server <Server Adresse></code> die SMTP Serveradresse deines Providers
Damit man das Binärformat <code>.mo</code> erhält muss man allerdings die <code>.po</code> Datei noch mit <code>msgfmt</code> übersetzen. Das Zielformat muss allerdings so aussehen: <code>de_codeblocks.mo</code> Der Aufruf ist daher folgender:
# <code>--smtp-server-port <Portadresse></code> der Zielport vom SMTP Server
$ msgfmt codeblocks-de.po -o de_codeblocks.mo
# <code>--smtp-user <Benutzer></code> ohne @TLD!
Diese Datei muss nun in den Ordner <code>/usr/share/codeblocks/locale/de_DE</code>. Da dieser nicht vorhanden ist muss dieser erst erstellt werden.
# <code>--smpt-pass <Passwort></code> Dein Passwort bei Deinem Emailprovider
$ sudo mkdir -p /usr/share/codeblocks/locale/de_DE
# <code>--smtp-encyption=<Encryption></code> in Kleinbuchstaben
In diesen Ordner nun die eben erstellte <code>de_codeblocks.mo</code> kopieren.
Beispiel für GMail:
$ sudo cp de_codeblocks.mo /usr/share/codeblocks/locale/de_DE
<source lang="bash">
Nach dem nächsten Neustart sollte C::B nun mit deutschen locales starten.
$ git send-email 0001-ChangeLog-adding-entry.patch --to ml_neutron@projekt.com --from "Karl Klammer" \
 
--smtp-server smtp.gmail.com --smtp-server-port 587 --smtp-user karl.klammer \
Wer auf der Launchpad entsprechend die <code>.mo</code> Dateien angefordert hat muss sich die <code>codeblocks-de.mo</code> entpacken, umbenennen und in den benannten Ordner kopieren. <br />
--smtp-pass super_geheim --smtp-encryption=tls
Wer sich das selber Übersetzen und gfls. das Anmelden auf Launchpad ersparen will findet hier eine fertige <code>[http://62.75.162.37/misc/cs/de_codeblocks.mo de_codeblocks.mo]</code>. Oder folgendes mit root Berechtigungen aufrufen.
</source>
  mkdir -p /usr/share/codeblocks/locale/de_DE && cd /usr/share/codeblocks/locale/de_DE && wget http://62.75.162.37/misc/cs/de_codeblocks.mo
 
==post-receive Hook auf einem Git Server==
Für ein post-receive Hook Script gibt es zahlreiche Varianten. Es gibt zahlreiche Scripte in Form von einen oder mehreren Shell oder Perl Scripten bis hin zu Ruby Scripten.


===statische Einträge in der Konfigdatei von Git===
Ich habe mich für http://www.icir.org/robin/git-notifier/ entschieden, welches ein Python Script ist. Gerade aus diesem Grund. Es ist nur ein Script und dazu aus Python, so das ich es bei Bedarf anpassen kann.
Man kann alles diese Angaben in die Konfigdatei <code>.git/config</code> eintragen. Damit minimiert sich der Aufruf des Git Befehls auf <code>git send-email <Patch></code>.
Wenn man Patche z.B. immer an die selbe Adresse verschickt (z.B. an eine Mailingliste) dann empfiehlt es sich die nötigen Parameter in die Konfigdatei des Projektes einzutragen.


z.B. für GMail:
Das Python Script kommt nach <code>/usr/local/bin</code>. Der Hook <code>post-receive</code> im Hooks Verzeichnis des Repositorys ist mehr oder weniger ein einfacher Aufruf von <code>git-notifier</code>.
<source lang="bash">
<source lang="bash">
[sendemail]
#!/bin/bash
        to = ml_neutron@projekt.com
 
        smtpencryption = tls
/usr/local/bin/git-notifier --mailinglist=projekt-foo@projekt-foo.org \
        smtpserver = smtp.gmail.com
                            --emailprefix="[git] projekt-foo.git" \
        smtpserverport = 587
                            --repouri="https://git.projekt-foo.org/?p=projekt-foo.git;a=summary" \
        smtpuser = <Benutzer>  # alles vor @gmail.com , nicht die komplette E-Mailadresse!!!
                            --sender=git@projekt-foo.org
        smtppass = <Passwort>
        confirm = never
</source>
</source>
und für T-Online:
Zum Debuggen beim Einrichten des Hooks kann man noch die Option <code>--debug</code> anhängen. <span style="border-style: solid; border-width: 2px; margin: 1px; border-color: red">Achtung!</span> Die Option <code>--debug</code> ist eher ein "try-run", es wird dann keine Mail versendet! Praktisch zum Prüfen ob die generierte Mail korrekt ist. Das Hook Script kann dann direkt als User <code>git</code> bzw. <code>gitolite</code> im Hook Verzeichnis des Repos aufrufen.
<source lang="bash">
<source lang="bash">
[sendemail]
#!/bin/bash
        to = ml_neutron@projekt.com
 
        smtpserver = smtpmail.t-online.de
/usr/local/bin/git-notifier --mailinglist=projekt-foo@projekt-foo.org \
        smtpserverport = 25
                            --emailprefix="[git] projekt-foo.git" \
        smtpuser = <Benutzer>  # alles vor @t-online.de , nicht die komplette E-Mailadresse!!!
                            --repouri="https://git.projekt-foo.org/?p=projekt-foo.git;a=summary" \
        smtppass = <Passwort>
                            --sender=git@projekt-foo.org \
        confirm = never
                            --debug
</source>
</source>
Will man die Commitmail an mehrere Empfänger versenden lassen muss man die Angabe für die Option <code>--mailinglist</code> anpassen. Dazu kann man sich eine Variable im post-receive Script setzen. In späteren Versionen wird es vermutlich eine Option im Pythonscript direkt geben.
<source lang="bash">
#!/bin/bash


===Probleme===
REPO=projekt-foo
Sollten Ihr beim Versenden per <code>git send-email</code> folgende Fehlermeldung erhalten:
HOST=projekt-foo.org
<source lang="bash">
# an option for testing surpose
...
#OPTION="--diff=[SHA_ID1]..[SHA_ID2] --debug"
X-Mailer: git-send-email 1.7.2.5
 
# if you use gitolite ...
if [ "$GL_ADMINDIR"=="" ]; then
        echo "\$GL_ADMINDIR set by $0"
        GL_ADMINDIR="$HOME/.gitolite"
fi


Result: 250 2.0.0 Message accepted.
# sourcing external mail recipients
if [ -f $GL_ADMINDIR/conf/"$REPO"_recipient.cfg ]; then
    . $GL_ADMINDIR/conf/"$REPO"_recipient.cfg
else
    # setting local recipients
    MAILINGLIST="Mister X <emailuser1@nowhere.com>,Errol Flinn <horray@plateau.it>"


In git 1.7.0, the default has changed to --no-chain-reply-to
/usr/local/bin/git-notifier --mailinglist="$MAILINGLIST" \
Set sendemail.chainreplyto configuration variable to true if
                            --emailprefix="[git@$HOST] $REPO.git" \
you want to keep --chain-reply-to as your default.
                            --repouri="https://git.$HOST/?p=$REPO.git;a=summary" \
                            --sender=git@$HOST \
                            $OPTION
</source>
</source>
Dann könnt Ihr mit <code>git config sendemail.chainreplyto false</code> folgenden Eintrag zu <code>.git/config</code> hinzufügen.
<source lang="bash">
[sendemail]
        ...
        chainreplyto = false
        ...
</source>
Damit weiß Git bei jedem Benutzen von <code>git send-email</code> das nicht "in Reply to" erfolgt. Dies ist immer dann der Fall wenn man einen Patch das erste Mal an einen Empfänger sendet. Das Gegenteil tritt natürlich dann ein wenn  Ihr auf einen Patch mit einer anderen Version antwortet. Dies dürfte aber relativ selten vorkommen und kann dann wieder explizit beim Aufruf von <code>git send-email</code> mit <code>--chain-reply-to <ID/Betreff der Mail></code> angegeben werden.


===Tips===
==Seifes Buildsystem für SH4 STBs mit eigenem SH4 Crosscompiler==
* Bevor Ihr Patches an eine Mailingliste verschicken wollt prüft zuvor ob alles "perfekt" ist. Je nach Größe der Teilnehmer auf einer Mailingliste kann es etwas anstrengend sein allen begreiflich zu machen das der oder die Patche doch nicht richtig waren. Dies könnt Ihr recht einfach prüfen indem Ihr eben nicht an die ML verschickt sondern an Euch selbst. Dazu kann man sich einen Alias einrichten der einem die viele Tipparbeit abnimmt.
(Da ich mir das immer nicht merken kann verewige ich das mal hier.)<br>
* Jeder Patch sollte ein "signoff" besitzen! Damit kann man später immer noch herausfinden von wem der ursprüngliche Patch/Code/Gedanke war. Bedenkt das Git ein dezentrales Versionsverwaltungssystem ist und nicht jeder der etwas zu einem Projekt beitragen will muss automatisch CheckIn Berechtigungen zu einem Repository besitzen.
Nachdem Debian im kommenden Stable Release auf Multilibs (32bit/64bit) setzt und ich noch nicht die benötigten Pakete entwuselt habe und man eventuell auch einen aktuelleren Crosscompiler wie den von STLinux benutzen will kann man kann man sich mit Crosstool-NG und Patches von STLinux seinen eigenen Crosscompiler für das Buildsystem bauen und natürlich auch benutzen.
 
===Crosscompiler bauen===
fehlt noch :-)
 
===Buildsystem benutzen===
Dazu wie üblich sich das Buildsystem lokal clonen und das Downloadverzeichniss anlegen oder verlinken sofern die Archive schon an anderer Stelle vorhanden sind. Dann die üblichen Schritte zum Vorbereiten ausführen, <code>make preqs</code>, <code>make crosstool</code> überspringen da man ja den extern liegenden Crosscompiler benutzen will, <code>make bootstrap</code> muss nun mit Angabe des erweiterten Pfades aufgerufen werden.
PATH=~/x-tools/sh4-stlinux-linux-gnu/bin/:$PATH make bootstrap
Nun kann man wie gewohnt das Buildsystem benutzen, einzigster Unterschied ist immer die Erweiterung von PATH.
PATH=~/x-tools/sh4-stlinux-linux-gnu/bin/:$PATH make neutrino-pkg system-tools


==Quellen==
==Quellen==
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/email-clients.txt;h=a0b58e29f91171cf8616fd2aaa93cc856c985dd9;hb=HEAD Documentation/email-clients.txt]
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/email-clients.txt;h=a0b58e29f91171cf8616fd2aaa93cc856c985dd9;hb=HEAD Documentation/email-clients.txt]
* [http://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Completely_plain_email Plaintext EMail mit TB]
* [https://addons.mozilla.org/de/thunderbird/search/?q=word%20wrap Mozilla Plugin "Toggle Wrap Words" für TB ID SM]
* [https://addons.mozilla.org/de/thunderbird/search/?q=word%20wrap Mozilla Plugin "Toggle Wrap Words" für TB ID SM]
* [https://git.wiki.kernel.org/index.php/GitTips#Using_gmail_to_send_your_patches GMail Einstellung für git-send-patch]
* [https://addons.mozilla.org/de/thunderbird/addon/colored-diffs/ Mozilla Plugin "Colored Diffs" für TB ID SM]
* [http://www.kernel.org/pub/software/scm/git/docs/git-send-email.html git-send-email Doku auf kernel.org]

Aktuelle Version vom 29. März 2013, 11:19 Uhr

Thunderbird/Icedove für Git und Mailinglisten anpassen

Thunderbird bzw. Icedove sind in der default Einstellung nicht wirklich dazu geeignet um Mails an Mailinglisten zu versenden. Dies hat seinen Grund darin wie der Textinhalt der Mail gestaltet wird.

Auf OSS Mailinglisten werden Mails wegen der besseren Lesbarkeit im Textformat mit einem Umbruch am 72. Zeichen erwartet. Nur wenige MLs wandeln die Mails vor dem Versand um. In der Grundeinstellung versendet TB/ID aber Mails im HTML Format. Diese und die anderen Eigenschaften kann man aber anpassen.

Umstellen auf "nur Text"

Dies lässt sich Erreichen in dem geprüft wird ob in den Konteneinstellungen unter "Verfassen & Adressieren" kein Haken bei "Nachricht im HTML-Format verfassen" gesetzt ist.

Konteneinstellungen

Umstellen des Textflusses

Ebenfalls benutzt per default TB/ID "fliesenden Text". Dies lässt sich in den erweiterten Eigenschaften verändern.
Dazu muss in den Einstellungen vom Program (Unter Windows unter "Extras - Einstellungen", unter Linux unter "Bearbeiten - Einstellungen" zu finden) im Fenster "Erweitert" Reiter "Allgemein" der Button "Konfiguration" geöffnet werden. Erweiterte Konfiguration

In den erweiterten Einstellungen muss der Eintrag "mailnews.send_plaintext_flowed" gesucht und auf "false" gestellt werden. Dies geschiet durch einen Doppelklick auf diese Zeile.

Textfluss ändern

optionales Installieren Plugin "Toggle Word Wrap"

Wenn man zwischen dem Fließtext und umgebrochenen Text wechseln muss oder will kann man sich das Plugin "Toggle Word Wrap" von Mozilla Plugins installieren. Damit kann man dann bequem zwischen beiden Textflussarten umschalten.

Textfluss ein- ausschalten

optionales Installieren Plugin "Colored Diffs"

Um Diffs bzw. Patches für das menschliche Auge lesbarer darzustellen kann man sich das Plugin "Colored Diffs" von Google Code nach installieren. Damit werden Diffs auf Wunsch ähnlich dargestellt wie man das vom Git Webfrontend, Trac, ViewCS oder WebSVN kennt.

Ansicht mit Colored Diffs

Codeblocks Installation

der bequeme Weg (bevorzugt!)

Jens Lody ist Developer bei C::B und stellt Debianpakete als 'stable releases' als auch als 'nightly build' zur Verfügung. Zum Installieren der 'stable releases' per apt-get geht man wie folgt vor.

  • Superuser werden
$ sudo su
  • Apt Eintrag erstellen, Quellen updaten, es erscheint eine Fehlermeldung die man nach dem Update der Quellen durch das Importieren des angemahnten Keys beseitigen kann
# für die stable Releases
# echo -e "deb http://apt.jenslody.de/stable squeeze main\ndeb-src http://apt.jenslody.de/stable squeeze main" > /etc/apt/sources.list.d/codeblocks.list
# apt-get update
...
# für testing und experimental, Achtung! hier muss manuell nach gearbeitet werden
# echo -e "deb http://apt.jenslody.de/testing wheezy main\ndeb-src http://apt.jenslody.de/testing wheezy main" > /etc/apt/sources.list.d/codeblocks.list
# apt-get update
...
W: GPG-Fehler: http://apt.jenslody.de any Release: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY C96E627C6EEB25C9
  • Importieren des Keyrings von Jens Lody
# apt-get install jens-lody-debian-keyring
  • Optional (im Beispiel für 64bit!)!!! wenn man die nightly builds verwenden will müssen zwei Pakete von Hand installiert werden da selbst in Squeeze nur die älteren Varianten sind (im Beispiel für 64bit)
# cd /tmp
# wget http://apt.wxwidgets.org/dists/squeeze-wx/main/binary-amd64/libwxbase2.8-0_2.8.12.1-0_amd64.deb && dpkg -i libwxbase2.8-0_2.8.12.1-0_amd64.deb
# wget http://apt.wxwidgets.org/dists/squeeze-wx/main/binary-amd64/libwxgtk2.8-0_2.8.12.1-0_amd64.deb && dpkg -i libwxgtk2.8-0_2.8.12.1-0_amd64.deb
  • Quellen erneut updaten
# apt-get update
  • nun Codeblocks (und die deutsche Dokumentation installieren)
# apt-get install codeblocks codeblocks-doc-de

Die hervorragende Dokumentation ist nun unter file:///usr/share/doc/codeblocks-doc-de/html/main_codeblocks_de.html zu finden.

  • Installation von Plugins wie z.B. DoxyBlocks, Valgrind, ..., gibt es aber nur vollständig in den nightly builds! (und wieder User werden gfs.)
# apt-get install codeblocks-additional codeblocks-additional-common codeblocks-contrib codeblocks-contrib-common
...
# exit

der manuelle Weg mit dpkg

http://www.codeblocks.org/downloads/26

wget http://download.berlios.de/codeblocks/codeblocks-10.05-1-debian-amd64.tar.bz2
tar xvjf codeblocks-10.05-1-debian-amd64.tar.bz2
$ dpkg -s codeblocks
Package: codeblocks
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 5792
Maintainer: Jens Lody <jens@codeblocks.org>
Architecture: amd64
Version: 10.05-1
Depends: libatk1.0-0 (>= 1.20.0), libc6 (>= 2.7-1), libcairo2 (>= 1.2.4), libcodeblocks0 (= 10.05-1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.12.0), libpango1.0-0 (>= 1.20.3), libstdc++6 (>= 4.1.1), libwxbase2.8-0 (>= 2.8.10.1), libwxgtk2.8-0 (>= 2.8.10.1), codeblocks-common (= 10.05-1)
Recommends: gcc | g++, gdb, codeblocks-contrib (= 10.05-1)
Suggests: libwxgtk2.8-dev, wx-common, xterm
Description: cross-platform integrated development environment (IDE)
 Code::Blocks is the open-source, cross-platform Integrated Development
 Environment (IDE).
 It is based on a self-developed plugin framework allowing unlimited
 extensibility. Most of its functionality is already provided by plugins.
 Plugins included in the base package are:
    * Compiler frontend to many free compilers
    * Debugger frontend for GDB (and CDB for windows platforms)
    * Source formatter (based on AStyle)
    * Wizard to create new C++ classes
    * Code-completion / symbols-browser (work in progress)
    * Default MIME handler
    * Wizard to create new Code::Blocks plugins
    * To-do list
    * Extensible wizard based on scripts (for creating new projects/targets/etc)
    * Autosave (saves your work in the unfortunate case of a crash)
 It\'s a svn-download and may contain bugs.
Homepage: http://www.codeblocks.org
sudo apt-get install libwxgtk2.8-0
sudo dpkg -i libcodeblocks0_10.05-1_amd64.deb codeblocks-common_10.05-1_all.deb
sudo dpkg -i codeblocks_10.05-1_amd64.deb

Lokalisierung von Codeblocks


Stop hand.png HINWEIS:

Die Lokalisierung von Codeblocks ist unvollständig und wird es auch immer sein! Wer diese oder auch eine andere IDE einsetzen sollte wirklich prüfen ob er eine deutsche Oberfläche der GUI benötigt. Viele Begriffe aus dem Developer und Softwarebereich sind englisch und lassen sich nur bedingt übersetzen. International üblich ist eine englische GUI. Dies hilft Missverständnisse zu vermeiden.

Die Standardinstallation von Codeblocks (C::B) ist wie für eine IDE üblich mit einer englischen GUI. Codeblocks bietet aber auch Lokalisierungen an. Diese kann man auf der Launchpad Projektseite herunterladen bzw. anfordern. Dazu benötigt man allerdings einen Account bei Launchpad denn nur angemeldete User können den Downloadhinweis sehen.

Wenn man sich eingeloggt hat kann man entweder die .po oder die fertig Übersetzte .mo Datei von der Lauchpad Webseite anfordern. Die .po Dateien sind die eigentliche Lokalisierungen in die die passenden Übersetzungen eingetragen werden. Damit kann aber Codeblocks nichts anfangen, da es die Lokalisierungen im Binärformat, also als Datei .mo erwartet. Wer also die .mo Datei herunterladen will kann folgende Schritte überspringen.

Egal welchen Dateityp man auf der Launchpad Webseite anfordert, man erhält einen Downloadlink in dem ein Archiv launchpad-export.tar.gz liegt. Dieses kann man mit

$ tar xvf launchpad-export.tar.gz

in einem temporären Ordner entpacken kann. In diesem findet Ihr, wenn Ihr .po angefordert habt nun die entsprechenden Quelldateien mit den jeweiligen Übersetzungen. Für die deutschen Übersetzungen entsprechend codeblocks-de.po. Diese Datei kann man mit POEdit oder auch mit jedem anderen Editor bearbeiten.

Damit man das Binärformat .mo erhält muss man allerdings die .po Datei noch mit msgfmt übersetzen. Das Zielformat muss allerdings so aussehen: de_codeblocks.mo Der Aufruf ist daher folgender:

$ msgfmt codeblocks-de.po -o de_codeblocks.mo

Diese Datei muss nun in den Ordner /usr/share/codeblocks/locale/de_DE. Da dieser nicht vorhanden ist muss dieser erst erstellt werden.

$ sudo mkdir -p /usr/share/codeblocks/locale/de_DE

In diesen Ordner nun die eben erstellte de_codeblocks.mo kopieren.

$ sudo cp de_codeblocks.mo /usr/share/codeblocks/locale/de_DE

Nach dem nächsten Neustart sollte C::B nun mit deutschen locales starten.

Wer auf der Launchpad entsprechend die .mo Dateien angefordert hat muss sich die codeblocks-de.mo entpacken, umbenennen und in den benannten Ordner kopieren.
Wer sich das selber Übersetzen und gfls. das Anmelden auf Launchpad ersparen will findet hier eine fertige de_codeblocks.mo. Oder folgendes mit root Berechtigungen aufrufen.

mkdir -p /usr/share/codeblocks/locale/de_DE && cd /usr/share/codeblocks/locale/de_DE && wget http://62.75.162.37/misc/cs/de_codeblocks.mo

post-receive Hook auf einem Git Server

Für ein post-receive Hook Script gibt es zahlreiche Varianten. Es gibt zahlreiche Scripte in Form von einen oder mehreren Shell oder Perl Scripten bis hin zu Ruby Scripten.

Ich habe mich für http://www.icir.org/robin/git-notifier/ entschieden, welches ein Python Script ist. Gerade aus diesem Grund. Es ist nur ein Script und dazu aus Python, so das ich es bei Bedarf anpassen kann.

Das Python Script kommt nach /usr/local/bin. Der Hook post-receive im Hooks Verzeichnis des Repositorys ist mehr oder weniger ein einfacher Aufruf von git-notifier.

#!/bin/bash

/usr/local/bin/git-notifier --mailinglist=projekt-foo@projekt-foo.org \
                            --emailprefix="[git] projekt-foo.git" \
                            --repouri="https://git.projekt-foo.org/?p=projekt-foo.git;a=summary" \
                            --sender=git@projekt-foo.org

Zum Debuggen beim Einrichten des Hooks kann man noch die Option --debug anhängen. Achtung! Die Option --debug ist eher ein "try-run", es wird dann keine Mail versendet! Praktisch zum Prüfen ob die generierte Mail korrekt ist. Das Hook Script kann dann direkt als User git bzw. gitolite im Hook Verzeichnis des Repos aufrufen.

#!/bin/bash

/usr/local/bin/git-notifier --mailinglist=projekt-foo@projekt-foo.org \
                            --emailprefix="[git] projekt-foo.git" \
                            --repouri="https://git.projekt-foo.org/?p=projekt-foo.git;a=summary" \
                            --sender=git@projekt-foo.org \
                            --debug

Will man die Commitmail an mehrere Empfänger versenden lassen muss man die Angabe für die Option --mailinglist anpassen. Dazu kann man sich eine Variable im post-receive Script setzen. In späteren Versionen wird es vermutlich eine Option im Pythonscript direkt geben.

#!/bin/bash

REPO=projekt-foo
HOST=projekt-foo.org
# an option for testing surpose
#OPTION="--diff=[SHA_ID1]..[SHA_ID2] --debug"

# if you use gitolite ...
if [ "$GL_ADMINDIR"=="" ]; then
        echo "\$GL_ADMINDIR set by $0"
        GL_ADMINDIR="$HOME/.gitolite"
fi

# sourcing external mail recipients
if [ -f $GL_ADMINDIR/conf/"$REPO"_recipient.cfg ]; then
    . $GL_ADMINDIR/conf/"$REPO"_recipient.cfg
else
    # setting local recipients
    MAILINGLIST="Mister X <emailuser1@nowhere.com>,Errol Flinn <horray@plateau.it>"

/usr/local/bin/git-notifier --mailinglist="$MAILINGLIST" \
                            --emailprefix="[git@$HOST] $REPO.git" \
                            --repouri="https://git.$HOST/?p=$REPO.git;a=summary" \
                            --sender=git@$HOST \
                            $OPTION

Seifes Buildsystem für SH4 STBs mit eigenem SH4 Crosscompiler

(Da ich mir das immer nicht merken kann verewige ich das mal hier.)
Nachdem Debian im kommenden Stable Release auf Multilibs (32bit/64bit) setzt und ich noch nicht die benötigten Pakete entwuselt habe und man eventuell auch einen aktuelleren Crosscompiler wie den von STLinux benutzen will kann man kann man sich mit Crosstool-NG und Patches von STLinux seinen eigenen Crosscompiler für das Buildsystem bauen und natürlich auch benutzen.

Crosscompiler bauen

fehlt noch :-)

Buildsystem benutzen

Dazu wie üblich sich das Buildsystem lokal clonen und das Downloadverzeichniss anlegen oder verlinken sofern die Archive schon an anderer Stelle vorhanden sind. Dann die üblichen Schritte zum Vorbereiten ausführen, make preqs, make crosstool überspringen da man ja den extern liegenden Crosscompiler benutzen will, make bootstrap muss nun mit Angabe des erweiterten Pfades aufgerufen werden.

PATH=~/x-tools/sh4-stlinux-linux-gnu/bin/:$PATH make bootstrap

Nun kann man wie gewohnt das Buildsystem benutzen, einzigster Unterschied ist immer die Erweiterung von PATH.

PATH=~/x-tools/sh4-stlinux-linux-gnu/bin/:$PATH make neutrino-pkg system-tools

Quellen