.deepblack

July 8, 2006

.NetBSD package bauen am beispiel von cmus

Filed under: .Unix — admin @ 10:27 am

heute wollen wir uns mal ein package für pkgsrc bauen. ist eigentlich gar nicht sooo schwer,
nur gibt es ein paar stolperfallen.

als erstes brauchen wir mal zwei tools
- pkglint
- url2pkg
zu finden in /usr/pkgsrc/pkgtolls/ installation wie üblich mit ‘make install clean’
man kann auch noch bmake installieren, geht ohne aber auch.

erst legen wir verzeichniss für cmus in der passenden kategorie an und wechseln dann dorthin:
#mkdir /usr/pkgsrc/audio/cmus
#cd /usr/pkgsrc/audio/cmus
d url2pkg erzeugt selbstständig das package, die nötigsten dateien etc. man muss allerdings noch handanlegen ;) als nächstes sollte man sich eine list der abhängigkeiten raussuchen, findet man meistens in README dateien oder auf der projekt website der software. wenn man diese denn dann hat kümmert man sich erstmal um die Makefile, also aufrufen mit dem editor eurer wahl.bei cmus hab ich folgende abhängigkeiten:

  • ncurses
  • libmad (mp3 codec)
  • libvorbis (ogg codec)
  • libao
  • flac (flac codec)

wie man sieht hat url2pkg schon recht gute vorarbeit geleistet.
DISTNAME, CATEGORIES, MASTER_SITES, EXTRACT_SUFX und HOMEPAGE haben werte zugewießen bekommen, die im normalfall stimmen. bei MAINTAINER müsst ihr eure email addy eintragen und bei COMMENT eine sehr kurze beschreibung der software.

als nächstes schauen wir mal nach dem configure script. cmus hat kein gnu configure sondern eine selbstgebaute lösung, darum verwenden wir HAS_CONFIGURE= yes. bei HAS_CONFIGURE gibt es auch noch die möglichkeit CONFIGURE_SCRIPT zu definieren, also z.b. ./configure (CONFIGURE_SCRIPT= ./configure), hier ist es aber nicht nötig.
wenn ein gnu configure verwendet wird wäre es GNU_CONFIGUR = yes

dann teilen wir dem pkgsrc system noch mit das gmake zum bauen verwendet werden soll, ein normales make in den sourcen würde zu fehlern führen.
USE_TOOLS= gmake
oftmals wird bei USE_TOOLS auch noch pkg-config angegeben.

nächster schritt sind die configure args, diese erhält man bei dem ausführen von ./configure –help
ich habe folgende für cmus angegeben:

CONFIGURE_ARGS+= prefix=${PREFIX}
CONFIGURE_ARGS+= CONFIG_ALSA=n
CONFIGURE_ARGS+= CONFIG_ARTS=n
CONFIGURE_ARGS+= CONFIG_OSS=y
CONFIGURE_ARGS+= CONFIG_MAD=y
CONFIGURE_ARGS+= CONFIG_AO=y
CONFIGURE_ARGS+= CONFIG_FLAC=y
CONFIGURE_ARGS+= mandir=${PREFIX}/man/

hier ist wichtig das keine — für die optionen verwendet werden, denn das configure von cmus stirbt bei –, besonders wichtig sind prefix und mandir damit die software auch bei der installation im richtigen, system spezifischen pfad landet, bei netbsd das binary in /usr/pkg/bin etc.
dieser pfad ist in der variable ${PREFIX} gespeichert.

dann hab ich noch ein kleines extra mit eingebaut da pkgsrc ja auch auf solaris verfügbar ist.

.include “../../mk/bsd.prefs.mk”
.if ${OPSYS} == “SunOS”
CONFIGURE_ARGS+= CONFIG_SUN=y
.endif

in der bsd.prefs.mk sind unter anderem die OPSYS codes gespeichert und mit einem arbeiten wir ja hier, nämlich SunOS. wenn das grundsystem ein Solaris/SunOS ist wird zusätzlich noch als argument bei configure CONFIG_SUN auf y gesetzt und somit mit sun audio support gebaut.

jetzt noch die abhängigkeiten eintragen und wir sind mit der Makefile fürs erste durch.
hier gibt es allerdings 3 möglichkeiten,
a) .include
b) DEPENDS
c) BUILD-DEPENDS

.include wird immer dann genommen wenns eine feste abhängigkeit ist und eine buildlink3.mk vorhanden ist.
(.include “../../audio/flac/buildlink3.mk)

DEPENDS wird verwendet wenn die buildlink3.mk fehlt
(DEPENDS+= flac-[0-9]*:../../audio/flac
DEPENDS+= flac>=1.0:../../audio/flac )

BUILD-DEPENDS wird verwendet wenn die abhängigkeit nur zum bauen gebraucht wird nicht aber nachträglich zum betrieb der software.
(BUILD-DEPENDS+= lua>=5.0:../../lang/lua )

