---
title: Kapitel 12. Was man machen respektive vermeiden sollte
prev: books/porters-handbook/security
next: books/porters-handbook/porting-samplem
showBookMenu: true
weight: 12
params:
  path: "/books/porters-handbook/porting-dads/"
---

[[porting-dads]]
= Was man machen respektive vermeiden sollte
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 12
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/porters-handbook/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[dads-intro]]
== Einführung

Hier ist eine Liste von gebräuchlichen Dos and Don'ts (Dinge, die man machen oder vermeiden sollte), welchen Sie während des Portierungsprozesses begegnen werden. Sie sollten Ihren Port anhand dieser Liste überprüfen. Sie können auch Ports in der http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query[PR Datenbank], welche andere Menschen eingereicht haben, kontrollieren. Senden Sie bitte Kommentare zu Ports, die Sie verifizieren wie unter extref:{contributing}[Bug Reports and General Commentary, CONTRIB-GENERAL] beschrieben. Der Abgleich von Ports aus der PR-Datenbank hilft uns diese schneller zu committen, und zeigt auch, dass Sie wissen, worum es geht.

[[porting-wrkdir]]
== `WRKDIR`

Schreiben Sie in keine Dateien außerhalb von `WRKDIR`. `WRKDIR` ist der einzige Ort, welcher während des Erstellen des Ports garantiert beschreibbar ist (siehe extref:{handbook}ports[Ports Installieren von CDROM, PORTS-CD] für ein Beispiel, um Ports in einem schreibgeschützen Zweig zu erstellen). Wenn Sie eine der [.filename]##pkg-*## Dateien modifizieren müssen, sollten Sie <<porting-pkgfiles,eine Variable erneut definieren>>, anstatt die Datei zu überschreiben.

[[porting-wrkdirprefix]]
== `WRKDIRPREFIX`

Vergewissern Sie sich, dass Ihr Port `WRKDIRPREFIX` beachtet. Die meisten Ports sollten sich darüber keine Sorgen machen. Beachten Sie bitte, falls auf `WRKDIR` eines anderen Ports verwiesen wird, dass die korrekte Position [.filename]#WRKDIRPREFIXPORTSDIR/subdir/name/work#, und nicht etwa [.filename]#PORTSDIR/subdir/name/work#, [.filename]#.CURDIR/../../subdir/name/work# oder ähnliches ist.

Falls Sie `WRKDIR` selbst definieren, sollten Sie sicherstellen, dass Sie `${WRKDIRPREFIX}${.CURDIR}` am Anfang anfügen.

[[porting-versions]]
== Unterschiedliche Betriebssysteme und Betriebssystemversionen

Sie können auf Quelltext treffen, welcher Modifizierungen oder bedingtes Kompilieren, abhängig davon, unter welcher Unix-Version er läuft, benötigt. Falls Sie Änderungen an solch einem Quelltext vornehmen müssen, stellen Sie bitte sicher, dass Sie Ihre Änderungen so allgemein wie möglich halten, damit wir den Quelltext auf ältere FreeBSD-Systeme portieren und zur Quer-Portierung auf andere BSD-Systeme, wie etwa 4.4BSD von CSRG, BSD/386, 386BSD, NetBSD und OpenBSD verwenden können.

Der bevorzugte Weg, um 4.3BSD/Reno (1990) und neuere Versionen des BSD-Quelltextes zu unterscheiden, ist das `BSD`-Makro zu nutzen, welches in http://cvsweb.freebsd.org/src/sys/sys/param.h[sys/param.h] definiert ist. Hoffentlich ist diese Datei schon enthalten - falls nicht, so fügen Sie folgenden Quelltext:

[.programlisting]
....
#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endif
....

an der richtigen Stelle in der [.filename]#.c# Datei hinzu. Wir glauben, dass jedes System, welches diese beiden Symbole definiert, die Datei [.filename]#sys/param.h# besitzt. Wenn Sie auf Systeme stoßen, wo dies nicht so ist, würden wir gerne davon erfahren. Bitte senden Sie eine E-Mail an {freebsd-ports}.

Eine andere Möglichkeit zur Unterscheidung ist der GNU Autoconf-Stil:

[.programlisting]
....
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
....

Vergessen Sie nicht `-DHAVE_SYS_PARAM_H` zu den `CFLAGS` im [.filename]#Makefile# hinzuzufügen, falls Sie diese Methode benutzen sollten.

Sobald Sie [.filename]#sys/param.h# hinzugefügt haben, können Sie mit Hilfe von

[.programlisting]
....
#if (defined(BSD) && (BSD >= 199103))
....

unterscheiden, ob der Quelltext auf einer 4.3 Net2 Code-Basis oder neuer (z.B. FreeBSD 1.x, 4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 1.1 und niedriger) kompiliert werden wird.

Benutzen Sie:

[.programlisting]
....
#if (defined(BSD) && (BSD >= 199306))
....

um zu differenzieren, ob der Quelltext auf der Basis von 4.4 Code oder neuer (z.B. FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0 oder höher) kompiliert werden wird.

Der Wert des `BSD`-Makros ist `199506` für die 4.4BSD-Lite2 Codebasis. Beachten Sie bitte, dass dies hier nur der Information wegen angegeben ist. Das Makro sollte nicht dazu benutzt werden, um zwischen Versionen von FreeBSD, welche auf 4.4-Lite basieren, und Versionen, welche Änderungen von 4.4-Lite2 übernommen haben, zu unterscheiden. Das {freebsd} Makro sollte stattdessen verwandt werden.

Sparsam sollte eingesetzt werden:

* {freebsd} ist in allen Versionen von FreeBSD definiert. Benutzen Sie dieses Makro, falls die Änderung(en), die Sie machen, _nur_ FreeBSD betrifft. Portierungsfallen, wie der Gebrauch von `sys_errlist[]` gegenüber `strerror()` sind Berkeley-Eigenheiten, keine FreeBSD Änderungen.
* In FreeBSD 2.x, ist {freebsd} auf `2` definiert. In älteren Versionen, ist es `1`. Alle späteren Versionen erhöhen es, damit es mit der Haupt-Versionsnummer übereinstimmt.
* Falls Sie zwischen einem FreeBSD 1.x und einem FreeBSD 2.x (oder höher) System unterscheiden müssen, ist es normalerweise richtig, die `BSD`-Makros (wie oben beschrieben) zu benutzen. Gibt es tatsächlich eine FreeBSD-spezifische Änderung (wie z.B. spezielle Optionen von Shared-Libraries für `ld`), ist es nicht zu beanstanden {freebsd} und #if {freebsd} > 1 zu nutzen, um FreeBSD 2.x und spätere Systeme zu erkennen. Falls Sie eine höhere Genauigkeit benötigen, um FreeBSD Systeme seit 2.0-RELEASE zu erkennen, können Sie folgendes nutzen:
+
[.programlisting]
....
#if __FreeBSD__ >= 2
#include <osreldate.h>
#    if __FreeBSD_version >= 199504
	 /* 2.0.5+ release specific code here */
#    endif
#endif
....

In den Tausenden von Ports, die bis jetzt erstellt wurden, gab es nur ein oder zwei Fälle, in denen {freebsd} hätte benutzt werden sollen. Nur weil ein früherer Port es an der falschen Stelle benutzt hatte, bedeutet das nicht, dass Sie dies auch machen sollten.

[[freebsd-versions]]
== __FreeBSD_version Werte

Hier ist eine praktische Liste von `__FreeBSD_version`-Werten wie in http://cvsweb.freebsd.org/src/sys/sys/param.h[sys/param.h] definiert:

.__FreeBSD_version-Werte
[cols="1,1,1", frame="none", options="header"]
|===
| Wert
| Datum
| Release

|119411
|
|2.0-RELEASE

|199501, 199503
|19. März 1995
|2.1-CURRENT

|199504
|9. April 1995
|2.0.5-RELEASE

|199508
|26. August 1995
|2.2-CURRENT vor 2.1

|199511
|10. November 1995
|2.1.0-RELEASE

|199512
|10. November 1995
|2.2-CURRENT vor 2.1.5

|199607
|10. Juli 1996
|2.1.5-RELEASE

|199608
|12. Juli 1996
|2.2-CURRENT vor 2.1.6

|199612
|15. November 1996
|2.1.6-RELEASE

|199612
|
|2.1.7-RELEASE

|220000
|19. Februar 1997
|2.2-RELEASE

|(nicht geändert)
|
|2.2.1-RELEASE

|(nicht geändert)
|
|2.2-STABLE nach 2.2.1-RELEASE

|221001
|15. April 1997
|2.2-STABLE nach texinfo-3.9

|221002
|30. April 1997
|2.2-STABLE nach top

|222000
|16. Mai 1997
|2.2.2-RELEASE

|222001
|19. Mai 1997
|2.2-STABLE nach 2.2.2-RELEASE

|225000
|2. Oktober 1997
|2.2.5-RELEASE

|225001
|20. November 1997
|2.2-STABLE nach 2.2.5-RELEASE

|225002
|27. Dezember 1997
|2.2-STABLE nach der Aufnahme von ldconfig -R

|226000
|24. März 1998
|2.2.6-RELEASE

|227000
|21. Juli 1998
|2.2.7-RELEASE

|227001
|21. Juli 1998
|2.2-STABLE nach 2.2.7-RELEASE

|227002
|19. September 1998
|2.2-STABLE nach man:semctl[2] Änderung

|228000
|29. November 1998
|2.2.8-RELEASE

|228001
|29. November 1998
|2.2-STABLE nach 2.2.8-RELEASE

|300000
|19. Februar 1996
|3.0-CURRENT vor man:mount[2] Änderung

|300001
|24. September 1997
|3.0-CURRENT nach man:mount[2] Änderung

|300002
|2. Juni 1998
|3.0-CURRENT nach man:semctl[2] Änderung

|300003
|7. Juni 1998
|3.0-CURRENT nach ioctl arg Änderungen

|300004
|3. September 1998
|3.0-CURRENT nach ELF-Konvertierung

|300005
|16. Oktober 1998
|3.0-RELEASE

|300006
|16. Oktober 1998
|3.0-CURRENT nach 3.0-RELEASE

|300007
|22. Januar 1999
|3.0-STABLE nach 3/4 Zweig

|310000
|9. Februar 1999
|3.1-RELEASE

|310001
|27. März 1999
|3.1-STABLE nach 3.1-RELEASE

|310002
|14. April 1999
|3.1-STABLE nach Änderung der C++ Konstruktor/Destruktor-Reihenfolge

|320000
|
|3.2-RELEASE

|320001
|8. Mai 1999
|3.2-STABLE

|320002
|29. August 1999
|3.2-STABLE nach binär-inkompatibler IPFW und Socket-Änderungen

|330000
|2. September 1999
|3.3-RELEASE

|330001
|16. September 1999
|3.3-STABLE

|330002
|24. November 1999
|3.3-STABLE nach Hinzufügen von man:mkstemp[3] zur libc

|340000
|5. Dezember 1999
|3.4-RELEASE

|340001
|17. Dezember 1999
|3.4-STABLE

|350000
|20. Juni 2000
|3.5-RELEASE

|350001
|12. Juli 2000
|3.5-STABLE

|400000
|22. Januar 1999
|4.0-CURRENT nach 3.4 Zweig

|400001
|20. Februar 1999
|4.0-CURRENT nach der Änderung im Verhalten des dynamischen Linkers.

|400002
|13. März 1999
|4.0-CURRENT nach Änderung der C++ Konstruktor/Destruktor Reihenfolge.

|400003
|27. März 1999
|4.0-CURRENT nach funktionierendem man:dladdr[3].

|400004
|5. April 1999
|4.0-CURRENT nach der __deregister_frame_info Fehlerbehebung für den dynamischen Linker (auch 4.0-CURRENT nach EGCS 1.1.2 Integration).

|400005
|27. April 1999
|4.0-CURRENT nach man:suser[9] API Änderung (auch 4.0-CURRENT nach newbus).

|400006
|31. Mai 1999
|4.0-CURRENT nach Änderung der cdevsw-Registrierung.

|400007
|17. Juni 1999
|4.0-CURRENT nach Hinzufügen von so_cred für Zugangsberechtigungen auf Socket-Ebene.

|400008
|20. Juni 1999
|4.0-CURRENT nach Hinzufügen eines poll Syscall-Wrappers zur libc_r.

|400009
|20. Juli 1999
|4.0-CURRENT nach der Änderung des Kernel `dev_t`-Typs zum `struct specinfo`-Zeiger.

|400010
|25. September 1999
|4.0-CURRENT nach dem Beseitigen eines Fehlers in man:jail[2].

|400011
|29. September 1999
|4.0-CURRENT nach der `sigset_t` Datentyp Änderung.

|400012
|15. November 1999
|4.0-CURRENT nach dem Wechsel zum GCC 2.95.2-Compiler.

|400013
|4. Dezember 1999
|4.0-CURRENT nach Hinzufügen der erweiterbaren Linux Mode ioctl-Routinen.

|400014
|18. Januar 2000
|4.0-CURRENT nach dem OpenSSL-Import.

|400015
|27. Januar 2000
|4.0-CURRENT nach der C++ ABI Änderung in GCC 2.95.2 von -fvtable-thunks zu -fno-vtable-thunks als Standard.

|400016
|27. Februar 2000
|4.0-CURRENT nach OpenSSH-Import.

|400017
|13. März 2000
|4.0-RELEASE

|400018
|17. März 2000
|4.0-STABLE nach 4.0-RELEASE

|400019
|5. Mai 2000
|4.0-STABLE nach der Einführung von verzögerten Prüfsummen.

|400020
|4. Juni 2000
|4.0-STABLE nach dem Einpflegen des libxpg4-Quelltextes in die libc.

|400021
|8. Juli 2000
|4.0-STABLE nach der Aktualisierung von Binutils auf 2.10.0, Änderungen der binären ELF-Markierungen, Aufnahme von tcsh ins Basissystem.

