Fink

Porting - 5. Vorbereitungen für 10.3

5.1 Perl

In OS X 10.2, /usr/bin/perl war perl 5.6.0 und der die Architektur hieß "darwin". In OS X 10.3, /usr/bin/perl wurde auf perl 5.8.1 aktualisiert und die Architektur in "darwin-thread-multi-2level" umbenannt. Diese Änderungen sollten bei der normalen Verwendung von perl bei der Erstellungen von Paketen keine Probleme verursachen, weil jede Version von perl weiß, wo sie ihre eigenen Modulen findet. Paketbetreuer, die diesen Regeln Perl Modules packaging policy folgen und auch der Dokumentation zu CompileScript und InstallScript folgen, haben bereits alles richtig aufgesetzt.

5.2 Neue Definitionen von Symbolen

Beginnend mit Mac OS X 10.3 gibt es jetzt eine vollständige Definition des Typs socklen_t. FÜgen sie folgendes für eine Typdefinition zu ihrem Programm hinzu:

#include <sys/types.h>
#include <sys/socket.h>

5.3 Neue Systembibliotheken

Mac OS X 10.3 enthält einige neue Bibliotheken, die vorher nicht vorhanden waren und deshalb bisher als Fink-Pakete zur Verfügung gestellt wurden:

FieldValue
libpoll

Die Dateien /usr/lib/libpoll.dylib und /usr/include/poll.h sind jetzt in Mac OS X enthalten, aber die Implementation der Bibliothek ist unvollständig. Reicht die Bibliothek dennoch für ihre Zwecke aus, können sie die Abhängigkeiten in von den Fink-Paketen "libpoll" und "libpoll-shlibs" entfernen. Der Code der Bibliotheken wurde in libSystem gepackt, das automatisch gelinkt wird. Deshalb wird -lpoll nicht mehr benötigt, wenn sie die OS X Implementation benutzen wollen. Beachten sie, dass OS X die Datei libpoll.dylib enthält, so dass die Option -lpoll zu unterschiedlichen Ergebnissen führen kann, je nachdem ob das Fink Paket "libpoll" installiert ist oder nicht.

libdl

Die Dateien /usr/lib/libdl.dylib und /usr/include/dlfcn.h sind jetzt vorhanden und man sollte die Abhängigkeiten von den Fink-Paketen "dlcompat", "dlcompat-dev" und "dlcompat-shlibs" nicht mehr benötigen. Die Code der Bibliotheken wurde in libSystem gepackt, das automatisch gelinkt wird. Deshalb wird -ldl nicht mehr benötigt, wenn sie die OS X Implementation benutzen wollen (Es macht aber nichts, wenn sie es dennoch angeben).

GNU getopt

Diese Bibliothek wurde einschließlich der Funktion getopt_long() in libSystem und /usr/include/getopt.h realisiert, so dass man die Fink-Pakete "libgnugetopt" und "libgnugetopt-shlibs" nicht mehr als Abhängigkeiten benötigt. LibSystem wird automatisch gelinkt und /usr/include wird automatisch durchsucht, so dass sie die Optionen -lgnugetopt und -I/opt/sw/include/gnugetopt nicht mehr benötigen. Sie wurden bisher verwendet, um "libgnugetopt" aus Fink zu verwenden.

Migrieren sie ein Paket nach OS X 10.3, versuchen sie diese veralteten Abhängigkeiten zu entfernen, denn diese Pakete werden vermutlich in der Zukunft entfernt. Dies bedeutet, dass sie ja nach Baum verschiedene Paketbeschreibungen anlegen müssen. Beachten sie auch, dass die Revision immer erhöht werden muss, wenn sie Änderungen in einem Paket vornehmen. Dadurch ist es für einen Nutzer, der von OS X 10.2 auf 10.3 aktualisiert, so, dass er ein 10.3-spezifissches Paket als ein "neueres" als sein vorhandenes für 10.2 sehen wird. Es ist Konvention, dass die Revision bei Änderungen im Zusammenhang mit einer Migration zu einem höheren Baum um 10 erhöht wird damit noch Platz für zukünftige Aktualisierungen im niedrigeren Baum ist.

Beim Test eines migirierten Pakets müssen sie darauf achten, dass sie alle Pakete löschen, deren BuildDepends sie entfernt haben. Andernfalls kann es sein, dass der Compiler immer noch die Bibliotheken aus Fink verlinkt.

Weiter: 6. Vorbereitungen für 10.4