Daniel Seuffert schrieb:
Hi Athaba, sorry für die Nachfrage weil es halb-OT ist: Mir ist schon aufgefallen, daß du in der Vorlage für den BSD-family-flyer von 5.300 packages in pkgsrc geschrieben hattest. Dies ist dann einfach dem mangelnden Platz zum Opfer gefallen. Ich hatte schon im channel nachgefragt, woher die Diskrepanz rührt von etwas über 5.900 bei NetBSD zu deinen 5.300 bei Dragon Fly. Woher kommt diese und warum verändert sich das? Sorry, habe keinen Plan von pkgsrc.
Das kommt daher, dass pkgsrc viele Pakte hatte, die auf unterschiedlichen Plattformen (logischerweise) unterschiedlich kompilert werden. In FreeBSDs Ports ist alles auf FreeBSD optimiert, weil es ja nur von FreeBSD verwendet wird. Ja, auch OpenBSD verwendet Ports, aber die haben ja soviel ich weiß auch nen eigenen Tree.
Pkgsrc untrestützt ja viele OSs und Hardwarearchitekturen, also müssen unterschiedliche Flags gesetzt werden.
Als Beispiel nehme ich mal setiathome, welches noch keinen DragonFly-support hat, FreeBSD aber sehrwohl unterstützt:
Das erkennt man an
Code:
.elif ${OPSYS} == "FreeBSD"
#
DISTNAME= ${PKGNAME_NOREV}.${MACHINE_ARCH}-unknown-freebsd4.0
und
Code:
ONLY_FOR_PLATFORM= NetBSD-*-sparc FreeBSD-*-i386 OpenBSD-*-alpha
Oft genügt es DragonFly zu "ONLY_FOR_PLATFORM" (um den Kompiliervorgang zu ermöglichen) und ".elif ${OPSYS} == "DragonFly" (um die FreeBSD-Optionen zu verwenden) hinzuzufügen.
Bei extrem systemabhängigen Paketen braucht man eventuell komplett eigene Patches. Im Fall von setiathome gibt es zum Beispiel zwei unterschiedliche Nachrichten[2]
Um zu zeigen was wo kompiliert (es können ja auch andere Probleme auftreten und nicht jedes neue Paket wird gleich auf jeder Architektur und jedem OS kompiliert) gibt es sogenannte Bulkbuilds. Dieser kann jeder machen (um fuer seine Firma oder fur sich selbst immer aktuelle und vielleicht auch optimierte (nicht nur durch den Compiler, sondern auch links mit Grafikmodus oder ähnliches) Pakete zu haben). Wenn man die Ergebnisse dann an die pkgsrc-bulk-Liste[3] schickt unterstützt ihr damit pkgsrc. Wie das alles geht steht natürlich in der pkgsrc-Dokumentation[4]. Für alle, die das nicht tun können oder wollen gibt's aber auch andere Möglichkeiten, wie pkgsuvery[5] oder pkg_notify[6] um pkgsrc zu unterstützen. Das gilt aber für alle Betriebssysteme (und da gibt es sogar Windows(Internix)[7]), die unterstützt werden.
[1] siehe]ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/misc/setiathome/Makefile
[2] siehe Message.* in
ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/misc/setiathome/
[3]
http://www.netbsd.org/MailingLists/#pkgsrc-bulk
[4]
http://www.netbsd.org/Documentation/pkgsrc/binary.html#bulkbuild
[5]
http://pkgsrc.se/pkgtools/pkgsurvey
[6]
http://pkgsrc.se/pkgtools/pkg_notify