|410000
|14. Juli 2000
|4.1-RELEASE

|410001
|29. Juli 2000
|4.1-STABLE nach 4.1-RELEASE

|410002
|16. September 2000
|4.1-STABLE nachdem man:setproctitle[3] von der libutil in die libc verschoben wurde.

|411000
|25. September 2000
|4.1.1-RELEASE

|411001
|
|4.1.1-STABLE nach 4.1.1-RELEASE

|420000
|31. Oktober 2000
|4.2-RELEASE

|420001
|10. Januar 2001
|4.2-STABLE nach Kombinaion von libgcc.a und libgcc_r.a und zugehörigen Änderungen der GCC-Bindungen.

|430000
|6. März 2001
|4.3-RELEASE

|430001
|18. Mai 2001
|4.3-STABLE nach der Einführung von wint_t.

|430002
|22. Juli 2001
|4.3-STABLE nach dem Einpflegen der PCI Stromstatus-API.

|440000
|1. August 2001
|4.4-RELEASE

|440001
|23. Oktober 2001
|4.4-STABLE nach der Einführung von d_thread_t.

|440002
|4. November 2001
|4.4-STABLE nach den Änderungen der mount-Struktur (betrifft Dateisystem-Kernelmodule). 

|440003
|18. Dezember 2001
|4.4-STABLE nachdem die Userland-Komponenten von smbfs importiert worden sind.

|450000
|20. Dezember 2001
|4.5-RELEASE

|450001
|24. Februar 2002
|4.5-STABLE nach der Umbenennung von Elementen der USB-Struktur.

|450004
|16. April 2002
|4.5-STABLE nachdem die `sendmail_enable` man:rc.conf[5] Variable geändert worden ist, um den Wert `NONE` zu akzeptieren.

|450005
|27. April 2002
|4.5-STABLE nachdem XFree86 4 als Standard zum Bauen der Pakete benutzt wird.

|450006
|1. Mai 2002
|4.5-STABLE nach dem Reparieren des Empfangsfilters, welcher anfällig für einfache DoS-Attacken war.

|460000
|21. Juni 2002
|4.6-RELEASE

|460001
|21. Juni 2002
|4.6-STABLE man:sendfile[2] repariert, um mit der Dokumentation übereinzustimmen, und nicht mehr die Anzahl der gesendeten Header mit der Anzahl der Daten, welche aus der Datei geschickt werden, gegenzurechnen.

|460002
|19. Juli 2002
|4.6.2-RELEASE

|460100
|26. Juni 2002
|4.6-STABLE

|460101
|26. Juni 2002
|4.6-STABLE nach dem Einfließen von `sed -i` aus CURRENT.

|460102
|1. September 2002
|4.6-STABLE nach dem Einfließen von vielen neuen pkg_install-Funktionen aus HEAD (HEAD = die aktuellste und letzte Version des Quellverzeichnisbaumes).

|470000
|8. Oktober 2002
|4.7-RELEASE

|470100
|9. Oktober 2002
|4.7-STABLE

|470101
|10. November 2002
|Beginn von generierten __std{in,out,err}p Referenzen statt __sF. Dies ändert std{in,out,err} von einem Ausdruck während des Kompilierens zu einem Laufzeitausdruck.

|470102
|23. Januar 2003
|4.7-STABLE nach dem Einfliessen von mbuf-Änderungen, um m_aux mbufs mit denen von m_tag zu ersetzen

|470103
|14. Februar 2003
|4.7-STABLE erhält OpenSSL 0.9.7

|480000
|30. März 2003
|4.8-RELEASE

|480100
|5. April 2003
|4.8-STABLE

|480101
|22. Mai 2003
|4.8-STABLE nachdem man:realpath[3] Thread-sicher gemacht wurde.

|480102
|10. August 2003
|4.8-STABLE Änderung der 3ware-API in twe.

|490000
|27. Oktober 2003
|4.9-RELEASE

|490100
|27. Oktober 2003
|4.9-STABLE

|490101
|8. Januar 2004
|4.9-STABLE nachdem e_sid zu der Struktur kinfo_eproc hinzugefügt wurde.

|490102
|4. Februar 2004
|4.9-STABLE nach dem Einfliessen der libmap-Funktionalität für rtld.

|491000
|25. Mai 2004
|4.10-RELEASE

|491100
|1. Juni 2004
|4.10-STABLE

|491101
|11. August 2004
|4.10-STABLE nach dem Einfliessen von Revision 20040629 der Paket-Werkzeuge aus CURRENT.

|491102
|16. November 2004
|4.10-STABLE nach der Fehlerbehebung in der VM, um das Freigeben von fiktiven Speicherseiten korrekt zu handhaben.

|492000
|17. Dezember 2004
|4.11-RELEASE

|492100
|17. Dezember 2004
|4.11-STABLE

|492101
|18. April 2006
|4.11-STABLE nach dem Hinzufügen von libdata/ldconfig Verzeichnissen zu den mtree-Dateien.

|500000
|13. März 2000
|5.0-CURRENT

|500001
|18. April 2000
|5.0-CURRENT nach Hinzufügen von zusätzlichen Feldern in den ELF-Headern und Ändern der Methode zur ELF-Markierung von Binärdateien.

|500002
|2. Mai 2000
|5.0-CURRENT nach kld-Metadaten Änderungen.

|500003
|18. Mai 2000
|5.0-CURRENT nach buf/bio Änderungen.

|500004
|26. Mai 2000
|5.0-CURRENT nach binutils Aktualisierung.

|500005
|3. Juni 2000
|5.0-CURRENT nach dem Einfliessen des libxpg4 Quelltextes in die libc und der Einführung der TASKQ-Schnittstelle.

|500006
|10. Juni 2000
|5.0-CURRENT nach dem Hinzufügen der AGP-Schnittstellen.

|500007
|29. Juni 2000
|5.0-CURRENT nach der Aktualisierung von Perl auf Version 5.6.0.

|500008
|7. Juli 2000
|5.0-CURRENT nach der Aktualisierung des KAME-Quelltextes zu den 2000/07-Quellen.

|500009
|14. Juli 2000
|5.0-CURRENT nach ether_ifattach() und ether_ifdetach() Änderungen.

|500010
|16. Juli 2000
|5.0-CURRENT nachdem die mtree-Standards zurück zur ursprünglichen Variante geändert wurden; -L hinzugefügt, um Symlinks zu folgen.

|500011
|18. Juli 2000
|5.0-CURRENT nachdem die kqueue-API geändert worden ist.

|500012
|2. September 2000
|5.0-CURRENT nachdem man:setproctitle[3] von libutil nach libc verschoben worden ist.

|500013
|10. September 2000
|5.0-CURRENT nach dem ersten SMPng-Commit.

|500014
|4. Januar 2001
|5.0-CURRENT nachdem <sys/select.h> nach <sys/selinfo.h> verschoben worden ist.

|500015
|10. Januar 2001
|5.0-CURRENT nach dem Kombinieren von libgcc.a und libgcc_r.a und damit verbundene Änderungen an GCC-Bindungen.

|500016
|24. Januar 2001
|5.0-CURRENT nach der Änderung das Zusammenbinden von libc und libc_r zu erlauben, womit die -pthread Option veraltet ist.

|500017
|18. Februar 2001
|5.0-CURRENT nach dem Umschalten von struct ucred zu struct xucred, um die vom Kernel exportierte API für mount u.a.zu stabilisieren.

|500018
|24. Februar 2001
|5.0-CURRENT nach dem Hinzufügen der CPUTYPE make Variable zum Kontrollieren von CPU-spezifischen Optimierungen.

|500019
|9. Juni 2001
|5.0-CURRENT nach dem Verschieben von machine/ioctl_fd.h nach sys/fdcio.h

|500020
|15. Juni 2001
|5.0-CURRENT nach der Umbenennung der locale-Namen.

|500021
|22. Juni 2001
|5.0-CURRENT nach dem Bzip2-Import. Kennzeichnet auch, dass S/Key entfernt wurde.

|500022
|12. Juli 2001
|5.0-CURRENT nach SSE Unterstützung.

|500023
|14. September 2001
|5.0-CURRENT nach KSE-Meilenstein 2.

|500024
|1. Oktober 2001
|5.0-CURRENT nach d_thread_t, und nachdem UUCP in die Ports verschoben worden ist.

|500025
|4. Oktober 2001
|5.0-CURRENT nach Änderungen in der ABI bei der Weitergabe von Deskriptoren und Berechtigungen auf 64 Bit Plattformen.

|500026
|9. Oktober 2001
|5.0-CURRENT nachdem XFree86 4 als Standard zum Erstellen der Pakete benutzt wird und die neue libc strnstr()-Funktion hinzugefügt wurde.

|500027
|10. Oktober 2001
|5.0-CURRENT nachdem die neue libc strcasestr()-Funktion hinzugefügt wurde.

|500028
|14. Dezember 2001
|5.0-CURRENT nachdem die Userland-Komponenten von smbfs importiert wurden.

|(nicht geändert)
|
|5.0-CURRENT nachdem die neuen C99-Ganzzahlen mit spezifischer Breite hinzugefügt wurden.

|500029
|29. Januar 2002
|5.0-CURRENT nachdem eine Änderung im Rückgabewert von man:sendfile[2] gemacht wurde.

|500030
|15. Februar 2002
|5.0-CURRENT nach der Einführung des Types `fflags_t`, welches die passende Größe für Dateiflags hat.

|500031
|24. Februar 2002
|5.0-CURRENT nach der Umbenennung der USB elements-Struktur.

|500032
|16. März 2002
|5.0-CURRENT nach der Einführung von Perl 5.6.1.

|500033
|3. April 2002
|5.0-CURRENT nachdem die `sendmail_enable` man:rc.conf[5] Variable geändert worden ist, um den Wert `NONE` zu akzeptieren.

|500034
|30. April 2002
|5.0-CURRENT nachdem mtx_init() einen dritten Parameter entgegen nimmt.

|500035
|13. Mai 2002
|5.0-CURRENT mit GCC 3.1.

|500036
|17. Mai 2002
|5.0-CURRENT ohne Perl in /usr/src

|500037
|29. Mai 2002
|5.0-CURRENT nach dem Hinzufügen von man:dlfunc[3]

|500038
|24. Juli 2002
|5.0-CURRENT nachdem die Typen von einigen Elementen der sockbuf-Struktur geändert wurden und nachdem die Struktur neu geordnet wurde.

|500039
|1. September 2002
|5.0-CURRENT nach dem GCC 3.2.1 Import. Und auch nachdem die Header nicht mehr _BSD_FOO_T_ sondern _FOO_T_DECLARED benutzen. Dieser Wert kann auch als konservative Schätzung für den Beginn der Unterstützung des man:bzip2[1] Pakets verwendet werden.

|500040
|20. September 2002
|5.0-CURRENT nachdem verschiedene Änderungen an Plattenfunktionen gemacht wurden, um die Anhängigkeit von Interna der disklabel-Struktur zu entfernen.

|500041
|1. Oktober 2002
|5.0-CURRENT nach dem Hinzufügen von man:getopt_long[3] zur libc.

|500042
|15. Oktober 2002
|5.0-CURRENT nach der Aktualisierung von Binutils auf 2.13, bei denen die FreeBSD-Emulation, vec und das Ausgabeformat geändert wurden.

|500043
|1. November 2002
|5.0-CURRENT nach dem Hinzufügen schwacher pthread_XXX Stubs zur libc, womit libXThrStub.so veraltet ist. 5.0-RELEASE.

|500100
|17. Januar 2003
|5.0-CURRENT nach dem Erstellen des RELENG_5_0-Zweiges

|500101
|19. Februar 2003
|<sys/dkstat.h> ist leer und sollte nicht inkludiert werden.

|500102
|25. Februar 2003
|5.0-CURRENT nach der Änderung in der d_mmap_t-Schnittstelle.

|500103
|26. Februar 2003
|5.0-CURRENT nachdem taskqueue_swi geädert wurde, um ohne Giant zu arbeiten, und taskqueue_swi_giant hinzugefügt wurde, um Giant zu verwenden.

|500104
|27. Februar 2003
|cdevsw_add() und cdevsw_remove() gibt es nicht länger. Auftauchen der MAJOR_AUTO-Allokationsmöglichkeit.

|500105
|4. März 2003
|5.0-CURRENT nach der neuen cdevsw-Initialisierungsmethode.

|500106
|8. März 2003
|devstat_add_entry() wurde durch devstat_new_entry() ersetzt.

|500107
|15. März 2003
|Devstat Schnittstellenänderung; siehe sys/sys/param.h 1.149.

|500108
|15. März 2003
|Token-Ring Schnittstellenänderungen.

|500109
|25. März 2003
|Hinzufügen von vm_paddr_t.

|500110
|28. März 2003
|5.0-CURRENT nachdem man:realpath[3] Thread-sicher gemacht wurde.

|500111
|9. April 2003
|5.0-CURRENT nachdem man:usbhid[3] mit NetBSD synchronisiert wurde.

|500112
|17. April 2003
|5.0-CURRENT nach der neuen NSS Implementierung und Hinzufügen der POSIX.1 getpw*_r, getgr*_r Funktionen.

|500113
|2. Mai 2003
|5.0-CURRENT nach Entfernen des alten rc-Systems.

|501000
|4. Juni 2003
|5.1-RELEASE.

|501100
|2. Juni 2003
|5.1-CURRENT nach dem Erstellen des RELENG_5_1 Zweiges.

|501101
|29. Juni 2003
|5.1-CURRENT nachdem die Semantik von sigtimedwait(2) and sigwaitinfo(2) korrigiert wurden.

|501102
|3. Juli 2003
|5.1-CURRENT nach dem Hinzufügen der lockfunc und lockfuncarg-Felder zu man:bus_dma_tag_create[9].