.include “../../devel/ncurses/buildlink3.mk”
.include “../../audio/libmad/buildlink3.mk”
.include “../../audio/libvorbis/buildlink3.mk”
.include “../../audio/libao/buildlink3.mk”
.include “../../audio/flac/buildlink3.mk”
.include “../../mk/bsd.pkg.mk”

WICHTIG! bsd.pkg.mk muss immer am ende stehen, sonst wird configure die libs nicht finden die in /usr/pkg/lib liegen, kleine, gemeine stolperfalle ist das.

2.
jetzt rufen wir pkglint auf und sehen obwir ein gutes package haben, mit pkglint -e werden auch ausführlichere erklärungen der fehler und oder warnungen ausgegeben.
wenn das bereinigt ist dann fangen wir an zu testen..

ein make wird die gefahren zu tage fördern die im configure und beim kompilieren lauern (wenn bmake installiert ist benutzen wir halt bmake anstelle von make).
wenn hier fehler auftreten sollte man sich Chapter 17, Making your package work durchlesen!

nach fehlerfreiem bauen machen wir weiter mit der installation und der PLIST. nach der plist erzeugung sollte man n blick drauf werfen (text datei) um zu gucken ob die dort aufgeführten dateien soweit gut aussehen oder ob dort quark erzeugt wurde - nicht wundern wenn die datei fast leer ist -, anschließend nochmal pkglint ausführen, diesmal wird auch die PLIST überprüft und eventuelle fehler werden zu tage befördert.

#make install || bmake install
#make print-PLIST > PLIST
#pkglint

wenn PLIST leer ist aber auch wenn sie gut aussieht machen wir folgendes..

#make deinstall
nur bei leerer PLIST
#make install
#make print-PLIST > PLIST
#make print-PLIST

hier werden nun evtl. dateien und oder verzeichnisse ausgegeben die bei der deinstallation
nicht entfernt wurden. was dort ausgegeben wird mit in die PLIST eintragen und zwar am ende.

#make package
#make deinstall
#pkg_add /usr/pkgsrc/distfiles/All/package.tar.gz (cmus-2.0.3.tar.gz)

mal ausführen obs auch geht, wenn ja dann gut, wenn nein dann schlecht und man sollte es reparieren.
wird sind fertig, noch ein make clean ausführen und glücklich sein. das package muss nun nur noch submittet werden.

nun erstellen wir erstmal eine tar.gz file von cmus/ und codieren sie mit uuencode. am besten wäre es die tar.gz in deinem home directory abzulegen.

#cd ~
#tar cfz cmus.tar.gz /usr/pkg/audio/cmus
#uuencode cmus.tar.gz cmus.tar.gz cmus.uue

submited wird das ganze mit send-pr oder dem send-pr online formular, als kategorie pkg angeben und den inhalt der cmus.uue in einem beschreibungsfeld, z.b. full desciption, ablegen.
*.uue mit einem text editor öffnen und rauskopieren.
mit angegeben werd muss der package name, version und eine kleine zusammenfassung, z.b. COMMENT aus der Makefile.

das wars dann auch schon

July 5, 2006

.Wieso Deutschland nicht Weltmeister geworden ist

Filed under: ./dev/null, .DunkleGedankenWelt — admin @ 11:41 pm

ja nun folgendes ist ungewöhnlich, aber viele der neuen patrioten mit ihrem überschäumendem nationalstolz werden mir sicher recht geben.
die deutsche elf hat natürlich nur gegen italien verloren weil…
.. der koch schuld ist! richtig gelesen! traut ruhig euren augen und vorallem eurem hirn.
die national elf kann noch so gut trainier sein, es bringt einfach nix wenn das essen nicht stimmt.
deutsche männer brauchen deutsches essen. immer diese pasta, olivenöl, fettarmes essen.. gemüse, wenig fleisch, wenn dann geflügel. oh je, sowas kann nur nach hinten losgehen!

der körper eines deutschen ist doch gar nicht auf sowas abgestimmt, maximal pizza und döner gehen aber um dem neuen deutschen nationalstolz gerecht zu werden müssen solche speisen natürlich von der karte gestrichen werden, für fans sowie spieler (wobei die natürlich eh keine pizza dürfen..).
der deutsche mann und gerade der deutsche fussballspieler, braucht rouladen, schweine- und rinderbraten, knödel, salzkartoffeln, sauerkraut, rotkohl, jägerschnitzel (ohne pommes, denn das ist französisch) - oh mein gott, jetzt hab ich doch nicht etwa illusionen von treuen deutschen zerstört die dachten pommes frittes sein ein deutsches gericht?

fakt ist: der koch ist schuld! deftige hausmannskost und das ein oder andere gute bier hätte sicher geholfen weltmeister zu werden.. aber so.

berlin, berlin, wir fahren NICHT nach berlin!

nun packt eure fahnen wieder ein, kehrt zu eurem geregelten alltag zurück und motzt wieder über deutschland wie eh und je.

Powered by WordPress