|501103
|31. Juli 2003
|5.1-CURRENT nach der Integration des GCC 3.3.1-pre 20030711 Snapshots.

|501104
|5. August 2003
|5.1-CURRENT 3ware-API Änderungen in twe.

|501105
|17. August 2003
|5.1-CURRENT Unterstützung von dynamisch gebundenen /bin und /sbin und Verschieben von Bibliotheken nach /lib.

|501106
|8. September 2003
|5.1-CURRENT nachdem im Kernel Unterstützung für Coda 6.x hinzugefügt wurden.

|501107
|17. September 2003
|5.1-CURRENT nachdem die 16550 UART-Konstanten von [.filename]#<dev/sio/sioreg.h># nach [.filename]#<dev/ic/ns16550.h># verschoben wurden. Und nachdem die libmap Funktionalität vorbehaltlos vom rtld unterstützt wurde.

|501108
|23. September 2003
|5.1-CURRENT nach Aktualisierung der PFIL_HOOKS API.

|501109
|27. September 2003
|5.1-CURRENT nachdem kiconv(3) hinzugefügt wurde.

|501110
|28. September 2003
|5.1-CURRENT nachdem der standardmäßige Ablauf von open und close in cdevsw geändert wurde.

|501111
|16. Oktober 2003
|5.1-CURRENT nachdem das Layout von cdevsw geändert wurde.

|501112
|16. Oktober 2003
|5.1-CURRENT nach dem Hinzufügen von Mehrfachvererbung in kobj.

|501113
|31. Oktober 2003
|5.1-CURRENT nach der if_xname Änderung in der Struktur ifnet

|501114
|16. November 2003
|5.1-CURRENT nachdem /bin und /sbin geändert wurden, um sie dynamisch zu binden.

|502000
|7. Dezember 2003
|5.2-RELEASE

|502010
|23. Februar 2004
|5.2.1-RELEASE

|502100
|7. Dezember 2003
|5.2-CURRENT nach dem Erstellen des RELENG_5_2-Zweiges.

|502101
|19. Dezember 2003
|5.2-CURRENT nachdem die __cxa_atexit/__cxa_finalize Funktionen zur libc hinzugefügt wurden.

|502102
|30. Januar 2004
|5.2-CURRENT nachdem die Standard-Thread Bibliothek von libc_r zu libpthread geändert wurde.

|502103
|21. Februar 2004
|5.2-CURRENT nach dem Gerätetreiber API Megapatch.

|502104
|25. Februar 2004
|5.2-CURRENT nachdem getopt_long_only() hinzugefügt wurde.

|502105
|5. März 2004
|5.2-CURRENT nachdem NULL für C in ((void *)0) geändert wurde, was mehr Warnungen erzeugt.

|502106
|8. März 2004
|5.2-CURRENT nachdem pf beim Bauen und Installieren mit eingebunden wird.

|502107
|10. März 2004
|5.2-CURRENT nachdem time_t auf der sparc64-Plattform in einen 64-bit Wert geändert wurde.

|502108
|12. März 2004
|5.2-CURRENT nachdem sich die Unterstützung für den Intel C/C++-Compiler in einigen Headern und execve(2) geändert hat, um sich strikter an POSIX zu halten.

|502109
|22. März 2004
|5.2-CURRENT nach der Einführung der bus_alloc_resource_any API

|502110
|27. März 2004
|5.2-CURRENT nach dem Hinzufügen von UTF-8 locales

|502111
|11. April 2004
|5.2-CURRENT nach dem Entfernen der getvfsent(3) API

|502112
|13. April 2004
|5.2-CURRENT nach dem Hinzufügen der .warning Directive für make.

|502113
|4. Juni 2004
|5.2-CURRENT nachdem ttyioctl() zwingend erforderlich für serielle Treiber gemacht wurde.

|502114
|13. Juni 2004
|5.2-CURRENT nach dem Import des ALTQ-Frameworks.

|502115
|14. Juni 2004
|5.2-CURRENT nachdem sema_timedwait(9) geändert wurde, 0 bei Erfolg und einen von 0 verschiedenen Fehlercode im Falle eines Fehlers zurückzuliefern.

|502116
|16. Juni 2004
|5.2-CURRENT nach dem Ändern der Kernel Struktur dev_t, in ein Zeiger auf die Struktur cdev *

|502117
|17. Juni 2004
|5.2-CURRENT nach dem Ändern der Kernelstruktur udev_t in dev_t.

|502118
|17. Juni 2004
|5.2-CURRENT nachdem Unterstützung für CLOCK_VIRTUAL und CLOCK_PROF zu clock_gettime(2) und clock_getres(2) hinzugefügt wurde.

|502119
|22. Juni 2004
|5.2-CURRENT nachdem die Überprüfung des Klonens von Netzwerk-Schnittstellen geändert wurde.

|502120
|2. Juli 2004
|5.2-CURRENT nach dem Einfliessen von Revision 20040629 der Paket-Werkzeuge.

|502121
|9. Juli 2004
|5.2-CURRENT nachdem Bluetooth-Quelltext als nicht i386-spezifisch markiert wurde.

|502122
|11. Juli 2004
|5.2-CURRENT nach der Einführung des KDB Debugger Frameworks, der Umwandlung des DDB in ein Backend und der Einführung des GDB-Backends.

|502123
|12. Juli 2004
|5.2-CURRENT nachdem VFS_ROOT geändert wurde, eine Struktur thread als Argument zu aktzeptieren, wie vflush. Die Struktur kinfo_proc enthält nun einen Zeiger auf Benutzer Daten. Der Umstieg auf `xorg` als standardmäßige X Implementierung wurde auch zu dieser Zeit durchgeführt.

|502124
|24. Juli 2004
|5.2-CURRENT nachdem die Art und Weise, wie rc.d-Skripte von Ports und Altlasten gestartet werden, getrennt wurde.

|502125
|28. Juli 2004
|5.2-CURRENT nachdem die vorherige Änderung rückgängig gemacht wurde.

|502126
|31. Juli 2004
|5.2-CURRENT nach dem Entfernen von kmem_alloc_pageable() und dem Import von GCC 3.4.2.

|502127
|2. August 2004
|5.2-CURRENT nachdem die UMA Kernel API geändert wurde, um Konstruktoren und Initialisierungsmethoden zu erlauben fehlzuschlagen.

|502128
|8. August 2004
|5.2-CURRENT nach der Änderung in der vfs_mount Signatur sowie allgemeines Ersetzen von PRISON_ROOT durch SUSER_ALLOWJAIL in der suser(9) API.

|503000
|23. August 2004
|5.3-BETA/RC vor der Änderung der pfil-API.

|503001
|22. September 2004
|5.3-RELEASE

|503100
|16. Oktober 2004
|5.3-STABLE nach dem Erstellen des RELENG_5_3-Zweiges.

|503101
|3. Dezember 2004
|5.3-STABLE nach dem Hinzufügen von Fülloptionen im Stile der libc zu man:strftime[3].

|503102
|13. Februar 2005
|5.3-STABLE nachdem OpenBSD's nc(1) von CURRENT importiert wurde.

|503103
|27. Februar 2005
|5.4-PRERELEASE nach dem Einfliessen der Reparaturen aus CURRENT, in [.filename]#<src/include/stdbool.h># und [.filename]#<src/sys/i386/include/_types.h>#, um die GCC-Kompatibilität des Intel C/C++-Compilers zu benutzen.

|503104
|28. Februar 2005
|5.4-PRERELEASE nach dem Einfliessen der Änderung aus CURRENT in ifi_epoch statt der lokalen Zeit die Betriebszeit des Systems zu benutzen.

|503105
|2. März 2005
|5.4-PRERELEASE nach dem Einfliessen der Reparaturen von EOVERFLOW in vswprintf(3) aus CURRENT.

|504000
|3. April 2005
|5.4-RELEASE.

|504100
|3. April 2005
|5.4-STABLE nach dem Erstellen des RELENG_5_4-Zweiges.

|504101
|11. Mai 2005
|5.4-STABLE nach dem Vergrößern der standardmäßigen Stackgröße für Threads.

|504102
|24. Juni 2005
|5.4-STABLE nach dem Hinzufügen von sha256.

|504103
|3. Oktober 2005
|5.4-STABLE nach dem Einfliessen von if_bridge aus CURRENT.

|504104
|13. November 2005
|5.4-STABLE nach dem Einfliessen von bsdiff und portsnap aus CURRENT.

|504105
|17. Januar 2006
|5.4-STABLE nach dem Einfliessen der Änderung von ldconfig_local_dirs aus CURRENT.

|505000
|12. Mai 2006
|5.5-RELEASE.

|505100
|12. Mai 2006
|5.5-STABLE nach dem Erstellen des RELENG_5_5-Zweiges.

|600000
|18. August 2004
|6.0-CURRENT

|600001
|27. August 2004
|6.0-CURRENT nach der festen Aktivierung von PFIL_HOOKS im Kernel.

|600002
|30. August 2004
|6.0-CURRENT nach der anfänglichen Einführung von ifi_epoch zur Struktur if_data. Wurde nach ein paar Tagen wieder rückgängig gemacht. Benutzen Sie diesen Wert bitte nicht.

|600003
|8. September 2004
|6.0-CURRENT nach dem erneuten Hinzufügen des Elements ifi_epoch zur Struktur if_data.

|600004
|29. September 2004
|6.0-CURRENT nach dem Hinzufügen der Struktur inpcb als Argument in der pfil API.

|600005
|5. Oktober 2004
|6.0-CURRENT nach dem Hinzufügen des "-d DESTDIR" Schalters zu newsyslog.

|600006
|4. November 2004
|6.0-CURRENT nach dem Hinzufügen von Fülloptionen im Style der libc zu man:strftime[3].

|600007
|12. Dezember 2004
|6.0-CURRENT nach dem Hinzufügen von 802.11 Framework Neuerungen.

|600008
|25. Januar 2005
|6.0-CURRENT Änderung an den VOP_*VOBJECT() Funktionen und Einführung des MNTK_MPSAFE Schalters für Dateisysteme, welche ohne Giant arbeiten.

|600009
|4. Februar 2005
|6.0-CURRENT nach dem Hinzufügen von cpufreq Framework und Treibern.

|600010
|6. Februar 2005
|6.0-CURRENT nachdem OpenBSD's nc(1) importiert wurde.

|600011
|12. Februar 2005
|6.0-CURRENT nachdem der Anschein von `matherr()` Unterstützung in SVID2 entfernt wurde.

|600012
|15. Februar 2005
|6.0-CURRENT nach dem Vergrößern der standardmäßigen Stackgröße für Threads.

|600013
|19. Februar 2005
|6.0-CURRENT nach dem Einfliessen der Reparaturen in [.filename]#<src/include/stdbool.h># und [.filename]#<src/sys/i386/include/_types.h>#, um die GCC-Kompatibilität des Intel C/C++-Compilers zu benutzen.

|600014
|21. Februar 2005
|6.0-CURRENT nachdem die Überprüfungen auf EOVERFLOW in vswprintf(3) korrigiert wurden.

|600015
|25. Februar 2005
|6.0-CURRENT nach dem Einfliessen der Änderung, in ifi_epoch, statt der lokalen Zeit, die Betriebzeit des Systems zu benutzen.

|600016
|26. Februar 2005
|6.0-CURRENT nachdem das Format von LC_CTYPE auf der Festplatte verändert wurde.

|600017
|27. Februar 2005
|6.0-CURRENT nachdem das Format der NLS-Kataloge auf der Festplatte verändert wurde.

|600018
|27. Februar 2005
|6.0-CURRENT nachdem das Format von LC_COLLATE auf der Festplatte verändert wurde.

|600019
|28. Februar 2005
|Installation der acpica Include-Dateien in /usr/include.

|600020
|9. März 2005
|Hinzufügen des MSG_NOSIGNAL Schalters zur send(2) API.

|600021
|17. März 2005
|Hinzufügen von Feldern zu cdevsw

|600022
|21. März 2005
|gtar wurde aus dem Basissystem entfernt.

|600023
|13. April 2005
|Die Optionen LOCAL_CREDS, LOCAL_CONNWAIT für Sockets wurde zu unix(4) hinzugefügt.

|600024
|19. April 2005
|man:hwpmc[4] und zugehörige Werkzeuge wurden zu 6.0-CURRENT hinzugefügt.

|600025
|26. April 2005
|Die Struktur icmphdr wurden zu 6.0-CURRENT hinzugefügt.

|600026
|3. Mai 2005
|pf Aktualisierung auf 3.7.

|600027
|6. Mai 2005
|Kernel libalias und ng_nat wurden eingeführt.

|600028
|13. Mai 2005
|POSIX ttyname_r(3) wurde über unistd.h und libc zur Verfügung gestellt.

|600029
|29. Mai 2005
|6.0-CURRENT nachdem libpcap zu Version v0.9.1 alpha 096 aktualisiert wurde.

|600030
|5. Juni 2005
|6.0-CURRENT nach dem Import von NetBSDs if_bridge(4).

|600031
|10. Juni 2005
|6.0-CURRENT nachdem die Struktur ifnet aus dem Treiber softcs herausgelöst wurde.

|600032
|11. Juli 2005
|6.0-CURRENT nach dem Import von libpcap v0.9.1.

|600033
|25. Juli 2005
|6.0-STABLE nachdem die Versionen aller gemeinsam genutzten Bibliotheken, welche seit RELENG_5 nicht geändert wurden, erhöht wurden.

|600034
|13. August 2005
|6.0-STABLE nachdem das Argument credential zu der dev_clone-Ereignisbehandlung hinzugefügt wurde. 6.0-RELEASE.

|600100
|1. November 2005
|6.0-STABLE nach dem Erstellen des 6.0-RELEASE-Zweiges.

|600101
|21. Dezember 2005
|6.0-STABLE nach dem Aufnehmen von Skripten aus den local_startup-Verzeichnissen in man:rcorder[8] des Basissystems.

|600102
|30. Dezember 2005
|6.0-STABLE nach dem Aktualisieren der ELF-Typen und Konstanten.

|600103
|15. Januar 2006
|6.0-STABLE nach dem Einfliessen der pidfile(3)-API aus CURRENT.

|600104
|17. Januar 2006
|6.0-STABLE nach dem Einfliessen der Änderung von ldconfig_local_dirs aus CURRENT.

|600105
|26. Februar 2006
|6.0-STABLE nach der NLS-Katalogunterstützung von csh(1).

|601000
|6. Mai 2006
|6.1-RELEASE

|601100
|6. Mai 2006
|6.1-STABLE nach 6.1-RELEASE.

|601101
|22. Juni 2006
|6.1-STABLE nach dem Import von csup.

|601102
|11. Juli 2006
|6.1-STABLE nach der iwi(4)-Aktualisierung.

|601103
|17. Juli 2006
|6.1-STABLE nach der Aktualisierung der Namensauflösung zu BIND9 und Aufnahme der ablaufinvarianten Versionen der netdb-Funktionen.

|601104
|8. August 2006
|6.1-STABLE nachdem Unterstützung für DSO (dynamic shared objects - gemeinsam genutzte, dynamische Objekte) in OpenSSL aktiviert wurde.

|601105
|2. September 2006
|6.1-STABLE nachdem 802.11 Reparaturen die API der IEEE80211_IOC_STA_INFO ioctl geändert haben.

|602000
|15. November 2006
|6.2-RELEASE

|602100
|15. September 2006
|6.2-STABLE nach 6.2-RELEASE.

|602101
|12. Dezember 2006
|6.2-STABLE nach dem Hinzufügen der Wi-Spy Eigenart.

|602102
|28. Dezember 2006
|6.2-STABLE nachdem pci_find_extcap() hinzugefügt wurde.

|602103
|16. Januar 2007
|6.2-STABLE nach dem Einpflegen der dlsym Änderung aus CURRENT, ein angefordertes Symbol sowohl in der spezifizierten dso, als auch in den impliziten Abhängigkeiten nachzuschlagen.

|602104
|28. Januar 2007
|6.2-STABLE nach dem Einpflegen von ng_deflate(4) und ng_pred1(4) netgraph Knoten und neuen Kompressions- und -Verschlüsselungmodi für den ng_ppp(4) Knoten aus CURRENT.

|602105
|20. Februar 2007
|6.2-STABLE nach dem Einpflegen der BSD lizensierten Version von man:gzip[1], welche von NetBSD portiert wurde aus CURRENT.

|602106
|31. März 2007
|6.2-STABLE nach dem Einpflegen der PCI MSI und MSI-X Unterstützung aus CURRENT.

|602107
|6. April 2007
|6.2-STABLE nach dem Einpflegen von ncurses 5.6 und Unterstützung für Multibyte-Zeichen aus CURRENT.

|602108
|11. April 2007
|6.2-STABLE nach dem Einpflegen des 'SG' Peripheriegerätes aus CURRENT in CAM, welches einen Teil der SCSI SG passthrough Geräte API von Linux enthält.

|602109
|17. April 2007
|6.2-STABLE nach dem Einpflegen von readline 5.2 Patchset 002 aus CURRENT.

|602110
|2. Mai 2007
|6.2-STABLE nach dem Einpflegen von pmap_invalidate_cache(), pmap_change_attr(), pmap_mapbios(), pmap_mapdev_attr(), und pmap_unmapbios() für amd64 und i386 aus CURRENT.

|602111
|11. Juni 2007
|6.2-STABLE nach dem Einpflegen von BOP_BDFLUSH aus CURRENT und dem daraus resultierendem Bruch mit dem Dateisystemmodul KBI.

|602112
|21. September 2007
|6.2-STABLE nach dem Einpflegen von libutil(3) aus CURRENT.

|602113
|25. Oktober 2007
|6.2-STABLE, nach der Trennung in "wide und single byte ctype". Neu kompilierte Binärdateien, die ctype.h referenzieren, erfordern möglicherweise ein neues Symbol, __mb_sb_limit, das auf älteren Systemen nicht verfügbar ist.

|602114
|30. Oktober 2007
|6.2-STABLE, nachdem die ctype ABI-Aufwärtskompatibilität wiederhergestellt wurde.

|602115
|21. November 2007
|FreeBSD 6.2-STABLE nach der Entfernung/Eliminierung der wide und single Byte ctype-Trennung

|603000
|25. November 2007
|6.3-RELEASE

|603100
|25. November 2007
|6.3-STABLE nach 6.3-RELEASE.

|603101
|7. Dezember 2007
|6.3-STABLE, nachdem der Support für den Multibyte-Datentyp im Bit-Makro gefixt wurde.

|603102
|24. April 2008
|6.3-STABLE nach Hinzufügen von l_sysid zu struct flock.

|603103
|27. Mai 2008
|6.3-STABLE nach Einfließen der `memrchr`-Funktion.

|603104
|15. Juni 2008
|6.3-STABLE nach Übernahme der Unterstützung von `:u` als Variablenwandler in make(1).

|604000
|4. Oktober 2008
|6.4-RELEASE

|604100
|4. Oktober 2008
|6.4-STABLE nach 6.4-RELEASE.

|700000
|11. Juli 2005
|7.0-CURRENT.

|700001
|23. Juli 2005
|7.0-CURRENT nachdem die Versionen aller gemeinsam genutzten Bibliotheken, welche seit RELENG_5 nicht geändert wurden, erhöht wurden.

|700002
|13. August 2005
|7.0-CURRENT nachdem ein Berechtigungs-Argument zur dev_clone-Ereignisroutine hinzugefügt wurde.

|700003
|25. August 2005
|7.0-CURRENT nachdem memmem(3) zur libc hinzugefügt wurde.

|700004
|30. Oktober 2005
|7.0-CURRENT nachdem die Argumente der Kernelfunktion solisten(9) modifiziert wurden, um einen Backlog-Parameter (Anzahl der maximalen wartenden Verbindungen) zu akzeptieren.

|700005
|11. November 2005
|7.0-CURRENT nachdem IFP2ENADDR() geändert wurde, einen Zeiger auf IF_LLADDR() zurückzugeben.

|700006
|11. November 2005
|7.0-CURRENT nach dem Hinzufügen des `if_addr`-Elements zur Struktur `ifnet` und dem Entfernen von IFP2ENADDR().

|700007
|2. Dezember 2005
|7.0-CURRENT nach dem Aufnehmen von Skripten aus den local_startup Verzeichnissen in man:rcorder[8] des Basissystems.

|700008
|5. Dezember 2005
|7.0-CURRENT nach dem Entfernen der MNT_NODEV mount-Option.

|700009
|19. Dezember 2005
|7.0-CURRENT nach ELF-64 Typen Änderungen und Symbol Versionierung.

|700010
|20. Dezember 2005
|7.0-CURRENT nach Hinzufügen der hostb und vgapci Treiber, Hinzufügen von pci_find_extcap() und Änderung der AGP Treiber die Apertur nicht länger abzubilden.

|700011
|31. Dezember 2005
|7.0-CURRENT nachdem auf allen Plattformen außer Alpha tv_sec in time_t umgewandelt wurde.

|700012
|8. Januar 2006
|7.0-CURRENT nach Änderung von ldconfig_local_dirs.

|700013
|12. Januar 2006
|7.0-CURRENT nach Änderung in [.filename]#/etc/rc.d/abi# um [.filename]#/compat/linux/etc/ld.so.cache# als Symlink in ein schreibgeschütztes Dateisystem zu unterstützen.

|700014
|26. Januar 2006
|7.0-CURRENT nach pts Import.

|700015
|26. März 2006
|7.0-CURRENT nach Einführung von Version 2 der man:hwpmc[4]'s ABI.

|700016
|22. April 2006
|7.0-CURRENT nach dem Hinzufügen von man:fcloseall[3] zur libc.

|700017
|13. Mai 2006
|7.0-CURRENT nach dem Entfernen von ip6fw.

|700018
|15. Juli 2006
|7.0-CURRENT nach dem Import von snd_emu10kx.

|700019
|29. Juli 2006
|7.0-CURRENT nach dem Import von OpenSSL 0.9.8b.

|700020
|3. September 2006
|7.0-CURRENT nach dem Hinzufügen der bus_dma_get_tag-Funktion

|700021
|4. September 2006
|7.0-CURRENT nach dem Import von libpcap 0.9.4 und tcpdump 3.9.4.

|700022
|9. September 2006
|7.0-CURRENT nach der dlsym Änderung, ein angefordertes Symbol sowohl in der spezifizierten dso, als auch in den impliziten Abhängigkeiten nachzuschlagen.

|700023
|23. September 2006
|7.0-CURRENT nach dem Hinzufügen neuer Sound-IOCTLs für die OSSv4-Mixer-API.

|700024
|28. September 2006
|7.0-CURRENT nach dem Import von OpenSSL 0.9.8d.

|700025
|11. November 2006
|7.0-CURRENT nach dem Hinzufügen der libelf.

|700026
|26. November 2006
|7.0-CURRENT nach größeren Änderungen an den Sound sysctls.

|700027
|30. November 2006
|7.0-CURRENT nach dem Hinzufügen der Wi-Spy-Eigenart.

|700028
|15. Dezember 2006
|7.0-CURRENT nach dem Hinzufügen von sctp-Aufrufen zur libc.

|700029
|26. Januar 2007
|7.0-CURRENT nach dem Ersetzen von GNU man:gzip[1] durch eine von NetBSD portierte Version, die unter BSD-Lizenz steht.

|700030
|7. Februar 2007
|7.0-CURRENT nach dem Entfernen der IPIP Tunnelkapselung (VIFF_TUNNEL) aus dem IPv4 Multicast-Forwarding-Quelltext.

|700031
|23. Februar 2007
|7.0-CURRENT nach den Modifizierungen an bus_setup_intr() (newbus).

|700032
|2. März 2007
|7.0-CURRENT nach der Aufnahme der Firmware für ipw(4) und iwi(4).

|700033
|9. März 2007
|7.0-CURRENT nach Unterstützung für Multibyte-Zeichen.

|700034
|19. März 2007
|7.0-CURRENT nach Änderungen, wie insmntque(), getnewvnode() und vfs_hash_insert() arbeiten.

|700035
|26. März 2007
|7.0-CURRENT nach Hinzufügen eines Benachrichtigungsmechanismus für CPU Frequenzänderungen.

|700036
|6. April 2007
|7.0-CURRENT nach dem Import des ZFS Dateisystemes.

|700037
|8. April 2007
|7.0-CURRENT nach dem Einpflegen des 'SG' Peripheriegerätes in CAM, welches einen Teil der SCSI SG passthrough Geräte API von Linux enthält.

|700038
|30. April 2007
|7.0-CURRENT nachdem man:getenv[3], man:putenv[3], man:setenv[3] und man:unsetenv[3] geändert wurden, um POSIX konform zu sein.

|700039
|1. Mai 2007
|7.0-CURRENT nachdem die Änderungen von 700038 rückgängig gemacht wurden.

|700040
|10. Mai 2007
|7.0-CURRENT nach dem Hinzufügen von man:flopen[3] zur libutil.

|700041
|13. Mai 2007
|7.0-CURRENT nachdem Symbol Versionierung aktiviert und die standardmäßige Thread-Bibliothek zu libthr geändert wurde.

|700042
|19. Mai 2007
|7.0-CURRENT nach dem Import von GCC 4.2.0.

|700043
|21. Mai 2007
|7.0-CURRENT nachdem die Versionen aller Shared-Libraries, welche seit RELENG_6 nicht geändert wurden, erhöht worden sind.

|700044
|7. Juni 2007
|7.0-CURRENT nachdem das Argument für vn_open()/VOP_OPEN() vom Dateideskriptorindex zur Struktur file * geädert wurde.

|700045
|10. Juni 2007
|7.0-CURRENT nachdem man:pam_nologin[8] geädert wurde, eine Kontoverwaltungs-Funktion statt einer Authentifizierungsfunktion für das PAM-Framework zur Verfügung zu stellen.

|700046
|11. Juni 2007
|7.0-CURRENT nach aktualisierter 802.11 wireless Unterstützung.

|700047
|11. Juni 2007
|7.0-CURRENT, nachdem TCP-LRO-Schnittstellen-Ressourcen hinzugefügt wurden.

|700048
|12. Juni 2007
|7.0-CURRENT, nachdem die RFC 3678 API-Unterstützung zum IPv4-Stack hinzugefügt wurde. Veraltetes RFC 1724-Verhalten des IP_MULTICAST_IF ioctl wurde entfernt; 0.0.0.0/8 darf nicht länger als Schnittstellen-Index benutzt werden. Stattdessen sollte die Struktur ipmreqn verwendet werden.

|700049
|3. Juli 2007
|7.0-CURRENT, nachdem pf von OpenBSD 4.1 importiert wurde

|(nicht geändert)
|
|7.0-CURRENT, nachdem die IPv6-Unterstützung um FAST_IPSEC erweitert, KAME IPSEC entfernt und FAST_IPSEC in IPSEC umbenannt wurde.

|700050
|4. Juli 2007
|7.0-CURRENT, nachdem Aufrufe von setenv/putenv/usw. von der traditionellen BSD-Art und Weise nach POSIX konvertiert wurden.

|700051
|4. Juli 2007
|7.0-CURRENT, nachdem neue Systemaufrufe (mmap/lseek/usw.) implementiert wurden.

|700052
|6. Juli 2007
|7.0-CURRENT, nachdem die I4B-Header nach include/i4b verschoben wurden.

|700053
|30. September 2007
|7.0-CURRENT, nachdem die Unterstützung für PCI Domänen hinzugefügt wurde.

|700054
|25. Oktober 2007
|7.0-CURRENT, nach der Trennung in "wide und single byte ctype".

|700055
|28. Oktober 2007
|7.0-RELEASE sowie 7.0-CURRENT, nachdem die ABI-Abwärtskompatibilität für die FreeBSD 4/5/6-Versionen der PCIOCGETCONF-, PCIOCREAD- sowie PCIOCWRITE IOCTLs hinzugefügt wurde. Damit verbunden war, dass die ABI der PCIOCGETCONF IOCTL erneut deaktiviert werden musste.

|700100
|22. Dezember 2007
|7.0-STABLE nach 7.0-RELEASE.

|700101
|8. Februar 2008
|7.0-STABLE nach Einführung von m_collapse().

|700102
|30. März 2008
|7.0-STABLE nach Einfließen von kdb_enter_why().

|700103
|10. April 2008
|7.0-STABLE nach Hinzufügen von l_sysid zu struct flock.

|700104
|11. April 2008
|7.0-STABLE nach Übernahme von procstat(1).

|700105
|11. April 2008
|7.0-STABLE nach Einführung von umtx-Features.

|700106
|15. April 2008
|7.0-STABLE nach Hinzufügen der Unterstützung von man:write[2] zu man:psm[4].

|700107
|20. April 2008
|7.0-STABLE nach Hinzufügen des Befehls F_DUP2FD zu man:fcntl[2].

|700108
|5. Mai 2008
|7.0-STABLE nach einigen Änderungen an man:lockmgr[9], welche die Einbindung von [.filename]#sys/lock.h# zur Verwendung von man:lockmgr[9] voraussetzen.

|700109
|27. Mai 2008
|7.0-STABLE nach Einfließen der `memrchr`-Funktion.

|700110
|5. August 2008
|7.0-STABLE nach Einführung eines Clients für den Kernel NFS lockd.

|700111
|20. August 2008
|7.0-STABLE nach Hinzufügen einer Unterstützung von physisch fortlaufender Jumbo Frames.

|700112
|27. August 2008
|7.0-STABLE nach Einfließen einer Kernelunterstützung für DTrace.

|701000
|25. November 2008
|7.1-RELEASE

|701100
|25. November 2008
|7.1-STABLE nach 7.1-RELEASE.

|701101
|10. Januar 2009
|7.1-STABLE nach Übernahme von `strndup`.

|701102
|17. Januar 2009
|7.1-STABLE nach Hinzufügen einer Unterstützung von cpuctl(4).

|701103
|7. Februar 2009
|7.1-STABLE nach Einfließen der Unterstützung von Jails mit keinen oder mehreren IPv4-/IPv6-Adressen.

|701104
|14. Februar 2009
|7.1-STABLE, nachdem der Besitzer des Suspend in struct mount gespeichert wird und die Funktion vfs_susp_clean in struct vfsops aufgenommen ist.

|701105
|12. März 2009
|7.1-STABLE nach der inkompatiblen Änderung am sysctl kern.ipc.shmsegs, um die Anforderung größerer Segmente von gemeinsam genutzten SysV-Speicher auf 64bit-Architekturen zu erlauben.

|701106
|14. März 2009
|7.1-STABLE nach der Übernahme einer Fehlerbehebung für Warteoperationen, die POSIX-Semaphore verwenden.

|702000
|15. April 2009
|7.2-RELEASE

|702100
|15. April 2009
|7.2-STABLE nach 7.2-RELEASE.

|702101
|15. Mai 2009
|7.2-STABLE, nachdem ichsmb(4) dahingehend geändert wurde, dass es links-ausgerichtete Adressierung von Slaves verwendet, um anderen SMBus-Kontrollertreibern zu entsprechen.

|702102
|28. Mai 2009
|7.2-STABLE nach dem Einfließen der Funktion `fdopendir`.

|702103
|06. Juni 2009
|7.2-STABLE nach dem Einfließen von PmcTools.

|702104
|14. Juli 2009
|7.2-STABLE nach dem Einfließen des Systemaufrufs `closefrom`.

|702105
|31. Juli 2009
|7.2-STABLE nach dem Einfließen der Änderung an der SYSVIPC-ABI.

|702106
|14. September 2009
|7.2-STABLE nach dem Einfließen der PAT-Verbesserungen für x86-Prozessoren sowie dem Hinzufügen von d_mmap_single() und des VM-Objekttyps für scatter/gather-Listen.

|703000
|9. Februar 2010
|7.3-RELEASE

|703100
|9. Februar 2010
|7.3-STABLE nach 7.3-RELEASE.

|704000
|22. Dezember 2010
|7.4-RELEASE

|704100
|22. Dezember 2010
|7.4-STABLE, nachdem 7.4-RELEASE erzeugt wurde.

|800000
|11. Oktober 2007
|8.0-CURRENT. Nach der Trennung in "wide und single byte ctype".

|800001
|16. Oktober 2007
|8.0-CURRENT, nachdem libpcap 0.9.8 und tcpdump 3.9.8 importiert wurden.

|800002
|21. Oktober 2007
|8.0-CURRENT, nachdem kthread_create() und Konsorten in kproc_create() usw. umbenannt wurden.

|800003
|24. Oktober 2007
|8.0-CURRENT, nachdem die ABI-Abwärtskompatibilität für die FreeBSD 4/5/6-Versionen der PCIOCGETCONF-, PCIOCREAD- sowie PCIOCWRITE IOCTLs hinzugefügt wurde. Damit verbunden war, dass die ABI der PCIOCGETCONF IOCTL erneut deaktiviert werden musste.

|800004
|12. November 2007
|8.0-CURRENT, nachdem der agp(4) Treiber verschoben wurde von src/sys/pci nach src/sys/dev/agp.

|800005
|4. Dezember 2007
|8.0-CURRENT nach http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/kern_mbuf.c#rev1.35[Änderungen am Jumbo Frame Allocator].

|800006
|7. Dezember 2007
|8.0-CURRENT, nach dem Hinzufügen der callgraph capture Funktionalität zu man:hwpmc[4].

|800007
|25. Dezember 2007
|8.0-CURRENT nach dem Hinzufügen von "why" als Argument in kdb_enter().

|800008
|28. Dezember 2007
|8.0-CURRENT nach Entfernen der Option LK_EXCLUPGRADE.

|800009
|9. Januar 2008
|8.0-CURRENT nach Einführung von man:lockmgr_disown[9]

|800010
|10. Januar 2008
|8.0-CURRENT nach Änderungen am man:vn_lock[9]-Prototyp.

|800011
|13. Januar 2008
|8.0-CURRENT nach Änderungen an den Prototypen von man:VOP_LOCK[9] und man:VOP_UNLOCK[9].

|800012
|19. Januar 2008
|8.0-CURRENT nach Einführung von man:lockmgr_recursed[9], man:BUF_RECURSED[9] und man:BUF_ISLOCKED[9] sowie Entfernung von `BUF_REFCNT()`.

|800013
|23. Januar 2008
|8.0-CURRENT nach Einführung der "ASCII"-Kodierung.

|800014
|24. Januar 2008
|8.0-CURRENT nach Änderungen am man:lockmgr[9]-Prototyp und Entfernung von `lockcount()` sowie `LOCKMGR_ASSERT()`.

|800015
|26. Januar 2008
|8.0-CURRENT nach Erweiterung der Datentypen der man:fts[3]-Strukturen.

|800016
|1. Februar 2008
|8.0-CURRENT nach Hinzufügen eines neuen Parameters zu MEXTADD(9).

|800017
|6. Februar 2008
|8.0-CURRENT nach Einführung der Optionen LK_NODUP und LK_NOWITNESS in die man:lockmgr[9]-Umgebung.

|800018
|8. Februar 2008
|8.0-CURRENT nach Hinzufügen von m_collapse.

|800019
|9. Februar 2008
|8.0-CURRENT nach Hinzufügen einer Arbeits-, Wurzel- und Jailverzeichnisunterstützung zur sysctl-Variable kern.proc.filedesc.

|800020
|13. Februar 2008
|8.0-CURRENT nach Einführung der Funktionen man:lockmgr_assert[9] und `BUF_ASSERT`.

|800021
|15. Februar 2008
|8.0-CURRENT nach Einführung von man:lockmgr_args[9] und Entfernung der Option LK_INTERNAL.

|800022
|(zurückgezogen)
|8.0-CURRENT nach Setzen von BSD man:ar[1] als Systemstandard.

|800023
|25. Februar 2008
|8.0-CURRENT nach Prototypenänderungen an man:lockstatus[9] und man:VOP_ISLOCKED[9];, eigens zur Abschaffung des Parameters `struct thread`.

|800024
|1. März 2008
|8.0-CURRENT nach Beseitigung der Funktionen `lockwaiters` und `BUF_LOCKWAITERS`, Änderung des Rückgabewerts der Funktion `brelvp` von void nach int sowie Einführung neuer Optionen für man:lockinit[9].

|800025
|8. März 2008
|8.0-CURRENT nach Hinzufügen des Kommandos F_DUP2FD zu man:fcntl[2].

|800026
|12. März 2008
|8.0-CURRENT nach Änderung des Parameters für die Priorität an cv_broadcastpri, sodass 0 für keine Priorität steht.

|800027
|24. März 2008
|8.0-CURRENT nach Änderung der Monitoring ABI von BPF, als Zero-Copy Puffer hinzugefügt wurden.

|800028
|26. März 2008
|8.0-CURRENT nach Hinzufügen von l_sysid zu struct flock.

|800029
|28. März 2008
|8.0-CURRENT nach Wiedereingliederung der Funktion `BUF_LOCKWAITERS` und Hinzufügen von man:lockmgr_waiters[9].

|800030
|1. April 2008
|8.0-CURRENT nach Einführung der Funktionen man:rw_try_rlock[9] und man:rw_try_wlock[9].

|800031
|6. April 2008
|8.0-CURRENT nach Einführung der Funktionen `lockmgr_rw` und `lockmgr_args_rw`.

|800032
|8. April 2008
|8.0-CURRENT nach Implementierung des Systemaufrufs openat und seiner Verwandten, Einführung der Option O_EXEC in man:open[2] und Bereitstellung der entsprechenden Systemaufrufe innerhalb der Linux(R)-Kompatibilitätsumgebung.

|800033
|8. April 2008
|8.0-CURRENT nach Hinzufügen der Unterstützung von man:write[2] in der nativen Operationsebene von man:psm[4]. Es können nun beliebig Kommandos nach [.filename]#/dev/psm%d# geschrieben und der Status dann von dort gelesen werden.

|800034
|10. April 2008
|8.0-CURRENT nach Einführung der Funktion `memrchr`.

|800035
|16. April 2008
|8.0-CURRENT nach Einführung der Funktion `fdopendir`.

|800036
|20. April 2008
|8.0-CURRENT nach Umstellung des Standards 802.11 auf Unterstützung von Multi-BSS (auch vaps).

|800037
|9. Mai 2008
|8.0-CURRENT nach Hinzufügen einer Unterstützung für Multi Routing-Tabellen (siehe setfib(1), setfib(2)).

|800038
|26. Mai 2008
|8.0-CURRENT nach Entfernen von netatm und ISDN4BSD sowie dem Hinzufügen der Compact C Type (CTF)-Tools.

|800039
|14. Juni 2008
|8.0-CURRENT nach Entfernen von sgtty.

|800040
|26. Juni 2008
|8.0-CURRENT nach Einführung eines Clients für den Kernel NFS lockd.

|800041
|22. Juli 2008
|8.0-CURRENT nach Hinzufügen von arc4random_buf(3) und arc4random_uniform(3).

|800042
|8. August 2008
|8.0-CURRENT nach Hinzufügen von cpuctl(4).

|800043
|13. August 2008
|8.0-CURRENT nach Änderung von bpf(4) zur Verwendung einer einzelnen Gerätedatei anstatt von Klonierung.

|800044
|17. August 2008
|8.0-CURRENT nach Übernahme des ersten Teils aus dem vimage-Projekt durch Erweitern globaler Variablen um den Präfix V_. Zukünftig werden die virtualisierten Variablen dann mit Hilfe von Makros in ihre globalen Namen aufgelöst.

|800045
|20. August 2008
|8.0-CURRENT nach Eingliederung des MPSAFE TTY-Layers, einschließlich Änderungen an diversen Treibern und Werkzeugen, die mit ihm kommunizieren.

|800046
|8. September 2008
|8.0-CURRENT nach Abschottung der GDT pro CPU auf der AMD64-Architektur.

|800047
|10. September 2008
|8.0-CURRENT nach Entfernen von VSVTX, VSGID und VSUID.

|800048
|16. September 2008
|8.0-CURRENT nach Anpassung des Codes für Kernel NFS mount, sodass einzelne Mountoptionen im Parameter struct iovec an nmount() akzeptiert werden und nicht nur ein großes struct nfs_args.

|800049
|17. September 2008
|8.0-CURRENT nach Entfernen von man:suser[9] und man:suser_cred[9].

|800050
|20. Oktober 2008
|8.0-CURRENT nach API-Änderungen im Umgang mit dem Buffer Cache.

|800051
|23. Oktober 2008
|8.0-CURRENT nach Entfernen der Makros man:MALLOC[9] und man:FREE[9].

|800052
|28. Oktober 2008
|8.0-CURRENT nach Einführung von accmode_t und Umbennung des Parameters a_mode an VOP_ACCESS nach a_accmode.

|800053
|2. November 2008
|8.0-CURRENT nach Änderung des Prototyps von man:vfs_busy[9] und Einführung der Optionen MBF_NOWAIT sowie MBF_MNTLSTLOCK.

|800054
|22. November 2008
|8.0-CURRENT nach Hinzufügen von Funktionen im Bereich buf_ring, Memory Barriers und ifnet, um mehrere Sendeschlangen auf Hardwareebene für Karten zu ermöglichen, die dies unterstützen, sowie einer Ring Buffer-Implementierung ohne Lock, um Treibern zu ermöglichen, Paketschlangen effizienter zu verwalten.

|800055
|27. November 2008
|8.0-CURRENT nach Hinzufügen einer Unterstützung für Intel(R) Core, Core2 und Atom zu man:hwpmc[4].

|800056
|29. November 2008
|8.0-CURRENT nach Einführung von Jails mit mehreren oder gar keinen IPv4-/IPv6-Adressen.

|800057
|1. Dezember 2008
|8.0-CURRENT nach Wechsel zum ath_hal Quellcode.

|800058
|12. Dezember 2008
|8.0-CURRENT nach Einführung der Funktion VOP_VPTOCNP.

|800059
|15. Dezember 2008
|8.0-CURRENT gliedert das neue ARPv2 ein.

|800060
|19. Dezember 2008
|8.0-CURRENT nach Hinzufügen von makefs.

|800061
|15. Januar 2009
|8.0-CURRENT nach Umsetzung von TCP Appropriate Byte Counting.

|800062
|28. Januar 2009
|8.0-CURRENT nach Entfernen von minor(), minor2unit(), unit2minor() usw.

|800063
|18. Februar 2009
|8.0-CURRENT nach Änderung der GENERIC-Konfiguration zur Verwendung des USB2-Stack und Hinzufügen von fdevname(3).

|800064
|23. Februar 2009
|8.0-CURRENT, nachdem der USB2-Stack nach dev/usb verschoben wurde, um es zu ersetzen.

|800065
|26. Februar 2009
|8.0-CURRENT nach Umbenennen aller Funktionen in libmp(3).

|800066
|27. Februar 2009
|8.0-CURRENT nach Anpassung des devfs-Verhaltens im Zusammenhang mit USB.

|800067
|28. Februar 2009
|8.0-CURRENT nach Hinzufügen von getdelim(), getline(), stpncpy(), strnlen(), wcsnlen(), wcscasecmp() und wcsncasecmp().

|800068
|2. März 2009
|8.0-CURRENT nach Umbenennen der Geräteklasse ushub in uhub.

|800069
|9. März 2009
|8.0-CURRENT nach Umbenennen von libusb20.so.1 in libusb.so.1.

|800070
|9. März 2009
|8.0-CURRENT nach der Einführung von IGMPv3 und Source-Specific-Multicast (SSM) in den IPv4-Stack.

|800071
|14. März 2009
|8.0-CURRENT nach der Anpassung von gcc zur Verwendung der C99-Inline-Semantik in den Modi c99 und gnu99.

|800072
|15. März 2009
|8.0-CURRENT, nachdem die Option IFF_NEEDSGIANT entfernt wurde; Netzwerktreiber, die nicht MPSAFE sind, werden nicht mehr unterstützt.

|800073
|18. März 2009
|8.0-CURRENT, nachdem die dynamische Ersetzung von Zeichenkettenkürzeln für rpath und benötigte Pfade implementiert wurde.

|800074
|24. März 2009
|8.0-CURRENT nach dem Einfließen von tcpdump 4.0.0 und libpcap 1.0.0.

|800075
|6. April 2009
|8.0-CURRENT, nachdem die Deklarationen von struct vnet_net, struct vnet_inet und struct vnet_ipfw geändert wurden.

|800076
|9. April 2009
|8.0-CURRENT nach dem Hinzufügen von Laufzeitprofilen in dummynet.

|800077
|14. April 2009
|8.0-CURRENT nach dem Entfernen von VOP_LEASE() und vop_vector.vop_lease.

|800078
|15. April 2009
|8.0-CURRENT, nachdem die Felder aus struct rt_weight zu struct rt_metrics und struct rt_metrics_lite hinzugefügt wurden, wobei die Deklaration von struct rt_metrics_lite geändert wurde. RTM_VERSION wurde hochgezählt (zurückgezogen).

|800079
|15. April 2009
|8.0-CURRENT, nachdem Pointer auf struct llentry zu struct route und struct route_in6 hinzugefügt wurden.

|800080
|15. April 2009
|8.0-CURRENT nach Änderung der Deklaration von struct inpcb.

|800081
|19. April 2009
|8.0-CURRENT nach Änderung der Deklaration von struct malloc_type.

|800082
|21. April 2009
|8.0-CURRENT nach Änderung der Deklaration von struct ifnet und Hinzufügen von if_ref() und if_rele() zur Verwaltung von Referenzen auf ifnet.

|800083
|22. April 2009
|8.0-CURRENT nach der Implementierung einer systemnahen Bluetooth-HCI-API.

|800084
|29. April 2009
|8.0-CURRENT nach Änderungen an IPv6-SSM und MLDv2.

|800085
|30. April 2009
|8.0-CURRENT, nachdem der Bau von VIMAGE-Kernel mit einem aktiven Image unterstützt wird.

|800086
|8. Mai 2009
|8.0-CURRENT nach Hinzufügen der Unterstützung für Eingabezeilen mit beliebiger Länge durch patch(1).

|800087
|11. Mai 2009
|8.0-CURRENT nach einigen Änderungen im Zusammenhang mit dem VFS-KPI. Der Thread-Parameter wurde von den FSD-Teilen des VFS entfernt. `VFS_*`-Funktionen benötigen den Kontext nicht mehr, da er sich immer auf `curthread` bezieht. In wenigen Sonderfällen ist das bisherige Verhalten nicht geändert worden.

|800088
|20. Mai 2009
|8.0-CURRENT nach Änderungen am net80211-Monitormodus.

|800089
|23. Mai 2009
|8.0-CURRENT nach dem Hinzufügen der Unterstützung von UDP-Kontrollblocks.

|800090
|23. Mai 2009
|8.0-CURRENT nach der Virtualisierung der Schnittstellenklonierung.

|800091
|27. Mai 2009
|8.0-CURRENT nach dem Hinzufügen von hierarchischen Jails und dem Entfernen des globalen securelevel.

|800092
|29. Mai 2009
|8.0-CURRENT nach der Änderung des `sx_init_flags()`-KPI. [constant]#SX_ADAPTIVESPIN# wurde zurückgezogen und eine neue Option [constant]#SX_NOADAPTIVE# wurde eingeführt, um die umgekehrte Logik zu behandeln.

|800093
|29. Mai 2009
|8.0-CURRENT nach dem Hinzufügen von mnt_xflag zu struct mount.

|800094
|30. Mai 2009
|8.0-CURRENT nach dem Hinzufügen von man:VOP_ACCESSX[9].

|800095
|30. Mai 2009
|8.0-CURRENT nach der Änderung des Polling-KPI. Die Polling-Handler liefern nun die Zahl der verarbeiteten Pakete zurück. Die neue Option [constant]#IFCAP_POLLING_NOCOUNT# wurde weiter eingeführt, um anzugeben, dass der Rückgabewert nicht von Bedeutung ist und das Zählen der Pakete ausgelassen werden soll.

|800096
|1. Juni 2009
|8.0-CURRENT nach der Aktualisierung der netisr-Implementierung und nachdem die Weise, wie FIBs gespeichert werden und wie auf sie zugegriffen wird, geändert wurde.

|800097
|8. Juni 2009
|8.0-CURRENT nach Einführung der Destruktor-Infrastruktur für vnet einschließlich Hooks.

|800097
|11. Juni 2009
|8.0-CURRENT nach Einführung eines Erkennungssystems für ausgehende Pakete, die direkt wieder in netgraph gelangen und deswegen eingereiht werden. Dabei wurde auch die Definition von struct thread geändert.

|800098
|14. Juni 2009
|8.0-CURRENT nach dem Einfließen von OpenSSL 0.9.8k.

|800099
|22. Juni 2009
|8.0-CURRENT nach der Aktualisierung von NGROUPS und dem Verschieben der Routing-Virtualisierung in ein eigenes VImage-Modul.

|800100
|24. Juni 2009
|8.0-CURRENT nach Änderung der SYSVIPC-ABI.

|800101
|29. Juni 2009
|8.0-CURRENT nach dem Entfernen der zeichenorientierten Geräte aus /dev/net, von denen für jede Schnittstelle eines existiert.

|800102
|12. Juli 2009
|8.0-CURRENT, nachdem struct sackhint, struct tcpcb und struct tcpstat mit Padding-Bytes aufgefüllt wurden.

|800103
|13. Juli 2009
|8.0-CURRENT, nachdem struct tcpopt durch struct toeopt in der Schnittstelle zwischen dem TOE-Treiber und dem TCP-SYN-Cache ersetzt wurde.

|800104
|19. Juli 2009
|8.0-CURRENT nach dem Hinzufügen einer vnet-spezifischen Speicherzuweisung, die auf dem Linker-Set-Verfahren basiert.

|800105
|19. Juli 2009
|8.0-CURRENT nach der Inkrementierung der Versionsnummer aller Shared-Libraries, die Symbol-Versioning nicht aktiviert haben.

|800106
|24. Juli 2009
|8.0-CURRENT nach Einführung des VM-Objekttyps OBJT_SG.

|800107
|2. August 2009
|8.0-CURRENT nach Befreiung des Newbus-Subsystems von Giant durch Hinzufügen von sxlock und 8.0-RELEASE.

|800108
|21. November 2009
|8.0-CURRENT nach Implementierung des kevent-Filters EVFILT_USER.

|800500
|7. Januar 2010
|8.0-STABLE nach Erhöhung von `__FreeBSD_version`, damit `pkg_add -r` packages-8-stable verwendet.

|800501
|24. Januar 2010
|8.0-STABLE, nachdem die Prototypen von `scandir(3)` und `alphasort(3)` geändert wurden, um der SUSv4 zu entsprechen.

|800502
|31. Januar 2010
|8.0-STABLE nach Hinzufügen von `sigpause(3)`.

|800503
|25. Februar 2010
|8.0-STABLE nach dem Hinzufügen der ioctls SIOCGIFDESCR und SIOCSIFDESCR für Netzwerk-Schnittstellen. Diese ioctls können, nach dem Vorbild von OpenBSD, dazu verwendet werden, Schnittstellenbeschreibungen zu bearbeiten und auszulesen.

|800504
|1. März 2010
|8.0-STABLE, nachdem x86emu, ein Software-Emulator von OpenBSD für x86-Prozessoren im Real-Mode, von CURRENT übernommen wurde.

|800505
|18. Mai 2010
|8.0-STABLE nach dem Einfließen von liblzma, xz, xzdec und lzmainfo.

|801000
|14. Juni 2010
|8.1-RELEASE

|801500
|14. Juni 2010
|8.1-STABLE nach 8.1-RELEASE.

|801501
|November 3, 2010
|8.1-STABLE nach der KBI-Änderung in struct sysentve und der Implementierung von PL_FLAG_SCE/SCX/EXEC/SI und pl_siginfo für ptrace(PT_LWPINFO) .

|802000
|22. Dezember 2010
|8.2-RELEASE

|802500
|22. Dezember 2010
|8.2-STABLE, nachdem 8.2-RELEASE erzeugt wurde.

|802501
|28. Februar 2011
|8.2-STABLE, nachdem DTrace aktualisiert wurde (so wird nun auch Userland-Tracing unterstützt).

|802502
|6. März 2011
|8.2-STABLE, nachdem log2 und log2f in libm aufgenommen wurden.

|802503
|1. Mai 2011
|8.2-STABLE, nachdem gcc auf die letzte unter der GPLv2 stehenden Version (aus dem FSF gcc-4_2-Zweig) aktualisiert wurde.

|802504
|28. Mai 2011
|8.2-STABLE, nachdem KPI sowie die Infrastruktur zur Unterstützung von "modular congestion control" implementiert wurden.

|802505
|28. Mai 2011
|8.2-STABLE, nachdem die KPIs Hhook und Khelp implementiert wurden.

|802506
|M28. Mai 2011
|8.2-STABLE, nachdem OSD in die Struktur tcpcb eingebaut wurde.

|802507
|6. Juni 2011
|8.2-STABLE nach dem Import von ZFS v28.

|802508
|8. Juni 2011
|8.2-STABLE, nach dem Entfernen der Methode sv_schedtail struct sysvec.

|802509
|14. Juli 2011
|8.2-STABLE, nachdem die binutils um die SSSE3-Unterstützung erweitert wurden.

|802510
|19. Juli 2011
|8.2-STABLE, nach dem Hinzufügen des Flags RFTSIGZMB zu `rfork(2)`.

|900000
|22. August 2009
|9.0-CURRENT.

|900001
|8. September 2009
|9.0-CURRENT nach dem Import von x86emu, einem Software-Emulator von OpenBSD für x86-Prozessoren im Real-Mode.

|900002
|23. September 2009
|9.0-CURRENT nach Implementierung des kevent-Filters EVFILT_USER.

|900003
|2. Dezember 2009
|9.0-CURRENT nach Hinzufügen von `sigpause(3)` und der PIE-Unterstützung zu csu.

|900004
|6. Dezember 2009
|9.0-CURRENT nach Hinzufügen von libulog und dessen libutempter-Kompatibilitätsschnittstelle.

|900005
|12. Dezember 2009
|9.0-CURRENT nach Hinzufügen von `sleepq_sleepcnt()`, das dazu verwendet werden kann, die Anzahl der in einer bestimmten Warteschlange eingereihten Threads abzufragen.

|900006
|4. Januar 2010
|9.0-CURRENT, nachdem die Prototypen von `scandir(3)` und `alphasort(3)` geändert wurden, um der SUSv4 zu entsprechen.

|900007
|13. Januar 2010
|9.0-CURRENT nach dem Entfernen von utmp(5) und dem Hinzufügen von utmpx (siehe `getutxent(3)`) zur besseren Erfassung von Benutzeranmeldungen und Systemereignissen.

|900008
|20. Januar 2010
|9.0-CURRENT nach der Einführung von BSDL bc/dc zur Ersetzung von GNU bc/dc.

|900009
|26. Januar 2010
|9.0-CURRENT nach dem Hinzufügen der ioctls SIOCGIFDESCR und SIOCSIFDESCR für Netzwerk-Schnittstellen. Diese ioctls können, nach dem Vorbild von OpenBSD, dazu verwendet werden, Schnittstellenbeschreibungen zu bearbeiten und auszulesen.

|900010
|22. März 2010
|9.0-CURRENT nach dem Import von zlib 1.2.4.

|900011
|24. April 2010
|9.0-CURRENT nach Hinzufügen von Soft Updates Journaling.

|900012
|10. Mai 2010
|9.0-CURRENT nach Hinzufügen von liblzma, xz, xzdec und lzmainfo.

|900013
|24. Mai 2010
|9.0-CURRENT nach Einbringen von USB-Fehlerbehebungen in linux(4).

|900014
|10. Juni 2010
|9.0-CURRENT nach Hinzufügen von Clang.

|900015
|22. Juli 2010
|9.0-CURRENT nach dem Import von BSD grep.

|900016
|28. Juli 2010
|9.0-CURRENT, nachdem mti_zone zu struct malloc_type_internal hinzugefügt wurde.

|900017
|23. August 2010
|9.0-CURRENT nach dem Zurückkehren zu GNU grep als Standard und Hinzufügen der Option WITH_BSD_GREP.

|900018
|24. August 2010
|9.0-CURRENT, nachdem das von `pthread_kill(3)` generierte Signal in si_code als SI_LWP bezeichnet wird. Zuvor war si_code SI_USER.

|900019
|28. August 2010
|9.0-CURRENT nach Hinzufügen des Schalters MAP_PREFAULT_READ zu `mmap(2)`.

|900020
|9. September 2010
|9.0-CURRENT, nachdem "drain"-Funktionalität in sbufs integriert wurde (wodurch sich auch das Layout von struct sbuf geändert hat).

|900021
|13. September 2010
|9.0-CURRENT, nachdem "Userland tracing" in DTrace eingeführt wurde.

|900022
|2. Oktober 2010
|9.0-CURRENT nach Hinzufügen der BSDL man-Utilities (und gleichzeitigem Entfernen der GNU/GPL man-Utilities).

|900023
|11. Oktober 2010
|9.0-CURRENT nach der Aktualisierung von xz auf den git-Snapshot 20101010.

|900024
|11. November 2010
|9.0-CURRENT, nachdem libgcc.a durch libcompiler_rt.a.

|900025
|12. November 2010
|9.0-CURRENT nach der Einführung von "modularised congestion control".

|900026
|30. November 2010
|9.0-CURRENT nach der Einführung von "Serial Management Protocol (SMP) passthrough" sowie den XPT_SMP_IO und XPT_GDEV_ADVINFO CAM CCBs.

|900027
|5. Dezember 2010
|9.0-CURRENT, nachdem log2 zu libm hinzugefügt wurde.

|900028
|21. Dezember 2010
|9.0-CURRENT, nach dem HInzufügen von Hhook (Helper Hook), Khelp (Kernel Helpers) und Object Specific Data (OSD) KPIs.

|900029
|28. Dezember 2010
|9.0-CURRENT, nach der TCP-Stack modifiziert wurde, um es den Khelp-Modulen zu erlauben, mit ihm über Helper Hook Points zu kommunizieren und Verbindungsdaten im TCP-Kontrollblock zu speichern.

|900030
|12. Januar 2011
|9.0-CURRENT, nachdem libdialog auf die Version 20100428 aktualisiert wurde.

|900031
|7. Februar 2011
|9.0-CURRENT, nach dem Hinzufügen von `pthread_getthreadid_np(3)`.

|900032
|8. Februar 2011
|9.0-CURRENT, nachdem Prototyp und Symbol für uio_yield entfernt wurden.

|900033
|18. Februar 2011
|9.0-CURRENT, nachdem die binutils auf Version 2.17.50 aktualisiert wurden.

|900034
|8. März 2011
|9.0-CURRENT, nachdem die Struktur sysvec (sv_schedtail) modifiziert wurde.

|900035
|29. März 20111
|9.0-CURRENT, nach dem Update des im Basissystem enthaltenen gcc sowie von libstdc++ auf die letzten unter GPLv2 lizenzierten Versionen.

|900036
|18. April 2011
|9.0-CURRENT, nachdem libobjc und die Unterstützung für Objective-C aus dem Basissystem entfernt wurden.

|900037
|13. Mai 2011
|9.0-CURRENT, nach dem Import der libprocstat(3)-Bibliothek sowie von fuser(1) in das Basissystem.

|900038
|22. Mai 2011
|9.0-CURRENT, nachdem ein Lock-Flag zu VFS_FHTOVP(9) hinzugefügt wurde.

|900039
|28. Juni 2011
|9.0-CURRENT, nachdem pf von OpenBSD 4.5 importiert wurde.

|900040
|19. Juli 2011
|Standardmäßige Erhöhung von MAXCPU für FreeBSD auf 64 für amd64 und ia64 und auf 128 für XLP (mips).

|900041
|13. August 2011
|9.0-CURRENT, nachdem Capsicum-Funktionalitäten implementiert wurden. Zusätzlich wurde fget(9) um ein Rechte-Argument erweitert.

|900042
|28. August 2011
|Versionssprünge für Shared-Libraries deren ABI sich geändert hat, in Vorbereitung für 9.0.

|900043
|2. September 2011
|Automatische Erkennung von USB-Massenspeicher Geräten, die das no synchronize cache SCSI Kommando nicht unterstützen.

|900044
|10. September 2011
|Re-factor auto-quirk.

|900045
|13. Oktober 2011
|Allen nicht-kompatiblen Systemaufruf-Einstiegspunkten wurde ein sys_ vorangestellt.
|===

[NOTE]
====
Beachten Sie, dass 2.2-STABLE sich nach dem 2.2.5-RELEASE manchmal als "2.2.5-STABLE" identifiziert. Das Muster war früher das Jahr gefolgt von dem Monat, aber wir haben uns entschieden, ab 2.2. einen geradlinigeren Ansatz mit major/minor-Nummern zu benutzen. Dies liegt daran, dass gleichzeitiges Entwickeln an mehreren Zweigen es unmöglich macht, die Versionen nur mit Hilfe des Datums des Releases zu unterteilen. Wenn Sie jetzt einen Port erstellen brauchen Sie sich nicht um alte -CURRENTs zu kümmern; diese sind hier nur als Referenz augeführt.
====

[[dads-after-port-mk]]
== Etwas hinter die [.filename]#bsd.port.mk#-Anweisung schreiben

Schreiben Sie bitte nichts hinter die `.include <bsd.port.mk>`-Zeile. Normalerweise kann dies vermieden werden, indem Sie die Datei [.filename]#bsd.port.pre.mk# irgendwo in der Mitte Ihres [.filename]##Makefile##s und [.filename]#bsd.port.post.mk# am Ende einfügen.

[NOTE]
====
Sie dürfen entweder nur das [.filename]#bsd.port.pre.mk#/[.filename]#bsd.port.post.mk#-Paar oder [.filename]#bsd.port.mk# alleine hinzufügen; vermischen Sie diese Verwendungen nicht!
====

[.filename]#bsd.port.pre.mk# definiert nur einige Variablen, welche in Tests im [.filename]#Makefile# benutzt werden können, [.filename]#bsd.port.post.mk# definiert den Rest.

Hier sind einige wichtige Variablen, welche in [.filename]#bsd.port.pre.mk# definiert sind (dies ist keine vollständige Liste, lesen Sie bitte [.filename]#bsd.port.mk# für eine vollständige Auflistung).

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Variable
| Beschreibung

|`ARCH`
|Die Architektur, wie von `uname -m` zurückgegeben (z.B. `i386`)

|`OPSYS`
|Der Typ des Betriebsystems, wie von `uname -s` zurückgegeben (z.B. `FreeBSD`)

|`OSREL`
|Die Release Version des Betriebssystems (z.B., `2.1.5` oder `2.2.7`)

|`OSVERSION`
|Die numerische Version des Betriebssystems; gleichbedeutend mit <<freebsd-versions,`__FreeBSD_version`>>.

|`PORTOBJFORMAT`
|Das Objektformat des Systems (`elf` oder `aout`; beachten Sie, dass für "moderne" Versionen von FreeBSD `aout` veraltet ist).

|`LOCALBASE`
|Die Basis des "local" Verzeichnisbaumes (z.B. `/usr/local/`)

|`PREFIX`
|Wo der Port sich selbst installiert (siehe <<porting-prefix, Mehr Informationen über `PREFIX`>>).
|===

[NOTE]
====
Falls Sie die Variablen `USE_IMAKE`, `USE_X_PREFIX`, oder `MASTERDIR` definieren müssen, sollten Sie dies vor dem Einfügen von [.filename]#bsd.port.pre.mk# machen.
====

Hier sind ein paar Beispiele von Dingen, die Sie hinter die Anweisung [.filename]#bsd.port.pre.mk# schreiben können:

[.programlisting]
....
# lang/perl5 muss nicht kompliliert werden, falls perl5 schon auf dem System ist
.if ${OSVERSION} > 300003
BROKEN= perl ist im System
.endif

# nur eine Versionsnummer für die ELF Version der shlib
.if ${PORTOBJFORMAT} == "elf"
TCL_LIB_FILE=  ${TCL_LIB}.${SHLIB_MAJOR}
.else
TCL_LIB_FILE=  ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
.endif

# die Software erstellt schon eine Verknüpfung fü ELF, aber nicht fü a.out
post-install:
.if ${PORTOBJFORMAT} == "aout"
       ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
.endif
....

Sie haben sich daran erinnert Tabulator statt Leerzeichen nach `BROKEN=` und `TCL_LIB_FILE=` zu benutzen, oder? :-).

[[dads-sh-exec]]
== Benutzen Sie die `exec`-Anweisung in Wrapper-Skripten

Falls der Port ein Shellskript installiert, dessen Zweck es ist ein anderes Programm zu starten, und falls das Starten des Programmes die letzte Aktion des Skripts ist, sollten Sie sicherstellen, dass Sie die Funktion `exec` dafür benutzen; zum Beispiel:

[.programlisting]
....
#!/bin/sh
exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@"
....

Die Funktion `exec` ersetzt den Shell-Prozess mit dem angegebenen Programm. Falls `exec` ausgelassen wird, verbleibt der Shell-Prozess im Speicher während das Programm ausgefährt wird und verbraucht unnötig Systemressourcen.

[[dads-rational]]
== Aufgaben vernünftig lösen

Das [.filename]#Makefile# sollte die nötigen Schritte einfach und vernünftig durchführen. Wenn Sie ein einige Zeilen einsparen oder die Lesbarkeit verbessern können, dann machen Sie dies bitte. Beispiele sind: Ein make-Konstrukt `.if` anstatt eines Shellkonstrukt `if` zu verwenden, anstatt `do-extract` neu zu definieren, dies mit `EXTRACT*` machen, oder `GNU_CONFIGURE` anstelle von `CONFIGURE_ARGS += --prefix=${PREFIX}` zu verwenden.

Falls Sie sich in einer Situation wiederfinden, in der Sie viel Code neu schreiben müssen, um etwas zu testen, sollten Sie zuerst [.filename]#bsd.port.mk# erneut konsultieren und nachprüfen ob es nicht bereits eine Lösung für Ihr Problem enthält. Es ist zwar schwer zu lesen, beinhaltet jedoch eine Menge kurzer Lösungen für viele scheinbar schwierige Probleme.

[[dads-cc]]
== Berücksichtigen Sie sowohl `CC` als auch `CXX`

Der Port sollte sowohl die `CC`- wie auch die `CXX`-Variable berücksichtigen. Damit ist gemeint, dass der Port diese Variablen nicht ohne Rücksicht auf eventuell schon gesetzte Werte einfach überschreiben sollte; stattdessen sollten neue Werte an schon existierende angehängt werden. Dadurch können Build-Optionen, die alle Ports betreffen, global definiert werden.

Falls der Port diese Variablen nicht berücksichtigt, sollte `NO_PACKAGE=ignores either cc or cxx` ins [.filename]#Makefile# eingefügt werden.

Im Folgenden wird ein Beispiel eines [.filename]##Makefile##s gezeigt, welches die beiden Variablen `CC` und `CXX` berücksichtigt. Beachten Sie das `?=`:

[.programlisting]
....
CC?= gcc
....

[.programlisting]
....
CXX?= g++
....

Nachfolgend ein Beispiel, welches weder `CC` noch `CXX` berücksichtigt:

[.programlisting]
....
CC= gcc
....

[.programlisting]
....
CXX= g++
....

Die Variablen `CC` und `CXX` können auf FreeBSD-Systemen in [.filename]#/etc/make.conf# definiert werden. Im ersten Beispiel wird ein Wert nur dann gesetzt, falls dieser vorher noch nicht gesetzt war, um so systemweite Definitionen zu berücksichtigen. Im zweiten Beispiel werden die Variablen ohne Rücksicht überschrieben.

[[dads-cflags]]
== Berücksichtigen Sie `CFLAGS`

Der Port sollte die Variable `CFLAGS` berücksichtigen. Damit ist gemeint, dass der Port den Wert dieser Variablen nicht absolut setzen und damit existierende Werte überschreiben sollte; stattdessen sollte er weitere Werte der Variablen durch Anhängen hinzufügen. Dadurch können Build-Optionen, die alle Ports betreffen, global definiert werden.

Falls der Port diese Variablen nicht berücksichtigt, sollte `NO_PACKAGE=ignores cflags` ins [.filename]#Makefile# eingefügt werden.

Im Folgenden wird ein Beispiel eines [.filename]##Makefile##s gezeigt, welches die Variable `CFLAGS` berücksichtigt. Beachten Sie das `+=`:

[.programlisting]
....
CFLAGS+= -Wall -Werror
....

Nachfolgend finden Sie ein Beispiel, welches die `CFLAGS`-Variable nicht berücksichtigt:

[.programlisting]
....
CFLAGS= -Wall -Werror
....

Die Variable `CFLAGS` wird auf FreeBSD-Systemen in [.filename]#/etc/make.conf# definiert. Im ersten Beispiel werden weitere Flags an die Variable `CFLAGS` angehängt und somit der bestehende Wert nicht gelöscht. Im zweiten Beispiel wird die Variable ohne Rücksicht überschrieben.

Sie sollten Optimierungsflags aus [.filename]##Makefile##s Dritter entfernen. Die `CFLAGS` des Systems beinhalten systemweite Optimierungsflags. Ein Beispiel eines unveränderten [.filename]##Makefile##s:

[.programlisting]
....
CFLAGS= -O3 -funroll-loops -DHAVE_SOUND
....

Werden nun systemweite Optimierungsflags verwendet so würde das [.filename]#Makefile# in etwa folgendermaßen aussehen:

[.programlisting]
....
CFLAGS+= -DHAVE_SOUND
....

[[dads-pthread]]
== Threading-Bibliotheken

Die Threading-Bibliothek muss mit Hilfe eines speziellen Linker-Flags `-pthread` in die Binärdateien unter FreeBSD gebunden werden. Falls ein Port auf ein direktes Verlinken gegen `-lpthread` oder `-lc_r` besteht, passen Sie den Port bitte so an, dass er die durch das Port-Framework bereitgestellte Variable `PTHREAD_LIBS` verwendet. Diese Variable hat üblicherweise den Wert `-pthread`, kann aber auf einigen Architekturen und FreeBSD-Versionen abweichende Werte haben und daher sollte nie `-pthread` direkt in Patches geschrieben werden, sondern immer `PTHREAD_LIBS`.

[NOTE]
====
Falls durch das Setzen von `PTHREAD_LIBS` der Bau des Ports mit der Fehlermeldung `unrecognized option '-pthread'` abbricht, kann die Verwendung des `gcc` als Linker durch setzen von `CONFIGURE_ENV` auf `LD=${CC}` helfen. Die Option `-pthread` wird nicht direkt von `ld` unterstützt.
====

[[dads-freedback]]
== Rückmeldungen

Brauchbare Änderungen/Patches sollten an den ursprünglichen Autor/Maintainer der Software geschickt werden, damit diese in der nächsten Version der Software mit aufgenommen werden können. Dadurch wird Ihre Aufgabe für die nächste Version der Software deutlich einfacher.

[[dads-readme]]
== [.filename]#README.html#

Nehmen Sie bitte keine [.filename]#README.html# in den Port auf. Diese Datei ist kein Bestandteil der CVS-Sammlung sondern wird durch `make readme` erzeugt.

[[dads-noinstall]]
== Einen Port durch `BROKEN`, `FORBIDDEN` oder `IGNORE` als nicht installierbar markieren

In manchen Fällen sollten Benutzer davon abgehalten werden einen Port zu installieren. Um einem Benutzer mitzuteilen, dass ein Port nicht installiert werden sollte, gibt es mehrere Variablen für `make`, die im [.filename]#Makefile# des Ports genutzt werden können. Der Wert der folgenden `make`-Variablen wird dem Benutzer als Grund für die Ablehnung der Installation des Ports zurückgegeben. Bitte benutzen Sie die richtige `make`-Variable, denn jede enthält eine völlig andere Bedeutung für den Benutzer und das automatische System, das von dem [.filename]#Makefile# abhängt, wie <<build-cluster,der Ports-Build-Custer>>, <<freshports,FreshPorts>> und <<portsmon,portsmon>>.

[[dads-noinstall-variables]]
=== Variablen

* `BROKEN` ist reserviert für Ports, welche momentan nicht korrekt kompiliert, installiert oder deinstalliert werden. Es sollte für Ports benutzt werden, von denen man annimmt, dass dies ein temporäres Problem ist.
+ 
Falls angegeben, wird der Build-Cluster dennoch versuchen den Port zu bauen, um zu sehen, ob das zugrunde liegende Problem behoben wurde (das ist jedoch im Allgemeinen nicht der Fall).
+ 
Benutzen Sie `BROKEN` zum Beispiel, wenn ein Port:

** nicht kompiliert
** beim Konfiguration- oder Installation-Prozess scheitert
** Dateien außerhalb von [.filename]#${LOCALBASE}# installiert
** beim Deinstallieren nicht alle seine Dateien sauber entfernt (jedoch kann es akzeptable und wünschenswert sein, Dateien, die vom Nutzer verändert wurden, nicht zu entfernen)

* `FORBIDDEN` wird für Ports verwendet, die Sicherheitslücken enthalten oder die ernste Sicherheitsbedenken für das FreeBSD-System aufwerfen, wenn sie installiert sind (z.B. ein als unsicher bekanntes Programm, oder ein Programm, das einen Dienst zur Verfügung stellt, der leicht kompromittiert werden kann). Ports sollten als `FORBIDDEN` gekennzeichnet werden, sobald ein Programm eine Schwachstelle hat und kein Update veröffentlicht wurde. Idealerweise sollten Ports so bald wie möglich aktualisiert werden wenn eine Sicherheitslücke entdeckt wurde, um die Zahl verwundbarer FreeBSD-Hosts zu verringern (wir schätzen es für unsere Sicherheit bekannt zu sein), obwohl es manchmal einen beachtlichen Zeitabstand zwischen der Bekanntmachung einer Schwachstelle und dem entsprechenden Update gibt. Bitte kennzeichnen Sie einen Port nicht aus irgendeinem Grund außer Sicherheit als `FORBIDDEN`.
* `IGNORE` ist für Ports reserviert, die aus anderen Gründen nicht gebaut werden sollten. Es sollte für Ports verwendet werden, in denen ein strukturelles Problem vermutet wird. Der Build-Cluster wird unter keinen Umständen Ports, die mit `IGNORE` markiert sind, erstellen. Verwenden Sie `IGNORE` zum Beispiel, wenn ein Port:

** kompiliert, aber nicht richtig läuft
** nicht auf der installierten Version von FreeBSD läuft
** FreeBSD Kernelquelltext zum Bauen benötigt, aber der Benutzer diese nicht installiert hat
** ein Distfile benötigt, welches aufgrund von Lizenzbeschränkungen nicht automatisch abgerufen werden kann
** nicht korrekt mit einem momentan installiertem Port arbeitet (der Port hängt zum Beispiel von package:www/apache21[] ab, aber package:www/apache13[] ist installiert)
+
[NOTE]
====
Wenn ein Port mit einem momentan installiertem Port kollidiert (zum Beispiel, wenn beide eine Datei an die selbe Stelle installieren, diese aber eine andere Funktion hat), benutzen Sie stattdessen `CONFLICTS`. `CONFLICTS` setzt `IGNORE` dann selbstständig.
====

* Um einen Port nur auf bestimmte Systemarchitekturen mit `IGNORE` zu markieren, gibt es zwei Variablen, die automatisch `IGNORE` für Sie setzen: `ONLY_FOR_ARCHS` und `NOT_FOR_ARCHS`. Beispiele:
+
[.programlisting]
....
ONLY_FOR_ARCHS= i386 amd64
....
+
[.programlisting]
....
NOT_FOR_ARCHS= alpha ia64 sparc64
....
+ 
Eine eigene `IGNORE`-Ausgabe kann mit `ONLY_FOR_ARCHS_REASON` und `NOT_FOR_ARCHS_REASON` festgelegt werden. Für eine bestimmte Architektur sind Angaben durch `ONLY_FOR_ARCHS_REASON__ARCH_` und `NOT_FOR_ARCHS_REASON__ARCH_` möglich.
* Wenn ein Port i386-Binärdateien herunterlädt und installiert, sollte `IA32_BINARY_PORT` gesetzt werden. Wenn die Variable gesetzt ist, wird überprüft, ob das Verzeichnis [.filename]#/usr/lib32# für IA32-Versionen der Bibliotheken vorhanden ist, und ob der Kernel mit IA32-Kompatibilität gebaut wurde. Wenn eine dieser zwei Voraussetzungen nicht erfüllt ist, wird `IGNORE` automatisch gesetzt.

[[dads-noinstall-notes]]
=== Anmerkungen zur Implementierung

Zeichenketten sollten nicht in Anführungszeichen gesetzt werden. Auch die Wortwahl der Zeichenketten sollte die Art und Weise beachten, wie die Informationen dem Nutzer angezeigt werden. Beispiele:

[.programlisting]
....
BROKEN= this port is unsupported on FreeBSD 5.x
....

[.programlisting]
....
IGNORE= is unsupported on FreeBSD 5.x
....

resultieren in den folgenden Ausgaben von `make describe`:

[.programlisting]
....
===>  foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x.
....

[.programlisting]
....
===>  foobar-0.1 is unsupported on FreeBSD 5.x.
....

[[dads-deprecated]]
== Kennzeichnen eines Ports zur Entfernung durch `DEPRECATED` oder `EXPIRATION_DATE`

Denken Sie bitte daran, dass `BROKEN` und `FORBIDDEN` nur als temporärer Ausweg verwendet werden sollten, wenn ein Port nicht funktioniert. Dauerhaft defekte Ports sollten komplett aus der Ports-Sammlung entfernt werden.

Wenn es sinnvoll ist, können Benutzer vor der anstehenden Entfernung eines Ports mit `DEPRECATED` und `EXPIRATION_DATE` gewarnt werden. Ersteres ist einfach eine Zeichenkette, die angibt, warum der Port entfernt werden soll. Letzteres ist eine Zeichenkette im ISO 8601-Format (JJJJ-MM-TT). Beides wird dem Benutzer gezeigt.

Es ist möglich `DEPRECATED` ohne `EXPIRATION_DATE` zu setzen (zum Beispiel, um eine neuere Version des Ports zu empfehlen), aber das Gegenteil ist sinnlos.

Es gibt keine Vorschrift wie lange die Vorwarnzeit sein muss. Gegenwärtig ist es üblich einen Monat für sicherheitsrelevante Probleme und zwei Monate für Build-Probleme anzusetzen. Dies gibt allen interessierten Committern ein wenig Zeit die Probleme zu beheben.

[[dads-dot-error]]
== Vermeiden Sie den Gebrauch des `.error`-Konstruktes

Der korrekte Weg eines [.filename]#Makefile# anzuzeigen, dass der Port aufgrund eines externen Grundes nicht installiert werden kann (zum Beispiel, weil der Benutzer eine ungültige Kombination von Build-Optionen angegeben hat), ist `IGNORE` auf einen nicht leeren Wert zu setzen. Dieser wird dann formatiert und dem Benutzer von `make install` ausgegeben.

Es ist ein verbreiteter Fehler `.error` für diesem Zweck zu verwenden. Das Problem dabei ist, dass viele automatisierte Werkzeuge, die mit dem Ports-Baum arbeiten, in dieser Situation fehlschlagen. Am Häufigsten tritt das Problem beim Versuch [.filename]#/usr/ports/INDEX# zu bauen auf (siehe crossref:testing[make-describe, `make describe` ausführen]). Jedoch schlagen auch trivialere Befehle wie `make maintainer` in diesem Fall fehl. Dies ist nicht akzeptabel!

[[dot-error-breaks-index]]
.Wie vermeidet man die Verwendung von `.error`
[example]
====
Nehmen Sie an, dass die Zeile 
[.programlisting]
....
USE_POINTYHAT=yes
....

in [.filename]#make.conf# enthalten ist. Der erste der folgenden zwei [.filename]#Makefile#-Schnipsel lässt `make index` fehlschlagen, während der zweite dies nicht tut.

[.programlisting]
....
.if USE_POINTYHAT
.error "POINTYHAT is not supported"
.endif
....

[.programlisting]
....
.if USE_POINTYHAT
IGNORE=POINTYHAT is not supported
.endif
....

====

[[dads-sysctl]]
== Verwendung von [.filename]#sysctl#

Vom Gebrauch von sysctl wird, außer in Targets, abgeraten. Das liegt daran, dass die Auswertung aller ``makevar``s, wie sie während `make index` verwendet werden, dann den Befehl ausführen muss, welches den Prozess weiter verlangsamt.

Die Verwendung von man:sysctl[8] sollte immer durch die Variable `SYSCTL` erfolgen, da diese den vollständigen Pfad enthält und überschrieben werden kann, so dies als notwendig erachtet wird.

[[dads-rerolling-distfiles]]
== Erneutes Ausliefern von Distfiles

Manchmal ändern die Autoren der Software den Inhalt veröffentlichter Distfiles, ohne den Dateinamen zu ändern. Sie müssen überprüfen, ob die Änderungen offizell sind und vom Autor durchgeführt wurden. Es ist in der Vergangenheit vorgekommen, dass Distfiles still und heimlich auf dem Download-Server geändert wurden, um Schaden zu verursachen oder die Sicherheit der Nutzer zu kompromittieren.

Verschieben Sie das alte Distfile und laden Sie das neue herunter. Entpacken Sie es und vergleichen Sie den Inhalt mittels man:diff[1]. Wenn Sie nichts Verdächtiges sehen können Sie [.filename]#distinfo# aktualisieren. Stellen Sie sicher, dass die Änderungen in Ihrem PR oder Commit-Protokoll zusammengefasst sind, um zu Gewährleisten, dass nichts Negatives passiert ist.

Sie können auch mit den Autoren der Software in Verbindung treten und sich die Änderungen bestätigen lassen.

[[dads-misc]]
== Verschiedenes

Die Dateien [.filename]#pkg-descr# und [.filename]#pkg-plist# sollten beide doppelt kontrolliert werden. Wenn Sie einen Port nachprüfen und glauben, dass man es besser machen kann, dann verbessern Sie ihn bitte.

Bitte kopieren Sie nicht noch mehr Exemplare der GNU General Public License in unser System.

Bitte überprüfen Sie alle gesetzlichen Punkte gründlich! Lassen Sie uns bitte keine illegale Software verbreiten!
