diff --git a/documentation/content/en/books/porters-handbook/makefiles/_index.adoc b/documentation/content/en/books/porters-handbook/makefiles/_index.adoc index 7b76b21ab1..e98d2ff336 100644 --- a/documentation/content/en/books/porters-handbook/makefiles/_index.adoc +++ b/documentation/content/en/books/porters-handbook/makefiles/_index.adoc @@ -1,5448 +1,5448 @@ --- title: Chapter 5. Configuring the Makefile prev: books/porters-handbook/slow-porting next: books/porters-handbook/special description: Configuring the Makefile for FreeBSD Ports tags: ["makefiles", "configuring", "naming", "versions"] showBookMenu: true weight: 5 params: path: "/books/porters-handbook/makefiles/" --- [[makefiles]] = Configuring the Makefile :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 5 :partnums: :source-highlighter: rouge :experimental: :g-plus-plus: g++ :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::[] Configuring the [.filename]#Makefile# is pretty simple, and again we suggest looking at existing examples before starting. Also, there is a crossref:porting-samplem[porting-samplem,sample Makefile] in this handbook, so take a look and please follow the ordering of variables and sections in that template to make the port easier for others to read. Consider these problems in sequence during the design of the new [.filename]#Makefile#: [[makefile-source]] == The Original Source Does it live in `DISTDIR` as a standard ``gzip``ped tarball named something like [.filename]#foozolix-1.2.tar.gz#? If so, go on to the next step. If not, the distribution file format might require overriding one or more of `DISTVERSION`, `DISTNAME`, `EXTRACT_CMD`, `EXTRACT_BEFORE_ARGS`, `EXTRACT_AFTER_ARGS`, `EXTRACT_SUFX`, or `DISTFILES`. In the worst case, create a custom `do-extract` target to override the default. This is rarely, if ever, necessary. [[makefile-naming]] == Naming The first part of the port's [.filename]#Makefile# names the port, describes its version number, and lists it in the correct category. [[makefile-portname]] === `PORTNAME` Set `PORTNAME` to the base name of the software. It is used as the base for the FreeBSD package, and for crossref:makefiles[makefile-distname,`DISTNAME`]. [IMPORTANT] ==== The package name must be unique across the entire ports tree. Make sure that the `PORTNAME` is not already in use by an existing port, and that no other port already has the same `PKGBASE`. If the name has already been used, add either crossref:makefiles[porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or `PKGNAMESUFFIX`]. ==== [[makefile-versions]] === Versions, `DISTVERSION` _or_ `PORTVERSION` Set `DISTVERSION` to the version number of the software. `PORTVERSION` is the version used for the FreeBSD package. It will be automatically derived from `DISTVERSION` to be compatible with FreeBSD's package versioning scheme. If the version contains _letters_, it might be needed to set `PORTVERSION` and not `DISTVERSION`. [IMPORTANT] ==== Only one of `PORTVERSION` and `DISTVERSION` can be set at a time. ==== From time to time, some software will use a version scheme that is not compatible with how `DISTVERSION` translates in `PORTVERSION`. [TIP] ==== -When updating a port, it is possible to use man:pkg-version[8]'s `-t` argument to check if the new version is greater or lesser than before. -See crossref:makefiles[makefile-versions-ex-pkg-version, Using man:pkg-version\[8\] to Compare Versions]. +When updating a port, it is possible to use the `-t` argument of man:pkg-version[8] to check if the new version is greater or lesser than before. +See below on how to use man:pkg-version[8] to compare versions. ==== [[makefile-versions-ex-pkg-version]] .Using man:pkg-version[8] to Compare Versions [example] ==== `pkg version -t` takes two versions as arguments, it will respond with `<`, `=` or `>` if the first version is less, equal, or more than the second version, respectively. [source,shell] .... % pkg version -t 1.2 1.3 < <.> % pkg version -t 1.2 1.2 = <.> % pkg version -t 1.2 1.2.0 = <.> % pkg version -t 1.2 1.2.p1 > <.> % pkg version -t 1.2.a1 1.2.b1 < <.> % pkg version -t 1.2 1.2p1 < <.> .... <.> `1.2` is before `1.3`. <.> `1.2` and `1.2` are equal as they have the same version. <.> `1.2` and `1.2.0` are equal as nothing equals zero. <.> `1.2` is after `1.2.p1` as `.p1`, think "pre-release 1". <.> `1.2.a1` is before `1.2.b1`, think "alpha" and "beta", and `a` is before `b`. <.> `1.2` is before `1.2p1` as `2p1`, think "2, patch level 1" which is a version after any `2.X` but before `3`. [NOTE] **** In here, the `a`, `b`, and `p` are used as if meaning "alpha", "beta" or "pre-release" and "patch level", but they are only letters and are sorted alphabetically, so any letter can be used, and they will be sorted appropriately. **** ==== .Examples of `DISTVERSION` and the Derived `PORTVERSION` [cols="10%,90%", frame="none", options="header"] |=== | DISTVERSION | PORTVERSION |0.7.1d |0.7.1.d |10Alpha3 |10.a3 |3Beta7-pre2 |3.b7.p2 |8:f_17 |8f.17 |=== [[makefile-versions-ex1]] .Using `DISTVERSION` [example] ==== When the version only contains numbers separated by dots, dashes or underscores, use `DISTVERSION`. [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2-4 .... It will generate a `PORTVERSION` of `1.2.4`. ==== [[makefile-versions-ex2]] .Using `DISTVERSION` When the Version Starts with a Letter or a Prefix [example] ==== When the version starts or ends with a letter, or a prefix or a suffix that is not part of the version, use `DISTVERSIONPREFIX`, `DISTVERSION`, and `DISTVERSIONSUFFIX`. If the version is `v1.2-4`: [.programlisting] .... PORTNAME= nekoto DISTVERSIONPREFIX= v DISTVERSION= 1_2_4 .... Some of the time, projects using GitHub will use their name in their versions. For example, the version could be `nekoto-1.2-4`: [.programlisting] .... PORTNAME= nekoto DISTVERSIONPREFIX= nekoto- DISTVERSION= 1.2_4 .... Those projects also sometimes use some string at the end of the version, for example, `1.2-4_RELEASE`: [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2-4 DISTVERSIONSUFFIX= _RELEASE .... Or they do both, for example, `nekoto-1.2-4_RELEASE`: [.programlisting] .... PORTNAME= nekoto DISTVERSIONPREFIX= nekoto- DISTVERSION= 1.2-4 DISTVERSIONSUFFIX= _RELEASE .... `DISTVERSIONPREFIX` and `DISTVERSIONSUFFIX` will not be used while constructing `PORTVERSION`, but only used in `DISTNAME`. All will generate a `PORTVERSION` of `1.2.4`. ==== [[makefile-versions-ex3]] .Using `DISTVERSION` When the Version Contains Letters Meaning "alpha", "beta", or "pre-release" [example] ==== When the version contains numbers separated by dots, dashes or underscores, and letters are used to mean "alpha", "beta" or "pre-release", which is, before the version without the letters, use `DISTVERSION`. [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2-pre4 .... [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2p4 .... Both will generate a `PORTVERSION` of `1.2.p4` which is before than 1.2. man:pkg-version[8] can be used to check that fact: [source,shell] .... % pkg version -t 1.2.p4 1.2 < .... ==== [[makefile-versions-ex4]] .Not Using `DISTVERSION` When the Version Contains Letters Meaning "Patch Level" [example] ==== When the version contains letters that are not meant as "alpha", "beta", or "pre", but more in a "patch level", and meaning after the version without the letters, use `PORTVERSION`. [.programlisting] .... PORTNAME= nekoto PORTVERSION= 1.2p4 .... In this case, using `DISTVERSION` is not possible because it would generate a version of `1.2.p4` which would be before `1.2` and not after. man:pkg-version[8] will verify this: [source,shell] .... % pkg version -t 1.2 1.2.p4 > <.> % pkg version -t 1.2 1.2p4 < <.> .... <.> `1.2` is after `1.2.p4`, which is _wrong_ in this case. <.> `1.2` is before `1.2p4`, which is what was needed. ==== For some more advanced examples of setting `PORTVERSION`, when the software's versioning is really not compatible with FreeBSD's, or `DISTNAME` when the distribution file does not contain the version itself, see crossref:makefiles[makefile-distname, `DISTNAME`]. [[makefile-naming-revepoch]] === `PORTREVISION` and `PORTEPOCH` [[makefile-portrevision]] ==== `PORTREVISION` `PORTREVISION` is a monotonically increasing value which is reset to 0 with every increase of `DISTVERSION`, typically every time there is a new official vendor release. If `PORTREVISION` is non-zero, the value is appended to the package name. Changes to `PORTREVISION` are used by automated tools like man:pkg-version[8] to determine that a new package is available. `PORTREVISION` must be increased each time a change is made to the port that changes the generated package in any way. That includes changes that only affect a package built with non-default crossref:makefiles[makefile-options,options]. Examples of when `PORTREVISION` must be bumped: * Addition of patches to correct security vulnerabilities, bugs, or to add new functionality to the port. * Changes to the port [.filename]#Makefile# to enable or disable compile-time options in the package. * Changes in the packing list or the install-time behavior of the package. For example, a change to a script which generates initial data for the package, like man:ssh[1] host keys. * Version bump of a port's shared library dependency (in this case, someone trying to install the old package after installing a newer version of the dependency will fail since it will look for the old libfoo.x instead of libfoo.(x+1)). * Silent changes to the port distfile which have significant functional differences. For example, changes to the distfile requiring a correction to [.filename]#distinfo# with no corresponding change to `DISTVERSION`, where a `diff -ru` of the old and new versions shows non-trivial changes to the code. * Changes to `MAINTAINER`. Examples of changes which do not require a `PORTREVISION` bump: * Style changes to the port skeleton with no functional change to what appears in the resulting package. * Changes to `MASTER_SITES` or other functional changes to the port which do not affect the resulting package. * Trivial patches to the distfile such as correction of typos, which are not important enough that users of the package have to go to the trouble of upgrading. * Build fixes which cause a package to become compilable where it was previously failing. As long as the changes do not introduce any functional change on any other platforms on which the port did previously build. Since `PORTREVISION` reflects the content of the package, if the package was not previously buildable then there is no need to increase `PORTREVISION` to mark a change. A rule of thumb is to decide whether a change committed to a port is something which _some_ people would benefit from having. Either because of an enhancement, fix, or by virtue that the new package will actually work at all. Then weigh that against that fact that it will cause everyone who regularly updates their ports tree to be compelled to update. If yes, `PORTREVISION` must be bumped. [NOTE] ==== People using binary packages will _never_ see the update if `PORTREVISION` is not bumped. Without increasing `PORTREVISION`, the package builders have no way to detect the change and thus, will not rebuild the package. ==== [[makefile-portepoch]] ==== `PORTEPOCH` From time to time a software vendor or FreeBSD porter will do something silly and release a version of their software which is actually numerically less than the previous version. An example of this is a port which goes from foo-20000801 to foo-1.0 (the former will be incorrectly treated as a newer version since 20000801 is a numerically greater value than 1). [TIP] ==== The results of version number comparisons are not always obvious. `pkg version` (see man:pkg-version[8]) can be used to test the comparison of two version number strings. For example: [source,shell] .... % pkg version -t 0.031 0.29 > .... The `>` output indicates that version 0.031 is considered greater than version 0.29, which may not have been obvious to the porter. ==== In situations such as this, `PORTEPOCH` must be increased. If `PORTEPOCH` is nonzero it is appended to the package name as described in section 0 above. `PORTEPOCH` must never be decreased or reset to zero, because that would cause comparison to a package from an earlier epoch to fail. For example, the package would not be detected as out of date. The new version number, `1.0,1` in the above example, is still numerically less than the previous version, 20000801, but the `,1` suffix is treated specially by automated tools and found to be greater than the implied suffix `,0` on the earlier package. Dropping or resetting `PORTEPOCH` incorrectly leads to no end of grief. If the discussion above was not clear enough, please consult the {freebsd-ports}. It is expected that `PORTEPOCH` will not be used for the majority of ports, and that sensible use of `DISTVERSION`, or that use `PORTVERSION` carefully, can often preempt it becoming necessary if a future release of the software changes the version structure. However, care is needed by FreeBSD porters when a vendor release is made without an official version number - such as a code "snapshot" release. The temptation is to label the release with the release date, which will cause problems as in the example above when a new "official" release is made. For example, if a snapshot release is made on the date `20000917`, and the previous version of the software was version `1.2`, do not use `20000917` for `DISTVERSION`. The correct way is a `DISTVERSION` of `1.2.20000917`, or similar, so that the succeeding release, say `1.3`, is still a numerically greater value. [[makefile-portrevision-example]] ==== Example of `PORTREVISION` and `PORTEPOCH` Usage The `gtkmumble` port, version `0.10`, is committed to the ports collection: [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.10 .... `PKGNAME` becomes `gtkmumble-0.10`. A security hole is discovered which requires a local FreeBSD patch. `PORTREVISION` is bumped accordingly. [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.10 PORTREVISION= 1 .... `PKGNAME` becomes `gtkmumble-0.10_1` A new version is released by the vendor, numbered `0.2` (it turns out the author actually intended `0.10` to actually mean `0.1.0`, not "what comes after 0.9" - oops, too late now). Since the new minor version `2` is numerically less than the previous version `10`, `PORTEPOCH` must be bumped to manually force the new package to be detected as "newer". Since it is a new vendor release of the code, `PORTREVISION` is reset to 0 (or removed from the [.filename]#Makefile#). [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.2 PORTEPOCH= 1 .... `PKGNAME` becomes `gtkmumble-0.2,1` The next release is 0.3. Since `PORTEPOCH` never decreases, the version variables are now: [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.3 PORTEPOCH= 1 .... `PKGNAME` becomes `gtkmumble-0.3,1` [NOTE] ==== If `PORTEPOCH` were reset to `0` with this upgrade, someone who had installed the `gtkmumble-0.10_1` package would not detect the `gtkmumble-0.3` package as newer, since `3` is still numerically less than `10`. Remember, this is the whole point of `PORTEPOCH` in the first place. ==== [[porting-pkgnameprefix-suffix]] === `PKGNAMEPREFIX` and `PKGNAMESUFFIX` Two optional variables, `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, are combined with `PORTNAME` and `PORTVERSION` to form `PKGNAME` as `${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`. Make sure this conforms to our crossref:makefiles[porting-pkgname,guidelines for a good package name]. In particular, the use of a hyphen (`-`) in `PORTVERSION` is _not_ allowed. Also, if the package name has the _language-_ or the _-compiled.specifics_ part (see below), use `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, respectively. Do not make them part of `PORTNAME`. [[porting-pkgname]] === Package Naming Conventions These are the conventions to follow when naming packages. This is to make the package directory easy to scan, as there are already thousands of packages and users are going to turn away if they hurt their eyes! Package names take the form of [.filename]#language_region-name-compiled.specifics-version.numbers#. The package name is defined as `${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`. Make sure to set the variables to conform to that format. [[porting-pkgname-language]] [.filename]#language_region-#:: FreeBSD strives to support the native language of its users. The _language-_ part is a two letter abbreviation of the natural language defined by ISO-639 when the port is specific to a certain language. Examples are `ja` for Japanese, `ru` for Russian, `vi` for Vietnamese, `zh` for Chinese, `ko` for Korean and `de` for German. + If the port is specific to a certain region within the language area, add the two letter country code as well. Examples are `en_US` for US English and `fr_CH` for Swiss French. + The _language-_ part is set in `PKGNAMEPREFIX`. [[porting-pkgname-name]] [.filename]#name#:: Make sure that the port's name and version are clearly separated and placed into `PORTNAME` and `DISTVERSION`. The only reason for `PORTNAME` to contain a version part is if the upstream distribution is really named that way, as in the package:textproc/libxml2[] or package:japanese/kinput2-freewnn[] ports. Otherwise, `PORTNAME` cannot contain any version-specific information. It is quite normal for several ports to have the same `PORTNAME`, as the package:www/apache*[] ports do; in that case, different versions (and different index entries) are distinguished by `PKGNAMEPREFIX` and `PKGNAMESUFFIX` values. + There is a tradition of naming `Perl 5` modules by prepending `p5-` and converting the double-colon separator to a hyphen. For example, the `Data::Dumper` module becomes `p5-Data-Dumper`. [[porting-pkgname-compiled-specifics]] [.filename]#-compiled.specifics#:: If the port can be built with different crossref:makefiles[makefile-masterdir,hardcoded defaults] (usually part of the directory name in a family of ports), the _-compiled.specifics_ part states the compiled-in defaults. The hyphen is optional. Examples are paper size and font units. + The _-compiled.specifics_ part is set in `PKGNAMESUFFIX`. [[porting-pkgname-version-numbers]] [.filename]#-version.numbers#:: The version string follows a dash (`-`) and is a period-separated list of integers and single lowercase alphabetics. In particular, it is not permissible to have another dash inside the version string. The only exception is the string `pl` (meaning "patchlevel"), which can be used _only_ when there are no major and minor version numbers in the software. If the software version has strings like "alpha", "beta", "rc", or "pre", take the first letter and put it immediately after a period. If the version string continues after those names, the numbers follow the single alphabet without an extra period between them (for example, `1.0b2`). + The idea is to make it easier to sort ports by looking at the version string. In particular, make sure version number components are always delimited by a period, and if the date is part of the string, use the `d__yyyy.mm.dd__` format, not `_dd.mm.yyyy_` or the non-Y2K compliant `_yy.mm.dd_` format. It is important to prefix the version with a letter, here `d` (for date), in case a release with an actual version number is made, which would be numerically less than `_yyyy_`. [IMPORTANT] ==== Package name must be unique among all of the ports tree, check that there is not already a port with the same `PORTNAME` and if there is add one of crossref:makefiles[porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or `PKGNAMESUFFIX`]. ==== Here are some (real) examples on how to convert the name as called by the software authors to a suitable package name, for each line, only one of `DISTVERSION` or `PORTVERSION` is set in, depending on which would be used in the port's [.filename]#Makefile#: .Package Naming Examples [cols="1,1,1,1,1,1,1", frame="none", options="header"] |=== | Distribution Name | PKGNAMEPREFIX | PORTNAME | PKGNAMESUFFIX | DISTVERSION | PORTVERSION | Reason or comment |mule-2.2.2 |(empty) |mule |(empty) |2.2.2 | |No changes required |mule-1.0.1 |(empty) |mule |1 |1.0.1 | |This is version 1 of mule, and version 2 already exists |EmiClock-1.0.2 |(empty) |emiclock |(empty) |1.0.2 | |No uppercase names for single programs |rdist-1.3alpha |(empty) |rdist |(empty) |1.3alpha | |Version will be `1.3.a` |es-0.9-beta1 |(empty) |es |(empty) |0.9-beta1 | |Version will be `0.9.b1` |mailman-2.0rc3 |(empty) |mailman |(empty) |2.0rc3 | |Version will be `2.0.r3` |v3.3beta021.src |(empty) |tiff |(empty) | |3.3 |What the heck was that anyway? |tvtwm |(empty) |tvtwm |(empty) | |p11 |No version in the filename, use what upstream says it is |piewm |(empty) |piewm |(empty) |1.0 | |No version in the filename, use what upstream says it is |xvgr-2.10pl1 |(empty) |xvgr |(empty) | |2.10.pl1 |In that case, `pl1` means patch level, so using DISTVERSION is not possible. |gawk-2.15.6 |ja- |gawk |(empty) |2.15.6 | |Japanese language version |psutils-1.13 |(empty) |psutils |-letter |1.13 | |Paper size hardcoded at package build time |pkfonts |(empty) |pkfonts |300 |1.0 | |Package for 300dpi fonts |=== If there is absolutely no trace of version information in the original source and it is unlikely that the original author will ever release another version, just set the version string to `1.0` (like the `piewm` example above). Otherwise, ask the original author or use the date string the source file was released on (`d__yyyy.mm.dd__`, or `d__yyyymmdd__`) as the version. [TIP] ==== Use any letter. Here, `d` here stands for date, if the source is a Git repository, `g` followed by the commit date is commonly used, using `s` for snapshot is also common. ==== [[makefile-categories]] == Categorization [[makefile-categories-definition]] === `CATEGORIES` When a package is created, it is put under [.filename]#/usr/ports/packages/All# and links are made from one or more subdirectories of [.filename]#/usr/ports/packages#. The names of these subdirectories are specified by the variable `CATEGORIES`. It is intended to make life easier for the user when he is wading through the pile of packages on the FTP site or the CDROM. Please take a look at the crossref:makefiles[porting-categories,current list of categories] and pick the ones that are suitable for the port. This list also determines where in the ports tree the port is imported. If there is more than one category here, the port files must be put in the subdirectory with the name of the first category. See crossref:makefiles[choosing-categories,below] for more discussion about how to pick the right categories. [[porting-categories]] === Current List of Categories Here is the current list of port categories. Those marked with an asterisk (`*`) are _virtual_ categories-those that do not have a corresponding subdirectory in the ports tree. They are only used as secondary categories, and only for search purposes. [NOTE] ==== For non-virtual categories, there is a one-line description in `COMMENT` in that subdirectory's [.filename]#Makefile#. ==== [.informaltable] [cols="1,1,1", frame="none", options="header"] |=== | Category | Description | Notes |[.filename]#accessibility# |Ports to help disabled users. | |[.filename]#afterstep#`*` |Ports to support the http://www.afterstep.org/[AfterStep] window manager. | |[.filename]#arabic# |Arabic language support. | |[.filename]#archivers# |Archiving tools. | |[.filename]#astro# |Astronomical ports. | |[.filename]#audio# |Sound support. | |[.filename]#benchmarks# |Benchmarking utilities. | |[.filename]#biology# |Biology-related software. | |[.filename]#cad# |Computer aided design tools. | |[.filename]#chinese# |Chinese language support. | |[.filename]#comms# |Communication software. |Mostly software to talk to the serial port. |[.filename]#converters# |Character code converters. | |[.filename]#databases# |Databases. | |[.filename]#deskutils# |Things that used to be on the desktop before computers were invented. | |[.filename]#devel# |Development utilities. |Do not put libraries here just because they are libraries. They should _not_ be in this category unless they truly do not belong anywhere else. |[.filename]#dns# |DNS-related software. | |[.filename]#docs#`*` |Meta-ports for FreeBSD documentation. | |[.filename]#editors# |General editors. |Specialized editors go in the section for those tools. For example, a mathematical-formula editor will go in [.filename]#math#, and have [.filename]#editors# as a second category. |[.filename]#education#`*` |Education-related software. |This includes applications, utilities, or games primarily or substantially designed to help the user learn a specific topic or study in general. It also includes course-writing applications, course-delivery applications, and classroom or school management applications |[.filename]#elisp#`*` |Emacs-lisp ports. | |[.filename]#emulators# |Emulators for other operating systems. |Terminal emulators do _not_ belong here. X-based ones go to [.filename]#x11# and text-based ones to either [.filename]#comms# or [.filename]#misc#, depending on the exact functionality. |[.filename]#enlightenment#`*` |Ports related to the Enlightenment window manager. | |[.filename]#filesystems# |File systems and related utilities. | |[.filename]#finance# |Monetary, financial and related applications. | |[.filename]#french# |French language support. | |[.filename]#ftp# |FTP client and server utilities. |If the port speaks both FTP and HTTP, put it in [.filename]#ftp# with a secondary category of [.filename]#www#. |[.filename]#games# |Games. | |[.filename]#geography#`*` |Geography-related software. | |[.filename]#german# |German language support. | |[.filename]#gnome#`*` |Ports from the https://www.gnome.org/[GNOME] Project. | |[.filename]#gnustep#`*` |Software related to the GNUstep desktop environment. | |[.filename]#graphics# |Graphics utilities. | |[.filename]#hamradio#`*` |Software for amateur radio. | |[.filename]#haskell#`*` |Software related to the Haskell language. | |[.filename]#hebrew# |Hebrew language support. | |[.filename]#hungarian# |Hungarian language support. | |[.filename]#irc# |Internet Relay Chat utilities. | |[.filename]#japanese# |Japanese language support. | |[.filename]#java# |Software related to the Java(TM) language. |The [.filename]#java# category must not be the only one for a port. Save for ports directly related to the Java language, porters are also encouraged not to use [.filename]#java# as the main category of a port. |[.filename]#kde#`*` |Ports from the https://www.kde.org/[KDE] Project (generic). | |[.filename]#kde-applications#`*` |Applications from the https://www.kde.org/[KDE] Project. | |[.filename]#kde-frameworks#`*` |Add-on libraries from the https://www.kde.org/[KDE] Project for programming with Qt. | |[.filename]#kde-plasma#`*` |Desktop from the https://www.kde.org/[KDE] Project. | |[.filename]#kld#`*` |Kernel loadable modules. | |[.filename]#korean# |Korean language support. | |[.filename]#lang# |Programming languages. | |[.filename]#linux#`*` |Linux applications and support utilities. | |[.filename]#lisp#`*` |Software related to the Lisp language. | |[.filename]#mail# |Mail software. | |[.filename]#mate#`*` |Ports related to the MATE desktop environment, a fork of GNOME 2. | |[.filename]#math# |Numerical computation software and other utilities for mathematics. | |[.filename]#mbone#`*` |MBone applications. | |[.filename]#misc# |Miscellaneous utilities |Things that do not belong anywhere else. If at all possible, try to find a better category for the port than `misc`, as ports tend to be overlooked in here. |[.filename]#multimedia# |Multimedia software. | |[.filename]#net# |Miscellaneous networking software. | |[.filename]#net-im# |Instant messaging software. | |[.filename]#net-mgmt# |Networking management software. | |[.filename]#net-p2p# |Peer to peer network applications. | |[.filename]#net-vpn#`*` |Virtual Private Network applications. | |[.filename]#news# |USENET news software. | |[.filename]#parallel#`*` |Applications dealing with parallelism in computing. | |[.filename]#pear#`*` |Ports related to the Pear PHP framework. | |[.filename]#perl5#`*` |Ports that require Perl version 5 to run. | |[.filename]#plan9#`*` |Various programs from https://9p.io/wiki/plan9/Download/index.html[Plan9]. | |[.filename]#polish# |Polish language support. | |[.filename]#ports-mgmt# |Ports for managing, installing and developing FreeBSD ports and packages. | |[.filename]#portuguese# |Portuguese language support. | |[.filename]#print# |Printing software. |Desktop publishing tools (previewers, etc.) belong here too. |[.filename]#python#`*` |Software related to the https://www.python.org/[Python] language. | |[.filename]#ruby#`*` |Software related to the https://www.ruby-lang.org/[Ruby] language. | |[.filename]#rubygems#`*` |Ports of https://www.rubygems.org/[RubyGems] packages. | |[.filename]#russian# |Russian language support. | |[.filename]#scheme#`*` |Software related to the Scheme language. | |[.filename]#science# |Scientific ports that do not fit into other categories such as [.filename]#astro#, [.filename]#biology# and [.filename]#math#. | |[.filename]#security# |Security utilities. | |[.filename]#shells# |Command line shells. | |[.filename]#spanish#`*` |Spanish language support. | |[.filename]#sysutils# |System utilities. | |[.filename]#tcl#`*` |Ports that use Tcl to run. | |[.filename]#textproc# |Text processing utilities. |It does not include desktop publishing tools, which go to [.filename]#print#. |[.filename]#tk#`*` |Ports that use Tk to run. | |[.filename]#ukrainian# |Ukrainian language support. | |[.filename]#vietnamese# |Vietnamese language support. | |[.filename]#wayland#`*` |Ports to support the Wayland display server. | |[.filename]#windowmaker#`*` |Ports to support the Window Maker window manager. | |[.filename]#www# |Software related to the World Wide Web. |HTML language support belongs here too. |[.filename]#x11# |The X Window System and friends. |This category is only for software that directly supports the window system. Do not put regular X applications here. Most of them go into other [.filename]#x11-*# categories (see below). |[.filename]#x11-clocks# |X11 clocks. | |[.filename]#x11-drivers# |X11 drivers. | |[.filename]#x11-fm# |X11 file managers. | |[.filename]#x11-fonts# |X11 fonts and font utilities. | |[.filename]#x11-servers# |X11 servers. | |[.filename]#x11-themes# |X11 themes. | |[.filename]#x11-toolkits# |X11 toolkits. | |[.filename]#x11-wm# |X11 window managers. | |[.filename]#xfce#`*` |Ports related to the https://www.xfce.org/[Xfce] desktop environment. | |[.filename]#zope#`*` |https://www.zope.org/[Zope] support. | |=== [[choosing-categories]] === Choosing the Right Category As many of the categories overlap, choosing which of the categories will be the primary category of the port can be tedious. There are several rules that govern this issue. Here is the list of priorities, in decreasing order of precedence: * The first category must be a physical category (see crossref:makefiles[porting-categories,above]). This is necessary to make the packaging work. Virtual categories and physical categories may be intermixed after that. * Language specific categories always come first. For example, if the port installs Japanese X11 fonts, then the `CATEGORIES` line would read [.filename]#japanese x11-fonts#. * Specific categories are listed before less-specific ones. For instance, an HTML editor is listed as [.filename]#www editors#, not the other way around. Also, do not list [.filename]#net# when the port belongs to any of [.filename]#irc#, [.filename]#mail#, [.filename]#news#, [.filename]#security#, or [.filename]#www#, as [.filename]#net# is included implicitly. * [.filename]#x11# is used as a secondary category only when the primary category is a natural language. In particular, do not put [.filename]#x11# in the category line for X applications. * Emacs modes are placed in the same ports category as the application supported by the mode, not in [.filename]#editors#. For example, an Emacs mode to edit source files of some programming language goes into [.filename]#lang#. * Ports installing loadable kernel modules also have the virtual category [.filename]#kld# in their `CATEGORIES` line. This is one of the things handled automatically by adding `USES=kmod`. * [.filename]#misc# does not appear with any other non-virtual category. If there is `misc` with something else in `CATEGORIES`, that means `misc` can safely be deleted and the port placed only in the other subdirectory. * If the port truly does not belong anywhere else, put it in [.filename]#misc#. If the category is not clearly defined, please put a comment to that effect in the https://bugs.freebsd.org/submit/[port submission] in the bug database so we can discuss it before we import it. As a committer, send a note to the {freebsd-ports} so we can discuss it first. Too often, new ports are imported to the wrong category only to be moved right away. [[proposing-categories]] === Proposing a New Category As the Ports Collection has grown over time, various new categories have been introduced. New categories can either be _virtual_ categories-those that do not have a corresponding subdirectory in the ports tree- or _physical_ categories-those that do. This section discusses the issues involved in creating a new physical category. Read it thoroughly before proposing a new one. Our existing practice has been to avoid creating a new physical category unless either a large number of ports would logically belong to it, or the ports that would belong to it are a logically distinct group that is of limited general interest (for instance, categories related to spoken human languages), or preferably both. The rationale for this is that such a change creates a extref:{committers-guide}[fair amount of work, ports] for both the committers and also for all users who track changes to the Ports Collection. In addition, proposed category changes just naturally seem to attract controversy. (Perhaps this is because there is no clear consensus on when a category is "too big", nor whether categories should lend themselves to browsing (and thus what number of categories would be an ideal number), and so forth.) Here is the procedure: [.procedure] . Propose the new category on {freebsd-ports}. Include a detailed rationale for the new category, including why the existing categories are not sufficient, and the list of existing ports proposed to move. (If there are new ports pending in Bugzilla that would fit this category, list them too.) If you are the maintainer and/or submitter, respectively, mention that as it may help the case. . Participate in the discussion. . If it seems that there is support for the idea, file a PR which includes both the rationale and the list of existing ports that need to be moved. Ideally, this PR would also include these patches: ** [.filename]##Makefile##s for the new ports once they are repocopied ** [.filename]#Makefile# for the new category ** [.filename]#Makefile# for the old ports' categories ** [.filename]##Makefile##s for ports that depend on the old ports ** (for extra credit, include the other files that have to change, as per the procedure in the Committer's Guide.) . Since it affects the ports infrastructure and involves moving and patching many ports but also possibly running regression tests on the build cluster, assign the PR to the {portmgr}. . If that PR is approved, a committer will need to follow the rest of the procedure that is extref:{committers-guide}[outlined in the Committer's Guide, ports]. Proposing a new virtual category is similar to the above but much less involved, since no ports will actually have to move. In this case, the only patches to include in the PR would be those to add the new category to `CATEGORIES` of the affected ports. [[proposing-reorg]] === Proposing Reorganizing All the Categories Occasionally someone proposes reorganizing the categories with either a 2-level structure, or some other kind of keyword structure. To date, nothing has come of any of these proposals because, while they are very easy to make, the effort involved to retrofit the entire existing ports collection with any kind of reorganization is daunting to say the very least. Please read the history of these proposals in the mailing list archives before posting this idea. Furthermore, be prepared to be challenged to offer a working prototype. [[makefile-distfiles]] == The Distribution Files The second part of the [.filename]#Makefile# describes the files that must be downloaded to build the port, and where they can be downloaded. [[makefile-distname]] === `DISTNAME` `DISTNAME` is the name of the port as called by the authors of the software. `DISTNAME` defaults to `${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`, and if not set, `DISTVERSION` defaults to `${PORTVERSION}` so override `DISTNAME` only if necessary. `DISTNAME` is only used in two places. First, the distribution file list (`DISTFILES`) defaults to `${DISTNAME}${EXTRACT_SUFX}`. Second, the distribution file is expected to extract into a subdirectory named `WRKSRC`, which defaults to [.filename]#work/${DISTNAME}#. Some vendor's distribution names which do not fit into the `${PORTNAME}-${PORTVERSION}`-scheme can be handled automatically by setting `DISTVERSIONPREFIX`, `DISTVERSION`, and `DISTVERSIONSUFFIX`. `PORTVERSION` will be derived from `DISTVERSION` automatically. [IMPORTANT] ==== Only one of `PORTVERSION` and `DISTVERSION` can be set at a time. If `DISTVERSION` does not derive a correct `PORTVERSION`, do not use `DISTVERSION`. ==== If the upstream version scheme can be derived into a ports-compatible version scheme, set some variable to the upstream version, _do not_ use `DISTVERSION` as the variable name. Set `PORTVERSION` to the computed version based on the variable you created, and set `DISTNAME` accordingly. If the upstream version scheme cannot easily be coerced into a ports-compatible value, set `PORTVERSION` to a sensible value, and set `DISTNAME` with `PORTNAME` with the verbatim upstream version. [[makefile-distname-ex1]] .Deriving `PORTVERSION` Manually [example] ==== BIND9 uses a version scheme that is not compatible with the ports versions (it has `-` in its versions) and cannot be derived using `DISTVERSION` because after the 9.9.9 release, it will release a "patchlevels" in the form of `9.9.9-P1`. DISTVERSION would translate that into `9.9.9.p1`, which, in the ports versioning scheme means 9.9.9 pre-release 1, which is before 9.9.9 and not after. So `PORTVERSION` is manually derived from an `ISCVERSION` variable to output `9.9.9p1`. The order into which the ports framework, and pkg, will sort versions is checked using the `-t` argument of man:pkg-version[8]: [source,shell] .... % pkg version -t 9.9.9 9.9.9.p1 > <.> % pkg version -t 9.9.9 9.9.9p1 < <.> .... <.> The `>` sign means that the first argument passed to `-t` is greater than the second argument. `9.9.9` is after `9.9.9.p1`. <.> The `<` sign means that the first argument passed to `-t` is less than the second argument. `9.9.9` is before `9.9.9p1`. In the port [.filename]#Makefile#, for example package:dns/bind99[], it is achieved by: [.programlisting] .... PORTNAME= bind PORTVERSION= ${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/} CATEGORIES= dns net MASTER_SITES= ISC/bind9/${ISCVERSION} PKGNAMESUFFIX= 99 DISTNAME= ${PORTNAME}-${ISCVERSION} MAINTAINER= mat@FreeBSD.org COMMENT= BIND DNS suite with updated DNSSEC and DNS64 WWW= https://www.isc.org/bind/ LICENSE= ISCL # ISC releases things like 9.8.0-P1 or 9.8.1rc1, which our versioning does not like ISCVERSION= 9.9.9-P6 .... Define upstream version in `ISCVERSION`, with a comment saying _why_ it is needed. Use `ISCVERSION` to get a ports-compatible `PORTVERSION`. Use `ISCVERSION` directly to get the correct URL for fetching the distribution file. Use `ISCVERSION` directly to name the distribution file. ==== [[makefile-distname-ex2]] .Derive `DISTNAME` from `PORTVERSION` [example] ==== From time to time, the distribution file name has little or no relation to the version of the software. In package:comms/kermit[], only the last element of the version is present in the distribution file: [.programlisting] .... PORTNAME= kermit PORTVERSION= 9.0.304 CATEGORIES= comms ftp net MASTER_SITES= ftp://ftp.kermitproject.org/kermit/test/tar/ DISTNAME= cku${PORTVERSION:E}-dev20 .... The `:E` man:make[1] modifier returns the suffix of the variable, in this case, `304`. The distribution file is correctly generated as `cku304-dev20.tar.gz`. ==== [[makefile-distname-ex3]] .Exotic Case 1 [example] ==== Sometimes, there is no relation between the software name, its version, and the distribution file it is distributed in. From package:audio/libworkman[]: [.programlisting] .... PORTNAME= libworkman PORTVERSION= 1.4 CATEGORIES= audio MASTER_SITES= LOCAL/jim DISTNAME= ${PORTNAME}-1999-06-20 .... ==== [[makefile-distname-ex4]] .Exotic Case 2 [example] ==== In package:comms/librs232[], the distribution file is not versioned, so using crossref:makefiles[makefile-dist_subdir,`DIST_SUBDIR`] is needed: [.programlisting] .... PORTNAME= librs232 PORTVERSION= 20160710 CATEGORIES= comms MASTER_SITES= http://www.teuniz.net/RS-232/ DISTNAME= RS-232 DIST_SUBDIR= ${PORTNAME}-${PORTVERSION} .... ==== [NOTE] ==== `PKGNAMEPREFIX` and `PKGNAMESUFFIX` do not affect `DISTNAME`. Also note that if `WRKSRC` is equal to [.filename]#${WRKDIR}/${DISTNAME}# while the original source archive is named something other than `${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}`, leave `DISTNAME` alone- defining only `DISTFILES` is easier than both `DISTNAME` and `WRKSRC` (and possibly `EXTRACT_SUFX`). ==== [[makefile-master_sites]] === `MASTER_SITES` Record the directory part of the FTP/HTTP-URL pointing at the original tarball in `MASTER_SITES`. Do not forget the trailing slash ([.filename]#/#)! The `make` macros will try to use this specification for grabbing the distribution file with `FETCH` if they cannot find it already on the system. It is recommended that multiple sites are included on this list, preferably from different continents. This will safeguard against wide-area network problems. [IMPORTANT] ==== `MASTER_SITES` must not be blank. It must point to the actual site hosting the distribution files. It cannot point to web archives, or the FreeBSD distribution files cache sites. The only exception to this rule is ports that do not have any distribution files. For example, meta-ports do not have any distribution files, so `MASTER_SITES` does not need to be set. ==== [[makefile-master_sites-shorthand]] ==== Using `MASTER_SITE_*` Variables Shortcut abbreviations are available for popular archives like SourceForge (`SOURCEFORGE`), GNU (`GNU`), or Perl CPAN (`PERL_CPAN`). `MASTER_SITES` can use them directly: [.programlisting] .... MASTER_SITES= GNU/make .... The older expanded format still works, but all ports have been converted to the compact format. The expanded format looks like this: [.programlisting] .... MASTER_SITES= ${MASTER_SITE_GNU} MASTER_SITE_SUBDIR= make .... These values and variables are defined in https://cgit.freebsd.org/ports/tree/Mk/bsd.sites.mk[Mk/bsd.sites.mk]. New entries are added often, so make sure to check the latest version of this file before submitting a port. [TIP] ==== For any `MASTER_SITE_FOO` variable, the shorthand `_FOO_` can be used. For example, use: [.programlisting] .... MASTER_SITES= FOO .... If `MASTER_SITE_SUBDIR` is needed, use this: [.programlisting] .... MASTER_SITES= FOO/bar .... ==== [NOTE] ==== Some `MASTER_SITE_*` names are quite long, and for ease of use, shortcuts have been defined: [[makefile-master_sites-shortcut]] .Shortcuts for `MASTER_SITE_*` Macros [cols="1,1", frame="none", options="header"] |=== | Macro | Shortcut |`PERL_CPAN` |`CPAN` |`GITHUB` |`GH` |`GITHUB_CLOUD` |`GHC` |`LIBREOFFICE_DEV` |`LODEV` |`NETLIB` |`NL` |`RUBYGEMS` |`RG` |`SOURCEFORGE` |`SF` |=== ==== [[makefile-master_sites-magic]] ==== Magic MASTER_SITES Macros Several "magic" macros exist for popular sites with a predictable directory structure. For these, just use the abbreviation and the system will choose a subdirectory automatically. For a port named `Stardict`, of version `1.2.3`, and hosted on SourceForge, adding this line: [.programlisting] .... MASTER_SITES= SF .... infers a subdirectory named `/project/stardict/stardict/1.2.3`. If the inferred directory is incorrect, it can be overridden: [.programlisting] .... MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION} .... This can also be written as [.programlisting] .... MASTER_SITES= SF MASTER_SITE_SUBDIR= stardict/WyabdcRealPeopleTTS/${PORTVERSION} .... [[makefile-master_sites-popular]] .Magic `MASTER_SITES` Macros [cols="1,1", frame="none", options="header"] |=== | Macro | Assumed subdirectory |`APACHE_COMMONS_BINARIES` |`${PORTNAME:S,commons-,,}` |`APACHE_COMMONS_SOURCE` |`${PORTNAME:S,commons-,,}` |`APACHE_JAKARTA` |`${PORTNAME:S,-,/,}/source` |`BERLIOS` |`${PORTNAME:tl}.berlios` |`CHEESESHOP` |`source/${DISTNAME:C/(.).\*/\1/}/${DISTNAME:C/(.*)-[0-9].*/\1/}` |`CPAN` |`${PORTNAME:C/-.*//}` |`DEBIAN` |`pool/main/${PORTNAME:C/^((lib)?.).*$/\1/}/${PORTNAME}` |`FARSIGHT` |`${PORTNAME}` |`FESTIVAL` |`${PORTREVISION}` |`GCC` |`releases/${DISTNAME}` |`GENTOO` |`distfiles` |`GIMP` |`${PORTNAME}/${PORTVERSION:R}/` |`GH` |`${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/` |`GHC` |`${GH_ACCOUNT}/${GH_PROJECT}/` |`GNOME` |`sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}` |`GNU` |`${PORTNAME}` |`GNUPG` |`${PORTNAME}` |`GNU_ALPHA` |`${PORTNAME}` |`HORDE` |`${PORTNAME}` |`LODEV` |`${PORTNAME}` |`MATE` |`${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}` |`MOZDEV` |`${PORTNAME:tl}` |`NL` |`${PORTNAME}` |`QT` |`archive/qt/${PORTVERSION:R}` |`SAMBA` |`${PORTNAME}` |`SAVANNAH` |`${PORTNAME:tl}` |`SF` |`${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}` |=== [[makefile-master_sites-github]] === `USE_GITHUB` If the distribution file comes from a specific commit or tag on https://github.com/[GitHub] for which there is no officially released file, there is an easy way to set the right `DISTNAME` and `MASTER_SITES` automatically. [WARNING] ==== As of 2023-02-21 link:https://github.blog/2023-02-21-update-on-the-future-stability-of-source-code-archives-and-hashes/[GitHub] have announced that source downloads will be stable for a year. Please switch to release assets and if not available ask upstream to generate ones. ==== These variables are available: [[makefile-master_sites-github-description]] .`USE_GITHUB` Description [cols="1,1,1", options="header"] |=== | Variable | Description | Default |`GH_ACCOUNT` |Account name of the GitHub user hosting the project |`${PORTNAME}` |`GH_PROJECT` |Name of the project on GitHub |`${PORTNAME}` |`GH_TAGNAME` |Name of the tag to download (2.0.1, hash, ...) Using the name of a branch here is incorrect. It is also possible to use the hash of a commit id to do a snapshot. |`${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}` |`GH_SUBDIR` |When the software needs an additional distribution file to be extracted within `${WRKSRC}`, this variable can be used. See the examples in crossref:makefiles[makefile-master_sites-github-multiple, Fetching Multiple Files from GitHub] for more information. |(none) |`GH_TUPLE` |`GH_TUPLE` allows putting `GH_ACCOUNT`, `GH_PROJECT`, `GH_TAGNAME`, and `GH_SUBDIR` into a single variable. The format is _account_`:`_project_`:`_tagname_`:`_group_`/`_subdir_. The `/`_subdir_ part is optional. It is helpful when there is more than one GitHub project from which to fetch. | |=== [IMPORTANT] ==== Do not use `GH_TUPLE` for the default distribution file, as it has no default. ==== [[makefile-master_sites-github-ex1]] .Simple Use of `USE_GITHUB` [example] ==== While trying to make a port for version `1.2.7` of pkg from the FreeBSD user on github, at https://github.com/freebsd/pkg/[], The [.filename]#Makefile# would end up looking like this (slightly stripped for the example): [.programlisting] .... PORTNAME= pkg DISTVERSION= 1.2.7 USE_GITHUB= yes GH_ACCOUNT= freebsd .... It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to `${WRKDIR}/pkg-1.2.7`. ==== [[makefile-master_sites-github-ex2]] .More Complete Use of `USE_GITHUB` [example] ==== While trying to make a port for the bleeding edge version of pkg from the FreeBSD user on github, at https://github.com/freebsd/pkg/[], the [.filename]#Makefile# ends up looking like this (slightly stripped for the example): [.programlisting] .... PORTNAME= pkg-devel DISTVERSION= 1.3.0.a.20140411 USE_GITHUB= yes GH_ACCOUNT= freebsd GH_PROJECT= pkg GH_TAGNAME= 6dbb17b .... It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to `${WRKDIR}/pkg-6dbb17b`. [TIP] **** `20140411` is the date of the commit referenced in `GH_TAGNAME`, not the date the [.filename]#Makefile# is edited, or the date the commit is made. **** ==== [[makefile-master_sites-github-ex3]] .Use of `USE_GITHUB` with `DISTVERSIONPREFIX` [example] ==== From time to time, `GH_TAGNAME` is a slight variation from `DISTVERSION`. For example, if the version is `1.0.2`, the tag is `v1.0.2`. In those cases, it is possible to use `DISTVERSIONPREFIX` or `DISTVERSIONSUFFIX`: [.programlisting] .... PORTNAME= foo DISTVERSIONPREFIX= v DISTVERSION= 1.0.2 USE_GITHUB= yes .... It will automatically set `GH_TAGNAME` to `v1.0.2`, while `WRKSRC` will be kept to `${WRKDIR}/foo-1.0.2`. ==== [[makefile-master_sites-github-ex4]] .Using `USE_GITHUB` When Upstream Does Not Use Versions [example] ==== If there never was a version upstream, do not invent one like `0.1` or `1.0`. Create the port with a `DISTVERSION` of `g__YYYYMMDD__`, where `g` is for Git, and `_YYYYMMDD_` represents the date the commit referenced in `GH_TAGNAME`. [.programlisting] .... PORTNAME= bar DISTVERSION= g20140411 USE_GITHUB= yes GH_TAGNAME= c472d66b .... -This creates a versioning scheme that increases over time, and that is still -before version `0` (see crossref:makefiles[makefile-versions-ex-pkg-version, Using man:pkg-version\[8\] to Compare Versions] for details on man:pkg-version[8]): +This creates a versioning scheme that increases over time, and that is still before version `0`. +See crossref:makefiles[makefile-versions-ex-pkg-version, this secion on how to compare versions] using man:pkg-version[8]): [source,shell] .... % pkg version -t g20140411 0 < .... Which means using `PORTEPOCH` will not be needed in case upstream decides to cut versions in the future. ==== [[makefile-master_sites-github-ex5]] .Using `USE_GITHUB` to Access a Commit Between Two Versions [example] ==== If the current version of the software uses a Git tag, and the port needs to be updated to a newer, intermediate version, without a tag, use man:git-describe[1] to find out the version to use: [source,shell] .... % git describe --tags f0038b1 v0.7.3-14-gf0038b1 .... `v0.7.3-14-gf0038b1` can be split into three parts: `v0.7.3`:: This is the last Git tag that appears in the commit history before the requested commit. `-14`:: This means that the requested commit, `f0038b1`, is the 14th commit after the `v0.7.3` tag. `-gf0038b1`:: The `-g` means "Git", and the `f0038b1` is the commit hash that this reference points to. [.programlisting] .... PORTNAME= bar DISTVERSIONPREFIX= v DISTVERSION= 0.7.3-14 DISTVERSIONSUFFIX= -gf0038b1 USE_GITHUB= yes .... This creates a versioning scheme that increases over time (well, over commits), and does not conflict with the creation of a `0.7.4` version. -(See crossref:makefiles[makefile-versions-ex-pkg-version, Using man:pkg-version\[8\] to Compare Versions] for details on man:pkg-version[8]): +See crossref:makefiles[makefile-versions-ex-pkg-version, this section for how to compare versions] using man:pkg-version[8]): [source,shell] .... % pkg version -t 0.7.3 0.7.3.14 < % pkg version -t 0.7.3.14 0.7.4 < .... [NOTE] **** If the requested commit is the same as a tag, a shorter description is shown by default. The longer version is equivalent: [source,shell] .... % git describe --tags c66c71d v0.7.3 % git describe --tags --long c66c71d v0.7.3-0-gc66c71d .... **** ==== [[makefile-master_sites-github-multiple]] ==== Fetching Multiple Files from GitHub The `USE_GITHUB` framework also supports fetching multiple distribution files from different places in GitHub. It works in a way very similar to crossref:makefiles[porting-master-sites-n, Multiple Distribution or Patches Files from Multiple Locations]. Multiple values are added to `GH_ACCOUNT`, `GH_PROJECT`, and `GH_TAGNAME`. Each different value is assigned a group. The main value can either have no group, or the `:DEFAULT` group. A value can be omitted if it is the same as the default as listed in crossref:makefiles[makefile-master_sites-github-description,`USE_GITHUB` Description]. `GH_TUPLE` can also be used when there are a lot of distribution files. It helps keep the account, project, tagname, and group information at the same place. For each group, a `${WRKSRC_group}` helper variable is created, containing the directory into which the file has been extracted. The `${WRKSRC_group}` variables can be used to move directories around during `post-extract`, or add to `CONFIGURE_ARGS`, or whatever is needed so that the software builds correctly. [CAUTION] ==== The `:__group__` part _must_ be used for _only one_ distribution file. It is used as a unique key and using it more than once will overwrite the previous values. ==== [NOTE] ==== As this is only syntactic sugar above `DISTFILES` and `MASTER_SITES`, the group names must adhere to the restrictions on group names outlined in crossref:makefiles[porting-master-sites-n, Multiple Distribution or Patches Files from Multiple Locations] ==== When fetching multiple files from GitHub, sometimes the default distribution file is not fetched from GitHub. To disable fetching the default distribution, set: [.programlisting] .... USE_GITHUB= nodefault .... [IMPORTANT] ==== When using `USE_GITHUB=nodefault`, the [.filename]#Makefile# must set `DISTFILES` in its crossref:porting-order[porting-order-portname,top block]. The definition should be: [.programlisting] .... DISTFILES= ${DISTNAME}${EXTRACT_SUFX} .... ==== [[makefile-master_sites-github-multi]] .Use of `USE_GITHUB` with Multiple Distribution Files [example] ==== From time to time, there is a need to fetch more than one distribution file. For example, when the upstream git repository uses submodules. This can be done easily using groups in the `GH_*` variables: [.programlisting] .... PORTNAME= foo DISTVERSION= 1.0.2 USE_GITHUB= yes GH_ACCOUNT= bar:icons,contrib GH_PROJECT= foo-icons:icons foo-contrib:contrib GH_TAGNAME= 1.0:icons fa579bc:contrib GH_SUBDIR= ext/icons:icons CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib} .... This will fetch three distribution files from github. The default one comes from [.filename]#foo/foo# and is version `1.0.2`. The second one, with the `icons` group, comes from [.filename]#bar/foo-icons# and is in version `1.0`. The third one comes from [.filename]#bar/foo-contrib# and uses the Git commit `fa579bc`. The distribution files are named [.filename]#foo-foo-1.0.2_GH0.tar.gz#, [.filename]#bar-foo-icons-1.0_GH0.tar.gz#, and [.filename]#bar-foo-contrib-fa579bc_GH0.tar.gz#. All the distribution files are extracted in `${WRKDIR}` in their respective subdirectories. The default file is still extracted in `${WRKSRC}`, in this case, [.filename]#${WRKDIR}/foo-1.0.2#. Each additional distribution file is extracted in `${WRKSRC_group}`. Here, for the `icons` group, it is called `${WRKSRC_icons}` and it contains [.filename]#${WRKDIR}/foo-icons-1.0#. The file with the `contrib` group is called `${WRKSRC_contrib}` and contains `${WRKDIR}/foo-contrib-fa579bc`. The software's build system expects to find the icons in a [.filename]#ext/icons# subdirectory in its sources, so `GH_SUBDIR` is used. `GH_SUBDIR` makes sure that [.filename]#ext# exists, but that [.filename]#ext/icons# does not already exist. Then it does this: [.programlisting] .... post-extract: @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons .... ==== [[makefile-master_sites-github-multi2]] .Use of `USE_GITHUB` with Multiple Distribution Files Using `GH_TUPLE` [example] ==== This is functionally equivalent to crossref:makefiles[makefile-master_sites-github-multi,Use of `USE_GITHUB` with Multiple Distribution Files], but using `GH_TUPLE`: [.programlisting] .... PORTNAME= foo DISTVERSION= 1.0.2 USE_GITHUB= yes GH_TUPLE= bar:foo-icons:1.0:icons/ext/icons \ bar:foo-contrib:fa579bc:contrib CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib} .... Grouping was used in the previous example with `bar:icons,contrib`. Some redundant information is present with `GH_TUPLE` because grouping is not possible. ==== [[makefile-master_sites-github-submodules]] .How to Use `USE_GITHUB` with Git Submodules? [example] ==== Ports with GitHub as an upstream repository sometimes use submodules. See man:git-submodule[1] for more information. The problem with submodules is that each is a separate repository. As such, they each must be fetched separately. Using package:finance/moneymanagerex[] as an example, its GitHub repository is https://github.com/moneymanagerex/moneymanagerex/[]. It has a https://github.com/moneymanagerex/moneymanagerex/blob/master/.gitmodules[.gitmodules] file at the root. This file describes all the submodules used in this repository, and lists additional repositories needed. This file will tell what additional repositories are needed: [.programlisting] .... [submodule "lib/wxsqlite3"] path = lib/wxsqlite3 url = https://github.com/utelle/wxsqlite3.git [submodule "3rd/mongoose"] path = 3rd/mongoose url = https://github.com/cesanta/mongoose.git [submodule "3rd/LuaGlue"] path = 3rd/LuaGlue url = https://github.com/moneymanagerex/LuaGlue.git [submodule "3rd/cgitemplate"] path = 3rd/cgitemplate url = https://github.com/moneymanagerex/html-template.git [...] .... The only information missing from that file is the commit hash or tag to use as a version. This information is found after cloning the repository: [source,shell] .... % git clone --recurse-submodules https://github.com/moneymanagerex/moneymanagerex.git Cloning into 'moneymanagerex'... remote: Counting objects: 32387, done. [...] Submodule '3rd/LuaGlue' (https://github.com/moneymanagerex/LuaGlue.git) registered for path '3rd/LuaGlue' Submodule '3rd/cgitemplate' (https://github.com/moneymanagerex/html-template.git) registered for path '3rd/cgitemplate' Submodule '3rd/mongoose' (https://github.com/cesanta/mongoose.git) registered for path '3rd/mongoose' Submodule 'lib/wxsqlite3' (https://github.com/utelle/wxsqlite3.git) registered for path 'lib/wxsqlite3' [...] Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/LuaGlue'... Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/cgitemplate'... Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/mongoose'... Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/lib/wxsqlite3'... [...] Submodule path '3rd/LuaGlue': checked out 'c51d11a247ee4d1e9817dfa2a8da8d9e2f97ae3b' Submodule path '3rd/cgitemplate': checked out 'cd434eeeb35904ebcd3d718ba29c281a649b192c' Submodule path '3rd/mongoose': checked out '2140e5992ab9a3a9a34ce9a281abf57f00f95cda' Submodule path 'lib/wxsqlite3': checked out 'fb66eb230d8aed21dec273b38c7c054dcb7d6b51' [...] % cd moneymanagerex % git submodule status c51d11a247ee4d1e9817dfa2a8da8d9e2f97ae3b 3rd/LuaGlue (heads/master) cd434eeeb35904ebcd3d718ba29c281a649b192c 3rd/cgitemplate (cd434ee) 2140e5992ab9a3a9a34ce9a281abf57f00f95cda 3rd/mongoose (6.2-138-g2140e59) fb66eb230d8aed21dec273b38c7c054dcb7d6b51 lib/wxsqlite3 (v3.4.0) [...] .... It can also be found on GitHub. Each subdirectory that is a submodule is shown as `_directory @ hash_`, for example, `mongoose @ 2140e59`. [NOTE] **** While getting the information from GitHub seems more straightforward, the information found using `git submodule status` will provide more meaningful information. For example, here, ``lib/wxsqlite3``'s commit hash `fb66eb2` correspond to `v3.4.0`. Both can be used interchangeably, but when a tag is available, use it. **** Now that all the required information has been gathered, the [.filename]#Makefile# can be written (only GitHub-related lines are shown): [.programlisting] .... PORTNAME= moneymanagerex DISTVERSIONPREFIX= v DISTVERSION= 1.3.0 USE_GITHUB= yes GH_TUPLE= utelle:wxsqlite3:v3.4.0:wxsqlite3/lib/wxsqlite3 \ moneymanagerex:LuaGlue:c51d11a:lua_glue/3rd/LuaGlue \ moneymanagerex:html-template:cd434ee:html_template/3rd/cgitemplate \ cesanta:mongoose:2140e59:mongoose/3rd/mongoose \ [...] .... ==== [[makefile-master_sites-gitlab]] === `USE_GITLAB` Similar to GitHub, if the distribution file comes from https://gitlab.com/[gitlab.com] or is hosting the GitLab software, these variables are available for use and might need to be set. [[makefile-master_sites-gitlab-description]] .`USE_GITLAB` Description [cols="1,1,1", options="header"] |=== | Variable | Description | Default |`GL_SITE` |Site name hosting the GitLab project |https://gitlab.com/ |`GL_ACCOUNT` |Account name of the GitLab user hosting the project |`${PORTNAME}` |`GL_PROJECT` |Name of the project on GitLab |`${PORTNAME}` |`GL_COMMIT` |The commit hash to download. Must be the full 160 bit, 40 character hex sha1 hash. This is a required variable for GitLab. |`(none)` |`GL_SUBDIR` |When the software needs an additional distribution file to be extracted within `${WRKSRC}`, this variable can be used. See the examples in crossref:makefiles[makefile-master_sites-gitlab-multiple, Fetching Multiple Files from GitLab] for more information. |(none) |`GL_TUPLE` |`GL_TUPLE` allows putting `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT`, `GL_COMMIT`, and `GL_SUBDIR` into a single variable. The format is _site_`:`_account_`:`_project_`:`_commit_`:`_group_`/`_subdir_. The _site_`:` and `/`_subdir_ part is optional. It is helpful when there are more than one GitLab project from which to fetch. | |=== [[makefile-master_sites-gitlab-ex1]] .Simple Use of `USE_GITLAB` [example] ==== While trying to make a port for version `1.14` of libsignon-glib from the accounts-sso user on gitlab.com, at https://gitlab.com/accounts-sso/libsignon-glib/[], The [.filename]#Makefile# would end up looking like this for fetching the distribution files: [.programlisting] .... PORTNAME= libsignon-glib DISTVERSION= 1.14 USE_GITLAB= yes GL_ACCOUNT= accounts-sso GL_COMMIT= e90302e342bfd27bc8c9132ab9d0ea3d8723fd03 .... It will automatically have `MASTER_SITES` set to https://gitlab.com/[gitlab.com] and `WRKSRC` to `${WRKDIR}/libsignon-glib-e90302e342bfd27bc8c9132ab9d0ea3d8723fd03-e90302e342bfd27bc8c9132ab9d0ea3d8723fd03`. ==== [[makefile-master_sites-gitlab-ex2]] .More Complete Use of `USE_GITLAB` [example] ==== A more complete use of the above if port had no versioning and foobar from the foo user on project bar on a self hosted GitLab site `https://gitlab.example.com/`, the [.filename]#Makefile# ends up looking like this for fetching distribution files: [.programlisting] .... PORTNAME= foobar DISTVERSION= g20170906 USE_GITLAB= yes GL_SITE= https://gitlab.example.com GL_ACCOUNT= foo GL_PROJECT= bar GL_COMMIT= 9c1669ce60c3f4f5eb43df874d7314483fb3f8a6 .... It will have `MASTER_SITES` set to `"https://gitlab.example.com"` and `WRKSRC` to `${WRKDIR}/bar-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6`. [TIP] ====== `20170906` is the date of the commit referenced in `GL_COMMIT`, not the date the [.filename]#Makefile# is edited, or the date the commit to the FreeBSD ports tree is made. ====== [NOTE] ====== ``GL_SITE``'s protocol, port and webroot can all be modified in the same variable. ====== ==== [[makefile-master_sites-gitlab-multiple]] ==== Fetching Multiple Files from GitLab The `USE_GITLAB` framework also supports fetching multiple distribution files from different places from GitLab and GitLab hosted sites. It works in a way very similar to crossref:makefiles[porting-master-sites-n, Multiple Distribution or Patches Files from Multiple Locations] and crossref:makefiles[makefile-master_sites-gitlab-multiple, Fetching Multiple Files from GitLab]. Multiple values are added to `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT` and `GL_COMMIT`. Each different value is assigned a group. crossref:makefiles[makefile-master_sites-gitlab-description,`USE_GITLAB` Description]. `GL_TUPLE` can also be used when there are a lot of distribution files. It helps keep the site, account, project, commit, and group information at the same place. For each group, a `${WRKSRC_group}` helper variable is created, containing the directory into which the file has been extracted. The `${WRKSRC_group}` variables can be used to move directories around during `post-extract`, or add to `CONFIGURE_ARGS`, or whatever is needed so that the software builds correctly. [CAUTION] ==== The `:__group__` part _must_ be used for _only one_ distribution file. It is used as a unique key and using it more than once will overwrite the previous values. ==== [NOTE] ==== As this is only syntactic sugar above `DISTFILES` and `MASTER_SITES`, the group names must adhere to the restrictions on group names outlined in crossref:makefiles[porting-master-sites-n, Multiple Distribution or Patches Files from Multiple Locations] ==== When fetching multiple files using GitLab, sometimes the default distribution file is not fetched from a GitLab site. To disable fetching the default distribution, set: [.programlisting] .... USE_GITLAB= nodefault .... [IMPORTANT] ==== When using `USE_GITLAB=nodefault`, the [.filename]#Makefile# must set `DISTFILES` in its crossref:makefiles[porting-order-portname,top block]. The definition should be: [.programlisting] .... DISTFILES= ${DISTNAME}${EXTRACT_SUFX} .... ==== [[makefile-master_sites-gitlab-multi]] .Use of `USE_GITLAB` with Multiple Distribution Files [example] ==== From time to time, there is a need to fetch more than one distribution file. For example, when the upstream git repository uses submodules. This can be done easily using groups in the `GL_*` variables: [.programlisting] .... PORTNAME= foo DISTVERSION= 1.0.2 USE_GITLAB= yes GL_SITE= https://gitlab.example.com:9434/gitlab:icons GL_ACCOUNT= bar:icons,contrib GL_PROJECT= foo-icons:icons foo-contrib:contrib GL_COMMIT= c189207a55da45305c884fe2b50e086fcad4724b ae7368cab1ca7ca754b38d49da064df87968ffe4:icons 9e4dd76ad9b38f33fdb417a4c01935958d5acd2a:contrib GL_SUBDIR= ext/icons:icons CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib} .... This will fetch two distribution files from gitlab.com and one from `gitlab.example.com` hosting GitLab. The default one comes from [.filename]#https://gitlab.com/foo/foo# and commit is `c189207a55da45305c884fe2b50e086fcad4724b`. The second one, with the `icons` group, comes from [.filename]#https://gitlab.example.com:9434/gitlab/bar/foo-icons# and commit is `ae7368cab1ca7ca754b38d49da064df87968ffe4`. The third one comes from [.filename]#https://gitlab.com/bar/foo-contrib# and is commit `9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`. The distribution files are named [.filename]#foo-foo-c189207a55da45305c884fe2b50e086fcad4724b_GL0.tar.gz#, [.filename]#bar-foo-icons-ae7368cab1ca7ca754b38d49da064df87968ffe4_GL0.tar.gz#, and [.filename]#bar-foo-contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a_GL0.tar.gz#. All the distribution files are extracted in `${WRKDIR}` in their respective subdirectories. The default file is still extracted in `${WRKSRC}`, in this case, [.filename]#${WRKDIR}/foo-c189207a55da45305c884fe2b50e086fcad4724b-c189207a55da45305c884fe2b50e086fcad4724b#. Each additional distribution file is extracted in `${WRKSRC_group}`. Here, for the `icons` group, it is called `${WRKSRC_icons}` and it contains [.filename]#${WRKDIR}/foo-icons-ae7368cab1ca7ca754b38d49da064df87968ffe4-ae7368cab1ca7ca754b38d49da064df87968ffe4#. The file with the `contrib` group is called `${WRKSRC_contrib}` and contains `${WRKDIR}/foo-contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`. The software's build system expects to find the icons in a [.filename]#ext/icons# subdirectory in its sources, so `GL_SUBDIR` is used. `GL_SUBDIR` makes sure that [.filename]#ext# exists, but that [.filename]#ext/icons# does not already exist. Then it does this: [.programlisting] .... post-extract: @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons .... ==== [[makefile-master_sites-gitlab-multi2]] .Use of `USE_GITLAB` with Multiple Distribution Files Using `GL_TUPLE` [example] ==== This is functionally equivalent to crossref:makefiles[makefile-master_sites-gitlab-multi,Use of `USE_GITLAB` with Multiple Distribution Files], but using `GL_TUPLE`: [.programlisting] .... PORTNAME= foo DISTVERSION= 1.0.2 USE_GITLAB= yes GL_COMMIT= c189207a55da45305c884fe2b50e086fcad4724b GL_TUPLE= https://gitlab.example.com:9434/gitlab:bar:foo-icons:ae7368cab1ca7ca754b38d49da064df87968ffe4:icons/ext/icons \ bar:foo-contrib:9e4dd76ad9b38f33fdb417a4c01935958d5acd2a:contrib CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib} .... Grouping was used in the previous example with `bar:icons,contrib`. Some redundant information is present with `GL_TUPLE` because grouping is not possible. ==== [[makefile-extract_sufx]] === `EXTRACT_SUFX` If there is one distribution file, and it uses an odd suffix to indicate the compression mechanism, set `EXTRACT_SUFX`. For example, if the distribution file was named [.filename]#foo.tar.gzip# instead of the more normal [.filename]#foo.tar.gz#, write: [.programlisting] .... DISTNAME= foo EXTRACT_SUFX= .tar.gzip .... The `USES=tar[:__xxx__]`, `USES=lha` or `USES=zip` automatically set `EXTRACT_SUFX` to the most common archives extensions as necessary, see crossref:uses[uses,Using `USES` Macros] for more details. If neither of these are set then `EXTRACT_SUFX` defaults to `.tar.gz`. [NOTE] ==== As `EXTRACT_SUFX` is only used in `DISTFILES`, only set one of them.. ==== [[makefile-distfiles-definition]] === `DISTFILES` Sometimes the names of the files to be downloaded have no resemblance to the name of the port. For example, it might be called [.filename]#source.tar.gz# or similar. In other cases the application's source code might be in several different archives, all of which must be downloaded. If this is the case, set `DISTFILES` to be a space separated list of all the files that must be downloaded. [.programlisting] .... DISTFILES= source1.tar.gz source2.tar.gz .... If not explicitly set, `DISTFILES` defaults to `${DISTNAME}${EXTRACT_SUFX}`. [[makefile-extract_only]] === `EXTRACT_ONLY` If only some of the `DISTFILES` must be extracted-for example, one of them is the source code, while another is an uncompressed document-list the filenames that must be extracted in `EXTRACT_ONLY`. [.programlisting] .... DISTFILES= source.tar.gz manual.html EXTRACT_ONLY= source.tar.gz .... When none of the `DISTFILES` need to be uncompressed, set `EXTRACT_ONLY` to the empty string. [.programlisting] .... EXTRACT_ONLY= .... [[porting-patchfiles]] === `PATCHFILES` If the port requires some additional patches that are available by FTP or HTTP, set `PATCHFILES` to the names of the files and `PATCH_SITES` to the URL of the directory that contains them (the format is the same as `MASTER_SITES`). If the patch is not relative to the top of the source tree (that is, `WRKSRC`) because it contains some extra pathnames, set `PATCH_DIST_STRIP` accordingly. For instance, if all the pathnames in the patch have an extra `foozolix-1.0/` in front of the filenames, then set `PATCH_DIST_STRIP=-p1`. Do not worry if the patches are compressed; they will be decompressed automatically if the filenames end with [.filename]#.Z#, [.filename]#.gz#, [.filename]#.bz2# or [.filename]#.xz#. If the patch is distributed with some other files, such as documentation, in a compressed tarball, using `PATCHFILES` is not possible. If that is the case, add the name and the location of the patch tarball to `DISTFILES` and `MASTER_SITES`. Then, use `EXTRA_PATCHES` to point to those files and [.filename]#bsd.port.mk# will automatically apply them. In particular, do _not_ copy patch files into [.filename]#${PATCHDIR}#. That directory may not be writable. [TIP] ==== If there are multiple patches and they need mixed values for the strip parameter, it can be added alongside the patch name in `PATCHFILES`, e.g: [.programlisting] .... PATCHFILES= patch1 patch2:-p1 .... This does not conflict with crossref:makefiles[porting-master-sites-n,the master site grouping feature], adding a group also works: [.programlisting] .... PATCHFILES= patch2:-p1:source2 .... ==== [NOTE] ==== The tarball will have been extracted alongside the regular source by then, so there is no need to explicitly extract it if it is a regular compressed tarball. Take extra care not to overwrite something that already exists in that directory if extracting it manually. Also, do not forget to add a command to remove the copied patch in the `pre-clean` target. ==== [[porting-master-sites-n]] === Multiple Distribution or Patches Files from Multiple Locations (Consider this to be a somewhat "advanced topic"; those new to this document may wish to skip this section at first). This section has information on the fetching mechanism known as both `MASTER_SITES:n` and `MASTER_SITES_NN`. We will refer to this mechanism as `MASTER_SITES:n`. A little background first. OpenBSD has a neat feature inside `DISTFILES` and `PATCHFILES` which allows files and patches to be postfixed with `:n` identifiers. Here, `n` can be any word containing `[0-9a-zA-Z_]` and denote a group designation. For example: [.programlisting] .... DISTFILES= alpha:0 beta:1 .... In OpenBSD, distribution file [.filename]#alpha# will be associated with variable `MASTER_SITES0` instead of our common `MASTER_SITES` and [.filename]#beta# with `MASTER_SITES1`. This is a very interesting feature which can decrease that endless search for the correct download site. Just picture 2 files in `DISTFILES` and 20 sites in `MASTER_SITES`, the sites slow as hell where [.filename]#beta# is carried by all sites in `MASTER_SITES`, and [.filename]#alpha# can only be found in the 20th site. It would be such a waste to check all of them if the maintainer knew this beforehand, would it not? Not a good start for that lovely weekend! Now that you have the idea, just imagine more `DISTFILES` and more `MASTER_SITES`. Surely our "distfiles survey meister" would appreciate the relief to network strain that this would bring. In the next sections, information will follow on the FreeBSD implementation of this idea. We improved a bit on OpenBSD's concept. [IMPORTANT] ==== The group names cannot have dashes in them (`-`), in fact, they cannot have any characters out of the `[a-zA-Z0-9_]` range. This is because, while man:make[1] is ok with variable names containing dashes, man:sh[1] is not. ==== [[porting-master-sites-n-simplified]] ==== Simplified Information This section explains how to quickly prepare fine grained fetching of multiple distribution files and patches from different sites and subdirectories. We describe here a case of simplified `MASTER_SITES:n` usage. This will be sufficient for most scenarios. More detailed information are available in crossref:makefiles[ports-master-sites-n-detailed, Detailed Information]. Some applications consist of multiple distribution files that must be downloaded from a number of different sites. For example, Ghostscript consists of the core of the program, and then a large number of driver files that are used depending on the user's printer. Some of these driver files are supplied with the core, but many others must be downloaded from a variety of different sites. To support this, each entry in `DISTFILES` may be followed by a colon and a "group name". Each site listed in `MASTER_SITES` is then followed by a colon, and the group that indicates which distribution files are downloaded from this site. For example, consider an application with the source split in two parts, [.filename]#source1.tar.gz# and [.filename]#source2.tar.gz#, which must be downloaded from two different sites. The port's [.filename]#Makefile# would include lines like crossref:makefiles[ports-master-sites-n-example-simple-use-one-file-per-site,Simplified Use of `MASTER_SITES:n` with One File Per Site]. [[ports-master-sites-n-example-simple-use-one-file-per-site]] .Simplified Use of `MASTER_SITES:n` with One File Per Site [example] ==== [.programlisting] .... MASTER_SITES= ftp://ftp1.example.com/:source1 \ http://www.example.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 .... ==== Multiple distribution files can have the same group. Continuing the previous example, suppose that there was a third distfile, [.filename]#source3.tar.gz#, that is downloaded from `ftp.example2.com`. The [.filename]#Makefile# would then be written like crossref:makefiles[ports-master-sites-n-example-simple-use-more-than-one-file-per-site,Simplified Use of `MASTER_SITES:n` with More Than One File Per Site]. [[ports-master-sites-n-example-simple-use-more-than-one-file-per-site]] .Simplified Use of `MASTER_SITES:n` with More Than One File Per Site [example] ==== [.programlisting] .... MASTER_SITES= ftp://ftp.example.com/:source1 \ http://www.example.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 \ source3.tar.gz:source2 .... ==== [[ports-master-sites-n-detailed]] ==== Detailed Information Okay, so the previous example did not reflect the new port's needs? In this section we will explain in detail how the fine grained fetching mechanism `MASTER_SITES:n` works and how it can be used. . Elements can be postfixed with `:__n__` where _n_ is `[^:,]\+`, that is, _n_ could conceptually be any alphanumeric string but we will limit it to `[a-zA-Z_][0-9a-zA-Z_]+` for now. + Moreover, string matching is case sensitive; that is, `n` is different from `N`. + However, these words cannot be used for postfixing purposes since they yield special meaning: `default`, `all` and `ALL` (they are used internally in item crossref:makefiles[porting-master-sites-n-what-changes-in-port-targets, ii]). Furthermore, `DEFAULT` is a special purpose word (check item crossref:makefiles[porting-master-sites-n-DEFAULT-group,3]). . Elements postfixed with `:n` belong to the group `n`, `:m` belong to group `m` and so forth. + [[porting-master-sites-n-DEFAULT-group]] . Elements without a postfix are groupless, they all belong to the special group `DEFAULT`. Any elements postfixed with `DEFAULT`, is just being redundant unless an element belongs to both `DEFAULT` and other groups at the same time (check item crossref:makefiles[porting-master-sites-n-comma-operator,5]). + These examples are equivalent but the first one is preferred: + [.programlisting] .... MASTER_SITES= alpha .... + [.programlisting] .... MASTER_SITES= alpha:DEFAULT .... . Groups are not exclusive, an element may belong to several different groups at the same time and a group can either have either several different elements or none at all. + [[porting-master-sites-n-comma-operator]] . When an element belongs to several groups at the same time, use the comma operator (`,`). + Instead of repeating it several times, each time with a different postfix, we can list several groups at once in a single postfix. For instance, `:m,n,o` marks an element that belongs to group `m`, `n` and `o`. + All these examples are equivalent but the last one is preferred: + [.programlisting] .... MASTER_SITES= alpha alpha:SOME_SITE .... + [.programlisting] .... MASTER_SITES= alpha:DEFAULT alpha:SOME_SITE .... + [.programlisting] .... MASTER_SITES= alpha:SOME_SITE,DEFAULT .... + [.programlisting] .... MASTER_SITES= alpha:DEFAULT,SOME_SITE .... . All sites within a given group are sorted according to `MASTER_SORT_AWK`. All groups within `MASTER_SITES` and `PATCH_SITES` are sorted as well. + [[porting-master-sites-n-group-semantics]] . Group semantics can be used in any of the variables `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR`, `PATCH_SITE_SUBDIR`, `DISTFILES`, and `PATCHFILES` according to this syntax: .. All `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR` elements must be terminated with the forward slash `/` character. If any elements belong to any groups, the group postfix `:__n__` must come right after the terminator `/`. The `MASTER_SITES:n` mechanism relies on the existence of the terminator `/` to avoid confusing elements where a `:n` is a valid part of the element with occurrences where `:n` denotes group `n`. For compatibility purposes, since the `/` terminator was not required before in both `MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR` elements, if the postfix immediate preceding character is not a `/` then `:n` will be considered a valid part of the element instead of a group postfix even if an element is postfixed with `:n`. See both crossref:makefiles[ports-master-sites-n-example-detailed-use-master-site-subdir,Detailed Use of `MASTER_SITES:n` in `MASTER_SITE_SUBDIR`] and crossref:makefiles[ports-master-sites-n-example-detailed-use-complete-example-master-sites,Detailed Use of `MASTER_SITES:n` with Comma Operator, Multiple Files, Multiple Sites and Multiple Subdirectories]. + [[ports-master-sites-n-example-detailed-use-master-site-subdir]] .Detailed Use of `MASTER_SITES:n` in `MASTER_SITE_SUBDIR` [example] ==== [.programlisting] .... MASTER_SITE_SUBDIR= old:n new/:NEW .... *** Directories within group `DEFAULT` -> old:n *** Directories within group `NEW` -> new ==== + [[ports-master-sites-n-example-detailed-use-complete-example-master-sites]] .Detailed Use of `MASTER_SITES:n` with Comma Operator, Multiple Files, Multiple Sites and Multiple Subdirectories [example] ==== [.programlisting] .... MASTER_SITES= http://site1/%SUBDIR%/ http://site2/:DEFAULT \ http://site3/:group3 http://site4/:group4 \ http://site5/:group5 http://site6/:group6 \ http://site7/:DEFAULT,group6 \ http://site8/%SUBDIR%/:group6,group7 \ http://site9/:group8 DISTFILES= file1 file2:DEFAULT file3:group3 \ file4:group4,group5,group6 file5:grouping \ file6:group7 MASTER_SITE_SUBDIR= directory-trial:1 directory-n/:groupn \ directory-one/:group6,DEFAULT \ directory .... The previous example results in this fine grained fetching. Sites are listed in the exact order they will be used. *** [.filename]#file1# will be fetched from **** `MASTER_SITE_OVERRIDE` **** http://site1/directory-trial:1/ **** http://site1/directory-one/ **** http://site1/directory/ **** http://site2/ **** http://site7/ **** `MASTER_SITE_BACKUP` *** [.filename]#file2# will be fetched exactly as [.filename]#file1# since they both belong to the same group **** `MASTER_SITE_OVERRIDE` **** http://site1/directory-trial:1/ **** http://site1/directory-one/ **** http://site1/directory/ **** http://site2/ **** http://site7/ **** `MASTER_SITE_BACKUP` *** [.filename]#file3# will be fetched from **** `MASTER_SITE_OVERRIDE` **** http://site3/ **** `MASTER_SITE_BACKUP` *** [.filename]#file4# will be fetched from **** `MASTER_SITE_OVERRIDE` **** http://site4/ **** http://site5/ **** http://site6/ **** http://site7/ **** http://site8/directory-one/ **** `MASTER_SITE_BACKUP` *** [.filename]#file5# will be fetched from **** `MASTER_SITE_OVERRIDE` **** `MASTER_SITE_BACKUP` *** [.filename]#file6# will be fetched from **** `MASTER_SITE_OVERRIDE` **** http://site8/ **** `MASTER_SITE_BACKUP` ==== . How do I group one of the special macros from [.filename]#bsd.sites.mk#, for example, SourceForge (`SF`)? + This has been simplified as much as possible. See crossref:makefiles[ports-master-sites-n-example-detailed-use-master-site-sourceforge,Detailed Use of `MASTER_SITES:n` with SourceForge (`SF`)]. + [[ports-master-sites-n-example-detailed-use-master-site-sourceforge]] .Detailed Use of `MASTER_SITES:n` with SourceForge (`SF`) [example] ==== [.programlisting] .... MASTER_SITES= http://site1/ SF/something/1.0:sourceforge,TEST DISTFILES= something.tar.gz:sourceforge .... [.filename]#something.tar.gz# will be fetched from all sites within SourceForge. ==== . How do I use this with `PATCH*`? + All examples were done with `MASTER*` but they work exactly the same for `PATCH*` ones as can be seen in crossref:makefiles[ports-master-sites-n-example-detailed-use-patch-sites,Simplified Use of `MASTER_SITES:n` with `PATCH_SITES`]. + [[ports-master-sites-n-example-detailed-use-patch-sites]] .Simplified Use of `MASTER_SITES:n` with `PATCH_SITES` [example] ==== [.programlisting] .... PATCH_SITES= http://site1/ http://site2/:test PATCHFILES= patch1:test .... ==== [[port-master-sites-n-what-changed]] ==== What Does Change for Ports? What Does Not? [lowerroman] . All current ports remain the same. The `MASTER_SITES:n` feature code is only activated if there are elements postfixed with `:__n__` like elements according to the aforementioned syntax rules, especially as shown in item crossref:makefiles[porting-master-sites-n-group-semantics, 7]. + [[porting-master-sites-n-what-changes-in-port-targets]] . The port targets remain the same: `checksum`, `makesum`, `patch`, `configure`, `build`, etc. With the obvious exceptions of `do-fetch`, `fetch-list`, `master-sites` and `patch-sites`. ** `do-fetch`: deploys the new grouping postfixed `DISTFILES` and `PATCHFILES` with their matching group elements within both `MASTER_SITES` and `PATCH_SITES` which use matching group elements within both `MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR`. Check crossref:makefiles[ports-master-sites-n-example-detailed-use-complete-example-master-sites,Detailed Use of `MASTER_SITES:n` with Comma Operator, Multiple Files, Multiple Sites and Multiple Subdirectories]. ** `fetch-list`: works like old `fetch-list` with the exception that it groups just like `do-fetch`. ** `master-sites` and `patch-sites`: (incompatible with older versions) only return the elements of group `DEFAULT`; in fact, they execute targets `master-sites-default` and `patch-sites-default` respectively. + Furthermore, using target either `master-sites-all` or `patch-sites-all` is preferred to directly checking either `MASTER_SITES` or `PATCH_SITES`. Also, directly checking is not guaranteed to work in any future versions. Check item crossref:makefiles[porting-master-sites-n-new-port-targets-master-sites-all, B] for more information on these new port targets. . New port targets .. There are `master-sites-_n_` and `patch-sites-_n_` targets which will list the elements of the respective group _n_ within `MASTER_SITES` and `PATCH_SITES` respectively. For instance, both `master-sites-DEFAULT` and `patch-sites-DEFAULT` will return the elements of group `DEFAULT`, `master-sites-test` and `patch-sites-test` of group `test`, and thereon. + [[porting-master-sites-n-new-port-targets-master-sites-all]] .. There are new targets `master-sites-all` and `patch-sites-all` which do the work of the old `master-sites` and `patch-sites` ones. They return the elements of all groups as if they all belonged to the same group with the caveat that it lists as many `MASTER_SITE_BACKUP` and `MASTER_SITE_OVERRIDE` as there are groups defined within either `DISTFILES` or `PATCHFILES`; respectively for `master-sites-all` and `patch-sites-all`. [[makefile-dist_subdir]] === `DIST_SUBDIR` Do not let the port clutter [.filename]#/usr/ports/distfiles#. If the port requires a lot of files to be fetched, or contains a file that has a name that might conflict with other ports (for example, [.filename]#Makefile#), set `DIST_SUBDIR` to the name of the port (`${PORTNAME}` or `${PKGNAMEPREFIX}${PORTNAME}` are fine). This will change `DISTDIR` from the default [.filename]#/usr/ports/distfiles# to [.filename]#/usr/ports/distfiles/${DIST_SUBDIR}#, and in effect puts everything that is required for the port into that subdirectory. It will also look at the subdirectory with the same name on the backup master site at http://distcache.FreeBSD.org[http://distcache.FreeBSD.org] (Setting `DISTDIR` explicitly in [.filename]#Makefile# will not accomplish this, so please use `DIST_SUBDIR`.) [NOTE] ==== This does not affect `MASTER_SITES` defined in the [.filename]#Makefile#. ==== [[makefile-maintainer]] == `MAINTAINER` Set your mail-address here. Please. _:-)_ Only a single address without the comment part is allowed as a `MAINTAINER` value. The format used is `user@hostname.domain`. Please do not include any descriptive text such as a real name in this entry. That merely confuses the Ports infrastructure and most tools using it. The maintainer is responsible for keeping the port up to date and making sure that it works correctly. For a detailed description of the responsibilities of a port maintainer, refer to extref:{contributing}[The challenge for port maintainers, maintain-port]. [NOTE] ==== A maintainer volunteers to keep a port in good working order. Maintainers have the primary responsibility for their ports, but not exclusive ownership. Ports exist for the benefit of the community and, in reality, belong to the community. What this means is that people other than the maintainer can make changes to a port. Large changes to the Ports Collection might require changes to many ports. The FreeBSD Ports Management Team or members of other teams might modify ports to fix dependency issues or other problems, like a version bump for a shared library update. Some types of fixes have "blanket approval" from the {portmgr}, allowing any committer to fix those categories of problems on any port. These fixes do not need approval from the maintainer. Blanket approval for most ports applies to fixes like infrastructure changes, or trivial and _tested_ build and runtime fixes. The current list is available in extref:{committers-guide}[Ports section of the Committer's Guide, ports-qa-misc-blanket-approval]. ==== Other changes to the port will be sent to the maintainer for review and approval before being committed. If the maintainer does not respond to an update request after two weeks (excluding major public holidays), then that is considered a maintainer timeout, and the update can be made without explicit maintainer approval. If the maintainer does not respond within three months, or if there have been three consecutive timeouts, then that maintainer is considered absent without leave, and all of their ports can be assigned back to the pool. Exceptions to this are anything maintained by the {portmgr}, or the {security-officer}. No unauthorized commits may ever be made to ports maintained by those groups. We reserve the right to modify the maintainer's submission to better match existing policies and style of the Ports Collection without explicit blessing from the submitter or the maintainer. Also, large infrastructural changes can result in a port being modified without the maintainer's consent. These kinds of changes will never affect the port's functionality. The {portmgr} reserves the right to revoke or override anyone's maintainership for any reason, and the {security-officer} reserves the right to revoke or override maintainership for security reasons. [[makefile-comment]] == `COMMENT` The comment is a one-line description of a port shown by `pkg info`. Please follow these rules when composing it: . The COMMENT string should be 70 characters or less. . Do _not_ include the package name or version number of software. . The comment must begin with a capital and end without a period. . Do not start with an indefinite article (that is, A or An). . Capitalize names such as Apache, JavaScript, or Perl. . Use a serial comma for lists of words: "green, red, and blue." . Check for spelling errors. Here is an example: [.programlisting] .... COMMENT= Cat chasing a mouse all over the screen .... The COMMENT variable immediately follows the MAINTAINER variable in the [.filename]#Makefile#. [[makefile-www]] == Project website Each port should point to a website that provides more information about the software. Whenever possible, this should be the official project website maintained by the developers of the software. [.programlisting] .... WWW= https://ffmpeg.org/ .... But it can also be a directory or resource in the source code repository: [.programlisting] .... WWW= https://sourceforge.net/projects/mpd/ .... The WWW variable immediately follows the COMMENT variable in the [.filename]#Makefile#. If the same content can be accessed via HTTP and HTTPS, the URL starting with `https://` shall be used. If the URI is the root of the website or directory, it must be terminated with a slash. This information used to be placed into the last line of the [.filename]#pkg-descr# file. It has been moved into the Makefile for easier maintenance and processing. Having a `WWW:` line at the end of the [.filename]#pkg-descr# file is deprecated. [[licenses]] == Licenses Each port must document the license under which it is available. If it is not an OSI approved license it must also document any restrictions on redistribution. [[licenses-license]] === `LICENSE` A short name for the license or licenses if more than one license apply. If it is one of the licenses listed in crossref:makefiles[licenses-license-list,Predefined License List], only `LICENSE_FILE` and `LICENSE_DISTFILES` variables can be set. If this is a license that has not been defined in the ports framework (see crossref:makefiles[licenses-license-list,Predefined License List]), the `LICENSE_PERMS` and `LICENSE_NAME` must be set, along with either `LICENSE_FILE` or `LICENSE_TEXT`. `LICENSE_DISTFILES` and `LICENSE_GROUPS` can also be set, but are not required. The predefined licenses are shown in crossref:makefiles[licenses-license-list,Predefined License List]. The current list is always available in [.filename]#Mk/bsd.licenses.db.mk#. [[licenses-license-ex1]] .Simplest Usage, Predefined Licenses [example] ==== When the [.filename]#README# of some software says "This software is under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version." but does not provide the license file, use this: [.programlisting] .... LICENSE= LGPL21+ .... When the software provides the license file, use this: [.programlisting] .... LICENSE= LGPL21+ LICENSE_FILE= ${WRKSRC}/COPYING .... ==== For the predefined licenses, the default permissions are `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept`. [[licenses-license-list]] .Predefined License List [cols="1,1,1,1", frame="none", options="header"] |=== | Short Name | Name | Group | Permissions |`AGPLv3` |GNU Affero General Public License version 3 |`FSF GPL OSI` |(default) |`AGPLv3+` |GNU Affero General Public License version 3 (or later) |`FSF GPL OSI` |(default) |`APACHE10` |Apache License 1.0 |`FSF` |(default) |`APACHE11` |Apache License 1.1 |`FSF OSI` |(default) |`APACHE20` |Apache License 2.0 |`FSF OSI` |(default) |`ART10` |Artistic License version 1.0 |`OSI` |(default) |`ART20` |Artistic License version 2.0 |`FSF GPL OSI` |(default) |`ARTPERL10` |Artistic License (perl) version 1.0 |`OSI` |(default) |`BSD` |BSD license Generic Version (deprecated) |`FSF OSI COPYFREE` |(default) |`BSD2CLAUSE` |BSD 2-clause "Simplified" License |`FSF OSI COPYFREE` |(default) |`BSD3CLAUSE` |BSD 3-clause "New" or "Revised" License |`FSF OSI COPYFREE` |(default) |`BSD4CLAUSE` |BSD 4-clause "Original" or "Old" License |`FSF` |(default) |`BSL` |Boost Software License |`FSF OSI COPYFREE` |(default) |`CC-BY-1.0` |Creative Commons Attribution 1.0 | |(default) |`CC-BY-2.0` |Creative Commons Attribution 2.0 | |(default) |`CC-BY-2.5` |Creative Commons Attribution 2.5 | |(default) |`CC-BY-3.0` |Creative Commons Attribution 3.0 | |(default) |`CC-BY-4.0` |Creative Commons Attribution 4.0 | |(default) |`CC-BY-NC-1.0` |Creative Commons Attribution Non Commercial 1.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-2.0` |Creative Commons Attribution Non Commercial 2.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-2.5` |Creative Commons Attribution Non Commercial 2.5 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-3.0` |Creative Commons Attribution Non Commercial 3.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-4.0` |Creative Commons Attribution Non Commercial 4.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-1.0` |Creative Commons Attribution Non Commercial No Derivatives 1.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-2.0` |Creative Commons Attribution Non Commercial No Derivatives 2.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-2.5` |Creative Commons Attribution Non Commercial No Derivatives 2.5 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-3.0` |Creative Commons Attribution Non Commercial No Derivatives 3.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-4.0` |Creative Commons Attribution Non Commercial No Derivatives 4.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-1.0` |Creative Commons Attribution Non Commercial Share Alike 1.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-2.0` |Creative Commons Attribution Non Commercial Share Alike 2.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-2.5` |Creative Commons Attribution Non Commercial Share Alike 2.5 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-3.0` |Creative Commons Attribution Non Commercial Share Alike 3.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-4.0` |Creative Commons Attribution Non Commercial Share Alike 4.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-ND-1.0` |Creative Commons Attribution No Derivatives 1.0 | |(default) |`CC-BY-ND-2.0` |Creative Commons Attribution No Derivatives 2.0 | |(default) |`CC-BY-ND-2.5` |Creative Commons Attribution No Derivatives 2.5 | |(default) |`CC-BY-ND-3.0` |Creative Commons Attribution No Derivatives 3.0 | |(default) |`CC-BY-ND-4.0` |Creative Commons Attribution No Derivatives 4.0 | |(default) |`CC-BY-SA-1.0` |Creative Commons Attribution Share Alike 1.0 | |(default) |`CC-BY-SA-2.0` |Creative Commons Attribution Share Alike 2.0 | |(default) |`CC-BY-SA-2.5` |Creative Commons Attribution Share Alike 2.5 | |(default) |`CC-BY-SA-3.0` |Creative Commons Attribution Share Alike 3.0 | |(default) |`CC-BY-SA-4.0` |Creative Commons Attribution Share Alike 4.0 | |(default) |`CC0-1.0` |Creative Commons Zero v1.0 Universal |`FSF GPL COPYFREE` |(default) |`CDDL` |Common Development and Distribution License |`FSF OSI` |(default) |`CPAL-1.0` |Common Public Attribution License |`FSF OSI` |(default) |`ClArtistic` |Clarified Artistic License |`FSF GPL OSI` |(default) |`EPL` |Eclipse Public License |`FSF OSI` |(default) |`GFDL` |GNU Free Documentation License |`FSF` |(default) |`GMGPL` |GNAT Modified General Public License |`FSF GPL OSI` |(default) |`GPLv1` |GNU General Public License version 1 |`FSF GPL OSI` |(default) |`GPLv1+` |GNU General Public License version 1 (or later) |`FSF GPL OSI` |(default) |`GPLv2` |GNU General Public License version 2 |`FSF GPL OSI` |(default) |`GPLv2+` |GNU General Public License version 2 (or later) |`FSF GPL OSI` |(default) |`GPLv3` |GNU General Public License version 3 |`FSF GPL OSI` |(default) |`GPLv3+` |GNU General Public License version 3 (or later) |`FSF GPL OSI` |(default) |`GPLv3RLE` |GNU GPL version 3 Runtime Library Exception |`FSF GPL OSI` |(default) |`GPLv3RLE+` |GNU GPL version 3 Runtime Library Exception (or later) |`FSF GPL OSI` |(default) |`ISCL` |Internet Systems Consortium License |`FSF GPL OSI COPYFREE` |(default) |`LGPL20` |GNU Library General Public License version 2.0 |`FSF GPL OSI` |(default) |`LGPL20+` |GNU Library General Public License version 2.0 (or later) |`FSF GPL OSI` |(default) |`LGPL21` |GNU Lesser General Public License version 2.1 |`FSF GPL OSI` |(default) |`LGPL21+` |GNU Lesser General Public License version 2.1 (or later) |`FSF GPL OSI` |(default) |`LGPL3` |GNU Lesser General Public License version 3 |`FSF GPL OSI` |(default) |`LGPL3+` |GNU Lesser General Public License version 3 (or later) |`FSF GPL OSI` |(default) |`LPPL10` |LaTeX Project Public License version 1.0 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL11` |LaTeX Project Public License version 1.1 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL12` |LaTeX Project Public License version 1.2 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13` |LaTeX Project Public License version 1.3 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13a` |LaTeX Project Public License version 1.3a |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13b` |LaTeX Project Public License version 1.3b |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13c` |LaTeX Project Public License version 1.3c |`FSF OSI` |`dist-mirror dist-sell` |`MIT` |MIT license / X11 license |`COPYFREE FSF GPL OSI` |(default) |`MPL10` |Mozilla Public License version 1.0 |`FSF OSI` |(default) |`MPL11` |Mozilla Public License version 1.1 |`FSF OSI` |(default) |`MPL20` |Mozilla Public License version 2.0 |`FSF OSI` |(default) |`NCSA` |University of Illinois/NCSA Open Source License |`COPYFREE FSF GPL OSI` |(default) |`NONE` |No license specified | |`none` |`OFL10` |SIL Open Font License version 1.0 (https://scripts.sil.org/OFL/) |`FONTS` |(default) |`OFL11` |SIL Open Font License version 1.1 (https://scripts.sil.org/OFL/) |`FONTS` |(default) |`OWL` |Open Works License (owl.apotheon.org) |`COPYFREE` |(default) |`OpenSSL` |OpenSSL License |`FSF` |(default) |`PD` |Public Domain |`GPL COPYFREE` |(default) |`PHP202` |PHP License version 2.02 |`FSF OSI` |(default) |`PHP30` |PHP License version 3.0 |`FSF OSI` |(default) |`PHP301` |PHP License version 3.01 |`FSF OSI` |(default) |`PSFL` |Python Software Foundation License |`FSF GPL OSI` |(default) |`PostgreSQL` |PostgreSQL License |`FSF GPL OSI COPYFREE` |(default) |`RUBY` |Ruby License |`FSF` |(default) |`UNLICENSE` |The Unlicense |`COPYFREE FSF GPL` |(default) |`WTFPL` |Do What the Fuck You Want To Public License version 2 |`GPL FSF COPYFREE` |(default) |`WTFPL1` |Do What the Fuck You Want To Public License version 1 |`GPL FSF COPYFREE` |(default) |`ZLIB` |zlib License |`GPL FSF OSI` |(default) |`ZPL21` |Zope Public License version 2.1 |`GPL OSI` |(default) |=== [[licenses-license_perms]] === `LICENSE_PERMS` and `LICENSE_PERMS_NAME_` Permissions. use `none` if empty. .License Permissions List [[licenses-license_perms-dist-mirror]] `dist-mirror`:: Redistribution of the distribution files is permitted. The distribution files will be added to the FreeBSD `MASTER_SITE_BACKUP` CDN. [[licenses-license_perms-no-dist-mirror]] `no-dist-mirror`:: Redistribution of the distribution files is prohibited. This is equivalent to setting crossref:special[porting-restrictions-restricted,`RESTRICTED`]. The distribution files will _not_ be added to the FreeBSD `MASTER_SITE_BACKUP` CDN. [[licenses-license_perms-dist-sell]] `dist-sell`:: Selling of distribution files is permitted. The distribution files will be present on the installer images. [[licenses-license_perms-no-dist-sell]] `no-dist-sell`:: Selling of distribution files is prohibited. This is equivalent to setting crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`]. [[licenses-license_perms-pkg-mirror]] `pkg-mirror`:: Free redistribution of package is permitted. The package will be distributed on the FreeBSD package CDN https://pkg.freebsd.org/[https://pkg.freebsd.org/]. [[licenses-license_perms-no-pkg-mirror]] `no-pkg-mirror`:: Free redistribution of package is prohibited. Equivalent to setting crossref:special[porting-restrictions-no_package,`NO_PACKAGE`]. The package will _not_ be distributed from the FreeBSD package CDN https://pkg.freebsd.org/[https://pkg.freebsd.org/]. [[licenses-license_perms-pkg-sell]] `pkg-sell`:: Selling of package is permitted. The package will be present on the installer images. [[licenses-license_perms-no-pkg-sell]] `no-pkg-sell`:: Selling of package is prohibited. This is equivalent to setting crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`]. The package will _not_ be present on the installer images. [[licenses-license_perms-auto-accept]] `auto-accept`:: License is accepted by default. Prompts to accept a license are not displayed unless the user has defined `LICENSES_ASK`. Use this unless the license states the user must accept the terms of the license. [[licenses-license_perms-no-auto-accept]] `no-auto-accept`:: License is not accepted by default. The user will always be asked to confirm the acceptance of this license. This must be used if the license states that the user must accept its terms. When both `_permission_` and `no-_permission_` is present the `no-_permission_` will cancel `_permission_`. When `_permission_` is not present, it is considered to be a `no-_permission_`. [WARNING] ==== Some missing permissions will prevent a port (and all ports depending on it) from being usable by package users: A port without the `auto-accept` permission will never be be built and all the ports depending on it will be ignored. A port without the `pkg-mirror` permission, and any ports that depend on it, will be removed after the build, thus ensuring they are not distributed. ==== [[licenses-license_perms-ex1]] .Nonstandard License [example] ==== Read the terms of the license and translate those using the available permissions. [.programlisting] .... LICENSE= UNKNOWN LICENSE_NAME= unknown LICENSE_TEXT= This program is NOT in public domain.\ It can be freely distributed for non-commercial purposes only. LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept .... ==== [[licenses-license_perms-ex2]] .Standard and Nonstandard Licenses [example] ==== Read the terms of the license and express those using the available permissions. In case of doubt, please ask for guidance on the {freebsd-ports}. [.programlisting] .... LICENSE= WARSOW GPLv2 LICENSE_COMB= multi LICENSE_NAME_WARSOW= Warsow Content License LICENSE_FILE_WARSOW= ${WRKSRC}/docs/license.txt LICENSE_PERMS_WARSOW= dist-mirror pkg-mirror auto-accept .... When the permissions of the GPLv2 and the UNKNOWN licenses are mixed, the port ends up with `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept`. The `no-_permissions_` cancel the _permissions_. The resulting list of permissions are _dist-mirror pkg-mirror auto-accept_. The distribution files and the packages will not be available on the installer images. ==== [[licenses-license_groups]] === `LICENSE_GROUPS` and `LICENSE_GROUPS_NAME` Groups the license belongs. .Predefined License Groups List [[licenses-license_groups-FSF]] `FSF`:: Free Software Foundation Approved, see the https://www.fsf.org/licensing/[FSF Licensing & Compliance Team]. [[licenses-license_groups-GPL]] `GPL`:: GPL Compatible [[licenses-license_groups-OSI]] `OSI`:: OSI Approved, see the Open Source Initiative https://opensource.org/licenses/[Open Source Licenses] page. [[licenses-license_groups-COPYFREE]] `COPYFREE`:: Comply with Copyfree Standard Definition, see the https://copyfree.org/standard/licenses/[Copyfree Licenses] page. [[licenses-license_groups-FONTS]] `FONTS`:: Font licenses [[licenses-license_name]] === `LICENSE_NAME` and `LICENSE_NAME_NAME` Full name of the license. [[licenses-license_name-ex1]] .`LICENSE_NAME` [example] ==== [.programlisting] .... LICENSE= UNRAR LICENSE_NAME= UnRAR License LICENSE_FILE= ${WRKSRC}/license.txt LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept .... ==== [[licenses-license_file]] === `LICENSE_FILE` and `LICENSE_FILE_NAME` Full path to the file containing the license text, usually [.filename]#${WRKSRC}/some/file#. If the file is not in the distfile, and its content is too long to be put in crossref:makefiles[licenses-license_text,`LICENSE_TEXT`], put it in a new file in [.filename]#${FILESDIR}#. [[licenses-license_file-ex1]] .`LICENSE_FILE` [example] ==== [.programlisting] .... LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/COPYING .... ==== [[licenses-license_text]] === `LICENSE_TEXT` and `LICENSE_TEXT_NAME` Text to use as a license. Useful when the license is not in the distribution files and its text is short. [[licenses-license_text-ex1]] .`LICENSE_TEXT` [example] ==== [.programlisting] .... LICENSE= UNKNOWN LICENSE_NAME= unknown LICENSE_TEXT= This program is NOT in public domain.\ It can be freely distributed for non-commercial purposes only,\ and THERE IS NO WARRANTY FOR THIS PROGRAM. LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept .... ==== [[licenses-license_distfiles]] === `LICENSE_DISTFILES` and `LICENSE_DISTFILES_NAME` The distribution files to which the licenses apply. Defaults to all the distribution files. [[licenses-license_distfiles-ex1]] .`LICENSE_DISTFILES` [example] ==== Used when the distribution files do not all have the same license. For example, one has a code license, and another has some artwork that cannot be redistributed: [.programlisting] .... MASTER_SITES= SF/some-game DISTFILES= ${DISTNAME}${EXTRACT_SUFX} artwork.zip LICENSE= BSD3CLAUSE ARTWORK LICENSE_COMB= dual LICENSE_NAME_ARTWORK= The game artwork license LICENSE_TEXT_ARTWORK= The README says that the files cannot be redistributed LICENSE_PERMS_ARTWORK= pkg-mirror pkg-sell auto-accept LICENSE_DISTFILES_BSD3CLAUSE= ${DISTNAME}${EXTRACT_SUFX} LICENSE_DISTFILES_ARTWORK= artwork.zip .... ==== [[licenses-license_comb]] === `LICENSE_COMB` Set to `multi` if all licenses apply. Set to `dual` if any license applies. Defaults to `single`. [[licenses-license_comb-ex1]] .Dual Licenses [example] ==== When a port says "This software may be distributed under the GNU General Public License or the Artistic License", it means that either license can be used. Use this: [.programlisting] .... LICENSE= ART10 GPLv1 LICENSE_COMB= dual .... If license files are provided, use this: [.programlisting] .... LICENSE= ART10 GPLv1 LICENSE_COMB= dual LICENSE_FILE_ART10= ${WRKSRC}/Artistic LICENSE_FILE_GPLv1= ${WRKSRC}/Copying .... ==== [[licenses-license_comb-ex2]] .Multiple Licenses [example] ==== When part of a port has one license, and another part has a different license, use `multi`: [.programlisting] .... LICENSE= GPLv2 LGPL21+ LICENSE_COMB= multi .... ==== [[makefile-portscout]] == `PORTSCOUT` Portscout is an automated distfile check utility for the FreeBSD Ports Collection, described in detail in crossref:keeping-up[distfile-survey,Portscout: the FreeBSD Ports Distfile Scanner]. `PORTSCOUT` defines special conditions within which the Portscout distfile scanner is restricted. Situations where `PORTSCOUT` is set include: * When distfiles have to be ignored for specific versions. For example, to exclude version _8.2_ and version _8.3_ from distfile version checks because they are known to be broken, add: + [.programlisting] .... PORTSCOUT= skipv:8.2,8.3 .... * When distfile version checks have to be disabled completely. For example, if a port is not going to be updated ever again, add: + [.programlisting] .... PORTSCOUT= ignore:1 .... * When specific versions or specific major and minor revisions of a distfile must be checked. For example, if only version _0.6.4_ must be monitored because newer versions have compatibility issues with FreeBSD, add: + [.programlisting] .... PORTSCOUT= limit:^0\.6\.4 .... * When URLs listing the available versions differ from the download URLs. For example, to limit distfile version checks to the download page for the package:databases/pgtune[] port, add: + [.programlisting] .... PORTSCOUT= site:http://www.renpy.org/dl/release/ .... [[makefile-depend]] == Dependencies Many ports depend on other ports. This is a very convenient feature of most Unix-like operating systems, including FreeBSD. Multiple ports can share a common dependency, rather than bundling that dependency with every port or package that needs it. There are seven variables that can be used to ensure that all the required bits will be on the user's machine. There are also some pre-supported dependency variables for common cases, plus a few more to control the behavior of dependencies. [IMPORTANT] ==== When software has extra dependencies that provide extra features, the base dependencies listed in `*_DEPENDS` should include the extra dependencies that would benefit most users. The base dependencies should never be a "minimal" dependency set. The goal is not to include every dependency possible. Only include those that will benefit most people. ==== [[makefile-lib_depends]] === `LIB_DEPENDS` This variable specifies the shared libraries this port depends on. It is a list of `_lib:dir_` tuples where `_lib_` is the name of the shared library, `_dir_` is the directory in which to find it in case it is not available. For example, [.programlisting] .... LIB_DEPENDS= libjpeg.so:graphics/jpeg .... will check for a shared jpeg library with any version, and descend into the [.filename]#graphics/jpeg# subdirectory of the ports tree to build and install it if it is not found. The dependency is checked twice, once from within the `build` target and then from within the `install` target. Also, the name of the dependency is put into the package so that `pkg install` (see man:pkg-install[8]) will automatically install it if it is not on the user's system. [[makefile-run_depends]] === `RUN_DEPENDS` This variable specifies executables or files this port depends on during run-time. It is a list of ``_path:dir_``[:``_target_``] tuples where `_path_` is the name of the executable or file, _dir_ is the directory in which to find it in case it is not available, and _target_ is the target to call in that directory. If _path_ starts with a slash (`/`), it is treated as a file and its existence is tested with `test -e`; otherwise, it is assumed to be an executable, and `which -s` is used to determine if the program exists in the search path. For example, [.programlisting] .... RUN_DEPENDS= ${LOCALBASE}/news/bin/innd:news/inn \ xmlcatmgr:textproc/xmlcatmgr .... will check if the file or directory [.filename]#/usr/local/news/bin/innd# exists, and build and install it from the [.filename]#news/inn# subdirectory of the ports tree if it is not found. It will also see if an executable called `xmlcatmgr` is in the search path, and descend into [.filename]#textproc/xmlcatmgr# to build and install it if it is not found. [NOTE] ==== In this case, `innd` is actually an executable; if an executable is in a place that is not expected to be in the search path, use the full pathname. ==== [NOTE] ==== The official search `PATH` used on the ports build cluster is [.programlisting] .... /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin .... ==== The dependency is checked from within the `install` target. Also, the name of the dependency is put into the package so that `pkg install` (see man:pkg-install[8]) will automatically install it if it is not on the user's system. The _target_ part can be omitted if it is the same as `DEPENDS_TARGET`. A quite common situation is when `RUN_DEPENDS` is literally the same as `BUILD_DEPENDS`, especially if ported software is written in a scripted language or if it requires the same build and run-time environment. In this case, it is both tempting and intuitive to directly assign one to the other: [.programlisting] .... RUN_DEPENDS= ${BUILD_DEPENDS} .... However, such assignment can pollute run-time dependencies with entries not defined in the port's original `BUILD_DEPENDS`. This happens because of man:make[1]'s lazy evaluation of variable assignment. Consider a [.filename]#Makefile# with `USE_*`, which are processed by [.filename]#ports/Mk/bsd.*.mk# to augment initial build dependencies. For example, `USES= gmake` adds package:devel/gmake[] to `BUILD_DEPENDS`. To prevent such additional dependencies from polluting `RUN_DEPENDS`, create another variable with the current content of `BUILD_DEPENDS` and assign it to both `BUILD_DEPENDS` and `RUN_DEPENDS`: [.programlisting] .... MY_DEPENDS= some:devel/some \ other:lang/other BUILD_DEPENDS= ${MY_DEPENDS} RUN_DEPENDS= ${MY_DEPENDS} .... [IMPORTANT] ==== _Do not_ use `:=` to assign `BUILD_DEPENDS` to `RUN_DEPENDS` or vice-versa. All variables are expanded immediately, which is exactly the wrong thing to do and almost always a failure. ==== [[makefile-build_depends]] === `BUILD_DEPENDS` This variable specifies executables or files this port requires to build. Like `RUN_DEPENDS`, it is a list of ``_path:dir_``[:``_target_``] tuples. For example, [.programlisting] .... BUILD_DEPENDS= unzip:archivers/unzip .... will check for an executable called `unzip`, and descend into the [.filename]#archivers/unzip# subdirectory of the ports tree to build and install it if it is not found. [NOTE] ==== "build" here means everything from extraction to compilation. The dependency is checked from within the `extract` target. The _target_ part can be omitted if it is the same as `DEPENDS_TARGET` ==== [[makefile-fetch_depends]] === `FETCH_DEPENDS` This variable specifies executables or files this port requires to fetch. Like the previous two, it is a list of ``_path:dir_``[:``_target_``] tuples. For example, [.programlisting] .... FETCH_DEPENDS= ncftp2:net/ncftp2 .... will check for an executable called `ncftp2`, and descend into the [.filename]#net/ncftp2# subdirectory of the ports tree to build and install it if it is not found. The dependency is checked from within the `fetch` target. The _target_ part can be omitted if it is the same as `DEPENDS_TARGET`. [[makefile-extract_depends]] === `EXTRACT_DEPENDS` This variable specifies executables or files this port requires for extraction. Like the previous, it is a list of ``_path:dir_``[:``_target_``] tuples. For example, [.programlisting] .... EXTRACT_DEPENDS= unzip:archivers/unzip .... will check for an executable called `unzip`, and descend into the [.filename]#archivers/unzip# subdirectory of the ports tree to build and install it if it is not found. The dependency is checked from within the `extract` target. The _target_ part can be omitted if it is the same as `DEPENDS_TARGET`. [NOTE] ==== Use this variable only if the extraction does not already work (the default assumes `tar`) and cannot be made to work using `USES=tar`, `USES=lha` or `USES=zip` described in crossref:uses[uses,Using `USES` Macros]. ==== [[makefile-patch_depends]] === `PATCH_DEPENDS` This variable specifies executables or files this port requires to patch. Like the previous, it is a list of ``_path:dir_``[:``_target_``] tuples. For example, [.programlisting] .... PATCH_DEPENDS= ${NONEXISTENT}:java/jfc:extract .... will descend into the [.filename]#java/jfc# subdirectory of the ports tree to extract it. The dependency is checked from within the `patch` target. The _target_ part can be omitted if it is the same as `DEPENDS_TARGET`. [[makefile-uses]] === `USES` Parameters can be added to define different features and dependencies used by the port. They are specified by adding this line to the [.filename]#Makefile#: [.programlisting] .... USES= feature[:arguments] .... For the complete list of values, please see crossref:uses[uses,Using `USES` Macros]. [WARNING] ==== `USES` cannot be assigned after inclusion of [.filename]#bsd.port.pre.mk#. ==== [[makefile-use-vars]] === `USE_*` Several variables exist to define common dependencies shared by many ports. Their use is optional, but helps to reduce the verbosity of the port [.filename]##Makefile##s. Each of them is styled as `USE_*`. These variables may be used only in the port [.filename]##Makefile##s and [.filename]#ports/Mk/bsd.*.mk#. They are not meant for user-settable options - use `PORT_OPTIONS` for that purpose. [NOTE] ==== It is _always_ incorrect to set any `USE_*` in [.filename]#/etc/make.conf#. For instance, setting [.programlisting] .... USE_GCC=X.Y .... (where X.Y is version number) would add a dependency on gccXY for every port, including `lang/gccXY` itself! ==== [[makefile-use-vars-table]] .`USE_*` [cols="1,1", frame="none", options="header"] |=== | Variable | Means |`USE_GCC` a| The port requires GCC (`gcc` or `{g-plus-plus}`) to build. Some ports need a specific, old GCC version, some require modern, recent versions. It is typically set to `yes` (means always use stable, modern GCC from ports per `GCC_DEFAULT` in [.filename]#Mk/bsd.default-versions.mk#). This is also the default value. The exact version can also be specified, with a value such as `10`. GCC from the base system is used when it satisfies the requested version, otherwise an appropriate compiler is built from ports, and `CC` and `CXX` are adjusted accordingly. The `:build` argument following the version specifier adds only a build time dependency to the port. For example: [example] ==== [.programlisting] .... USE_GCC=yes # port requires a current version of GCC USE_GCC=11:build # port requires GCC 11 at build time only .... ==== [NOTE] ==== `USE_GCC=any` is deprecated and should not be used in new ports ==== |=== Variables related to gmake and [.filename]#configure# are described in crossref:special[building,Building Mechanisms], while autoconf, automake and libtool are described in crossref:special[using-autotools,Using GNU Autotools]. Perl related variables are described in crossref:special[using-perl,Using Perl]. X11 variables are listed in crossref:special[using-x11,Using X11]. crossref:special[using-gnome,Using Gnome] deals with GNOME and crossref:special[using-kde,Using KDE] with KDE related variables. crossref:special[using-java,Using Java] documents Java variables, while crossref:special[using-php,Web Applications, Apache and PHP] contains information on Apache, PHP and PEAR modules. Python is discussed in crossref:special[using-python,Using Python], while Ruby in crossref:special[using-ruby,Using Ruby]. crossref:special[using-sdl,Using SDL] provides variables used for SDL applications and finally, crossref:special[using-xfce,Using Xfce] contains information on Xfce. [[makefile-version-dependency]] === Minimal Version of a Dependency A minimal version of a dependency can be specified in any `*_DEPENDS` except `LIB_DEPENDS` using this syntax: [.programlisting] .... p5-Spiffy>=0.26:devel/p5-Spiffy .... The first field contains a dependent package name, which must match the entry in the package database, a comparison sign, and a package version. The dependency is satisfied if p5-Spiffy-0.26 or newer is installed on the machine. [[makefile-note-on-dependencies]] === Notes on Dependencies As mentioned above, the default target to call when a dependency is required is `DEPENDS_TARGET`. It defaults to `install`. This is a user variable; it is never defined in a port's [.filename]#Makefile#. If the port needs a special way to handle a dependency, use the `:target` part of `*_DEPENDS` instead of redefining `DEPENDS_TARGET`. When running `make clean`, the port dependencies are automatically cleaned too. If this is not desirable, define `NOCLEANDEPENDS` in the environment. This may be particularly desirable if the port has something that takes a long time to rebuild in its dependency list, such as KDE, GNOME or Mozilla. To depend on another port unconditionally, use the variable `${NONEXISTENT}` as the first field of `BUILD_DEPENDS` or `RUN_DEPENDS`. Use this only when the source of the other port is needed. Compilation time can be saved by specifying the target too. For instance [.programlisting] .... BUILD_DEPENDS= ${NONEXISTENT}:graphics/jpeg:extract .... will always descend to the `jpeg` port and extract it. [[makefile-circular-dependencies]] === Circular Dependencies Are Fatal [IMPORTANT] ==== Do not introduce any circular dependencies into the ports tree! ==== The ports building technology does not tolerate circular dependencies. If one is introduced, someone, somewhere in the world, will have their FreeBSD installation broken almost immediately, with many others quickly to follow. These can really be hard to detect. If in doubt, before making that change, make sure to run: `cd /usr/ports; make index`. That process can be quite slow on older machines, but it may be able to save a large number of people, including yourself, a lot of grief in the process. [[makefile-automatic-dependencies]] === Problems Caused by Automatic Dependencies Dependencies must be declared either explicitly or by using the crossref:makefiles[makefile-options,OPTIONS framework]. Using other methods like automatic detection complicates indexing, which causes problems for port and package management. [[makefile-automatic-dependencies-bad]] .Wrong Declaration of an Optional Dependency [example] ==== [.programlisting] .... .include .if exists(${LOCALBASE}/bin/foo) LIB_DEPENDS= libbar.so:foo/bar .endif .... ==== The problem with trying to automatically add dependencies is that files and settings outside an individual port can change at any time. For example: an index is built, then a batch of ports are installed. But one of the ports installs the tested file. The index is now incorrect, because an installed port unexpectedly has a new dependency. The index may still be wrong even after rebuilding if other ports also determine their need for dependencies based on the existence of other files. [[makefile-automatic-dependencies-good]] .Correct Declaration of an Optional Dependency [example] ==== [.programlisting] .... OPTIONS_DEFINE= BAR BAR_DESC= Calling cellphones via bar BAR_LIB_DEPENDS= libbar.so:foo/bar .... ==== Testing option variables is the correct method. It will not cause inconsistencies in the index of a batch of ports, provided the options were defined prior to the index build. Simple scripts can then be used to automate the building, installation, and updating of these ports and their packages. [[makefile-masterdir]] == Slave Ports and `MASTERDIR` If the port needs to build slightly different versions of packages by having a variable (for instance, resolution, or paper size) take different values, create one subdirectory per package to make it easier for users to see what to do, but try to share as many files as possible between ports. Typically, by using variables cleverly, only a very short [.filename]#Makefile# is needed in all but one of the directories. In the sole [.filename]#Makefile#, use `MASTERDIR` to specify the directory where the rest of the files are. Also, use a variable as part of crossref:makefiles[porting-pkgname,`PKGNAMESUFFIX`] so the packages will have different names. This will be best demonstrated by an example. This is part of [.filename]#print/pkfonts300/Makefile#; [.programlisting] .... PORTNAME= pkfonts${RESOLUTION} PORTVERSION= 1.0 DISTFILES= pk${RESOLUTION}.tar.gz PLIST= ${PKGDIR}/pkg-plist.${RESOLUTION} .if !defined(RESOLUTION) RESOLUTION= 300 .else .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ ${RESOLUTION} != 300 && ${RESOLUTION} != 360 && \ ${RESOLUTION} != 400 && ${RESOLUTION} != 600 .BEGIN: @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" @${ECHO_MSG} "Possible values are: 118, 240, 300, 360, 400 and 600." @${FALSE} .endif .endif .... package:print/pkfonts300[] also has all the regular patches, package files, etc. Running `make` there, it will take the default value for the resolution (300) and build the port normally. As for other resolutions, this is the _entire_ [.filename]#print/pkfonts360/Makefile#: [.programlisting] .... RESOLUTION= 360 MASTERDIR= ${.CURDIR}/../pkfonts300 .include "${MASTERDIR}/Makefile" .... ([.filename]#print/pkfonts118/Makefile#, [.filename]#print/pkfonts600/Makefile#, and all the other are similar). `MASTERDIR` definition tells [.filename]#bsd.port.mk# that the regular set of subdirectories like `FILESDIR` and `SCRIPTDIR` are to be found under [.filename]#pkfonts300#. The `RESOLUTION=360` line will override the `RESOLUTION=300` line in [.filename]#pkfonts300/Makefile# and the port will be built with resolution set to 360. [[makefile-manpages]] == Man Pages If the port anchors its man tree somewhere other than `PREFIX`, use `MANDIRS` to specify those directories. Note that the files corresponding to manual pages must be placed in [.filename]#pkg-plist# along with the rest of the files. The purpose of `MANDIRS` is to enable automatic compression of manual pages, therefore the file names are suffixed with [.filename]#.gz#. [[makefile-info]] == Info Files If the package needs to install GNU info files, list them in `INFO` (without the trailing `.info`), one entry per document. These files are assumed to be installed to [.filename]#PREFIX/INFO_PATH#. Change `INFO_PATH` if the package uses a different location. However, this is not recommended. These entries contain just the path relative to [.filename]#PREFIX/INFO_PATH#. For example, package:lang/gcc34[] installs info files to [.filename]#PREFIX/INFO_PATH/gcc34#, and `INFO` will be something like this: [.programlisting] .... INFO= gcc34/cpp gcc34/cppinternals gcc34/g77 ... .... Appropriate installation/de-installation code will be automatically added to the temporary [.filename]#pkg-plist# before package registration. [[makefile-options]] == Makefile Options Many applications can be built with optional or differing configurations. Examples include choice of natural (human) language, GUI versus command-line, or type of database to support. Users may need a different configuration than the default, so the ports system provides hooks the port author can use to control which variant will be built. Supporting these options properly will make users happy, and effectively provide two or more ports for the price of one. [[makefile-options-options]] === `OPTIONS` [[makefile-options-background]] ==== Background `OPTIONS_*` give the user installing the port a dialog showing the available options, and then saves those options to [.filename]#${PORT_DBDIR}/${OPTIONS_NAME}/options#. The next time the port is built, the options are reused. `PORT_DBDIR` defaults to [.filename]#/var/db/ports#. `OPTIONS_NAME` is to the port origin with an underscore as the space separator, for example, for package:dns/bind99[] it will be `dns_bind99`. When the user runs `make config` (or runs `make build` for the first time), the framework checks for [.filename]#${PORT_DBDIR}/${OPTIONS_NAME}/options#. If that file does not exist, the values of `OPTIONS_*` are used, and a dialog box is displayed where the options can be enabled or disabled. Then [.filename]#options# is saved and the configured variables are used when building the port. If a new version of the port adds new `OPTIONS`, the dialog will be presented to the user with the saved values of old `OPTIONS` prefilled. `make showconfig` shows the saved configuration. Use `make rmconfig` to remove the saved configuration. [[makefile-options-syntax]] ==== Syntax `OPTIONS_DEFINE` contains a list of `OPTIONS` to be used. These are independent of each other and are not grouped: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 .... Once defined, `OPTIONS` are described (optional, but strongly recommended): [.programlisting] .... OPT1_DESC= Describe OPT1 OPT2_DESC= Describe OPT2 OPT3_DESC= Describe OPT3 OPT4_DESC= Describe OPT4 OPT5_DESC= Describe OPT5 OPT6_DESC= Describe OPT6 .... [.filename]#ports/Mk/bsd.options.desc.mk# has descriptions for many common `OPTIONS`. While often useful, override them if the description is insufficient for the port. [TIP] ==== When describing options, view it from the perspective of the user: "What functionality does it change?" and "Why would I want to enable this?" Do not just repeat the name. For example, describing the `NLS` option as "include NLS support" does not help the user, who can already see the option name but may not know what it means. Describing it as "Native Language Support via gettext utilities" is much more helpful. ==== [IMPORTANT] ==== Option names are always in all uppercase. They cannot use mixed case or lowercase. ==== `OPTIONS` can be grouped as radio choices, where only one choice from each group is allowed: [.programlisting] .... OPTIONS_SINGLE= SG1 OPTIONS_SINGLE_SG1= OPT3 OPT4 .... [WARNING] ==== There _must_ be one of each `OPTIONS_SINGLE` group selected at all times for the options to be valid. One option of each group _must_ be added to `OPTIONS_DEFAULT`. ==== `OPTIONS` can be grouped as radio choices, where none or only one choice from each group is allowed: [.programlisting] .... OPTIONS_RADIO= RG1 OPTIONS_RADIO_RG1= OPT7 OPT8 .... `OPTIONS` can also be grouped as "multiple-choice" lists, where _at least one_ option must be enabled: [.programlisting] .... OPTIONS_MULTI= MG1 OPTIONS_MULTI_MG1= OPT5 OPT6 .... `OPTIONS` can also be grouped as "multiple-choice" lists, where none or any option can be enabled: [.programlisting] .... OPTIONS_GROUP= GG1 OPTIONS_GROUP_GG1= OPT9 OPT10 .... `OPTIONS` are unset by default, unless they are listed in `OPTIONS_DEFAULT`: [.programlisting] .... OPTIONS_DEFAULT= OPT1 OPT3 OPT6 .... `OPTIONS` definitions must appear before the inclusion of [.filename]#bsd.port.options.mk#. `PORT_OPTIONS` values can only be tested after the inclusion of [.filename]#bsd.port.options.mk#. Inclusion of [.filename]#bsd.port.pre.mk# can be used instead, too, and is still widely used in ports written before the introduction of [.filename]#bsd.port.options.mk#. But be aware that some variables will not work as expected after the inclusion of [.filename]#bsd.port.pre.mk#, typically some `USE_*` flags. [[ports-options-simple-use]] .Simple Use of `OPTIONS` [example] ==== [.programlisting] .... OPTIONS_DEFINE= FOO BAR OPTIONS_DEFAULT=FOO FOO_DESC= Option foo support BAR_DESC= Feature bar support # Will add --with-foo / --without-foo FOO_CONFIGURE_WITH= foo BAR_RUN_DEPENDS= bar:bar/bar .include .... ==== [[ports-options-check-unset]] .Check for Unset Port `OPTIONS` [example] ==== [.programlisting] .... .if ! ${PORT_OPTIONS:MEXAMPLES} CONFIGURE_ARGS+=--without-examples .endif .... The form shown above is discouraged. The preferred method is using a configure knob to really enable and disable the feature to match the option: [.programlisting] .... # Will add --with-examples / --without-examples EXAMPLES_CONFIGURE_WITH= examples .... ==== [[ports-options-practical-use]] .Practical Use of `OPTIONS` [example] ==== [.programlisting] .... OPTIONS_DEFINE= EXAMPLES OPTIONS_DEFAULT= PGSQL LDAP SSL OPTIONS_SINGLE= BACKEND OPTIONS_SINGLE_BACKEND= MYSQL PGSQL BDB OPTIONS_MULTI= AUTH OPTIONS_MULTI_AUTH= LDAP PAM SSL EXAMPLES_DESC= Install extra examples MYSQL_DESC= Use MySQL as backend PGSQL_DESC= Use PostgreSQL as backend BDB_DESC= Use Berkeley DB as backend LDAP_DESC= Build with LDAP authentication support PAM_DESC= Build with PAM support SSL_DESC= Build with OpenSSL support # Will add USE_PGSQL=yes PGSQL_USE= pgsql=yes # Will add --enable-postgres / --disable-postgres PGSQL_CONFIGURE_ENABLE= postgres ICU_LIB_DEPENDS= libicuuc.so:devel/icu # Will add --with-examples / --without-examples EXAMPLES_CONFIGURE_WITH= examples # Check other OPTIONS .include .... ==== [[makefile-options-default]] ==== Default Options These options are always on by default. * `DOCS` - build and install documentation. * `NLS` - Native Language Support. * `EXAMPLES` - build and install examples. * `IPV6` - IPv6 protocol support. [NOTE] ==== There is no need to add these to `OPTIONS_DEFAULT`. To have them active, and show up in the options selection dialog, however, they must be added to `OPTIONS_DEFINE`. ==== [[makefile-options-auto-activation]] === Feature Auto-Activation When using a GNU configure script, keep an eye on which optional features are activated by auto-detection. Explicitly disable optional features that are not needed by adding `--without-xxx` or `--disable-xxx` in `CONFIGURE_ARGS`. [[makefile-options-auto-activation-bad]] .Wrong Handling of an Option [example] ==== [.programlisting] .... .if ${PORT_OPTIONS:MFOO} LIB_DEPENDS+= libfoo.so:devel/foo CONFIGURE_ARGS+= --enable-foo .endif .... ==== In the example above, imagine a library libfoo is installed on the system. The user does not want this application to use libfoo, so he toggled the option off in the `make config` dialog. But the application's configure script detects the library present in the system and includes its support in the resulting executable. Now when the user decides to remove libfoo from the system, the ports system does not protest (no dependency on libfoo was recorded) but the application breaks. [[makefile-options-auto-activation-good]] .Correct Handling of an Option [example] ==== [.programlisting] .... FOO_LIB_DEPENDS= libfoo.so:devel/foo # Will add --enable-foo / --disable-foo FOO_CONFIGURE_ENABLE= foo .... ==== [NOTE] ==== Under some circumstances, the shorthand conditional syntax can cause problems with complex constructs. The errors are usually `Malformed conditional`, an alternative syntax can be used. [.programlisting] .... .if !empty(VARIABLE:MVALUE) .... as an alternative to [.programlisting] .... .if ${VARIABLE:MVALUE} .... ==== [[options-helpers]] === Options Helpers There are some macros to help simplify conditional values which differ based on the options set. For easier access, a comprehensive list is provided: `PLIST_SUB`, `SUB_LIST`:: For automatic `%%_OPT_%%` and `%%NO__OPT__%%` generation, see crossref:makefiles[options_sub, `OPTIONS_SUB`]. + For more complex usage, see crossref:makefiles[options-variables, Generic Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`]. `CONFIGURE_ARGS`:: For `--enable-_x_` and `--disable-_x_`, see crossref:makefiles[options-configure_enable, `OPT_CONFIGURE_ENABLE`]. + For `--with-_x_` and `--without-_x_`, see crossref:makefiles[options-configure_with, `OPT_CONFIGURE_WITH`]. + For all other cases, see crossref:makefiles[options-configure_on, `OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`]. `CMAKE_ARGS`:: For arguments that are booleans (`on`, `off`, `true`, `false`, `0`, `1`) see crossref:makefiles[options-cmake_bool, `OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`]. + For all other cases, see crossref:makefiles[options-cmake_on, `OPT_CMAKE_ON` and `OPT_CMAKE_OFF`]. `MESON_ARGS`:: For arguments that take `true` or `false`, see crossref:makefiles[options-meson_true, `OPT_MESON_TRUE` and `OPT_MESON_FALSE`]. + For arguments that take `yes` or `no`, use crossref:makefiles[options-meson_yes, `OPT_MESON_YES` and `OPT_MESON_NO`]. + For arguments that take `enabled` or `disabled`, see crossref:makefiles[options-meson_enabled, `OPT_MESON_ENABLED` and `OPT_MESON_DISABLED`]. + For all other cases, use crossref:makefiles[options-meson_on, `OPT_MESON_ON` and `OPT_MESON_OFF`]. `QMAKE_ARGS`:: See crossref:makefiles[options-qmake_on, `OPT_QMAKE_ON` and `OPT_QMAKE_OFF`]. `USE_*`:: See crossref:makefiles[options-use, `OPT_USE` and `OPT_USE_OFF`]. `*_DEPENDS`:: See crossref:makefiles[options-dependencies, Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF`]. `*` (Any variable):: The most used variables have direct helpers, see crossref:makefiles[options-variables, Generic Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`]. + For any variable without a specific helper, see crossref:makefiles[options-vars, `OPT_VARS` and `OPT_VARS_OFF`]. Options dependencies:: When an option need another option to work, see crossref:makefiles[options-implies, `OPT_IMPLIES`]. Options conflicts:: When an option cannot work if another is also enabled, see crossref:makefiles[options-prevents, `OPT_PREVENTS` and `OPT_PREVENTS_MSG`]. Build targets:: When an option need some extra processing, see crossref:makefiles[options-targets, Additional Build Targets, `_target_-_OPT_-on` and `_target_-_OPT_-off`]. [[options_sub]] ==== `OPTIONS_SUB` If `OPTIONS_SUB` is set to `yes` then each of the options added to `OPTIONS_DEFINE` will be added to `PLIST_SUB` and `SUB_LIST`, for example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPTIONS_SUB= yes .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} PLIST_SUB+= OPT1="" NO_OPT1="@comment " SUB_LIST+= OPT1="" NO_OPT1="@comment " .else PLIST_SUB+= OPT1="@comment " NO_OPT1="" SUB_LIST+= OPT1="@comment " NO_OPT1="" .endif .... [NOTE] ==== The value of `OPTIONS_SUB` is ignored. Setting it to any value will add `PLIST_SUB` and `SUB_LIST` entries for _all_ options. ==== [[options-use]] ==== `OPT_USE` and `OPT_USE_OFF` When option _OPT_ is selected, for each `_key=value_` pair in ``OPT_USE``, _value_ is appended to the corresponding `USE_KEY`. If _value_ has spaces in it, replace them with commas and they will be changed back to spaces during processing. `OPT_USE_OFF` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_USES= xorg OPT1_USE= mysql=yes xorg=x11,xextproto,xext,xrandr OPT1_USE_OFF= openssl=yes .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} USE_MYSQL= yes USES+= xorg USE_XORG= x11 xextproto xext xrandr .else USE_OPENSSL= yes .endif .... [[options-configure-helpers]] ==== `CONFIGURE_ARGS` Helpers [[options-configure_enable]] ===== `OPT_CONFIGURE_ENABLE` When option _OPT_ is selected, for each _entry_ in `OPT_CONFIGURE_ENABLE` then `--enable-_entry_` is appended to `CONFIGURE_ARGS`. When option _OPT_ is _not_ selected, `--disable-_entry_` is appended to `CONFIGURE_ARGS`. An optional argument can be specified with an `=` symbol. This argument is only appended to the `--enable-_entry_` configure option. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_CONFIGURE_ENABLE= test1 test2 OPT2_CONFIGURE_ENABLE= test2=exhaustive .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} CONFIGURE_ARGS+= --enable-test1 --enable-test2 .else CONFIGURE_ARGS+= --disable-test1 --disable-test2 .endif .if ${PORT_OPTIONS:MOPT2} CONFIGURE_ARGS+= --enable-test2=exhaustive .else CONFIGURE_ARGS+= --disable-test2 .endif .... [[options-configure_with]] ===== `OPT_CONFIGURE_WITH` When option _OPT_ is selected, for each _entry_ in `_OPT_CONFIGURE_WITH` then `--with-_entry_` is appended to `CONFIGURE_ARGS`. When option _OPT_ is _not_ selected, `--without-_entry_` is appended to `CONFIGURE_ARGS`. An optional argument can be specified with an `=` symbol. This argument is only appended to the `--with-_entry_` configure option. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_CONFIGURE_WITH= test1 OPT2_CONFIGURE_WITH= test2=exhaustive .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 .include .if ${PORT_OPTIONS:MOPT1} CONFIGURE_ARGS+= --with-test1 .else CONFIGURE_ARGS+= --without-test1 .endif .if ${PORT_OPTIONS:MOPT2} CONFIGURE_ARGS+= --with-test2=exhaustive .else CONFIGURE_ARGS+= --without-test2 .endif .... [[options-configure_on]] ===== `OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF` When option _OPT_ is selected, the value of `OPT_CONFIGURE_ON`, if defined, is appended to `CONFIGURE_ARGS`. `OPT_CONFIGURE_OFF` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_CONFIGURE_ON= --add-test OPT1_CONFIGURE_OFF= --no-test .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} CONFIGURE_ARGS+= --add-test .else CONFIGURE_ARGS+= --no-test .endif .... [TIP] ==== Most of the time, the helpers in crossref:makefiles[options-configure_enable, `OPT_CONFIGURE_ENABLE`] and crossref:makefiles[options-configure_with, `OPT_CONFIGURE_WITH`] provide a shorter and more comprehensive functionality. ==== [[options-cmake-helpers]] ==== `CMAKE_ARGS` Helpers [[options-cmake_on]] ===== `OPT_CMAKE_ON` and `OPT_CMAKE_OFF` When option _OPT_ is selected, the value of `OPT_CMAKE_ON`, if defined, is appended to `CMAKE_ARGS`. `OPT_CMAKE_OFF` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_CMAKE_ON= -DTEST:BOOL=true -DDEBUG:BOOL=true OPT1_CMAKE_OFF= -DOPTIMIZE:BOOL=true .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} CMAKE_ARGS+= -DTEST:BOOL=true -DDEBUG:BOOL=true .else CMAKE_ARGS+= -DOPTIMIZE:BOOL=true .endif .... [TIP] ==== See crossref:makefiles[options-cmake_bool, `OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`] for a shorter helper when the value is boolean. ==== [[options-cmake_bool]] ===== `OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF` When option _OPT_ is selected, for each _entry_ in `OPT_CMAKE_BOOL` then `-D_entry_:BOOL=true` is appended to `CMAKE_ARGS`. When option _OPT_ is _not_ selected, `-D_entry_:BOOL=false` is appended to `CONFIGURE_ARGS`. `OPT_CMAKE_BOOL_OFF` is the opposite, `-D_entry_:BOOL=false` is appended to `CMAKE_ARGS` when the option is selected, and `-D_entry_:BOOL=true` when the option is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_CMAKE_BOOL= TEST DEBUG OPT1_CMAKE_BOOL_OFF= OPTIMIZE .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} CMAKE_ARGS+= -DTEST:BOOL=true -DDEBUG:BOOL=true \ -DOPTIMIZE:BOOL=false .else CMAKE_ARGS+= -DTEST:BOOL=false -DDEBUG:BOOL=false \ -DOPTIMIZE:BOOL=true .endif .... [[options-meson-helpers]] ==== `MESON_ARGS` Helpers [[options-meson_on]] ===== `OPT_MESON_ON` and `OPT_MESON_OFF` When option _OPT_ is selected, the value of `OPT_MESON_ON`, if defined, is appended to `MESON_ARGS`. `OPT_MESON_OFF` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_ON= -Dopt=1 OPT1_MESON_OFF= -Dopt=2 .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} MESON_ARGS+= -Dopt=1 .else MESON_ARGS+= -Dopt=2 .endif .... [[options-meson_true]] ===== `OPT_MESON_TRUE` and `OPT_MESON_FALSE` When option _OPT_ is selected, for each _entry_ in `OPT_MESON_TRUE` then `-D_entry_=true` is appended to `MESON_ARGS`. When option _OPT_ is _not_ selected, `-D_entry_=false` is appended to `MESON_ARGS`. `OPT_MESON_FALSE` is the opposite, `-D_entry_=false` is appended to `MESON_ARGS` when the option is selected, and `-D_entry_=true` when the option is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_TRUE= test debug OPT1_MESON_FALSE= optimize .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} MESON_ARGS+= -Dtest=true -Ddebug=true \ -Doptimize=false .else MESON_ARGS+= -Dtest=false -Ddebug=false \ -Doptimize=true .endif .... [[options-meson_yes]] ===== `OPT_MESON_YES` and `OPT_MESON_NO` When option _OPT_ is selected, for each _entry_ in `OPT_MESON_YES` then `-D_entry_=yes` is appended to `MESON_ARGS`. When option _OPT_ is _not_ selected, `-D_entry_=no` is appended to `MESON_ARGS`. `OPT_MESON_NO` is the opposite, `-D_entry_=no` is appended to `MESON_ARGS` when the option is selected, and `-D_entry_=yes` when the option is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_YES= test debug OPT1_MESON_NO= optimize .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} MESON_ARGS+= -Dtest=yes -Ddebug=yes \ -Doptimize=no .else MESON_ARGS+= -Dtest=no -Ddebug=no \ -Doptimize=yes .endif .... [[options-meson_enabled]] ===== `OPT_MESON_ENABLED` and `OPT_MESON_DISABLED` When option _OPT_ is selected, for each _entry_ in `OPT_MESON_ENABLED` then `-D_entry_=enabled` is appended to `MESON_ARGS`. When option _OPT_ is _not_ selected, `-D_entry_=disabled` is appended to `MESON_ARGS`. `OPT_MESON_DISABLED` is the opposite, `-D_entry_=disabled` is appended to `MESON_ARGS` when the option is selected, and `-D_entry_=enabled` when the option is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_ENABLED= test OPT1_MESON_DISABLED= debug .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} MESON_ARGS+= -Dtest=enabled -Ddebug=disabled .else MESON_ARGS+= -Dtest=disabled -Ddebug=enabled .endif .... [[options-qmake_on]] ==== `OPT_QMAKE_ON` and `OPT_QMAKE_OFF` When option _OPT_ is selected, the value of `OPT_QMAKE_ON`, if defined, is appended to `QMAKE_ARGS`. `OPT_QMAKE_OFF` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_QMAKE_ON= -DTEST:BOOL=true OPT1_QMAKE_OFF= -DPRODUCTION:BOOL=true .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} QMAKE_ARGS+= -DTEST:BOOL=true .else QMAKE_ARGS+= -DPRODUCTION:BOOL=true .endif .... [[options-implies]] ==== `OPT_IMPLIES` Provides a way to add dependencies between options. When _OPT_ is selected, all the options listed in this variable will be selected too. Using the crossref:makefiles[options-configure_enable,`OPT_CONFIGURE_ENABLE`] described earlier to illustrate: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_IMPLIES= OPT2 OPT1_CONFIGURE_ENABLE= opt1 OPT2_CONFIGURE_ENABLE= opt2 .... Is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 .include .if ${PORT_OPTIONS:MOPT1} CONFIGURE_ARGS+= --enable-opt1 .else CONFIGURE_ARGS+= --disable-opt1 .endif .if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1} CONFIGURE_ARGS+= --enable-opt2 .else CONFIGURE_ARGS+= --disable-opt2 .endif .... [[options-implies-ex1]] .Simple Use of `OPT_IMPLIES` [example] ==== This port has a `X11` option, and a `GNOME` option that needs the `X11` option to be selected to build. [.programlisting] .... OPTIONS_DEFINE= X11 GNOME OPTIONS_DEFAULT= X11 X11_USES= xorg X11_USE= xorg=xi,xextproto GNOME_USE= gnome=gtk30 GNOME_IMPLIES= X11 .... ==== [[options-prevents]] ==== `OPT_PREVENTS` and `OPT_PREVENTS_MSG` Provides a way to add conflicts between options. When _OPT_ is selected, all the options listed in `OPT_PREVENTS` must be un-selected. If `OPT_PREVENTS_MSG` is set and a conflict is triggered, its content will be shown explaining why they conflict. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_PREVENTS= OPT2 OPT1_PREVENTS_MSG= OPT1 and OPT2 enable conflicting options .... Is roughly equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 .include .if ${PORT_OPTIONS:MOPT2} && ${PORT_OPTIONS:MOPT1} BROKEN= Option OPT1 conflicts with OPT2 (select only one) .endif .... The only difference is that the first one will write an error after running `make config`, suggesting changing the selected options. [[options-prevents-ex1]] .Simple Use of `OPT_PREVENTS` [example] ==== This port has `X509` and `SCTP` options. Both options add patches, but the patches conflict with each other, so they cannot be selected at the same time. [.programlisting] .... OPTIONS_DEFINE= X509 SCTP SCTP_PATCHFILES= ${PORTNAME}-6.8p1-sctp-2573.patch.gz:-p1 SCTP_CONFIGURE_WITH= sctp X509_PATCH_SITES= http://www.roumenpetrov.info/openssh/x509/:x509 X509_PATCHFILES= ${PORTNAME}-7.0p1+x509-8.5.diff.gz:-p1:x509 X509_PREVENTS= SCTP X509_PREVENTS_MSG= X509 and SCTP patches conflict .... ==== [[options-vars]] ==== `OPT_VARS` and `OPT_VARS_OFF` Provides a generic way to set and append to variables. [WARNING] ==== Before using `OPT_VARS` and `OPT_VARS_OFF`, see if there is already a more specific helper available in crossref:makefiles[options-variables, Generic Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`]. ==== When option _OPT_ is selected, and `OPT_VARS` defined, `_key_=_value_` and `_key_+=_value_` pairs are evaluated from `OPT_VARS`. An `=` cause the existing value of `KEY` to be overwritten, an `+=` appends to the value. `OPT_VARS_OFF` works the same way, but when `OPT` is _not_ selected. [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT3 OPT1_VARS= also_build+=bin1 OPT2_VARS= also_build+=bin2 OPT3_VARS= bin3_build=yes OPT3_VARS_OFF= bin3_build=no MAKE_ARGS= ALSO_BUILD="${ALSO_BUILD}" BIN3_BUILD="${BIN3_BUILD}" .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 MAKE_ARGS= ALSO_BUILD="${ALSO_BUILD}" BIN3_BUILD="${BIN3_BUILD}" .include .if ${PORT_OPTIONS:MOPT1} ALSO_BUILD+= bin1 .endif .if ${PORT_OPTIONS:MOPT2} ALSO_BUILD+= bin2 .endif .if ${PORT_OPTIONS:MOPT2} BIN3_BUILD= yes .else BIN3_BUILD= no .endif .... [IMPORTANT] ==== Values containing whitespace must be enclosed in quotes: [.programlisting] .... OPT_VARS= foo="bar baz" .... This is due to the way man:make[1] variable expansion deals with whitespace. When `OPT_VARS= foo=bar baz` is expanded, the variable ends up containing two strings, `foo=bar` and `baz`. But the submitter probably intended there to be only one string, `foo=bar baz`. Quoting the value prevents whitespace from being used as a delimiter. Also, _do not_ add extra spaces after the `_var_=` sign and before the value, it would also be split into two strings. _This will not work_: [.programlisting] .... OPT_VARS= foo= bar .... ==== [[options-dependencies]] ==== Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF` For any of these dependency types: * `PKG_DEPENDS` * `EXTRACT_DEPENDS` * `PATCH_DEPENDS` * `FETCH_DEPENDS` * `BUILD_DEPENDS` * `LIB_DEPENDS` * `RUN_DEPENDS` When option _OPT_ is selected, the value of `OPT_DEPTYPE`, if defined, is appended to `DEPTYPE`. `OPT_DEPTYPE_OFF` works the same, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_LIB_DEPENDS= liba.so:devel/a OPT1_LIB_DEPENDS_OFF= libb.so:devel/b .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} LIB_DEPENDS+= liba.so:devel/a .else LIB_DEPENDS+= libb.so:devel/b .endif .... [[options-variables]] ==== Generic Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF` For any of these variables: * `ALL_TARGET` * `BINARY_ALIAS` * `BROKEN` * `CATEGORIES` * `CFLAGS` * `CONFIGURE_ENV` * `CONFLICTS` * `CONFLICTS_BUILD` * `CONFLICTS_INSTALL` * `CPPFLAGS` * `CXXFLAGS` * `DESKTOP_ENTRIES` * `DISTFILES` * `EXTRACT_ONLY` * `EXTRA_PATCHES` * `GH_ACCOUNT` * `GH_PROJECT` * `GH_SUBDIR` * `GH_TAGNAME` * `GH_TUPLE` * `GL_ACCOUNT` * `GL_COMMIT` * `GL_PROJECT` * `GL_SITE` * `GL_SUBDIR` * `GL_TUPLE` * `IGNORE` * `INFO` * `INSTALL_TARGET` * `LDFLAGS` * `LIBS` * `MAKE_ARGS` * `MAKE_ENV` * `MASTER_SITES` * `PATCHFILES` * `PATCH_SITES` * `PLIST_DIRS` * `PLIST_FILES` * `PLIST_SUB` * `PORTDOCS` * `PORTEXAMPLES` * `SUB_FILES` * `SUB_LIST` * `TEST_TARGET` * `USES` When option _OPT_ is selected, the value of `OPT_ABOVEVARIABLE`, if defined, is appended to `_ABOVEVARIABLE_`. `OPT_ABOVEVARIABLE_OFF` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_USES= gmake OPT1_CFLAGS_OFF= -DTEST .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} USES+= gmake .else CFLAGS+= -DTEST .endif .... [NOTE] ==== Some variables are not in this list, in particular `PKGNAMEPREFIX` and `PKGNAMESUFFIX`. This is intentional. A port _must not_ change its name when its option set changes. ==== [WARNING] ==== Some of these variables, at least `ALL_TARGET`, `DISTFILES` and `INSTALL_TARGET`, have their default values set _after_ the options are processed. With these lines in the [.filename]#Makefile#: [.programlisting] .... ALL_TARGET= all DOCS_ALL_TARGET= doc .... If the `DOCS` option is enabled, `ALL_TARGET` will have a final value of `all doc`; if the option is disabled, it would have a value of `all`. With only the options helper line in the [.filename]#Makefile#: [.programlisting] .... DOCS_ALL_TARGET= doc .... If the `DOCS` option is enabled, `ALL_TARGET` will have a final value of `doc`; if the option is disabled, it would have a value of `all`. ==== [[options-targets]] ==== Additional Build Targets, `_target_-_OPT_-on` and `_target_-_OPT_-off` These [.filename]#Makefile# targets can accept optional extra build targets: * `pre-fetch` * `do-fetch` * `post-fetch` * `pre-extract` * `do-extract` * `post-extract` * `pre-patch` * `do-patch` * `post-patch` * `pre-configure` * `do-configure` * `post-configure` * `pre-build` * `do-build` * `post-build` * `pre-install` * `do-install` * `post-install` * `post-stage` * `pre-package` * `do-package` * `post-package` When option _OPT_ is selected, the target `_TARGET_-_OPT_-on`, if defined, is executed after `_TARGET_`. `_TARGET_-_OPT_-off` works the same way, but when `OPT` is _not_ selected. For example: [.programlisting] .... OPTIONS_DEFINE= OPT1 post-patch-OPT1-on: @${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${EXAMPLESDIR}/|' ${WRKSRC}/Makefile post-patch-OPT1-off: @${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${PREFIX}/bin/|' ${WRKSRC}/Makefile .... is equivalent to: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include post-patch: .if ${PORT_OPTIONS:MOPT1} @${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${EXAMPLESDIR}/|' ${WRKSRC}/Makefile .else @${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${PREFIX}/bin/|' ${WRKSRC}/Makefile .endif .... [[makefile-wrkdir]] == Specifying the Working Directory Each port is extracted into a working directory, which must be writable. The ports system defaults to having `DISTFILES` unpack in to a directory called `${DISTNAME}`. In other words, if the [.filename]#Makefile# has: [.programlisting] .... PORTNAME= foo DISTVERSION= 1.0 .... then the port's distribution files contain a top-level directory, [.filename]#foo-1.0#, and the rest of the files are located under that directory. A number of variables can be overridden if that is not the case. [[makefile-wrksrc]] === `WRKSRC` The variable lists the name of the directory that is created when the application's distfiles are extracted. If our previous example extracted into a directory called [.filename]#foo# (and not [.filename]#foo-1.0#) write: [.programlisting] .... WRKSRC= ${WRKDIR}/foo .... or possibly [.programlisting] .... WRKSRC= ${WRKDIR}/${PORTNAME} .... [[makefile-wrksrc_subdir]] === `WRKSRC_SUBDIR` If the source files needed for the port are in a subdirectory of the extracted distribution file, set `WRKSRC_SUBDIR` to that directory. [.programlisting] .... WRKSRC_SUBDIR= src .... [[makefile-no_wrksubdir]] === `NO_WRKSUBDIR` If the port does not extract in to a subdirectory at all, then set `NO_WRKSUBDIR` to indicate that. [.programlisting] .... NO_WRKSUBDIR= yes .... [NOTE] ==== Because `WRKDIR` is the only directory that is supposed to be writable during the build, and is used to store many files recording the status of the build, the port's extraction will be forced into a subdirectory. ==== [[conflicts]] == Conflict Handling There are three different variables to register a conflict between packages and ports: `CONFLICTS`, `CONFLICTS_INSTALL` and `CONFLICTS_BUILD`. [NOTE] ==== The conflict variables automatically set the variable `IGNORE`, which is more fully documented in crossref:porting-dads[dads-noinstall,Marking a Port Not Installable with `BROKEN`, `FORBIDDEN`, or `IGNORE`]. ==== When removing one of several conflicting ports, it is advisable to retain `CONFLICTS` in those other ports for a few months to cater for users who only update once in a while. [[conclicts-conflicts_install]] `CONFLICTS_INSTALL`:: If the package cannot coexist with other packages (because of file conflicts, runtime incompatibilities, etc.). `CONFLICTS_INSTALL` check is done after the build stage and prior to the install stage. [[conclicts-conflicts_build]] `CONFLICTS_BUILD`:: If the port cannot be built when other specific ports are already installed. Build conflicts are not recorded in the resulting package. [[conclicts-conflicts]] `CONFLICTS`:: If the port cannot be built if a certain port is already installed and the resulting package cannot coexist with the other package. `CONFLICTS` check is done prior to the build stage and prior to the install stage. Each space-separated item in the `CONFLICTS*` variable values is matched against packages except the one being built, using shell globbing rules. This allows listing all flavors of a port in a conflict list instead of having to take pains to exclude the flavor being built from that list. For example, if git-lite is installed, `CONFLICTS_INSTALL=git git-lite` would allow to perform: [source,shell] .... % make -C devel/git FLAVOR=lite all deinstall install .... But the following command would report a conflict, since the package base name installed is `git-lite`, while `git` would be built, but cannot be installed in addition to `git-lite`: [source,shell] .... % make -C devel/git FLAVOR=default all deinstall install .... Without that feature, the Makefile would need one `_flavor__CONFLICTS_INSTALL` for each flavor, listing every other flavor. The most common content of one of these variable is the package base of another port. The package base is the package name without the appended version, it can be obtained by running `make -V PKGBASE`. [[conflicts-ex1]] .Basic usage of `CONFLICTS*` [example] ==== package:dns/bind99[] cannot be installed if package:dns/bind910[] is present because they install same files. First gather the package base to use: [source,shell] .... % make -C dns/bind99 -V PKGBASE bind99 % make -C dns/bind910 -V PKGBASE bind910 .... Then add to the [.filename]#Makefile# of package:dns/bind99[]: [.programlisting] .... CONFLICTS_INSTALL= bind910 .... And add to the [.filename]#Makefile# of package:dns/bind910[]: [.programlisting] .... CONFLICTS_INSTALL= bind99 .... ==== Sometimes, only certain versions of another port are incompatible. When this is the case, use the full package name including the version. If necessary, use shell globs like `*` and `?` so that all necessary versions are matched. [[conflicts-ex2]] .Using `CONFLICTS*` With Globs. [example] ==== From versions from 2.0 and up-to 2.4.1_2, package:deskutils/gnotime[] used to install a bundled version of package:databases/qof[]. To reflect this past, the [.filename]#Makefile# of package:databases/qof[] contains: [.programlisting] .... CONFLICTS_INSTALL= gnotime-2.[0-3]* \ gnotime-2.4.0* gnotime-2.4.1 \ gnotime-2.4.1_[12] .... The first entry match versions `2.0` through `2.3`, the second all the revisions of `2.4.0`, the third the exact `2.4.1` version, and the last the first and second revisions of the `2.4.1` version. package:deskutils/gnotime[] does not have any conflicts line because its current version does not conflict with anything else. ==== The variable `DISABLE_CONFLICTS` may be temporarily set when making targets that are not affected by conflicts. The variable is not to be set in port Makefiles. [source,shell] .... % make -DDISABLE_CONFLICTS patch .... [[install]] == Installing Files [IMPORTANT] ==== The `install` phase is very important to the end user because it adds files to their system. All the additional commands run in the port [.filename]#Makefile#'s `*-install` targets should be echoed to the screen. _Do not_ silence these commands with `@` or `.SILENT`. ==== [[install-macros]] === `INSTALL_*` Macros Use the macros provided in [.filename]#bsd.port.mk# to ensure correct modes of files in the port's `*-install` targets. Set ownership directly in [.filename]#pkg-plist# with the corresponding entries, such as `@(_owner_,_group_,)`, `@owner _owner_`, and `@group _group_`. These operators work until overridden, or until the end of [.filename]#pkg-plist#, so remember to reset them after they are no longer needed. The default ownership is `root:wheel`. See crossref:plist[plist-keywords-base,Base Keywords] for more information. * `INSTALL_PROGRAM` is a command to install binary executables. * `INSTALL_SCRIPT` is a command to install executable scripts. * `INSTALL_LIB` is a command to install shared libraries (but not static libraries). * `INSTALL_KLD` is a command to install kernel loadable modules. Some architectures do not like having the modules stripped, so use this command instead of `INSTALL_PROGRAM`. * `INSTALL_DATA` is a command to install sharable data, including static libraries. * `INSTALL_MAN` is a command to install manpages and other documentation (it does not compress anything). These variables are set to the man:install[1] command with the appropriate flags for each situation. [IMPORTANT] ==== Do not use `INSTALL_LIB` to install static libraries, because stripping them renders them useless. Use `INSTALL_DATA` instead. ==== [[install-strip]] === Stripping Binaries and Shared Libraries Installed binaries should be stripped. Do not strip binaries manually unless absolutely required. The `INSTALL_PROGRAM` macro installs and strips a binary at the same time. The `INSTALL_LIB` macro does the same thing to shared libraries. When a file must be stripped, but neither `INSTALL_PROGRAM` nor `INSTALL_LIB` macros are desirable, `${STRIP_CMD}` strips the program or shared library. This is typically done within the `post-install` target. For example: [.programlisting] .... post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl .... When multiple files need to be stripped: [.programlisting] .... post-install: .for l in geometry media body track world ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0 .endfor .... Use man:file[1] on a file to determine if it has been stripped. Binaries are reported by man:file[1] as `stripped`, or `not stripped`. Additionally, man:strip[1] will detect programs that have already been stripped and exit cleanly. [IMPORTANT] ==== When `WITH_DEBUG` is defined, elf files _must not_ be stripped. The variables (`STRIP_CMD`, `INSTALL_PROGRAM`, `INSTALL_LIB`, ...) and crossref:uses[uses,`USES`] provided by the framework handle this automatically. Some software, add `-s` to their `LDFLAGS`, in this case, either remove `-s` if `WITH_DEBUG` is set, or remove it unconditionally and use `STRIP_CMD` in `post-install`. ==== [[install-copytree]] === Installing a Whole Tree of Files Sometimes, a large number of files must be installed while preserving their hierarchical organization. For example, copying over a whole directory tree from `WRKSRC` to a target directory under `PREFIX`. Note that `PREFIX`, `EXAMPLESDIR`, `DATADIR`, and other path variables must always be prepended with `STAGEDIR` to respect staging (see crossref:special[staging,Staging]). Two macros exist for this situation. The advantage of using these macros instead of `cp` is that they guarantee proper file ownership and permissions on target files. The first macro, `COPYTREE_BIN`, will set all the installed files to be executable, thus being suitable for installing into [.filename]#PREFIX/bin#. The second macro, `COPYTREE_SHARE`, does not set executable permissions on files, and is therefore suitable for installing files under [.filename]#PREFIX/share# target. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) .... This example will install the contents of the [.filename]#examples# directory in the vendor distfile to the proper examples location of the port. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${DATADIR}/summer (cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} "June July August" ${STAGEDIR}${DATADIR}/summer) .... And this example will install the data of summer months to the [.filename]#summer# subdirectory of a [.filename]#DATADIR#. Additional `find` arguments can be passed via the third argument to `COPYTREE_*` macros. For example, to install all files from the first example except Makefiles, one can use these commands. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} (cd ${WRKSRC}/examples && \ ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} "! -name Makefile") .... These macros do not add the installed files to [.filename]#pkg-plist#. They must be added manually. For optional documentation (`PORTDOCS`, see crossref:makefiles[install-documentation, Install Additional Documentation]) and examples (`PORTEXAMPLES`), the `%%PORTDOCS%%` or `%%PORTEXAMPLES%%` prefixes must be prepended in [.filename]#pkg-plist#. [[install-documentation]] === Install Additional Documentation If the software has some documentation other than the standard man and info pages that is useful for the user, install it under `DOCSDIR`. This can be done, like the previous item, in the `post-install` target. Create a new directory for the port. The directory name is `DOCSDIR`. This usually equals `PORTNAME`. However, if the user might want different versions of the port to be installed at the same time, the whole `PKGNAME` can be used. Since only the files listed in [.filename]#pkg-plist# are installed, it is safe to always install documentation to `STAGEDIR` (see crossref:special[staging,Staging]). Hence `.if` blocks are only needed when the installed files are large enough to cause significant I/O overhead. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR} .... On the other hand, if there is a DOCS option in the port, install the documentation in a `post-install-DOCS-on` target. These targets are described in crossref:makefiles[options-targets, Additional Build Targets, `_target_-_OPT_-on` and `_target_-_OPT_-off`]. Here are some handy variables and how they are expanded by default when used in the [.filename]#Makefile#: * `DATADIR` gets expanded to [.filename]#PREFIX/share/PORTNAME#. * `DATADIR_REL` gets expanded to [.filename]#share/PORTNAME#. * `DOCSDIR` gets expanded to [.filename]#PREFIX/share/doc/PORTNAME#. * `DOCSDIR_REL` gets expanded to [.filename]#share/doc/PORTNAME#. * `EXAMPLESDIR` gets expanded to [.filename]#PREFIX/share/examples/PORTNAME#. * `EXAMPLESDIR_REL` gets expanded to [.filename]#share/examples/PORTNAME#. [NOTE] ==== The `DOCS` option only controls additional documentation installed in `DOCSDIR`. It does not apply to standard man pages and info pages. Things installed in `EXAMPLESDIR` are controlled by the `EXAMPLES` option. ==== These variables are exported to `PLIST_SUB`. Their values will appear there as pathnames relative to [.filename]#PREFIX# if possible. That is, [.filename]#share/doc/PORTNAME# will be substituted for `%%DOCSDIR%%` in the packing list by default, and so on. (See more on [.filename]#pkg-plist# substitution crossref:plist[plist-sub,here].) All conditionally installed documentation files and directories are included in [.filename]#pkg-plist# with the `%%PORTDOCS%%` prefix, for example: [.programlisting] .... %%PORTDOCS%%%%DOCSDIR%%/AUTHORS %%PORTDOCS%%%%DOCSDIR%%/CONTACT .... As an alternative to enumerating the documentation files in [.filename]#pkg-plist#, a port can set the variable `PORTDOCS` to a list of file names and shell glob patterns to add to the final packing list. The names will be relative to `DOCSDIR`. Therefore, a port that utilizes `PORTDOCS`, and uses a non-default location for its documentation, must set `DOCSDIR` accordingly. If a directory is listed in `PORTDOCS` or matched by a glob pattern from this variable, the entire subtree of contained files and directories will be registered in the final packing list. If the `DOCS` option has been unset then files and directories listed in `PORTDOCS` would not be installed or added to port packing list. Installing the documentation at `PORTDOCS` as shown above remains up to the port itself. A typical example of utilizing `PORTDOCS`: [.programlisting] .... PORTDOCS= README.* ChangeLog docs/* .... [NOTE] ==== The equivalents of `PORTDOCS` for files installed under `DATADIR` and `EXAMPLESDIR` are `PORTDATA` and `PORTEXAMPLES`, respectively. The contents of [.filename]#pkg-message# are displayed upon installation. See crossref:pkg-files[porting-message,the section on using [.filename]#pkg-message#] for details. [.filename]#pkg-message# does not need to be added to [.filename]#pkg-plist#. ==== [[install-subdirs]] === Subdirectories Under `PREFIX` Try to let the port put things in the right subdirectories of `PREFIX`. Some ports lump everything and put it in the subdirectory with the port's name, which is incorrect. Also, many ports put everything except binaries, header files and manual pages in a subdirectory of [.filename]#lib#, which does not work well with the BSD paradigm. Many of the files must be moved to one of these directories: [.filename]#etc# (setup/configuration files), [.filename]#libexec# (executables started internally), [.filename]#sbin# (executables for superusers/managers), [.filename]#info# (documentation for info browser) or [.filename]#share# (architecture independent files). See man:hier[7] for details; the rules governing [.filename]#/usr# pretty much apply to [.filename]#/usr/local# too. The exception are ports dealing with USENET "news". They may use [.filename]#PREFIX/news# as a destination for their files. [[binary-alias]] == Use `BINARY_ALIAS` to Rename Commands Instead of Patching the Build When `BINARY_ALIAS` is defined it will create symlinks of the given commands in a directory which will be prepended to `PATH`. Use it to substitute hardcoded commands the build phase relies on without having to patch any build files. [[binary-alias-ex1]] .Using `BINARY_ALIAS` to Make `gsed` Available as `sed` [example] ==== Some ports expect `sed` to behave like GNU sed and use features that man:sed[1] does not provide. GNU sed is available from package:textproc/gsed[] on FreeBSD. Use `BINARY_ALIAS` to substitute `sed` with `gsed` for the duration of the build: [.programlisting] .... BUILD_DEPENDS= gsed:textproc/gsed ... BINARY_ALIAS= sed=gsed .... ==== [[binary-alias-ex2]] .Using `BINARY_ALIAS` to Provide Aliases for Hardcoded `python3` Commands [example] ==== A port that has a hardcoded reference to `python3` in its build scripts will need to have it available in `PATH` at build time. Use `BINARY_ALIAS` to create an alias that points to the right Python 3 binary: [.programlisting] .... USES= python:3.4+,build ... BINARY_ALIAS= python3=${PYTHON_CMD} .... See crossref:special[using-python,Using Python] for more information about `USES=python`. ==== [NOTE] ==== Binary aliases are created after the dependencies provided via `BUILD_DEPENDS` and `LIB_DEPENDS` are processed and before the `configure` target. This leads to various limitations. For example, programs installed via `TEST_DEPENDS` cannot be used to create a binary alias as test dependencies specified this way are processed after binary aliases are created. ==== diff --git a/documentation/content/en/books/porters-handbook/testing/_index.adoc b/documentation/content/en/books/porters-handbook/testing/_index.adoc index 0f7239536f..4c94b4fc85 100644 --- a/documentation/content/en/books/porters-handbook/testing/_index.adoc +++ b/documentation/content/en/books/porters-handbook/testing/_index.adoc @@ -1,671 +1,667 @@ --- title: Chapter 10. Testing the Port prev: books/porters-handbook/pkg-files next: books/porters-handbook/upgrading description: Testing a FreeBSD Port tags: ["testing", "port", "Portclippy", "Portfmt", "Portlint", "poudriere", "sets"] showBookMenu: true weight: 10 params: path: "/books/porters-handbook/testing/" --- [[testing]] = Testing the Port :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 10 :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::[] [[make-describe]] == Running `make describe` Several of the FreeBSD port maintenance tools, such as man:portupgrade[1], rely on a database called [.filename]#/usr/ports/INDEX# which keeps track of such items as port dependencies. [.filename]#INDEX# is created by the top-level [.filename]#ports/Makefile# via `make index`, which descends into each port subdirectory and executes `make describe` there. Thus, if `make describe` fails in any port, no one can generate [.filename]#INDEX#, and many people will quickly become unhappy. [NOTE] ==== It is important to be able to generate this file no matter what options are present in [.filename]#make.conf#, so please avoid doing things such as using `.error` statements when (for instance) a dependency is not satisfied. (See crossref:porting-dads[dads-dot-error,Avoid Use of the `.error` Construct].) ==== If `make describe` produces a string rather than an error message, everything is probably safe. See [.filename]#bsd.port.mk# for the meaning of the string produced. Also note that running a recent version of `portlint` (as specified in the next section) will cause `make describe` to be run automatically. [[make-test]] == Running `make test` Even if the port builds fine, it is a good idea to ensure that the software correctly does what it is supposed to do. If the original upstream project provides tests along with the software, it is a good idea to run them and check everything works as expected. A port can enable tests automatically by using the `TEST_TARGET` variable. When set, this variable contains the name of the testing target of the port. This is usually just `test` but other names include `tests`, `check` or for specific cases things like `run_tests.py`. In addition to the `TEST_TARGET` variable the framework provides the following variables to control the tests execution: * `TEST_WRKSRC` is the directory to do the tests in. * `TEST_ENV` contains additional variables to be passed to the test stage. * `TEST_ARGS` contains any extra arguments passed to the test stage. Examples of use of these variables can be found in package:cad/xyce[], package:www/libjwt[] and others. [NOTE] ==== Please make sure that tests do not break when updating a port. ==== [[testing-portclippy]] == Portclippy / Portfmt Those tools come from package:ports-mgmt/portfmt[]. Portclippy is a linter that checks if variables in the [.filename]#Makefile# are in the correct order according to crossref:order[porting-order,Order of Variables in Port Makefiles]. Portfmt is a tool for automatically formatting [.filename]#Makefile#. [[testing-portlint]] == Portlint Do check the port with crossref:quick-porting[porting-portlint,`portlint`] before submitting or committing it. `portlint` warns about many common errors, both functional and stylistic. For a new port, `portlint -A` is the most thorough; for an existing port, `portlint -C` is sufficient. Since `portlint` uses heuristics to try to figure out errors, it can produce false positive warnings. In addition, occasionally something that is flagged as a problem really cannot be done in any other way due to limitations in the ports framework. -pass:[] When in doubt, the best thing to do is ask on {freebsd-ports}. -pass:[] [[testing-porttools]] == Port Tools The package:ports-mgmt/porttools[] program is part of the Ports Collection. `port` is the front-end script, which can help simplify the testing job. Whenever a new port or an update to an existing one needs testing, use `port test` to test the port, including the crossref:testing[testing-portlint,`portlint`] checking. This command also detects and lists any files that are not listed in [.filename]#pkg-plist#. For example: [source,shell] .... # port test /usr/ports/net/csup .... [[porting-prefix]] == `PREFIX` and `DESTDIR` `PREFIX` determines where the port will be installed. It defaults to [.filename]#/usr/local#, but can be set by the user to a custom path like [.filename]#/opt#. The port must respect the value of this variable. `DESTDIR`, if set by the user, determines the complete alternative environment, usually a jail or an installed system mounted somewhere other than [.filename]#/#. A port will actually install into [.filename]#DESTDIR/PREFIX#, and register with the package database in [.filename]#DESTDIR/var/db/pkg#. `DESTDIR` is handled automatically by the ports infrastructure with man:chroot[8]. There is no need for modifications or any extra care to write `DESTDIR`-compliant ports. The value of `PREFIX` will be set to `LOCALBASE` (defaulting to [.filename]#/usr/local#). If `USE_LINUX_PREFIX` is set, `PREFIX` will be `LINUXBASE` (defaulting to [.filename]#/compat/linux#). Avoiding hard-coded [.filename]#/usr/local# paths in the source makes the port much more flexible and able to cater to the needs of other sites. Often, this can be accomplished by replacing occurrences of [.filename]#/usr/local# in the port's various [.filename]##Makefile##s with `${PREFIX}`. This variable is automatically passed down to every stage of the build and install processes. Make sure the application is not installing things in [.filename]#/usr/local# instead of `PREFIX`. A quick test for such hard-coded paths is: [source,shell] .... % make clean; make package PREFIX=/var/tmp/`make -V PORTNAME` .... If anything is installed outside of `PREFIX`, the package creation process will complain that it cannot find the files. In addition, it is worth checking the same with the stage directory support (see crossref:special[staging,Staging]): [source,shell] .... % make stage && make check-plist && make stage-qa && make package .... * `check-plist` checks for files missing from the plist, and files in the plist that are not installed by the port. * `stage-qa` checks for common problems like bad shebang, symlinks pointing outside the stage directory, setuid files, and non-stripped libraries... These tests will not find hard-coded paths inside the port's files, nor will it verify that `LOCALBASE` is being used to correctly refer to files from other ports. The temporarily installed port in [.filename]#/var/tmp/`make -V PORTNAME`# must be tested for proper operation to make sure there are no problems with paths. `PREFIX` must not be set explicitly in a port's [.filename]#Makefile#. Users installing the port may have set `PREFIX` to a custom location, and the port must respect that setting. Refer to programs and files from other ports with the variables mentioned above, not explicit pathnames. For instance, if the port requires a macro `PAGER` to have the full pathname of `less`, do not use a literal path of [.filename]#/usr/local/bin/less#. Instead, use `${LOCALBASE}`: [.programlisting] .... -DPAGER=\"${LOCALBASE}/bin/less\" .... The path with `LOCALBASE` is more likely to still work if the system administrator has moved the whole [.filename]#/usr/local# tree somewhere else. [TIP] ==== All these tests are done automatically when running `poudriere testport` or `poudriere bulk -t`. It is highly recommended that every ports contributor install and test their ports with it. See crossref:testing[testing-poudriere, poudriere] for more information. ==== [[testing-poudriere]] == poudriere For a ports contributor, poudriere is one of the most important and helpful testing and build tools. Its main features include: * Bulk building of the entire ports tree, specific subsets of the ports tree, or a single port including its dependencies * Automatic packaging of build results * Generation of build log files per port * Providing a signed man:pkg[8] repository * Testing of port builds before submitting a patch to the FreeBSD bug tracker or committing to the ports tree * Testing for successful ports builds using different options Because poudriere performs its building in a clean man:jail[8] environment and uses man:zfs[8] features, it has several advantages over traditional testing on the host system: * No pollution of the host environment: No leftover files, no accidental removals, no changes of existing configuration files. * Verify [.filename]#pkg-plist# for missing or superfluous entries * Ports committers sometimes ask for a poudriere log alongside a patch submission to assess whether the patch is ready for integration into the ports tree It is also quite straightforward to set up and use, has no dependencies, and will run on any supported FreeBSD release. This section shows how to install, configure, and run poudriere as part of the normal workflow of a ports contributor. The examples in this section show a default file layout, as standard in FreeBSD. Substitute any local changes accordingly. The ports tree, represented by `${PORTSDIR}`, is located in [.filename]#/usr/ports#. Both `${LOCALBASE}` and `${PREFIX}` are [.filename]#/usr/local# by default. [[testing-poudriere-installing]] === Installing poudriere poudriere is available in the ports tree in package:ports-mgmt/poudriere[]. It can be installed using man:pkg[8] or from ports: [source,shell] .... # pkg install poudriere .... or [source,shell] .... # make -C /usr/ports/ports-mgmt/poudriere install clean .... There is also a work-in-progress version of poudriere which will eventually become the next release. It is available in package:ports-mgmt/poudriere-devel[]. This development version is used for the official FreeBSD package builds, so it is well tested. It often has newer interesting features. A ports committer will want to use the development version because it is what is used in production, and has all the new features that will make sure everything is exactly right. A contributor will not necessarily need those as the most important fixes are backported to released version. The main reason for the use of the development version to build the official package is because it is faster, in a way that will shorten a full build from 18 hours to 17 hours when using a high end 32 CPU server with 128GB of RAM. Those optimizations will not matter a lot when building ports on a desktop machine. [[testing-poudriere-setup]] === Setting Up poudriere The port installs a default configuration file, [.filename]#/usr/local/etc/poudriere.conf#. Each parameter is documented in the configuration file. Here is a minimal example config file: [.programlisting] .... ZPOOL=zroot BASEFS=/usr/local/poudriere DISTFILES_CACHE=/usr/ports/distfiles RESOLV_CONF=/etc/resolv.conf .... `ZPOOL`:: The name of the ZFS storage pool which poudriere shall use. Must be listed in the output of `zpool status`. `BASEFS`:: The root mount point for poudriere file systems. This entry will cause poudriere to mount `tank/poudriere` to `/poudriere`. `DISTFILES_CACHE`:: Defines where distfiles are stored. In this example, poudriere and the host share the distfiles storage directory. This avoids downloading tarballs which are already present on the system. Please create this directory if it does not already exist so that poudriere can find it. `RESOLV_CONF`:: Use the host [.filename]#/etc/resolv.conf# inside jails for DNS. This is needed so jails can resolve the URLs of distfiles when downloading. It is not needed when using a proxy. Refer to the default configuration file for proxy configuration. [[testing-poudriere-create-jails]] === Creating poudriere Jails Create the base jails which poudriere will use for building: [source,shell] .... # poudriere jail -c -j 131Ramd64 -v 13.1-RELEASE -a amd64 .... Fetch a `13.1-RELEASE` for `amd64` from the FTP server given by `FREEBSD_HOST` in [.filename]#poudriere.conf#, create the zfs file system `tank/poudriere/jails/131Ramd64`, mount it on [.filename]#/poudriere/jails/131Ramd64# and extract the `13.1-RELEASE` tarballs into this file system. [source,shell] .... # poudriere jail -c -j 12i386 -v stable/12 -a i386 -m git+https .... Create `tank/poudriere/jails/12i386`, mount it on [.filename]#/poudriere/jails/12i386#, then check out the tip of the Git branch of `FreeBSD-12-STABLE` from `GIT_HOST` in [.filename]#poudriere.conf# or the default `git.freebsd.org` into [.filename]#/poudriere/jails/12i386/usr/src#, then complete a `buildworld` and install it into [.filename]#/poudriere/jails/12i386#. [NOTE] ==== While it is possible to build a newer version of FreeBSD on an older version, most of the time it will not run. For example, if a `stable/13` jail is needed, the host will have to run `stable/13` too. Running `13.1-RELEASE` is not enough. ==== [NOTE] ==== To create a poudriere jail for `14.0-CURRENT`: [source,shell] .... # poudriere jail -c -j 14amd64 -v main -a amd64 -m git+https .... In order to run a `14.0-CURRENT` poudriere jail the host must be running `14.0-CURRENT`. In general, newer kernels can build and run older jails. For instance, a `14.0-CURRENT` kernel can build and run a `12.4-STABLE` if the `COMPAT_FREEBSD12` kernel option was compiled in (on by default in `14.0-CURRENT`[.filename]#GENERIC# kernel config). ==== A list of jails currently known to poudriere can be shown with `poudriere jail -l`: [source,shell] .... # poudriere jail -l JAILNAME VERSION ARCH METHOD 131Ramd64 13.1-RELEASE amd64 ftp 12i386 12.4-STABLE i386 git+https .... [[testing-poudriere-maintaining-jails]] === Keeping poudriere Jails Updated Managing updates is very straightforward. The command: [source,shell] .... # poudriere jail -u -j JAILNAME .... updates the specified jail to the latest version available. -pass:[] For FreeBSD releases, update to the latest patchlevel with man:freebsd-update[8]. -pass:[] For FreeBSD versions built from source, update to the latest git revision in the branch. [TIP] ==== For jails employing a `git+*` method, it is helpful to add `-J _NumberOfParallelBuildJobs_` to speed up the build by increasing the number of parallel compile jobs used. For example, if the building machine has 6 CPUs, use: [source,shell] .... # poudriere jail -u -J 6 -j JAILNAME .... ==== [[testing-poudriere-ports-tree]] === Setting Up Ports Trees for Use with poudriere There are multiple ways to use ports trees in poudriere. The most straightforward way is to have poudriere create a default ports tree for itself, using link:{handbook}mirrors/#git[Git]: [source,shell] .... # poudriere ports -c -m git+https -B main .... These commands create `tank/poudriere/ports/default`, mount it on [.filename]#/poudriere/ports/default#, and populate it using Git. Afterward it is included in the list of known ports trees: [source,shell] .... # poudriere ports -l PORTSTREE METHOD TIMESTAMP PATH default git+https 2020-07-20 04:23:56 /poudriere/ports/default .... [NOTE] ==== Note that the "default" ports tree is special. Each of the build commands explained later will implicitly use this ports tree unless specifically specified otherwise. To use another tree, add `-p _treename_` to the commands. ==== The best way to deal with local modifications for a ports contributor is to use link:{handbook}mirrors/#git[Git]. As with the creation of jails, it is possible to use a different method for creating the ports tree. To add an additional ports tree for testing local modifications and ports development, checking out the tree via git (as described above) is preferable. [[testing-poudriere-ports-tree-manual]] === Using Manually Managed Ports Trees with poudriere Depending on the workflow, it can be extremely helpful to use ports trees which are maintained manually. For instance, if there is a local copy of the ports tree in [.filename]#/work/ports#, point poudriere to the location: [source,shell] .... # poudriere ports -c -m null -M /work/ports -p development .... This will be listed in the table of known trees: [source,shell] .... # poudriere ports -l PORTSTREE METHOD TIMESTAMP PATH development null 2020-07-20 05:06:33 /work/ports .... [NOTE] ==== The dash or `null` in the `METHOD` column means that poudriere will not update or change this ports tree, ever. It is completely up to the user to maintain this tree, including all local modifications that may be used for testing new ports and submitting patches. ==== [[testing-poudriere-ports-tree-updating]] === Keeping poudriere Ports Trees Updated As straightforward as with jails described earlier: [source,shell] .... # poudriere ports -u -p PORTSTREE .... Will update the given _PORTSTREE_, one tree given by the output of `poudriere -l`, to the latest revision available on the official servers. [NOTE] ==== Ports trees without a method, see crossref:testing[testing-poudriere-ports-tree-manual, Using Manually Managed Ports Trees with poudriere], cannot be updated like this and must be updated manually by the porter. ==== [[testing-poudriere-testing-ports]] === Testing Ports After jails and ports trees have been set up, the result of a contributor's modifications to the ports tree can be tested. For example, local modifications to the package:www/firefox[] port located in [.filename]#/work/ports/www/firefox# can be tested in the previously created 13.1-RELEASE jail: [source,shell] .... # poudriere testport -j 131Ramd64 -p development -o www/firefox .... This will build all dependencies of Firefox. If a dependency has been built previously and is still up-to-date, the pre-built package is installed. If a dependency has no up-to-date package, one will be built with default options in a jail. Then Firefox itself is built. The complete build of every port is logged to [.filename]#/poudriere/data/logs/bulk/131Ri386-development/build-time/logs#. The directory name `131Ri386-development` is derived from the arguments to `-j` and `-p`, respectively. For convenience, a symbolic link [.filename]#/poudriere/data/logs/bulk/131Ri386-development/latest# is also maintained. The link points to the latest _build-time_ directory. Also in this directory is an [.filename]#index.html# for observing the build process with a web browser. By default, poudriere cleans up the jails and leaves log files in the directories mentioned above. To ease investigation, jails can be kept running after the build by adding `-i` to `testport`: [source,shell] .... # poudriere testport -j 131Ramd64 -p development -i -o www/firefox .... After the build completes, and regardless of whether it was successful, a shell is provided within the jail. The shell is used to investigate further. poudriere can be told to leave the jail running after the build finishes with `-I`. poudriere will show the command to run when the jail is no longer needed. It is then possible to man:jexec[8] into it: [source,shell] .... # poudriere testport -j 131Ramd64 -p development -I -o www/firefox [...] ====>> Installing local Pkg repository to /usr/local/etc/pkg/repos ====>> Leaving jail 131Ramd64-development-n running, mounted at /poudriere/data/.m/131Ramd64-development/ref for interactive run testing ====>> To enter jail: jexec 131Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root ====>> To stop jail: poudriere jail -k -j 131Ramd64 -p development # jexec 131Ramd64-development-n env -i TERM=$TERM /usr/bin/login -fp root # [do some stuff in the jail] # exit # poudriere jail -k -j 131Ramd64 -p development ====>> Umounting file systems .... An integral part of the FreeBSD ports build infrastructure is the ability to tweak ports to personal preferences with options. These can be tested with poudriere as well. Adding the `-c`: [source,shell] .... # poudriere testport -j 131Ramd64 -c -o www/firefox .... Presents the port configuration dialog before the port is built. The ports given after `-o` in the format `_category_/_portname_` will use the specified options, all dependencies will use the default options. Testing dependent ports with non-default options can be accomplished using sets, see crossref:testing[testing-poudriere-sets, Using Sets]. [TIP] ==== When testing ports where [.filename]#pkg-plist# is altered during build depending on the selected options, it is recommended to perform a test run with all options selected _and_ one with all options deselected. ==== [[testing-poudriere-sets]] === Using Sets For all actions involving builds, a so-called _set_ can be specified using `-z _setname_`. A set refers to a fully independent build. This allows, for instance, usage of `testport` with non-standard options for the dependent ports. To use sets, poudriere expects an existing directory structure similar to `PORT_DBDIR`, defaults to [.filename]#/var/db/ports# in its configuration directory. This directory is then man:nullfs[5]-mounted into the jails where the ports and their dependencies are built. Usually a suitable starting point can be obtained by recursively copying the existing `PORT_DBDIR` to [.filename]#/usr/local/etc/poudriere.d/jailname-portname-setname-options#. This is described in detail in man:poudriere[8]. For instance, testing package:www/firefox[] in a specific set named `devset`, add the `-z devset` parameter to the `testport` command: [source,shell] .... # poudriere testport -j 131Ramd64 -p development -z devset -o www/firefox .... This will look for the existence of these directories in this order: * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-options# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-options# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-options# * [.filename]#/usr/local/etc/poudriere.d/devset-options# * [.filename]#/usr/local/etc/poudriere.d/development-options# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-options# * [.filename]#/usr/local/etc/poudriere.d/options# From this list, poudriere man:nullfs[5]-mounts the _first existing_ directory tree into the [.filename]#/var/db/ports# directory of the build jails. Hence, all custom options are used for all the ports during this run of `testport`. After the directory structure for a set is provided, the options for a particular port can be altered. For example: [source,shell] .... # poudriere options -c www/firefox -z devset .... The configuration dialog for package:www/firefox[] is shown, and options can be edited. The selected options are saved to the `devset` set. [NOTE] ==== poudriere is very flexible in the option configuration. poudriere can be set for particular jails, ports trees, and for multiple ports by one command. Refer to man:poudriere[8] for details. ==== [[testing-poudriere-make-conf]] === Providing a Custom [.filename]#make.conf# File Similar to using sets, poudriere will also use a custom [.filename]#make.conf# if it is provided. No special command line argument is necessary. Instead, poudriere looks for existing files matching a name scheme derived from the command line. For instance: [source,shell] .... # poudriere testport -j 131Ramd64 -p development -z devset -o www/firefox .... causes poudriere to check for the existence of these files in this order: * [.filename]#/usr/local/etc/poudriere.d/make.conf# * [.filename]#/usr/local/etc/poudriere.d/devset-make.conf# * [.filename]#/usr/local/etc/poudriere.d/development-make.conf# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-make.conf# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-make.conf# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-devset-make.conf# * [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-make.conf# Unlike with sets, all of the found files will be appended, _in that order_, into one [.filename]#make.conf# inside the build jails. It is hence possible to have general make variables, intended to affect all builds in [.filename]#/usr/local/etc/poudriere.d/make.conf#. Special variables, intended to affect only certain jails or sets can be set in specialised [.filename]#make.conf# files, such as [.filename]#/usr/local/etc/poudriere.d/131Ramd64-development-devset-make.conf#. [[testing-poudriere-sets-perl]] .Using [.filename]#make.conf# to Change Default Perl [example] ==== To build a set with a non default Perl version, for example, `5.20`, using a set named `perl5-20`, create a [.filename]#perl5-20-make.conf# with this line: [.programlisting] .... DEFAULT_VERSIONS+= perl=5.20 .... [NOTE] **** Note the use of `+=` so that if the variable is already set in the default [.filename]#make.conf# its content will not be overwritten. **** ==== [[testing-poudriere-pruning-distfiles]] === Pruning no Longer Needed Distfiles poudriere comes with a built-in mechanism to remove outdated distfiles that are no longer used by any port of a given tree. The command [source,shell] .... # poudriere distclean -p portstree .... will scan the distfiles folder, `DISTFILES_CACHE` in [.filename]#poudriere.conf#, versus the ports tree given by the `-p _portstree_` argument and prompt for removal of those distfiles. To skip the prompt and remove all unused files unconditionally, the `-y` argument can be added: [source,shell] .... # poudriere distclean -p portstree -y .... [[testing-debugging-ports]] == Debugging ports Sometimes things go wrong and the port fails at run time. The framework provides some facilities to help in debugging ports. These helpers are limited since the way of debugging a port heavily depends on the technology used. The following variables help with debugging ports: * `WITH_DEBUG`. If set, ports are built with debugging symbols. * `WITH_DEBUG_PORTS`. Specifies a list of ports to be built with `WITH_DEBUG` set. * `DEBUG_FLAGS`. Used to specify additional flags to `CFLAGS`. Defaults to `-g`. When `WITH_DEBUG` is set, either globally or for a list of ports, the resulting binaries are not stripped. These variables can be specified in [.filename]#make.conf# or in the command line: [source,shell] .... # cd category/port && make -DWITH_DEBUG DEBUG_FLAGSS="-g -O0" .... [NOTE] ==== If the port is built using package:ports-mgmt/poudriere[] the debugging variables must be specified in poudriere's [.filename]#make.conf# and not in [.filename]#/etc/make.conf#. Refer to package:ports-mgmt/poudriere[] documentation for details. ==== Please refer to the debugging information in the extref:{developers-handbook}tools[Developer's Handbook, debugging] for more details about the debugging tools available. diff --git a/documentation/content/en/books/porters-handbook/versions/_index.adoc b/documentation/content/en/books/porters-handbook/versions/_index.adoc index f7aeec0525..e633ba2fb7 100644 --- a/documentation/content/en/books/porters-handbook/versions/_index.adoc +++ b/documentation/content/en/books/porters-handbook/versions/_index.adoc @@ -1,7622 +1,7616 @@ --- title: Chapter 18. __FreeBSD_version Values prev: books/porters-handbook/uses description: A list of changes to the sys/param.h file tags: ["FreeBSD versions"] showBookMenu: true weight: 18 params: path: "/books/porters-handbook/versions/" --- [[versions]] = `__FreeBSD_version` Values :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 18 :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::[] Here is a convenient list of `__FreeBSD_version` values as defined in https://cgit.freebsd.org/src/tree/sys/sys/param.h[sys/param.h]: [[versions-15]] == FreeBSD 15 Versions [[freebsd-versions-table-15]] .FreeBSD 15 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |1500000 |gitref:29a16ce065dbc28bc9e87c9bfadb08bb58b137e4[repository="src",length=12] |August 24, 2023 |15.0-CURRENT. |1500001 |gitref:a6662c37b6ffee46e18be5f7570149edc64c1d0b[repository="src",length=12] |September 17, 2023 |15.0-CURRENT after implementing `fpu_kern_enter` and `fpu_kern_leave` for powerpc. |1500002 |gitref:17f5e2b904aff8e4863199a137ee21ef0939bcf4[repository="src",length=12] |October 18, 2023 |15.0-CURRENT after changing the internal KAPI between the nfscommon and nfscl modules. |1500003 |gitref:ef85fd507e6e1784a726bccd485129e00bb63311[repository="src",length=12] |November 1, 2023 |15.0-CURRENT after removal of the forward compat code for the inode64 conversion. |1500004 |gitref:7fabea328fed60d5207b262d2372e85a7f731eef[repository="src",length=12] |November 23, 2023 |15.0-CURRENT after adding a new VFS function called `vfs_exjail_clone()`, which will be used by the ZFS module. |1500005 |gitref:21fce617d1de231a30833cdd9819ef61277b08d8[repository="src",length=12] |November 27, 2023 |15.0-CURRENT after a string of mechanical changes to the tree: SCCS IDs removed, #if 0'd copyright strings removed, mechanical style fix after this churn and some macros removed from [.filename]#sys/cdefs.h#. |1500006 |gitref:c711af7727824da79d87f375f3d6829feec3799a[repository="src",length=12] |December 8, 2023 |15.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-17.0.6-0-g6009708b4367, a.k.a. 17.0.6 release. |1500007 |gitref:8ccd0b876e67fda6249f294ff484798cc1e1569f[repository="src",length=12] |December 11, 2023 |15.0-CURRENT after exposing execvpe for Linux compat in libc. |1500008 |gitref:9bf957fc9b378e0f9e65eb97e84c2166b450fccc[repository="src",length=12] |December 24, 2023 |15.0-CURRENT after LinuxKPI changes. |1500009 |gitref:b068bb09a1a82d9fef0e939ad6135443a959e290[repository="src",length=12] |January 11, 2024 |15.0-CURRENT after adding man:vnode_pager_clean_async[9] and man:vnode_pager_clean_sync[9]. |1500010 |gitref:a2da1bdb61bc2d9db0b4268f53281e7c0bbce0bc[repository="src",length=12] |January 12, 2024 |15.0-CURRENT after changing the internal KAPI between the nfscommon and nfscl modules. |1500011 |gitref:a2da1bdb61bc2d9db0b4268f53281e7c0bbce0bc[repository="src",length=12] |January 17, 2024 |15.0-CURRENT after adding zfs.dataset support to man:jail[8]. |1500012 |gitref:120ceebab5d4947dfc80d7492effa034a925d43e[repository="src",length=12] |January 24, 2024 |15.0-CURRENT after adding man:kern_openatfp[9] and man:kcmp[2]. |1500013 |gitref:d04abb05375d3525132f1e9f78090db3d0d27f14[repository="src",length=12] |February 7, 2024 |15.0-CURRENT after adding libsys. |1500014 |gitref:ed27ae8df4b10f67289a32458d89d143e758f6d4[repository="src",length=12] |February 11, 2024 |15.0-CURRENT after switching clang and other LLVM executables to build as PIE. |1500015 |gitref:a7b9f4d96e8bdc30db27ec7a193a8d8fdf7c652c[repository="src",length=12] |March 13, 2024 |15.0-CURRENT after removing redundant `type` and `rid` arguments from several functions in the new-bus resource API. |1500016 |gitref:60bc9617e79e99bdf670304923f3baed4b749ad3[repository="src",length=12] |March 18, 2024 |15.0-CURRENT after introducing man:livedump_start_vnode[9]. |1500017 |gitref:bcd401b5a39c6186bb1fe450286299f2a481244c[repository="src",length=12] |March 20, 2024 |15.0-CURRENT after fixing a clang assertion or crash when building recent boost libraries. |1500018 |gitref:0192eda105b367d4670205547e8e830e3716bea3[repository="src",length=12] |April 6, 2024 |15.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-18.1.3-0-gc13b7485b879, a.k.a. 18.1.3 release. |1500019 |gitref:e03e8b07743385e5b199409074fb60b1a9ed1fac[repository="src",length=12] |May 31, 2024 |15.0-CURRENT after redefining `CLOCK_BOOTTIME` to alias `CLOCK_MONOTONIC` instead of `CLOCK_UPTIME`. |1500020 |gitref:7818c2d37c2c600fc9ad6f2a0951e50dd21b17c8[repository="src",length=12] |July 12, 2024 |15.0-CURRENT after removing support for building armv6. |1500021 |gitref:24388fccd551f79f64e54099a7d78196535c0a29[repository="src",length=12] |July 21, 2024 |15.0-CURRENT after LinuxKPI changes. |1500022 |gitref:a1740cb93639648b41055958ad8c7f6083efdc96[repository="src",length=12] |July 29, 2024 |15.0-CURRENT after removing kernel stack swapping support. |1500023 |gitref:1206cf04a717a55bc15255ed043b066941cb43f2[repository="src",length=12] |July 30, 2024 |15.0-CURRENT after adding new flags to man:malloc[9]. |1500024 |gitref:e3953c036f9d66c85b8e19f99f0710b3288ce5fb[repository="src",length=12] |October 2, 2024 |15.0-CURRENT after bumping [.filename]#libmd.so.6# to [.filename]#libmd.so.7#. |1500025 |gitref:9d52823bf1dfac237e58b5208299aaa5e2df42e9[repository="src",length=12] |October 6, 2024 |15.0-CURRENT after widening the `flags` field in `vm_object`. |1500026 |gitref:f3dbef108212460489ae68b4c47e20b73984f433[repository="src",length=12] |October 23, 2024 |15.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-19.1.2-0-g7ba7d8e2f7b6, a.k.a. 19.1.2 release. |1500027 |gitref:893d044346d5ae5fe10cc188b8b0762efd2a5b27[repository="src",length=12] |November 14, 2024 |15.0-CURRENT after hiding `struct ifnet` and changing man:sound[4]'s device registration KPI. |1500028 |gitref:cab31f5633c1ffdd8b24749a3c9dd22c59568503[repository="src",length=12] |November 25, 2024 |15.0-CURRENT after adding a `TDA_PSELECT` flag for early restoration of signal masks. |1500029 |gitref:46297859a74563dde6fc5bff9f9ecded9fb61ba6[repository="src",length=12] |December 6, 2024 |15.0-CURRENT after adding `bus_attach_children`, `bus_detach_children`, and `bus_identify_children`. |1500030 |gitref:b196276c20b577b364372f1aa1a646b9ce34bf5c[repository="src",length=12] |January 2, 2025 |15.0-CURRENT after changing `bus_generic_detach` to delete child devices after detaching them. |1500037 |gitref:7acd5af48cf1870ec48d5910dff1a26466d98074[repository="src",length=12] |April 12, 2025 |15.0-CURRENT after changing alloc changes to LinuxKPI. |1500038 |gitref:[repository="src",length=12] |April 19, 2025 |15.0-CURRENT after removal of vm_page_next() and _prev. |1500039 |gitref:[repository="src",length=12] |May 4, 2025 |15.0-CURRENT after introducing a properly typed jiffies. |1500040 |gitref:[repository="src",length=12] |May 4, 2025 |15.0-CURRENT after the internal API between the nfscommon and nfscl modules changed. |1500045 |gitref:a02180cf60a6a0102669b678e9c81ad9f1aa4d91[repository="src",length=12] |June 3, 2025 |15.0-CURRENT after pulling in dma-mapping.h changes from drm-kmod to LinuxKPI. |=== [[versions-14]] == FreeBSD 14 Versions [[freebsd-versions-table-14]] .FreeBSD 14 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |1400000 |gitref:a53ce3fc4938e37d5ec89304846203d2083c61a2[repository="src",length=12] |January 22, 2021 |14.0-CURRENT. |1400001 |gitref:739ecbcf1c4fd22b5f6ee0bb180a67644046a3e0[repository="src",length=12] |January 23, 2021 |14.0-CURRENT after adding symlink support to lockless lookup. |1400002 |gitref:2cf84258922f306a3f84866685d2f5346f67db58[repository="src",length=12] |January 26, 2021 |14.0-CURRENT after fixing a clang assertion when building the package:devel/onetbb[] port. |1400003 |gitref:d386f3a3c32f0396aa7995349dd65d6c59711393[repository="src",length=12] |January 28, 2021 |14.0-CURRENT after adding various LinuxKPI bits conflicting with drm-kmod. |1400004 |gitref:68f6800ce05c386ff045b4416d8595d09c4d8fdd[repository="src",length=12] |February 8, 2021 |14.0-CURRENT after kernel interfaces for dispatching cryptographic operations were changed. |1400005 |gitref:45eabf5754ac1d291bd677fdf29f59ce4bbc2c8f[repository="src",length=12] |February 17, 2021 |14.0-CURRENT after changing the API of man:ptrace[2] `PT_GETDBREGS`/`PT_SETDBREGS` on arm64. |1400006 |gitref:c96151d33509655efb7fb26768cb56a041c176f1[repository="src",length=12] |March 17, 2021 |14.0-CURRENT after adding man:sndstat[4] enumeration ioctls. |1400007 |gitref:d36d6816151705907393889d661cbfd25c630ca8[repository="src",length=12] |April 6, 2021 |14.0-CURRENT after fixing wrong `dlpi_tls_data`. |1400008 |gitref:e152bbecb221a592e7dbcabe3d1170a60f0d0dfe[repository="src",length=12] |April 11, 2021 |14.0-CURRENT after changing the internal KAPI between the `krpc` and NFS modules. |1400009 |gitref:9ca874cf740ee68c5742df8b5f9e20910085c011[repository="src",length=12] |April 20, 2021 |14.0-CURRENT after adding TCP LRO support for VLAN and VxLAN. |1400010 |gitref:a3a02acde1009f03dc78e979e051acee9f9247c2[repository="src",length=12] |April 21, 2021 |14.0-CURRENT after changing the man:sndstat[4] ioctls `nvlist` schema and definitions. |1400015 |gitref:d72cd275187c6399caf0ca4125292dc7e55fa478[repository="src",length=12] |May 25, 2021 |14.0-CURRENT after adding more LinuxKPI changes needing adjustments to drm-kmod. |1400016 |gitref:21e3c1fbe2460f144f6d4dfd61c3346b2de59667[repository="src",length=12] |May 25, 2021 |14.0-CURRENT after removing support for KTLS software backends. |1400017 |gitref:beb817edfe22cdea91e19a60c42caabd9404da48[repository="src",length=12] |May 25, 2021 |14.0-CURRENT after adding `crypto_cursor_segment()`. |1400018 |gitref:a4b07a2701f568c2c0f0c0426091f1489244a92d[repository="src",length=12] |May 30, 2021 |14.0-CURRENT after allowing the man:VFS_QUOTACTL[9] implementation to indicate busy state changes. |1400019 |gitref:37d64dcdfa519157aff9711f1f226ad7bd778f46[repository="src",length=12] |June 7, 2021 |14.0-CURRENT after including `pr_err_once()` in the LinuxKPI [.filename]#printk.h#. |1400020 |gitref:8a1a42b2a7a428fb97fda9f19fd0d67a4eec7535[repository="src",length=12] |June 9, 2021 |14.0-CURRENT after adding macros for `might_lock_nested()` and `lockdep_(re/un/)pin_lock()` to the LinuxKPI. |1400021 |gitref:b47f461c8e67253fdb394968428b760e880baa08[repository="src",length=12] |June 10, 2021 |14.0-CURRENT after adding a `list_for_each_entry_lockless()` macro to the LinuxKPI. |1400022 |gitref:40cc9a3a6b81a65a03712dfd93bbed48552a97ad[repository="src",length=12] |June 11, 2021 |14.0-CURRENT after commit gitref:e1a907a25cfa422c0d1acaf9f91352ada04f4bca[repository="src",length=12] changed the internal KAPI between the `krpc` and nfsserver modules. |1400023 |gitref:d409305fa3838fb39b38c26fc085fb729b8766d5[repository="src",length=12] |June 13, 2021 |14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.0-0-gd28af7c654d8, a.k.a. 12.0.0 release. |1400024 |gitref:41dfd8bd6466fd39957dee2614d88c81cdf420a7[repository="src",length=12] |June 18, 2021 |14.0-CURRENT after various additions to LinuxKPI. |1400025 |gitref:5fa1eb1cd927219070b5753b64114a9240d76bf8[repository="src",length=12] |July 5, 2021 |14.0-CURRENT after various additions to LinuxKPI. |1400026 |gitref:fad3f322efb53d4924fdda34f9f23f881659c269[repository="src",length=12] |July 16, 2021 |14.0-CURRENT after changing the internal KAPI between the nfscommon and nfsd modules. |1400027 |gitref:cc55ee8009a550810d38777fd6ace9abf3a2f6b4[repository="src",length=12] |July 28, 2021 |14.0-CURRENT after adding out-of-line LSE atomics helpers to [.filename]#libcompiler_rt.a# on aarch64. |1400028 |gitref:792b602a337ddc5efaa5e5326d9433fe3da7f303[repository="src",length=12] |July 31, 2021 |14.0-CURRENT after making FPU sections thread-safe in the LinuxKPI. |1400029 |gitref:245ec7651e4221043d1032fb3f82f335dc65fc7f[repository="src",length=12] |August 5, 2021 |14.0-CURRENT after adding man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9]. |1400030 |gitref:95941b963606f6e03282cd6f866f3166dcedfa5b[repository="src",length=12] |August 12, 2021 |14.0-CURRENT after man:VOP_DEALLOCATE[9] parameter changes and addition of man:fspacectl[2] support to POSIX shared memory. |1400031 |gitref:1a4c5061fc5ba8f2eee41456a6873547915f268a[repository="src",length=12] |August 24, 2021 |14.0-CURRENT after changing man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9] to update rmsr.r_offset to a meaningful value. |1400032 |gitref:76321d2d432ed270d93b282e54e59b708c0cf3b4[repository="src",length=12] |August 25, 2021 |14.0-CURRENT after changing man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9] to make calculating the number of bytes zeroed easier. |1400033 |gitref:c751d067c166db71ce8bf3a323c62ac3428bd32a[repository="src",length=12] |September 7, 2021 |14.0-CURRENT after moving the socket buffer locks into the containing socket and renaming sb(un)lock to SOCK_IO_RECV_LOCK, SOCK_IO_RECV_UNLOCK, SOCK_IO_SEND_LOCK, and SOCK_IO_SEND_UNLOCK. |1400034 |gitref:c751d067c166db71ce8bf3a323c62ac3428bd32a[repository="src",length=12] |September 29, 2021 |14.0-CURRENT after LinuxKPI changes. |1400035 |gitref:16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0[repository="src",length=12] |October 4, 2021 |14.0-CURRENT after splitting libtinfow from libncurses. |1400036 |gitref:ac847dbf73685a5df9f70bbcdefa9fdeb559071d[repository="src",length=12] |October 6, 2021 |14.0-CURRENT after extending the AES-CCM and Chacha20-Poly1305 ciphers in OCF to support multiple nonce lengths. |1400037 |gitref:2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3[repository="src",length=12] |October 11, 2021 |14.0-CURRENT after removal of thread argument from man:VOP_STAT[9] and `fo_stat`. |1400038 |gitref:0d6516b453469ce1d92ec903c4c4df9ee08be0f9[repository="src",length=12] |October 17, 2021 |14.0-CURRENT after LinuxKPI gained support of lazy BAR allocation. |1400039 |gitref:bd49c454ca62170506a98959c1acab7ad50c3276[repository="src",length=12] |October 19, 2021 |14.0-CURRENT after page allocator changes. |1400040 |gitref:f38bef2ce417d6270f32b4ed17cec84bfd95d548[repository="src",length=12] |October 30, 2021 |14.0-CURRENT after libdialog shared library version number bump. |1400041 |gitref:0c276dee030b241e12e1ceb1b2ab619004f08ce1[repository="src",length=12] |November 6, 2021 |14.0-CURRENT after changing the arguments for man:VOP_ALLOCATE[9]. |1400042 |gitref:20aa359773befc8182f6b5dcb5aad7390cab6c26[repository="src",length=12] |November 13, 2021 |14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-13.0.0-0-gd7b669b3a303, a.k.a. 13.0.0 release. |1400043 |gitref:7e1d3eefd410ca0fbae5a217422821244c3eeee4[repository="src",length=12] |November 25, 2021 |14.0-CURRENT after removing the unused thread argument from man:NDINIT[9]*. |1400044 |gitref:ec434c85b46dd715da1940e2a8911bf476b0e477[repository="src",length=12] |December 9, 2021 |14.0-CURRENT after changing in-kernel software crypto ciphers transforms to support AEAD ciphers and changing the Blake-2S/B auth transforms to support Init before Setkey like other auth transforms. |1400045 |gitref:b214fcceacad6b842545150664bd2695c1c2b34f[repository="src",length=12] |December 15, 2021 |14.0-CURRENT after changing man:VOP_READDIR[9]'s cookies argument to a `**uint64_t`. |1400046 |gitref:e2650af157bc7489deaf2c9054995f0f88a6e5da[repository="src",length=12] |December 30, 2021 |14.0-CURRENT after making the CPU_SET macros compatible with glibc. |1400047 |gitref:ed6417cd8d0bb5a2c175fce9d8e4a495fae9e9f4[repository="src",length=12] |January 17, 2022 |14.0-CURRENT after multiple LinuxKPI changes required by drm-kmod. |1400048 |gitref:dd2f7a4b45eb1285e710cfce60cb77f7c11f8075[repository="src",length=12] |January 18, 2022 |14.0-CURRENT after adding . |1400049 |gitref:2c4b65cc3d227f31864e183c15f6c42e2c596cd9[repository="src",length=12] |January 24, 2022 |14.0-CURRENT after adding . |1400050 |gitref:213e91399b7998554d787bb290109ebe602aa279[repository="src",length=12] |January 25, 2022 |14.0-CURRENT after iflib adds the feature that a driver can set its own TX queue selection function as `ift_txq_select` in struct `if_txrx`. |1400051 |gitref:59d465e200bb7058dfdb183c061730c10dd5bc03[repository="src",length=12] |January 25, 2022 |14.0-CURRENT after adding i2c support for LinuxKPI. |1400052 |gitref:05f0b24bfb3416606c8ea02bc1bdb9bcee7aee0c[repository="src",length=12] |February 14, 2022 |14.0-CURRENT after adding GUID_INIT and pm_qos.h support for LinuxKPI. |1400053 |gitref:ba87e9bf74202b08b8e3b0a297b9b88f6869fbfb[repository="src",length=12] |February 17, 2022 |14.0-CURRENT after adding mmap_lock.h to LinuxKPI. |1400054 |gitref:50bb3a33d879536e86e8a23365f070ef00b5cb32[repository="src",length=12] |March 28, 2022 |14.0-CURRENT after changing `irq_work_queue` to return a bool in LinuxKPI to match 5.10 API. |1400055 |gitref:d69af4758be912625ec08656ba64eb90a98c9a7f[repository="src",length=12] |March 29, 2022 |14.0-CURRENT after adding `for_each_sgtable_dma_sg` and `for_each_sgtable_dma_page` to LinuxKPI |1400056 |gitref:ab8ac4c28574a42a2891b2e2341f802949c1fb57[repository="src",length=12] |March 31, 2022 |14.0-CURRENT after zlib upgrade to 1.2.12 |1400057 |gitref:e68b35e40881a1bd858e1b4b5003123a484fd7cd[repository="src",length=12] |April 22, 2022 |14.0-CURRENT after changing udp_tun_func_t() prototype. |1400058 |gitref:2e32d4e41d205d6f14834f87306a77ff77b9c0bd[repository="src",length=12] |May 7, 2022 |14.0-CURRENT after newbus changes to remove devclass arguments. |1400059 |gitref:3a9a9c0ca44ec535dcf73fe8462bee458e54814b[repository="src",length=12] |May 14, 2022 |14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-14.0.3-0-g1f9140064dfb, a.k.a. 14.0.3 release. |1400060 |gitref:85d7875d42913c2cb10a007a1be05b210dc6aab2[repository="src",length=12] |June 6, 2022 |14.0-CURRENT after LinuxKPI dmi_matches() fixes. |1400061 |gitref:c4c5981c14d5bd69e9df9ae691069ec4c2e92174[repository="src",length=12] |June 8, 2022 |14.0-CURRENT after man:mbuf[9] structure changes. |1400062 |gitref:8c309d48aabf1cb469334c7716033f177a2715c0[repository="src",length=12] |June 18, 2022 |14.0-CURRENT after struct `kinfo_file` changes. |1400063 |gitref:8cff8e6e13a6d3ccff40fc0d8d97f5aef22a8f4d[repository="src",length=12] |June 29, 2022 |14.0-CURRENT after multiple LinuxKPI changes required by drm-kmod. |1400064 |gitref:ddd9004e7a5dbf02c34ef0effcef90f7d5df357d[repository="src",length=12] |July 18, 2022 |14.0-CURRENT after the removal of OBJT_DEFAULT. |1400065 |gitref:b273f93657cf0e6f2c6ee4d0f40a43656233c6d0[repository="src",length=12] |August 8, 2022 |14.0-CURRENT after multiple LinuxKPI changes required by drm-kmod. |1400066 |gitref:ff7812ee7d444b738a454064f9639c3feb5743e8[repository="src",length=12] |August 18, 2022 |14.0-CURRENT after multiple LinuxKPI changes required by drm-kmod. |1400069 |gitref:f95c0bc89ea4fcde04b0990d57e842ef387ea896[repository="src",length=12] |September 22, 2022 |14.0-CURRENT after multiple LinuxKPI changes. |1400070 |gitref:6bddde307e21eba297ac3f3e534b4cf3be81dfe2[repository="src",length=12] |September 22, 2022 |14.0-CURRENT after KPI changes to pmap_unmapdev() and kmem_*(). |1400071 |gitref:d3f96f661050e9bd21fe29931992a8b9e67ff189[repository="src",length=12] |September 26, 2022 |14.0-CURRENT after KPI changes that sysctl OIDs lists converted to RB trees. |1400072 |gitref:8a96874eeeee5195b0b0952b77227bef6a26d1a6[repository="src",length=12] |September 22, 2022 |14.0-CURRENT after `qsort_r` prototype modified to match POSIX. |1400073 |gitref:9c950139051298831ce19d01ea5fb33ec6ea7f89[repository="src",length=12] |October 17, 2022 |14.0-CURRENT after introduction of v2 of TX Queue Select Functionality. |1400074 |gitref:e28932c643e891294a49f386ba65322cf8410225[repository="src",length=12] |December 9, 2022 |14.0-CURRENT after adding spare fops slots in fileops. |1400078 |gitref:4b56afaf7bf4fa37bae5b26fd93ee1ff5969c1bb[repository="src",length=12] |January 13, 2023 |14.0-CURRENT after changing LinuxKPI pci.h. |1400079 |gitref:3264f6b88fce7c5437d205685863617d8f6a22dd[repository="src",length=12] |February 8, 2023 |14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-15.0.7-0-g8dfdcc7b7bf6, a.k.a. 15.0.7 release. |1400084 |gitref:ea3061526e9ce5d3b65932c1d3e4437abd556d65[repository="src",length=12] |March 23, 2023 |14.0-CURRENT after changing the arm64 struct reg, struct gpreg, struct trapframe, and struct pcb. |1400085 |gitref:1cebc9298cf2272da46c3c574d06a80ce59854aa[repository="src",length=12] |March 28, 2023 |14.0-CURRENT after multiple LinuxKPI changes. |1400086 |gitref:c17eb99a66e7d1e8a64458a969eeb7649f827493[repository="src",length=12] |April 8, 2023 |14.0-CURRENT after vn_lock_pair() argument changes. |1400087 |gitref:af22da75a035e25cb47cd3f2eabe5a84d8a5cb34[repository="src",length=12] |April 22, 2023 |14.0-CURRENT after LinuxKPI updates. |1400088 |gitref:97583aa2567589cb83540d2d9de1980b76db9a99[repository="src",length=12] |April 24, 2023 |14.0-CURRENT after migrating the LinuxKPI to IfAPI. |1400089 |gitref:9fb6718d1b180c341373b25c03dbfc221ddee311[repository="src",length=12] |April 25, 2023 |14.0-CURRENT after dynamically allocating the stoppcbs array in smp. |1400090 |gitref:653738e895ba022be1179a95a85089e7bc66dbbe[repository="src",length=12] |June 7, 2023 |14.0-CURRENT after ptrace started clearing TDB_BORN during PT_DETACH. |1400091 |gitref:a681cba16d8967651a2146385ce44a2bfeb1c4c3[repository="src",length=12] |June 22, 2023 |14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-16.0.6-0-g7cbf1a259152, a.k.a. 16.0.6 release. |1400092 |gitref:9ead001d5b42ef9cba04757c9e7ee74c06037139[repository="src",length=12] |June 24, 2023 |14.0-CURRENT after importing OpenSSL 3.0.9 into base. |1400093 |gitref:ba8cc6d7271a50fec978a1d3a088aec7985fae48[repository="src",length=12] |July 5, 2023 |14.0-CURRENT after using __enum_uint8 for vtype and vstate in VFS |1400097 |gitref:29a16ce065dbc28bc9e87c9bfadb08bb58b137e4[repository="src",length=12] |August 24, 2023 |14.0-STABLE after branching stable/14 |1400500 |gitref:29a16ce065dbc28bc9e87c9bfadb08bb58b137e4[repository="src",length=12] |September 8, 2023 |14.0-STABLE after branching releng/14.0 |1400501 |gitref:91e53779b4fc39e755a03190f785ce0cf3f83eb7[repository="src",length=12] |November 19, 2023 |14.0-STABLE after implementing `fpu_kern_enter` and `fpu_kern_leave` for powerpc. |1400502 |gitref:092abb839d1d2826533bb9c4c93d713f8b5043f9[repository="src",length=12] |December 24, 2023 |14.0-STABLE after modifying the internal API between the kgssapi and krpc modules. |1400503 |gitref:ba99d960884d50eb7d36146914206644ee132aa4[repository="src",length=12] |December 29, 2023 |14.0-STABLE after changing the internal KAPI between the nfscommon and nfscl modules. |1400504 |gitref:68584c97ecfb3046de7fb1b16c2caa785392237c[repository="src",length=12] |January 7, 2024 |14.0-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-17.0.6-0-g6009708b4367, a.k.a. 17.0.6 release. |1400505 |gitref:64e869e9b93c8ce47f874b770df696c06bcba0d3[repository="src",length=12] |January 7, 2024 |14.0-STABLE after adding man:vnode_pager_clean_async[9] and man:vnode_pager_clean_sync[9]. |1400506 |gitref:d9041710958227194c5e34b169ae73d7ad411017[repository="src",length=12] |January 19, 2024 |14.0-STABLE after changing the internal KAPI between the nfscommon and nfscl modules. |1400507 |gitref:b566e44b2b88eb9f1b3b658998c7418cccab9e2f[repository="src",length=12] |January 31, 2024 |14.0-STABLE after adding man:kern_openatfp[9] and man:kcmp[2]. |1400508 |gitref:2d120981e26dfef5c9cb9eb9936bb46cb6918136[repository="src",length=12] |February 18, 2024 |14.0-STABLE after LinuxKPI updates. |1400509 |gitref:b392b36d3776b696601ce0253256803276d24ea2[repository="src",length=12] |February 18, 2024 |14.0-STABLE after changing net80211 `struct ieee80211vap` internals. |1400510 |gitref:69da6e0879831f1ccc5c60135ed43fcea10a933b[repository="src",length=12] |March 23, 2024 |14.0-STABLE after fixing a clang assertion or crash when building recent boost libraries. |1400511 |gitref:7c41358a2b0a2e70a2b61ec347354f3452e4d2f3[repository="src",length=12] |April 20, 2024 |14.0-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-18.1.3-0-gc13b7485b879, a.k.a. 18.1.3 release. |1401500 |gitref:7b082bdf72e65f94b9b17d9fa1d0c1c202e4eb49[repository="src",length=12] |May 2, 2024 |14.1-STABLE after it was renamed from 14.1-PRERELEASE. |1401501 |gitref:f285eabc89ce8ccf3aaf563401df942e406c2b5f[repository="src",length=12] |June 6, 2024 |14.1-STABLE after adding the linuxkpi_video module. |1401502 |gitref:b37a6d41a046dbb46ee1d6bf00c710c03c944a24[repository="src",length=12] |August 2, 2024 |14.1-STABLE after LinuxKPI changes. |1401503 |gitref:8a5a9dbf389e86d278764ababf2f1eb8ee276680[repository="src",length=12] |October 15, 2024 |14.1-STABLE after widening the `flags` field in `vm_object`. |1402500 |gitref:4e8444d5750a5d9da9c812e8f6caf6d62862be0a[repository="src",length=12] |October 31, 2024 |14.2-STABLE after it was renamed from 14.2-PRERELEASE. |1402501 |gitref:35d2f335e855af816d0a7fe5baf6a3facba84562[repository="src",length=12] |December 1, 2024 |14.2-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-19.1.4-0-gaadaa00de76e, a.k.a. 19.1.4 release. |1402502 |gitref:d172f42e4ba7ba8542ae0866aaba56e329b4ea2c[repository="src",length=12] |February 27, 2025 |14.2-STABLE after removing redundant `type` and `rid` arguments from several functions in the new-bus resource API. |1402503 |gitref:4aed8b3b613c5e1499336e4d7ec7e9a3ac3d9a12[repository="src",length=12] |February 27, 2025 |14.2-STABLE after adding `bus_attach_children`, `bus_detach_children`, and `bus_identify_children`. |1402505 |gitref:a3b2d8e360c37853035f9cede6064c4602312bfc[repository="src",length=12] |April 18, 2025 |14.2-STABLE after changing alloc changes to LinuxKPI and removing iwlwifi firmware. |1403503 |gitref:6cdcf08c9c5eda6dc3b8395cefd9d30a4f5e2f1a[repository="src",length=12] |July 13, 2025 |14.3-STABLE after LinuxKPI dma-mapping.h and acpi changes. |=== //// Template: |14XXXXX |gitref:XXXXXXXX[repository="src",length=12] |October 30, 2021 |14.0-CURRENT after XXXXXX. //// [[versions-13]] == FreeBSD 13 Versions [[freebsd-versions-table-13]] .FreeBSD 13 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |1300000 |link:https://svnweb.freebsd.org/changeset/base/339436[339436] |October 19, 2018 |13.0-CURRENT. |1300001 |link:https://svnweb.freebsd.org/changeset/base/339730[339730] |October 25, 2018 |13.0-CURRENT after bumping OpenSSL shared library version numbers. |1300002 |link:https://svnweb.freebsd.org/changeset/base/339765[339765] |October 25, 2018 |13.0-CURRENT after restoration of [.filename]#sys/joystick.h#. |1300003 |link:https://svnweb.freebsd.org/changeset/base/340055[340055] |November 2, 2018 |13.0-CURRENT after `vop_symlink` API change (`a_target` is now `const`.) |1300004 |link:https://svnweb.freebsd.org/changeset/base/340841[340841] |November 23, 2018 |13.0-CURRENT after enabling crtbegin and crtend code. |1300005 |link:https://svnweb.freebsd.org/changeset/base/341836[341836] |December 11, 2018 |13.0-CURRENT after enabling UFS inode checksums. |1300006 |link:https://svnweb.freebsd.org/changeset/base/342398[342398] |December 24, 2018 |13.0-CURRENT after fixing [.filename]#sys/random.h# include to be usable from C++. |1300007 |link:https://svnweb.freebsd.org/changeset/base/342629[342629] |December 30, 2018 |13.0-CURRENT after changing the size of `struct linux_cdev` on 32-bit platforms. |1300008 |link:https://svnweb.freebsd.org/changeset/base/342772[342772] |January 4, 2019 |13.0-CURRENT after adding `kern.smp.threads_per_core` and `kern.smp.cores` sysctls. |1300009 |link:https://svnweb.freebsd.org/changeset/base/343213[343213] |January 20, 2019 |13.0-CURRENT after `struct ieee80211vap` structure change to resolve ioctl/detach race for ieee80211com structure. |1300010 |link:https://svnweb.freebsd.org/changeset/base/343485[343485] |January 27, 2019 |13.0-CURRENT after increasing `SPECNAMELEN` from 63 to `MAXNAMELEN` (255). |1300011 |link:https://svnweb.freebsd.org/changeset/base/344041[344041] |February 12, 2019 |13.0-CURRENT after man:renameat[2] has been corrected to work with kernels built with the `CAPABILITIES` option. |1300012 |link:https://svnweb.freebsd.org/changeset/base/344062[344062] |February 12, 2019 |13.0-CURRENT after `taskqgroup_attach()` and `taskqgroup_attach_cpu()` take a `device_t` and a struct resource pointer as arguments for denoting device interrupts. |1300013 |link:https://svnweb.freebsd.org/changeset/base/344300[344300] |February 19, 2019 |13.0-CURRENT after the removal of drm and drm2. |1300014 |link:https://svnweb.freebsd.org/changeset/base/344779[344779] |March 4, 2019 |13.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 8.0.0 rc3. |1300015 |link:https://svnweb.freebsd.org/changeset/base/345196[345196] |March 15, 2019 |13.0-CURRENT after deanonymizing thread and proc state enums, so userland applications can use them without redefining the value names. |1300016 |link:https://svnweb.freebsd.org/changeset/base/345236[345236] |March 16, 2019 |13.0-CURRENT after enabling LLVM OpenMP 8.0.0 rc5 on amd64 by default. |1300017 |link:https://svnweb.freebsd.org/changeset/base/345305[345305] |March 19, 2019 |13.0-CURRENT after exposing the Rx mbuf buffer size to drivers in iflib. |1300018 |link:https://svnweb.freebsd.org/changeset/base/346012[346012] |March 16, 2019 |13.0-CURRENT after introduction of `funlinkat` syscall in link:https://svnweb.freebsd.org/changeset/base/345982[345982]. |1300019 |link:https://svnweb.freebsd.org/changeset/base/346282[346282] |April 16, 2019 |13.0-CURRENT after addition of man:is_random_seeded[9] to man:random[4]. |1300020 |link:https://svnweb.freebsd.org/changeset/base/346358[346358] |April 18, 2019 |13.0-CURRENT after restoring man:random[4] availability tradeoff prior to link:https://svnweb.freebsd.org/changeset/base/346250[346250] and adding new tunables and diagnostic sysctls for programmatically discovering early seeding problems after boot. |1300021 |link:https://svnweb.freebsd.org/changeset/base/346645[346645] |April 24, 2019 |13.0-CURRENT after LinuxKPI uses man:bus_dma[9] to be compatible with an IOMMU. |1300022 |link:https://svnweb.freebsd.org/changeset/base/347089[347089] |May 4, 2019 |13.0-CURRENT after fixing regression issue after link:https://svnweb.freebsd.org/changeset/base/346645[346645] in the LinuxKPI. |1300023 |link:https://svnweb.freebsd.org/changeset/base/347192[347192] |May 6, 2019 |13.0-CURRENT after list-ifying kernel dump device configuration. |1300024 |link:https://svnweb.freebsd.org/changeset/base/347325[347325] |May 8, 2019 |13.0-CURRENT after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4]). |1300025 |link:https://svnweb.freebsd.org/changeset/base/347532[347532] |May 13, 2019 |13.0-CURRENT after renaming `vm.max_wired` to `vm.max_user_wired` and changing its type. |1300026 |link:https://svnweb.freebsd.org/changeset/base/347596[347596] |May 14, 2019 |13.0-CURRENT after adding context member to ww_mutex in LinuxKPI. |1300027 |link:https://svnweb.freebsd.org/changeset/base/347601[347601] |May 14, 2019 |13.0-CURRENT after adding prepare to `pm_ops` in LinuxKPI. |1300028 |link:https://svnweb.freebsd.org/changeset/base/347925[347925] |May 17, 2019 |13.0-CURRENT after removal of `bm`, `cs`, de, ed, `ep`, ex, `fe`, `pcn`, sf, `sn`, `tl`, `tx`, `txp`, `vx`, `wb`, and xe drivers. |1300029 |link:https://svnweb.freebsd.org/changeset/base/347984[347984] |May 20, 2019 |13.0-CURRENT after removing some header pollution due to [.filename]#sys/eventhandler.h#. Affected files may now need to explicitly include one or more of [.filename]#sys/eventhandler.h#, [.filename]#sys/ktr.h#, [.filename]#sys/lock.h#, or [.filename]#sys/mutex.h#, when the missing header may have been included implicitly prior to 1300029. |1300030 |link:https://svnweb.freebsd.org/changeset/base/348350[348350] |May 29, 2019 |13.0-CURRENT after adding relocation support to libdwarf on powerpc64 to fix handling of DWARF information on unlinked objects. Original commit in link:https://svnweb.freebsd.org/changeset/base/348347[348347]. |1300031 |link:https://svnweb.freebsd.org/changeset/base/348808[348808] |June 8, 2019 |13.0-CURRENT after adding dpcpu and vnet section fixes to i386 kernel modules to avoid panics in certain conditions. i386 kernel modules need to be recompiled with the linker script magic in place or they will refuse to load. |1300032 |link:https://svnweb.freebsd.org/changeset/base/349151[349151] |June 17, 2019 |13.0-CURRENT after separating kernel `crc32()` implementation to its own header ([.filename]#gsb_crc32.h#) and renaming the source to [.filename]#gsb_crc32.c#. |1300033 |link:https://svnweb.freebsd.org/changeset/base/349277[349277] |June 21, 2019 |13.0-CURRENT after additions to LinuxKPI's `rcu` list. |1300034 |link:https://svnweb.freebsd.org/changeset/base/349352[349352] |June 24, 2019 |13.0-CURRENT after NAND and NANDFS removal. |1300035 |link:https://svnweb.freebsd.org/changeset/base/349846[349846] |July 8, 2019 |13.0-CURRENT after merging the `vm_page` hold and wire mechanisms. |1300036 |link:https://svnweb.freebsd.org/changeset/base/349972[349972] |July 13, 2019 |13.0-CURRENT after adding `arm_drain_writebuf()` and `arm_sync_icache()` for compatibility with NetBSD and OpenBSD. |1300037 |link:https://svnweb.freebsd.org/changeset/base/350307[350307] |July 24, 2019 |13.0-CURRENT after removal of man:libcap_random[3]. |1300038 |link:https://svnweb.freebsd.org/changeset/base/350437[350437] |July 30, 2019 |13.0-CURRENT after removal of gzip'ed a.out support. |1300039 |link:https://svnweb.freebsd.org/changeset/base/350665[350665] |August 7, 2019 |13.0-CURRENT after merge of fusefs from projects/fuse2. |1300040 |link:https://svnweb.freebsd.org/changeset/base/351140[351140] |August 16, 2019 |13.0-CURRENT after deletion of [.filename]#sys/dir.h# which has been deprecated since 1997. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/351423[351423] |August 23, 2019 |13.0-CURRENT after changing most arguments to man:ping6[8]. |1300041 |link:https://svnweb.freebsd.org/changeset/base/351480[351480] |August 25, 2019 |13.0-CURRENT after removal of zlib 1.0.4 after the completion of kernel zlib unification. |1300042 |link:https://svnweb.freebsd.org/changeset/base/351522[351522] |August 27, 2019 |13.0-CURRENT after addition of kernel-side support for in-kernel TLS. |1300043 |link:https://svnweb.freebsd.org/changeset/base/351698[351698] |September 2, 2019 |13.0-CURRENT after removal of man:gets[3]. |1300044 |link:https://svnweb.freebsd.org/changeset/base/351701[351701] |September 2, 2019 |13.0-CURRENT after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI. |1300045 |link:https://svnweb.freebsd.org/changeset/base/351729[351729] |September 3, 2019 |13.0-CURRENT after adding man:sysctlbyname[3] system call. |1300046 |link:https://svnweb.freebsd.org/changeset/base/351937[351937] |September 6, 2019 |13.0-CURRENT after LinuxKPI sysfs improvements. |1300047 |link:https://svnweb.freebsd.org/changeset/base/352110[352110] |September 9, 2019 |13.0-CURRENT after changing the synchronization rules for `vm_page` reference counting.. |1300048 |link:https://svnweb.freebsd.org/changeset/base/352700[352700] |September 25, 2019 |13.0-CURRENT after adding a shm_open2 syscall to support the upcoming man:memfd_create[2] syscall. |1300049 |link:https://svnweb.freebsd.org/changeset/base/353274[353274] |October 7, 2019 |13.0-CURRENT after factoring out the VNET shutdown check into an own vnet structure field. |1300050 |link:https://svnweb.freebsd.org/changeset/base/353358[353358] |October 9, 2019 |13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316. |1300051 |link:https://svnweb.freebsd.org/changeset/base/353685[353685] |October 17, 2019 |13.0-CURRENT after splitting out a more generic man:debugnet[4] from man:netdump[4]. |1300052 |link:https://svnweb.freebsd.org/changeset/base/353698[353698] |October 17, 2019 |13.0-CURRENT after promoting the page busy field to a first class lock that no longer requires the object lock for consistency. |1300053 |link:https://svnweb.freebsd.org/changeset/base/353700[353700] |October 17, 2019 |13.0-CURRENT after implementing NetGDB. |1300054 |link:https://svnweb.freebsd.org/changeset/base/353868[353868] |October 21, 2019 |13.0-CURRENT after removing obsoleted KPIs that were used to access interface address lists. |1300055 |link:https://svnweb.freebsd.org/changeset/base/354335[354335] |November 4, 2019 |13.0-CURRENT after enabling device class group attributes in the LinuxKPI. |1300056 |link:https://svnweb.freebsd.org/changeset/base/354460[354460] |November 7, 2019 |13.0-CURRENT after fixing a potential OOB read security issue in libc++. |1300057 |link:https://svnweb.freebsd.org/changeset/base/354694[354694] |November 13, 2019 |13.0-CURRENT after adding support for `AT_EXECPATH` to man:elf_aux_info[3]. |1300058 |link:https://svnweb.freebsd.org/changeset/base/354820[354820] |November 18, 2019 |13.0-CURRENT after widening the `vm_page` `aflags` field to 16 bits. |1300059 |link:https://svnweb.freebsd.org/changeset/base/354835[354835] |November 18, 2019 |13.0-CURRENT after converting the in-tree `sysent` targets to use the new [.filename]#makesyscalls.lua#. |1300060 |link:https://svnweb.freebsd.org/changeset/base/354922[354922] |November 20, 2019 |13.0-CURRENT after adding [.filename]#/etc/os-release# as a symbolic link to [.filename]#/var/run/os-release#. |1300061 |link:https://svnweb.freebsd.org/changeset/base/354977[354977] |November 21, 2019 |13.0-CURRENT after adding functions to man:bitstring[3] to find contiguous sequences of set or unset bits. |1300062 |link:https://svnweb.freebsd.org/changeset/base/355309[355309] |December 2, 2019 |13.0-CURRENT after adding TCP_STATS support. |1300063 |link:https://svnweb.freebsd.org/changeset/base/355537[355537] |December 8, 2019 |13.0-CURRENT after removal of VI_DOOMED (use VN_IS_DOOMED instead). |1300064 |link:https://svnweb.freebsd.org/changeset/base/355658[355658] |December 9, 2019 |13.0-CURRENT after correcting the C++ version check for declaring man:timespec_get[3]. |1300065 |link:https://svnweb.freebsd.org/changeset/base/355643[355643] |December 12, 2019 |13.0-CURRENT after adding `sigsetop` extensions commonly found in musl libc and glibc. |1300066 |link:https://svnweb.freebsd.org/changeset/base/355679[355679] |December 12, 2019 |13.0-CURRENT after changing the internal interface between the NFS modules as part of the introduction of NFS 4.2. |1300067 |link:https://svnweb.freebsd.org/changeset/base/355732[355732] |December 13, 2019 |13.0-CURRENT after removing the deprecated `callout_handle_init`, `timeout`, and `untimeout` functions. |1300068 |link:https://svnweb.freebsd.org/changeset/base/355828[355828] |December 16, 2019 |13.0-CURRENT after doubling the value of `ARG_MAX`, for 64 bit platforms. |1300069 |link:https://svnweb.freebsd.org/changeset/base/356051[356051] |December 24, 2019 |13.0-CURRENT after the addition of busdma templates. |1300070 |link:https://svnweb.freebsd.org/changeset/base/356113[356113] |December 27, 2019 |13.0-CURRENT after eliminating the last MI difference in AT_* definitions (for powerpc). |1300071 |link:https://svnweb.freebsd.org/changeset/base/356135[356135] |December 27, 2019 |13.0-CURRENT after making USB statistics be per-device instead of per bus. |1300072 |link:https://svnweb.freebsd.org/changeset/base/356185[356185] |December 29, 2019 |13.0-CURRENT after removal of `GEOM_SCHED` class and `gsched` tool. |1300073 |link:https://svnweb.freebsd.org/changeset/base/356263[356263] |January 2, 2020 |13.0-CURRENT after removing arm/arm as a valid target. |1300074 |link:https://svnweb.freebsd.org/changeset/base/356337[356337] |January 3, 2020 |13.0-CURRENT after removing flags argument from `VOP_UNLOCK`. |1300075 |link:https://svnweb.freebsd.org/changeset/base/356409[356409] |January 6, 2020 |13.0-CURRENT after adding own counter for cancelled USB transfers. |1300076 |link:https://svnweb.freebsd.org/changeset/base/356511[356511] |January 8, 2020 |13.0-CURRENT after pushing `vnop` implementation into the `fileop` layer in man:posix_fallocate[2]. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/357396[357396] |February 2, 2020 |13.0-CURRENT after removal of armv5 architecture code from the src tree. |1300077 |link:https://svnweb.freebsd.org/changeset/base/357455[357455] |February 3, 2020 |13.0-CURRENT after removal of sparc64 architecture code from the src tree. |1300078 |link:https://svnweb.freebsd.org/changeset/base/358020[358020] |February 17, 2020 |13.0-CURRENT after changing `struct vnet` and the VNET magic cookie. |1300079 |link:https://svnweb.freebsd.org/changeset/base/358164[358164] |February 20, 2020 |13.0-CURRENT after upgrading ncurses to 6.2.x |1300080 |link:https://svnweb.freebsd.org/changeset/base/358172[358172] |February 20, 2020 |13.0-CURRENT after adding `realpathat` syscall to VFS. |1300081 |link:https://svnweb.freebsd.org/changeset/base/358218[358218] |February 21, 2020 |13.0-CURRENT after recent linuxkpi changes. |1300082 |link:https://svnweb.freebsd.org/changeset/base/358497[358497] |March 1, 2020 |13.0-CURRENT after removal of man:bktr[4]. |1300083 |link:https://svnweb.freebsd.org/changeset/base/358834[358834] |March 10, 2020 |13.0-CURRENT after removal of man:amd[8], r358821. |1300084 |link:https://svnweb.freebsd.org/changeset/base/358851[358851] |March 10, 2020 |13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0-rc3 c290cb61fdc. |1300085 |link:https://svnweb.freebsd.org/changeset/base/359261[359261] |March 23, 2020 |13.0-CURRENT after the import of the kyua test framework. |1300086 |link:https://svnweb.freebsd.org/changeset/base/359347[359347] |March 26, 2020 |13.0-CURRENT after switching powerpc and powerpcspe to the lld linker. |1300087 |link:https://svnweb.freebsd.org/changeset/base/359374[359374] |March 27, 2020 |13.0-CURRENT after refactoring the driver and consumer interfaces for in-kernel cryptography. |1300088 |link:https://svnweb.freebsd.org/changeset/base/359530[359530] |April 1, 2020 |13.0-CURRENT after removing support for procfs process debugging. |1300089 |link:https://svnweb.freebsd.org/changeset/base/359727[359727] |April 8, 2020 |13.0-CURRENT after cloning the RCU interface into a sleepable and a non-sleepable part in the LinuxKPI. |1300090 |link:https://svnweb.freebsd.org/changeset/base/359747[359747] |April 9, 2020 |13.0-CURRENT after removing the old NFS lock device driver that uses Giant. |1300091 |link:https://svnweb.freebsd.org/changeset/base/359839[359839] |April 12, 2020 |13.0-CURRENT after implementing a man:close_range[2] syscall. |1300092 |link:https://svnweb.freebsd.org/changeset/base/359920[359920] |April 14, 2020 |13.0-CURRENT after reworking unmapped mbufs in KTLS to carry `ext_pgs` in the mbuf itself. |1300093 |link:https://svnweb.freebsd.org/changeset/base/360418[360418] |April 27, 2020 |13.0-CURRENT after adding support for kernel TLS receive offload. |1300094 |link:https://svnweb.freebsd.org/changeset/base/360796[360796] |May 7, 2020 |13.0-CURRENT after linuxkpi changes. |1300095 |link:https://svnweb.freebsd.org/changeset/base/361275[361275] |May 20, 2020 |13.0-CURRENT after adding HyperV socket support for FreeBSD guests. |1300096 |link:https://svnweb.freebsd.org/changeset/base/361410[361410] |May 23, 2020 |13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 rc1 f79cd71e145. |1300097 |link:https://svnweb.freebsd.org/changeset/base/361724[361724] |June 2, 2020 |13.0-CURRENT after implementing `__is_constexpr()` function macro in the LinuxKPI. |1300098 |link:https://svnweb.freebsd.org/changeset/base/362159[362159] |June 14, 2020 |13.0-CURRENT after changing the `export_args ex_flags` field so that is 64bits. |1300099 |link:https://svnweb.freebsd.org/changeset/base/362453[362453] |June 20, 2020 |13.0-CURRENT after making liblzma use libmd implementation of SHA256. |1300100 |link:https://svnweb.freebsd.org/changeset/base/362640[362640] |June 26, 2020 |13.0-CURRENT after changing the internal API between the NFS kernel modules. |1300101 |link:https://svnweb.freebsd.org/changeset/base/363077[363077] |July 10, 2020 |13.0-CURRENT after implementing the `array_size()` function in the LinuxKPI. |1300102 |link:https://svnweb.freebsd.org/changeset/base/363562[363562] |July 26, 2020 |13.0-CURRENT after implementing lockless lookup in the VFS layer. |1300103 |link:https://svnweb.freebsd.org/changeset/base/363757[363757] |August 1, 2020 |13.0-CURRENT after making rights mandatory for NDINIT_ALL. |1300104 |link:https://svnweb.freebsd.org/changeset/base/363783[363783] |August 2, 2020 |13.0-CURRENT after vnode layout changes. |1300105 |link:https://svnweb.freebsd.org/changeset/base/363894[363894] |August 5, 2020 |13.0-CURRENT after `vaccess()` change. |1300106 |link:https://svnweb.freebsd.org/changeset/base/364092[364092] |August 11, 2020 |13.0-CURRENT after adding an argument to `newnfs_connect()` that indicates use TLS for the connection. |1300107 |link:https://svnweb.freebsd.org/changeset/base/364109[364109] |August 11, 2020 |13.0-CURRENT after change to clone the task struct fields related to RCU. |1300108 |link:https://svnweb.freebsd.org/changeset/base/364233[364233] |August 14, 2020 |13.0-CURRENT after adding a few `wait_bit` functions to the linuxkpi, which are needed for DRM from Linux v5.4. |1300109 |link:https://svnweb.freebsd.org/changeset/base/364274[364274] |August 16, 2020 |13.0-CURRENT after `vget()` argument removal and `namei` flags renumbering. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/364284[364284] |August 16, 2020 |13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to release/11.x llvmorg-11.0.0-rc1-47-gff47911ddfc. |1300110 |link:https://svnweb.freebsd.org/changeset/base/364331[364331] |August 18, 2020 |13.0-CURRENT after deleting the unused `use_ext` argument to `nfscl_reqstart()`. |1300111 |link:https://svnweb.freebsd.org/changeset/base/364476[364476] |August 22, 2020 |13.0-CURRENT after adding TLS support to the kernel RPC. |1300112 |link:https://svnweb.freebsd.org/changeset/base/364747[364747] |August 25, 2020 |13.0-CURRENT after merging OpenZFS support. |1300113 |link:https://svnweb.freebsd.org/changeset/base/364753[364753] |August 25, 2020 |13.0-CURRENT after adding atomic and `bswap` functions to libcompiler_rt. |1300114 |link:https://svnweb.freebsd.org/changeset/base/365459[365459] |September 8, 2020 |13.0-CURRENT after changing arm64 AT_HWCAP definitions for man:elf_aux_info[3]. |1300115 |link:https://svnweb.freebsd.org/changeset/base/365705[365705] |September 14, 2020 |13.0-CURRENT after fixing man:crunchgen[1] application build with `WARNS=6`. |1300116 |link:https://svnweb.freebsd.org/changeset/base/366062[366062] |September 22, 2020 |13.0-CURRENT after the introduction of the powerpc64le ARCH. |1300117 |link:https://svnweb.freebsd.org/changeset/base/366070[366070] |September 23, 2020 |13.0-CURRENT after reimplementing `purgevfs` to iterate vnodes instead of the entire hash. |1300118 |link:https://svnweb.freebsd.org/changeset/base/366374[366374] |October 2, 2020 |13.0-CURRENT after adding backlight support and `dmi_*` functions to the linuxkpi. |1300119 |link:https://svnweb.freebsd.org/changeset/base/366432[366432] |October 6, 2020 |13.0-CURRENT after populating the acquire context field of a `ww_mutex` in the LinuxKPI. |1300120 |link:https://svnweb.freebsd.org/changeset/base/366666[366666] |October 13, 2020 |13.0-CURRENT after the fix to arm64 write-only mappings. |1300121 |link:https://svnweb.freebsd.org/changeset/base/366719[366719] |October 15, 2020 |13.0-CURRENT after the addition of `VOP_EAGAIN`. |1300122 |link:https://svnweb.freebsd.org/changeset/base/366782[366782] |October 17, 2020 |13.0-CURRENT after the addition of `ptsname_r`. |1300123 |link:https://svnweb.freebsd.org/changeset/base/366871[366871] |October 20, 2020 |13.0-CURRENT after `VOP`, `VPTOCNP`, and `INACTIVE` changes. |1300124 |link:https://svnweb.freebsd.org/changeset/base/367162[367162] |October 30, 2020 |13.0-CURRENT after adding `cache_vop_mkdir` and renaming `cache_rename` to `cache_vop_rename`. |1300125 |link:https://svnweb.freebsd.org/changeset/base/367347[367347] |November 4, 2020 |13.0-CURRENT after using a `rms` lock for teardown handling in `zfs`. |1300126 |link:https://svnweb.freebsd.org/changeset/base/367384[367384] |November 5, 2020 |13.0-CURRENT after rationalizing per-cpu zones. |1300127 |link:https://svnweb.freebsd.org/changeset/base/367432[367432] |November 6, 2020 |13.0-CURRENT after moving `malloc_type_internal` into `malloc_type`. |1300128 |link:https://svnweb.freebsd.org/changeset/base/367522[367522] |November 9, 2020 |13.0-CURRENT after LinuxKPI additions to implement ACPI bits required by `drm-kmod` in the base system. |1300129 |link:https://svnweb.freebsd.org/changeset/base/367627[367627] |November 12, 2020 |13.0-CURRENT after retiring `malloc_last_fail`. |1300130 |link:https://svnweb.freebsd.org/changeset/base/367777[367777] |November 17, 2020 |13.0-CURRENT after `p_pd` / `pwddesc` split from `p_fd` / filedesc. |1300131 |link:https://svnweb.freebsd.org/changeset/base/368417[368417] |December 7, 2020 |13.0-CURRENT after removal of crypto file descriptors. |1300132 |link:https://svnweb.freebsd.org/changeset/base/368659[368659] |December 15, 2020 |13.0-CURRENT after improving handling of alternate settings in the USB stack. |1300133 |gitref:2ed0c8d801f5f72dbde7a7d30135c1cc361a1e90[repository="src",length=12] |December 23, 2020 |13.0-CURRENT after changing the internal API between the NFS and kernel RPC modules. |1300134 |gitref:a84b0e94cdbf1a17a798ab7f77375aacb4d400ff[repository="src",length=12] |January 7, 2021 |13.0-CURRENT after factoring out the hardware-independent part of USB HID support to a new module. |1300135 |gitref:35a39dc5b34962081eeda8dbcf0b99a31585499b[repository="src",length=12] |January 12, 2021 |13.0-CURRENT after adding `kernel_fpu_begin`/`kernel_fpu_end` to the LinuxKPI. |1300136 |gitref:72c551930be195b5ea982c1b16767f54388424f2[repository="src",length=12] |January 17, 2021 |13.0-CURRENT after reimplementing LinuxKPI's `irq_work` queue on top of fast `taskqueue`. |1300137 |gitref:010196adcfaf2bb610725394d40691874b4ff2af[repository="src",length=12] |January 30, 2021 |13.0-CURRENT after fixing a clang assertion when building the package:devel/onetbb[] port. |1300138 |gitref:dcee9964238b12a8e55917f292139f074b1a80b2[repository="src",length=12] |February 1, 2021 |13.0-ALPHA3 after adding lockless symlink lookup to vfs cache. |1300139 |gitref:91a07ed50ffca4dfada3e7f1f050ea746c1bac66[repository="src",length=12] |February 2, 2021 |13.0-ALPHA3 after adding various LinuxKPI bits conflicting with drm-kmod. |1300500 |gitref:3c6a89748a01869c18955d5e3bfcdf35f6705d26[repository="src",length=12] |February 5, 2021 |13.0-STABLE after releng/13.0 was branched. |1300501 |gitref:c3f97dd75a1c294c4f60f42b604ee8bcda17be09[repository="src",length=12] |April 23, 2021 |13.0-STABLE after fixing rtld's `dl_iterate_phdr()`. |1300501 |gitref:c3f97dd75a1c294c4f60f42b604ee8bcda17be09[repository="src",length=12] |April 23, 2021 |13.0-STABLE after fixing rtld's `dl_iterate_phdr()`. |1300502 |gitref:da6a8ccfa293c3c831fdde51169754fcb9587657[repository="src",length=12] |April 23, 2021 |13.0-STABLE after implementing `atomic_dec_and_lock_irqsave()` in the LinuxKPI. |1300503 |gitref:d60c6dc8f69b1264c7af5e2479ea94f000fd2c6d[repository="src",length=12] |April 23, 2021 |13.0-STABLE after changing the internal KAPI between the krpc and NFS. |1300504 |gitref:fb34817c686cc130449325499870e36979899801[repository="src",length=12] |April 30, 2021 |13.0-STABLE after updating the LinuxKPI to accommodate the drm-kmod 5.5 update. |1300505 |gitref:8f81f190a640e211dd814bdde7811982b9491fb0[repository="src",length=12] |May 10, 2021 |13.0-STABLE after changing the internal KAPI between the nscl.ko and nfscommon.ko modules. |1300506 |gitref:e31579b8558db508dfc3f8fc276611a7c3c93aa1[repository="src",length=12] |June 2, 2021 |13.0-STABLE after adding TCP LRO support for VLAN and VxLAN. |1300507 |gitref:c64d1bd7145b5d30c97d1cd99e584da529d95100[repository="src",length=12] |June 2, 2021 |13.0-STABLE after adding a new member to the man:EPOCH[9] tracker structure. |1300508 |gitref:658f5eed38c35f3f7d6695110b7dae8dc94d12c7[repository="src",length=12] |June 11, 2021 |13.0-STABLE after adding macros for `might_lock_nested()` and `lockdep_(re/un/)pin_lock()` to the LinuxKPI. |1300509 |gitref:210349325af9920d1535ad76fa3b92847684f6e0[repository="src",length=12] |June 14, 2021 |13.0-STABLE after adding a macro for `list_for_each_entry_lockless()` to the LinuxKPI. |1300510 |gitref:eb3397588e1b48043e166587ea454f60efea88d0[repository="src",length=12] |June 26, 2021 |13.0-STABLE after changing the internal KAPI between the krpc and nfsd modules. |1300511 |gitref:2622570aeb3d162812d72f7ef192c322cd8b73ef[repository="src",length=12] |July 7, 2021 |13.0-STABLE after changing `softdep_prelink()` to only do sync if another thread changed the vnode metadata since previous `prelink`. |1300512 |gitref:f72db34d2295080f57a283858125aa906c0d409e[repository="src",length=12] |July 18, 2021 |13.0-STABLE after various merges to LinuxKPI, OFED, net80211, and drivers. |1300513 |gitref:af732203b8f7f006927528db5497f5cbc4c4742a[repository="src",length=12] |July 31, 2021 |13.0-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.1-0-gfed41342a82f, a.k.a. 12.0.1 release. |1300514 |gitref:53d162819c20e5cf267cb91f7a19940e96e8bec4[repository="src",length=12] |August 3, 2021 |Incompatible changes to the KBI of internal interfaces between NFS requires rebuilding modules. |1300515 |gitref:0437d10e359ea1cbefff8d17cd18ca491dbbd5d7[repository="src",length=12] |September 22, 2021 |13.0-STABLE returning to 13.0 KBI for linuxkpi. |1300518 |gitref:a017868e281874261a560ba1e3069b4e14b7483e[repository="src",length=12] |October 21, 2021 |13.0-STABLE after adding `crypto_cursor_segment()`. |1300519 |gitref:fe2827f1678b8ff0baf62a1529b2cc121a25b090[repository="src",length=12] |October 21, 2021 |13.0-STABLE after extending the AES-CCM and Chacha20-Poly1305 ciphers in OCF to support multiple nonce lengths. |1300521 |gitref:29745cf91cfc22afa94da0ce43e07a6dc377f631[repository="src",length=12] |November 19, 2021 |13.0-STABLE after various merges to LinuxKPI and net80211. |1300522 |gitref:0c8684ae20019b63c6672cc9fa40e1426708b007[repository="src",length=12] |November 24, 2021 |13.0-STABLE after changing the internal KAPI between the NFS modules. |(not changed) |gitref:7224d4125ab57bc1c4c799a6c286be42f8d37a83[repository="src",length=12] |December 6, 2021 |13.0-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-13.0.0-0-gd7b669b3a303, a.k.a. 13.0.0 release. |1300523 |gitref:690bcf605d84283c1f9d254885a3cac69c5e80a6[repository="src",length=12] |December 18, 2021 |13.0-STABLE after adding two arguments to man:VOP_ALLOCATE[9]. |1300524 |gitref:dc4114875ef10618002d3eeb46f09dc42da56b30[repository="src",length=12] |January 14, 2022 |13.0-STABLE after making the CPU_SET macros compatible with glibc. |1300525 |gitref:dee0854a009cde7dcdb16ba39754237737022c8a[repository="src",length=12] |January 22, 2022 |13.0-STABLE after multiple LinuxKPI changes required by drm-kmod. |1300526 |gitref:c39ff2415cb965b729fd16f9eae91e712313877b[repository="src",length=12] |February 20, 2022 |13.0-STABLE after multiple LinuxKPI changes overlapping but not conflicting with drm-kmod. |1301000 |gitref:ad329796bdb29c69bce610ad332d08257d7157ac[repository="src",length=12] |March 10, 2022 |releng/13.1 branched. |1301500 |gitref:08523c8c63bbcdcd3f0d36787a544817cb5b8282[repository="src",length=12] |March 10, 2022 |13.1-STABLE after releng/13.1 branched. |1301501 |gitref:6663718bb49635deac3f5dc55fa6f0f7cba593ba[repository="src",length=12] |March 27, 2022 |13.1-STABLE after various merges to LinuxKPI and net80211. |1301502 |gitref:2278cf4e48e7679b0a60008a83c764fe852174b2[repository="src",length=12] |April 27, 2022 |13.1-STABLE after various merges to LinuxKPI. |1301503 |gitref:b2aa64d05bd8b04a1bdb63f2a5f9de39c600b463[repository="src",length=12] |May 19, 2022 |13.1-STABLE after adding alternate DRIVER_MODULE macros without a devclass argument. |1301504 |gitref:a13b6fc61908fd6afa460b88f94e4a67be74bb9a[repository="src",length=12] |June 4, 2022 |13.1-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-14.0.3-0-g1f9140064dfb, a.k.a. 14.0.3 release. |1301505 |gitref:6f93a76ffeabf7d4488edc73a0cca01436c2903b[repository="src",length=12] |June 21, 2022 |13.1-STABLE after various merges to LinuxKPI. |1301506 |gitref:8e6cfc632cf6f9fc906df9d825649443939b55c6[repository="src",length=12] |July 13, 2022 |13.1-STABLE after adding and . |1301507 |gitref:9cbba5950123f3afedcc5f24c43956e7a26f22f4[repository="src",length=12] |June 21, 2022 |13.1-STABLE after various merges to LinuxKPI. |1301508 |gitref:83ac15a799e348c391951f5877feecd4089bab80[repository="src",length=12] |October 17, 2022 |13.1-STABLE after various merges to LinuxKPI, and for de-macrofying pause(). |1301509 |gitref:baa97013121a915057ee54dfcb2cb87e541f7d7f[repository="src",length=12] |October 19, 2022 |13.1-STABLE after introduction of v2 of TX Queue Select Functionality. |1301510 |gitref:6820a0512fa6616ee1da46cb0075da80478776f0[repository="src",length=12] |December 8, 2022 |13.1-STABLE after LinuxKPI dmi_matches() fixes. |1301511 |gitref:17333d92643d998d1c6a2dc5f6b1508b6507ad31[repository="src",length=12] |December 17, 2022 |13.1-STABLE after adding a new rc: `machine_id` to generate `/etc/machine-id`. |1302500 |gitref:c243de11cf7c4bb3d67bbc1655b149037e5b04f1[repository="src",length=12] |February 9, 2023 |13.2-STABLE after releng/13.2 was branched. |1302501 |gitref:e3068d2655e2aea3e0b462a7298a68d344769ec6[repository="src",length=12] |February 16, 2023 |13.2-STABLE after adding `totalram_pages()` to the LinuxKPI. |1302502 |gitref:5ca371f4f536f9ee9d6c9fb178bf1f7f6de33216[repository="src",length=12] |February 17, 2023 |13.2-STABLE after various merges to LinuxKPI. |1302503 |gitref:aaca677fee21f202db4bb974fc5056f4dcbbb598[repository="src",length=12] |February 21, 2023 |13.2-STABLE after various merges to LinuxKPI. |1302504 |gitref:d6852eed98ed32ad51120a22aa1ebdf0601917b3[repository="src",length=12] |March 12, 2023 |13.2-STABLE after merging machine-id into `hostid_save`. |1302505 |gitref:85e32e957fcca01d50e29e543584909795c1acef[repository="src",length=12] |April 9, 2023 |13.2-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-15.0.7-0-g8dfdcc7b7bf6, a.k.a. 15.0.7 release. |1302506 |gitref:e982b1cf1fe1dc0b84dc24f03d1c21e3fe6bdef3[repository="src",length=12] |June 26, 2023 |13.2-STABLE after various merges to LinuxKPI. |1302507 |gitref:b2acc21dfbd6fab28b1715c775b43d4914b75e0c[repository="src",length=12] |July 23, 2023 |13.2-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-16.0.6-0-g7cbf1a259152, a.k.a. 16.0.6 release. |1302508 |gitref:21ccba43f511cc4089899619b5a85e6d83a200dc[repository="src",length=12] |September 6, 2023 |13.2-STABLE after ptrace started clearing TDB_BORN during PT_DETACH. |1302509 |gitref:faedeaf7377ba7253c281cf3315b17e0cb979075[repository="src",length=12] |December 2, 2023 |13.2-STABLE after adding a new VFS function called `vfs_exjail_clone()`, which will be used by the ZFS module. |1302510 |gitref:45758665781dd63dfa38bcb646d4f36b0a6a104f[repository="src",length=12] |January 7, 2024 |13.2-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-17.0.6-0-g6009708b4367, a.k.a. 17.0.6 release. |1303001 |gitref:a75a3d7afcc88dc0bc9b2797cce983056acadf10[repository="src",length=12] |February 19, 2024 |13.3-BETA3 after changing net80211 `struct ieee80211vap` internals. |1303501 |gitref:a7e1fc7f620d3341549c1380f550aaafbdb45622[repository="src",length=12] |February 19, 2024 |13.3-STABLE after changing net80211 `struct ieee80211vap` internals. |1303502 |gitref:07839ae99c06fcbebd5da6ead49c160c32046542[repository="src",length=12] |March 23, 2024 |13.3-STABLE after fixing a clang assertion or crash when building recent boost libraries. |1303503 |gitref:055e875e6077ed1eb2256c3ab5de59a3f6fbce18[repository="src",length=12] |April 20, 2024 |13.3-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-18.1.3-0-gc13b7485b879, a.k.a. 18.1.3 release. |1304500 |gitref:77064cddb94875dc8d9693a93ac25019b7f62c59[repository="src",length=12] |August 1, 2024 |13.4-STABLE after it was renamed from 13.4-PRERELEASE. |1304501 |gitref:b802ab153dd24f468b9bfe33a96c61408e0d0565[repository="src",length=12] |December 1, 2024 |13.4-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-19.1.4-0-gaadaa00de76e, a.k.a. 19.1.4 release. |=== //// Template: |13XXXXX |gitref:XXXXXXXX[repository="src",length=12] |October 30, 2021 |13.0-STABLE after XXXXXX. //// [[versions-12]] == FreeBSD 12 Versions [[freebsd-versions-table-12]] .FreeBSD 12 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |1200000 |link:https://svnweb.freebsd.org/changeset/base/302409[302409] |July 7, 2016 |12.0-CURRENT. |1200001 |link:https://svnweb.freebsd.org/changeset/base/302628[302628] |July 12, 2016 |12.0-CURRENT after removing collation from `[a-z]`-type ranges. |1200002 |link:https://svnweb.freebsd.org/changeset/base/304395[304395] |August 18, 2016 |12.0-CURRENT after removing unused and obsolete `openbsd_poll` system call. |1200003 |link:https://svnweb.freebsd.org/changeset/base/304608[304608] |August 22, 2016 |12.0-CURRENT after adding C++11 `thread_local` support in rev link:https://svnweb.freebsd.org/changeset/base/303795[303795]. |1200004 |link:https://svnweb.freebsd.org/changeset/base/304752[304752] |August 24, 2016 |12.0-CURRENT after fixing LC*MASK for man:newlocale[3] and man:querylocale[3] (rev link:https://svnweb.freebsd.org/changeset/base/304703[304703]). |1200005 |link:https://svnweb.freebsd.org/changeset/base/304789[304789] |August 25, 2016 |12.0-CURRENT after changing some ioctl interfaces in rev link:https://svnweb.freebsd.org/changeset/base/304787[304787] between the iSCSI userspace programs and the kernel. |1200006 |link:https://svnweb.freebsd.org/changeset/base/305256[305256] |September 1, 2016 |12.0-CURRENT after man:crunchgen[1] META_MODE fix in link:https://svnweb.freebsd.org/changeset/base/305254[305254]. |1200007 |link:https://svnweb.freebsd.org/changeset/base/305421[305421] |September 5, 2016 |12.0-CURRENT after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]. |1200008 |link:https://svnweb.freebsd.org/changeset/base/305833[305833] |September 15, 2016 |12.0-CURRENT after removing the 4.3BSD compatible macro `m_copy()` in link:https://svnweb.freebsd.org/changeset/base/305824[305824]. |1200009 |link:https://svnweb.freebsd.org/changeset/base/306077[306077] |September 21, 2016 |12.0-CURRENT after removing `bio_taskqueue()` in link:https://svnweb.freebsd.org/changeset/base/305988[305988]. |1200010 |link:https://svnweb.freebsd.org/changeset/base/306276[306276] |September 23, 2016 |12.0-CURRENT after mounting man:msdosfs[5] with `longnames` support by default. |1200011 |link:https://svnweb.freebsd.org/changeset/base/306556[306556] |October 1, 2016 |12.0-CURRENT after adding `fb_memattr` field to `fb_info` in link:https://svnweb.freebsd.org/changeset/base/306555[306555]. |1200012 |link:https://svnweb.freebsd.org/changeset/base/306592[306592] |October 2, 2016 |12.0-CURRENT after man:net80211[4] changes (rev link:https://svnweb.freebsd.org/changeset/base/306590[306590], link:https://svnweb.freebsd.org/changeset/base/306591[306591]). |1200013 |link:https://svnweb.freebsd.org/changeset/base/307140[307140] |October 12, 2016 |12.0-CURRENT after installing header files required development with `libzfs_core`. |1200014 |link:https://svnweb.freebsd.org/changeset/base/307529[307529] |October 17, 2016 |12.0-CURRENT after merging common code in man:rtwn[4] and man:urtwn[4], and adding support for 802.11ac devices. |1200015 |link:https://svnweb.freebsd.org/changeset/base/308874[308874] |November 20, 2016 |12.0-CURRENT after some ABI change for unbreaking powerpc. |1200016 |link:https://svnweb.freebsd.org/changeset/base/309017[309017] |November 22, 2016 |12.0-CURRENT after removing `PG_CACHED`-related fields from `vmmeter`. |1200017 |link:https://svnweb.freebsd.org/changeset/base/309124[309124] |November 25, 2016 |12.0-CURRENT after upgrading copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.0 release, and adding lld 3.9.0. |1200018 |link:https://svnweb.freebsd.org/changeset/base/309676[309676] |December 7, 2016 |12.0-CURRENT after adding the `ki_moretdname` member to `struct kinfo_proc` and `struct kinfo_proc32` to export the whole thread name to user-space utilities. |1200019 |link:https://svnweb.freebsd.org/changeset/base/310149[310149] |December 16, 2016 |12.0-CURRENT after starting to lay down the foundation for 11ac support. |1200020 |link:https://svnweb.freebsd.org/changeset/base/312087[312087] |January 13, 2017 |12.0-CURRENT after removing `fgetsock` and `fputsock`. |1200021 |link:https://svnweb.freebsd.org/changeset/base/313858[313858] |February 16, 2017 |12.0-CURRENT after removing MCA and EISA support. |1200022 |link:https://svnweb.freebsd.org/changeset/base/314040[314040] |February 21, 2017 |12.0-CURRENT after making the LinuxKPI task struct persistent across system calls. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/314373[314373] |March 2, 2017 |12.0-CURRENT after removing System V Release 4 binary compatibility support. |1200023 |link:https://svnweb.freebsd.org/changeset/base/314564[314564] |March 2, 2017 |12.0-CURRENT after upgrading copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0. |1200024 |link:https://svnweb.freebsd.org/changeset/base/314865[314865] |March 7, 2017 |12.0-CURRENT after removal of [.filename]#pcap-int.h# |1200025 |link:https://svnweb.freebsd.org/changeset/base/315430[315430] |March 16, 2017 |12.0-CURRENT after addition of the [.filename]## header. |1200026 |link:https://svnweb.freebsd.org/changeset/base/315662[315662] |March 16, 2017 |12.0-CURRENT after hiding `struct inpcb` and `struct tcpcb` from userland. |1200027 |link:https://svnweb.freebsd.org/changeset/base/315673[315673] |March 21, 2017 |12.0-CURRENT after making CAM SIM lock optional. |1200028 |link:https://svnweb.freebsd.org/changeset/base/316683[316683] |April 10, 2017 |12.0-CURRENT after renaming `smp_no_rendevous_barrier()` to `smp_no_rendezvous_barrier()` in link:https://svnweb.freebsd.org/changeset/base/316648[316648]. |1200029 |link:https://svnweb.freebsd.org/changeset/base/317176[317176] |April 19, 2017 |12.0-CURRENT after the removal of `struct vmmeter` from `struct pcpu` from link:https://svnweb.freebsd.org/changeset/base/317061[317061]. |1200030 |link:https://svnweb.freebsd.org/changeset/base/317383[317383] |April 24, 2017 |12.0-CURRENT after removing NATM support including man:en[4], man:fatm[4], man:hatm[4], and man:patm[4]. |1200031 |link:https://svnweb.freebsd.org/changeset/base/318736[318736] |May 23, 2017 |12.0-CURRENT after types `ino_t`, `dev_t`, `nlink_t` were extended to 64bit and `struct dirent` changed layout (also known as ino64). |1200032 |link:https://svnweb.freebsd.org/changeset/base/319664[319664] |June 8, 2017 |12.0-CURRENT after removal of `groff`. |1200033 |link:https://svnweb.freebsd.org/changeset/base/320043[320043] |June 17, 2017 |12.0-CURRENT after the type of the `struct event` member `data` was increased to 64bit, and ext structure members added. |1200034 |link:https://svnweb.freebsd.org/changeset/base/320085[320085] |June 19, 2017 |12.0-CURRENT after the NFS client and server were changed so that they actually use the 64bit `ino_t`. |1200035 |link:https://svnweb.freebsd.org/changeset/base/320317[320317] |June 24, 2017 |12.0-CURRENT after the `MAP_GUARD` man:mmap[2] flag was added. |1200036 |link:https://svnweb.freebsd.org/changeset/base/320347[320347] |June 26, 2017 |12.0-CURRENT after changing `time_t` to 64 bits on powerpc (32-bit version). |1200037 |link:https://svnweb.freebsd.org/changeset/base/320545[320545] |July 1, 2017 |12.0-CURRENT after the cleanup and inlining of `bus_dmamap*` functions (link:https://svnweb.freebsd.org/changeset/base/320528[320528]). |1200038 |link:https://svnweb.freebsd.org/changeset/base/320879[320879] |July 10, 2017 |12.0-CURRENT after MMC CAM committed. (link:https://svnweb.freebsd.org/changeset/base/320844[320844]). |1200039 |link:https://svnweb.freebsd.org/changeset/base/321369[321369] |July 22, 2017 |12.0-CURRENT after upgrade of copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 5.0.0 (trunk r308421). |1200040 |link:https://svnweb.freebsd.org/changeset/base/321688[321688] |July 29, 2017 |12.0-CURRENT after adding NFS client forced dismount support `umount -N`. |1200041 |link:https://svnweb.freebsd.org/changeset/base/322762[322762] |August 21, 2017 |12.0-CURRENT after WRFSBASE instruction become operational on amd64. |1200042 |link:https://svnweb.freebsd.org/changeset/base/322900[322900] |August 25, 2017 |12.0-CURRENT after PLPMTUD counters were changed to use man:counter[9]. |1200043 |link:https://svnweb.freebsd.org/changeset/base/322989[322989] |August 28, 2017 |12.0-CURRENT after dropping x86 CACHE_LINE_SIZE down to 64 bytes. |1200044 |link:https://svnweb.freebsd.org/changeset/base/323349[323349] |September 8, 2017 |12.0-CURRENT after implementing `poll_wait()` in the LinuxKPI. |1200045 |link:https://svnweb.freebsd.org/changeset/base/323706[323706] |September 18, 2017 |12.0-CURRENT after adding shared memory support to LinuxKPI. (link:https://svnweb.freebsd.org/changeset/base/323703[323703]). |1200046 |link:https://svnweb.freebsd.org/changeset/base/323910[323910] |September 22, 2017 |12.0-CURRENT after adding support for 32-bit compatibility IOCTLs to LinuxKPI. |1200047 |link:https://svnweb.freebsd.org/changeset/base/324053[324053] |September 26, 2017 |12.0-CURRENT after removing M_HASHTYPE_RSS_UDP_IPV4_EX. (link:https://svnweb.freebsd.org/changeset/base/324052[324052]). |1200048 |link:https://svnweb.freebsd.org/changeset/base/324227[324227] |October 2, 2017 |12.0-CURRENT after hiding `struct socket` and `struct unpcb` from userland. |1200049 |link:https://svnweb.freebsd.org/changeset/base/324281[324281] |October 4, 2017 |12.0-CURRENT after adding the `value.u16` field to `struct diocgattr_arg`. |1200050 |link:https://svnweb.freebsd.org/changeset/base/324342[324342] |October 5, 2017 |12.0-CURRENT after adding the `armv7 MACHINE_ARCH`. (link:https://svnweb.freebsd.org/changeset/base/324340[324340]). |1200051 |link:https://svnweb.freebsd.org/changeset/base/324455[324455] |October 9, 2017 |12.0-CURRENT after removing [.filename]#libstand.a# as a public interface. (link:https://svnweb.freebsd.org/changeset/base/324454[324454]). |1200052 |link:https://svnweb.freebsd.org/changeset/base/325028[325028] |October 26, 2017 |12.0-CURRENT after fixing `ptrace()` to always clear the correct thread event when resuming. |1200053 |link:https://svnweb.freebsd.org/changeset/base/325506[325506] |November 7, 2017 |12.0-CURRENT after changing `struct mbuf` layout to add optional hardware timestamps for receive packets. |1200054 |link:https://svnweb.freebsd.org/changeset/base/325852[325852] |November 15, 2017 |12.0-CURRENT after changing the layout of `struct vmtotal` to allow for reporting large memory counters. |1200055 |link:https://svnweb.freebsd.org/changeset/base/327740[327740] |January 9, 2018 |12.0-CURRENT after adding `cpucontrol -e` support. |1200056 |link:https://svnweb.freebsd.org/changeset/base/327952[327952] |January 14, 2018 |12.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r321788). |1200057 |link:https://svnweb.freebsd.org/changeset/base/329033[329033] |February 8, 2018 |12.0-CURRENT after applying a clang 6.0.0 fix to make the wine ports build correctly. |1200058 |link:https://svnweb.freebsd.org/changeset/base/329166[329166] |February 12, 2018 |12.0-CURRENT after the Lua loader was committed. |1200059 |link:https://svnweb.freebsd.org/changeset/base/330299[330299] |March 2, 2018 |12.0-CURRENT after removing the declaration of `union semun` unless `_WANT_SEMUN` is defined. Also the removal of `struct mymsg` and the renaming of kernel-only members of `struct semid_ds` and `struct msgid_ds`. |1200060 |link:https://svnweb.freebsd.org/changeset/base/330384[330384] |March 4, 2018 |12.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 release. |1200061 |link:https://svnweb.freebsd.org/changeset/base/332100[332100] |April 6, 2018 |12.0-CURRENT after changing man:syslog[3] to emit RFC 5424 formatted messages. |1200062 |link:https://svnweb.freebsd.org/changeset/base/332423[332423] |April 12, 2018 |12.0-CURRENT after changing the Netmap API. |1200063 |link:https://svnweb.freebsd.org/changeset/base/333446[333446] |May 10, 2018 |12.0-CURRENT after reworking CTL frontend and backend options to use man:nv[3], allow creating multiple ioctl frontend ports. |1200064 |link:https://svnweb.freebsd.org/changeset/base/334074[334074] |May 22, 2018 |12.0-CURRENT after changing the ifnet address and multicast address TAILQ to CK_STAILQ. |1200065 |link:https://svnweb.freebsd.org/changeset/base/334290[334290] |May 28, 2018 |12.0-CURRENT after changing man:dwatch[1] to allow '-E code' to override profile EVENT_DETAILS. |1200066 |link:https://svnweb.freebsd.org/changeset/base/334466[334466] |June 1, 2018 |12.0-CURRENT after removal of in-kernel pmc tables for Intel. |1200067 |link:https://svnweb.freebsd.org/changeset/base/334892[334892] |June 9, 2018 |12.0-CURRENT after adding DW_LANG constants to libdwarf. |1200068 |link:https://svnweb.freebsd.org/changeset/base/334930[334930] |June 12, 2018 |12.0-CURRENT after changing the interface between the NFS modules. |1200069 |link:https://svnweb.freebsd.org/changeset/base/335237[335237] |June 15, 2018 |12.0-CURRENT after changing `struct kerneldumpheader` to version 4 (similar to version 2 in 11-STABLE and previous). |1200070 |link:https://svnweb.freebsd.org/changeset/base/335873[335873] |July 2, 2018 |12.0-CURRENT after inlining man:atomic[9] in modules on amd64 and i386 requiring all modules of consumers to be rebuilt for these architectures. |1200071 |link:https://svnweb.freebsd.org/changeset/base/335930[335930] |July 4, 2018 |12.0-CURRENT after changing the ABI and API of man:epoch[9] (link:https://svnweb.freebsd.org/changeset/base/335924[335924]) requiring modules of consumers to be rebuilt. |1200072 |link:https://svnweb.freebsd.org/changeset/base/335979[335979] |July 5, 2018 |12.0-CURRENT after changing the ABI and API of `struct xinpcb` and friends. |1200073 |link:https://svnweb.freebsd.org/changeset/base/336313[336313] |July 15, 2018 |12.0-CURRENT after changing the ABI and API of `struct if_shared_ctx` and `struct if_softc_ctx` requiring modules of man:iflib[9] consumers to be rebuilt. |1200074 |link:https://svnweb.freebsd.org/changeset/base/336360[336360] |July 16, 2018 |12.0-CURRENT after updating the configuration of libstdc++ to make use of C99 functions. |1200075 |link:https://svnweb.freebsd.org/changeset/base/336538[336538] |July 19, 2018 |12.0-CURRENT after `zfsloader` being folded into loader, and after adding ntpd:ntpd as uid:gid 123:123, and after removing arm big-endian support (MACHINE_ARCH=armeb). |1200076 |link:https://svnweb.freebsd.org/changeset/base/336914[336914] |July 30, 2018 |12.0-CURRENT after KPI changes to `timespecadd`. |1200077 |link:https://svnweb.freebsd.org/changeset/base/337576[337576] |August 10, 2018 |12.0-CURRENT after man:timespec_get[3] was added to the system. |1200078 |link:https://svnweb.freebsd.org/changeset/base/337863[337863] |August 15, 2018 |12.0-CURRENT after exec.created hook for jails. |1200079 |link:https://svnweb.freebsd.org/changeset/base/338061[338061] |August 19, 2018 |12.0-CURRENT after converting `arc4random` to using the Chacha20 algorithm and deprecating `arc4random_stir` and `arc4random_addrandom`. |1200080 |link:https://svnweb.freebsd.org/changeset/base/338172[338172] |August 22, 2018 |12.0-CURRENT after removing the drm drivers. |1200081 |link:https://svnweb.freebsd.org/changeset/base/338182[338182] |August 21, 2018 |12.0-CURRENT after KPI changes to NVMe. |1200082 |link:https://svnweb.freebsd.org/changeset/base/338285[338285] |August 24, 2018 |12.0-CURRENT after reverting the removal of the drm drivers. |1200083 |link:https://svnweb.freebsd.org/changeset/base/338331[338331] |August 26, 2018 |12.0-CURRENT after removing `arc4random_stir` and `arc4random_addrandom`. |1200084 |link:https://svnweb.freebsd.org/changeset/base/338478[338478] |September 5, 2018 |12.0-CURRENT after updating man:objcopy[1] to properly handle little-endian MIPS64 object files. |1200085 |link:https://svnweb.freebsd.org/changeset/base/339270[339270] |October 19, 2018 |12.0-STABLE after updating OpenSSL to version 1.1.1. |1200086 |link:https://svnweb.freebsd.org/changeset/base/339732[339732] |October 25, 2018 |12.0-STABLE after updating OpenSSL shared library version numbers. |1200500 |link:https://svnweb.freebsd.org/changeset/base/340471[340471] |November 16, 2018 |12-STABLE after releng/12.0 was branched. |1200501 |link:https://svnweb.freebsd.org/changeset/base/342801[342801] |January 6, 2019 |12-STABLE after merge of fixing `linux_destroy_dev()` behaviour when there are still files open from the destroying cdev. |1200502 |link:https://svnweb.freebsd.org/changeset/base/343126[343126] |January 17, 2019 |12-STABLE after enabling sys/random.h #include from C++. |1200503 |link:https://svnweb.freebsd.org/changeset/base/344152[344152] |February 15, 2019 |12-STABLE after merge of fixing man:renameat[2] for CAPABILITIES kernels. |1200504 |link:https://svnweb.freebsd.org/changeset/base/345169[345169] |March 15, 2019 |12-STABLE after merging CCM for the benefit of the ZoF port. |1200505 |link:https://svnweb.freebsd.org/changeset/base/345327[345327] |March 20, 2019 |12-STABLE after merging support for selectively disabling ZFS without disabling loader. |1200506 |link:https://svnweb.freebsd.org/changeset/base/346168[346168] |April 12, 2019 |12-STABLE after merging llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 8.0.0 final release r356365. |1200507 |link:https://svnweb.freebsd.org/changeset/base/346337[346337] |April 17, 2019 |12-STABLE after MFC of iflib changes in link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] and partially of link:https://svnweb.freebsd.org/changeset/base/345305[345305]. |1200508 |link:https://svnweb.freebsd.org/changeset/base/346784[346784] |April 27, 2019 |12-STABLE after `ether_gen_addr` availability. |1200509 |link:https://svnweb.freebsd.org/changeset/base/347790[347790] |May 16, 2019 |12-STABLE after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4]). |1200510 |link:https://svnweb.freebsd.org/changeset/base/348036[348036] |May 21, 2019 |12-STABLE after change to struct in linuxkpi from link:https://svnweb.freebsd.org/changeset/base/348035[348035]. |1200511 |link:https://svnweb.freebsd.org/changeset/base/348243[348243] |May 24, 2019 |12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/347843[347843]: adding `group_leader` member to struct `task_struct` to the LinuxKPI. |1200512 |link:https://svnweb.freebsd.org/changeset/base/348245[348245] |May 24, 2019 |12-STABLE after adding context member to ww_mutex in LinuxKPI. |1200513 |link:https://svnweb.freebsd.org/changeset/base/349763[349763] |July 5, 2019 |12-STABLE after MFC of man:epoch[9] changes: link:https://svnweb.freebsd.org/changeset/base/349763[349763], link:https://svnweb.freebsd.org/changeset/base/340404[340404], link:https://svnweb.freebsd.org/changeset/base/340415[340415], link:https://svnweb.freebsd.org/changeset/base/340417[340417], link:https://svnweb.freebsd.org/changeset/base/340419[340419], link:https://svnweb.freebsd.org/changeset/base/340420[340420]. |1200514 |link:https://svnweb.freebsd.org/changeset/base/350083[350083] |July 17, 2019 |12-STABLE after additions to LinuxKPI's rcu list. |1200515 |link:https://svnweb.freebsd.org/changeset/base/350877[350877] |August 11, 2019 |12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/349891[349891] (reorganize the SRCS lists as one file per line, and then alphabetize them) and link:https://svnweb.freebsd.org/changeset/base/349972[349972] (add `arm_sync_icache()` and `arm_drain_writebuf()` sysarch syscall wrappers). |1200516 |link:https://svnweb.freebsd.org/changeset/base/351276[351276] |August 20, 2019 |12-STABLE after MFC of various changes to iflib link:https://svnweb.freebsd.org/changeset/base/351276[351276]. |1200517 |link:https://svnweb.freebsd.org/changeset/base/352076[352076] |September 9, 2019 |12-STABLE after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI. |1200518 |link:https://svnweb.freebsd.org/changeset/base/352114[352114] |September 10, 2019 |12-STABLE after additional updates to LinuxKPI's sysfs. |1200519 |link:https://svnweb.freebsd.org/changeset/base/352351[352351] |September 15, 2019 |12-STABLE after MFC of the new fusefs driver. |1201000 |link:https://svnweb.freebsd.org/changeset/base/352546[352546] |September 20, 2019 |releng/12.1 branched from stable/12@r352480. |1201500 |link:https://svnweb.freebsd.org/changeset/base/352547[352547] |September 20, 2019 |12-STABLE after branching releng/12.1. |1201501 |link:https://svnweb.freebsd.org/changeset/base/354598[354598] |November 10, 2019 |12-STABLE after fixing a potential OOB read security issue in libc++. |1201502 |link:https://svnweb.freebsd.org/changeset/base/354613[354613] |November 11, 2019 |12-STABLE after enabling device class group attributes in the LinuxKPI. |1201503 |link:https://svnweb.freebsd.org/changeset/base/354928[354928] |November 21, 2019 |12-STABLE after adding support for `AT_EXECPATH` to man:elf_aux_info[3]. |1201504 |link:https://svnweb.freebsd.org/changeset/base/355658[355658] |November 10, 2019 |12-STABLE after correcting the C++ version check for declaring man:timespec_get[3]. |1201505 |link:https://svnweb.freebsd.org/changeset/base/355899[355899] |December 19, 2019 |12-STABLE after adding `sigsetop` extensions commonly found in musl libc and glibc. |1201506 |link:https://svnweb.freebsd.org/changeset/base/355968[355968] |December 21, 2019 |12-STABLE after doubling the value of `ARG_MAX`, for 64 bit platforms. |1201507 |link:https://svnweb.freebsd.org/changeset/base/356306[356306] |January 2, 2020 |12-STABLE after adding functions to man:bitstring[3] to find contiguous sequences of set or unset bits. |1201508 |link:https://svnweb.freebsd.org/changeset/base/356394[356394] |January 6, 2020 |12-STABLE after making USB statistics be per-device instead of per bus. |1201509 |link:https://svnweb.freebsd.org/changeset/base/356460[356460] |January 7, 2020 |12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316. |1201510 |link:https://svnweb.freebsd.org/changeset/base/356679[356679] |January 13, 2020 |12-STABLE after adding own counter for cancelled USB transfers. |1201511 |link:https://svnweb.freebsd.org/changeset/base/357333[357333] |January 31, 2020 |12-STABLE after adding [.filename]#/etc/os-release# as a symbolic link to [.filename]#/var/run/os-release#. |1201512 |link:https://svnweb.freebsd.org/changeset/base/357612[357612] |February 6, 2020 |12-STABLE after recent LinuxKPI changes. |1201513 |link:https://svnweb.freebsd.org/changeset/base/359957[359957] |April 15, 2020 |12-STABLE after cloning the RCU interface into a sleepable and a non-sleepable part in the LinuxKPI. |1201514 |link:https://svnweb.freebsd.org/changeset/base/360525[360525] |May 1, 2020 |12-STABLE after implementing full man:bus_dma[9] support in the LinuxKPI and pulling in all dependencies. |1201515 |link:https://svnweb.freebsd.org/changeset/base/360545[360545] |May 1, 2020 |12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release. |1201516 |link:https://svnweb.freebsd.org/changeset/base/360620[360620] |May 4, 2020 |12-STABLE after moving `id_mapped` to end of `bus_dma_impl` structure to preserve KPI. |1201517 |link:https://svnweb.freebsd.org/changeset/base/361350[361350] |May 21, 2020 |12-STABLE after renaming `vm.max_wired` to `vm.max_user_wired` and changing its type. |1201518 |link:https://svnweb.freebsd.org/changeset/base/362319[362319] |June 18, 2020 |12-STABLE after implementing `__is_constexpr()` function macro in the LinuxKPI. |1201519 |link:https://svnweb.freebsd.org/changeset/base/362916[362916] |July 4, 2020 |12-STABLE after making liblzma use libmd implementation of SHA256. |1201520 |link:https://svnweb.freebsd.org/changeset/base/363494[363494] |July 24, 2020 |12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 release. |1201521 |link:https://svnweb.freebsd.org/changeset/base/363790[363790] |August 3, 2020 |12-STABLE after implementing the `array_size()` function in the LinuxKPI. |1201522 |link:https://svnweb.freebsd.org/changeset/base/363832[363832] |August 4, 2020 |12-STABLE after adding sysctlbyname system call. |1201523 |link:https://svnweb.freebsd.org/changeset/base/364390[364390] |August 19, 2020 |12-STABLE after change to clone the task struct fields related to RCU. |1201524 |link:https://svnweb.freebsd.org/changeset/base/365356[365356] |September 5, 2020 |12-STABLE after splitting XDR off into a separate kernel module, to minimize ZFS dependencies. |1201525 |link:https://svnweb.freebsd.org/changeset/base/365471[365471] |September 8, 2020 |12-STABLE after adding atomic and `bswap` functions to libcompiler_rt. |1201526 |link:https://svnweb.freebsd.org/changeset/base/365608[365608] |September 10, 2020 |12-STABLE after updating net80211 and kernel privilege checking API changes. |1202000 |link:https://svnweb.freebsd.org/changeset/base/365618[365618] |September 11, 2020 |releng/12.2 branched from stable/12@r365618. |1202500 |link:https://svnweb.freebsd.org/changeset/base/365619[365619] |September 11, 2020 |12-STABLE after branching releng/12.2. |1202501 |link:https://svnweb.freebsd.org/changeset/base/365661[365661] |September 12, 2020 |12-STABLE after followup commits to libcompiler_rt. |1202502 |link:https://svnweb.freebsd.org/changeset/base/365816[365816] |September 16, 2020 |12-STABLE after fixing man:crunchgen[1] application build with `WARNS=6`. |1202503 |link:https://svnweb.freebsd.org/changeset/base/366878[366878] |October 20, 2020 |12-STABLE after populating the acquire context field of a `ww_mutex` in the LinuxKPI. |1202504 |link:https://svnweb.freebsd.org/changeset/base/367511[367511] |November 9, 2020 |12-STABLE after the addition of man:ptsname_r[3]. |1202505 |gitref:f3d75bed5475b15f21edf4052665b1212b548bd0[repository="src",length=12] |December 28, 2020 |12-STABLE after improving handling of alternate settings in the USB stack. |1202506 |gitref:d36cc12ddfe3335ec8306bd4b393f11069551fa0[repository="src",length=12] |April 30, 2021 |12-STABLE after changing the internal KAPI between the krpc and NFS. |1202507 |gitref:1e279fe9deaea1c5e3503117dd3077dcffb1276d[repository="src",length=12] |May 10, 2021 |12-STABLE after changing the internal KAPI between the nscl.ko and nfscommon.ko modules. |1202508 |gitref:489236b0474857b0a7a2df77c302290e12be9e7b[repository="src",length=12] |June 26, 2021 |12-STABLE after changing the internal KAPI between the krpc and nfsd modules. |1203500 |gitref:f2900e784cb024e55ec0f5cd6834af5fadcb9f9a[repository="src",length=12] |October 20, 2021 |12-STABLE after branching releng/12.3. |1203501 |gitref:b148c7b87148b653fdbef9c5aa591b9abcd99e26[repository="src",length=12] |December 22, 2021 |12-STABLE after adding atomic and `bswap` functions to libcompiler_rt. |1203502 |gitref:4772e4135cb3fe7f25531894f3b02f35ec086bda[repository="src",length=12] |December 22, 2021 |12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 11.0.1. |1203503 |gitref:e405b2dc913c99189aa9b923ed686a790253cc7e[repository="src",length=12] |December 25, 2021 |12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 12.0.0. |1203504 |gitref:1a398266112e73f91a4f2e2701ceefd3f2948aac[repository="src",length=12] |December 25, 2021 |12-STABLE after adding out-of-line LSE atomics helpers to [.filename]#libcompiler_rt.a# on aarch64. |1203505 |gitref:0b7be89b329e0f862c25f34abfb13c75a4d45f2a[repository="src",length=12] |December 25, 2021 |12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 13.0.0. |1203506 |gitref:f591279d9c93bc2ea9cd1a447c2df11d437fbc7b[repository="src",length=12] |February 12, 2022 |12-STABLE after restoring availability tradeoff of random(4). |1203507 |gitref:180d95e04e938328de8f2a24d16fdb5049e15262[repository="src",length=12] |April 9, 2022 |12-STABLE after zlib unification. |1203508 |gitref:6c717a28505d3e77a0c3780ca1f65eb85b538eb9[repository="src",length=12] |October 19, 2022 |12-STABLE after iflib: Allow drivers to determine which queue to TX on. |1204000 |gitref:fce871fe35204527a2ce08e43e1572ae9295cc00[repository="src",length=12] |October 20, 2022 |releng/12.4 branched from stable/12. |1204500 |gitref:6a9031c5e2ba5435aa4ea08ee05c351d5bef035d[repository="src",length=12] |October 20, 2022 |12-STABLE after branching releng/12.4. |=== //// Template: |12XXXXX |gitref:XXXXXXXX[repository="src",length=12] |October 30, 2021 |12-STABLE after XXXXXX. //// [[versions-11]] == FreeBSD 11 Versions [[freebsd-versions-table-11]] .FreeBSD 11 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |1100000 |link:https://svnweb.freebsd.org/changeset/base/256284[256284] |October 10, 2013 |11.0-CURRENT. |1100001 |link:https://svnweb.freebsd.org/changeset/base/256776[256776] |October 19, 2013 |11.0-CURRENT after addition of support for "first boot" [.filename]#rc.d# scripts, so ports can make use of this. |1100002 |link:https://svnweb.freebsd.org/changeset/base/257696[257696] |November 5, 2013 |11.0-CURRENT after dropping support for historic ioctls. |1100003 |link:https://svnweb.freebsd.org/changeset/base/258284[258284] |November 17, 2013 |11.0-CURRENT after iconv changes. |1100004 |link:https://svnweb.freebsd.org/changeset/base/259424[259424] |December 15, 2013 |11.0-CURRENT after the behavior change of `gss_pseudo_random` introduced in link:https://svnweb.freebsd.org/changeset/base/259286[259286]. |1100005 |link:https://svnweb.freebsd.org/changeset/base/260010[260010] |December 28, 2013 |11.0-CURRENT after link:https://svnweb.freebsd.org/changeset/base/259951[259951] - Do not coalesce entries in man:vm_map_stack[9]. |1100006 |link:https://svnweb.freebsd.org/changeset/base/261246[261246] |January 28, 2014 |11.0-CURRENT after upgrades of libelf and libdwarf. |1100007 |link:https://svnweb.freebsd.org/changeset/base/261283[261283] |January 30, 2014 |11.0-CURRENT after upgrade of libc++ to 3.4 release. |1100008 |link:https://svnweb.freebsd.org/changeset/base/261881[261881] |February 14, 2014 |11.0-CURRENT after libc++ 3.4 ABI compatibility fix. |1100009 |link:https://svnweb.freebsd.org/changeset/base/261991[261991] |February 16, 2014 |11.0-CURRENT after upgrade of llvm/clang to 3.4 release. |1100010 |link:https://svnweb.freebsd.org/changeset/base/262630[262630] |February 28, 2014 |11.0-CURRENT after upgrade of ncurses to 5.9 release (rev link:https://svnweb.freebsd.org/changeset/base/262629[262629]). |1100011 |link:https://svnweb.freebsd.org/changeset/base/263102[263102] |March 13, 2014 |11.0-CURRENT after ABI change in struct `if_data`. |1100012 |link:https://svnweb.freebsd.org/changeset/base/263140[263140] |March 14, 2014 |11.0-CURRENT after removal of Novell IPX protocol support. |1100013 |link:https://svnweb.freebsd.org/changeset/base/263152[263152] |March 14, 2014 |11.0-CURRENT after removal of AppleTalk protocol support. |1100014 |link:https://svnweb.freebsd.org/changeset/base/263235[263235] |March 16, 2014 |11.0-CURRENT after renaming [.filename]## to [.filename]## to avoid a clash with similarly named headers in other operating systems. A compatibility header is left in place to limit build breakage, but will be deprecated in due course. |1100015 |link:https://svnweb.freebsd.org/changeset/base/263620[263620] |March 22, 2014 |11.0-CURRENT after `cnt` rename to `vm_cnt`. |1100016 |link:https://svnweb.freebsd.org/changeset/base/263660[263660] |March 23, 2014 |11.0-CURRENT after addition of `armv6hf TARGET_ARCH`. |1100017 |link:https://svnweb.freebsd.org/changeset/base/264121[264121] |April 4, 2014 |11.0-CURRENT after GCC support for `__block` definition. |1100018 |link:https://svnweb.freebsd.org/changeset/base/264212[264212] |April 6, 2014 |11.0-CURRENT after support for UDP-Lite protocol (RFC 3828). |1100019 |link:https://svnweb.freebsd.org/changeset/base/264289[264289] |April 8, 2014 |11.0-CURRENT after FreeBSD-SA-14:06.openssl (rev link:https://svnweb.freebsd.org/changeset/base/264265[264265]). |1100020 |link:https://svnweb.freebsd.org/changeset/base/265215[265215] |May 1, 2014 |11.0-CURRENT after removing `lindev` in favor of having /dev/full by default (rev link:https://svnweb.freebsd.org/changeset/base/265212[265212]). |1100021 |link:https://svnweb.freebsd.org/changeset/base/266151[266151] |May 6, 2014 |11.0-CURRENT after [.filename]#src.opts.mk# changes, decoupling man:make.conf[5] from `buildworld` (rev link:https://svnweb.freebsd.org/changeset/base/265419[265419]). |1100022 |link:https://svnweb.freebsd.org/changeset/base/266904[266904] |May 30, 2014 |11.0-CURRENT after changes to man:strcasecmp[3], moving man:strcasecmp_l[3] and man:strncasecmp_l[3] from [.filename]## to [.filename]## for POSIX 2008 compliance (rev link:https://svnweb.freebsd.org/changeset/base/266865[266865]). |1100023 |link:https://svnweb.freebsd.org/changeset/base/267440[267440] |June 13, 2014 |11.0-CURRENT after the CUSE library and kernel module have been attached to the build by default. |1100024 |link:https://svnweb.freebsd.org/changeset/base/267992[267992] |June 27, 2014 |11.0-CURRENT after man:sysctl[3] API change. |1100025 |link:https://svnweb.freebsd.org/changeset/base/268066[268066] |June 30, 2014 |11.0-CURRENT after man:regex[3] library update to add ">" and "<" delimiters. |1100026 |link:https://svnweb.freebsd.org/changeset/base/268118[268118] |July 1, 2014 |11.0-CURRENT after the internal interface between the NFS modules, including the krpc, was changed by (rev link:https://svnweb.freebsd.org/changeset/base/268115[268115]). |1100027 |link:https://svnweb.freebsd.org/changeset/base/268441[268441] |July 8, 2014 |11.0-CURRENT after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268431[268431]). |1100028 |link:https://svnweb.freebsd.org/changeset/base/268945[268945] |July 21, 2014 |11.0-CURRENT after man:hdestroy[3] compliance fix changed ABI. |1100029 |link:https://svnweb.freebsd.org/changeset/base/270173[270173] |August 3, 2014 |11.0-CURRENT after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269489[269489]). |1100030 |link:https://svnweb.freebsd.org/changeset/base/270929[270929] |September 1, 2014 |11.0-CURRENT after `SOCK_RAW` sockets were changed to not modify packets at all. |1100031 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |September 9, 2014 |11.0-CURRENT after FreeBSD-SA-14:18.openssl (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686]). |1100032 |link:https://svnweb.freebsd.org/changeset/base/271438[271438] |September 11, 2014 |11.0-CURRENT after API changes to `ifa_ifwithbroadaddr`, `ifa_ifwithdstaddr`, `ifa_ifwithnet`, and `ifa_ifwithroute`. |1100033 |link:https://svnweb.freebsd.org/changeset/base/271657[271657] |September 9, 2014 |11.0-CURRENT after changing `access`, `eaccess`, and `faccessat` to validate the mode argument. |1100034 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |September 16, 2014 |11.0-CURRENT after FreeBSD-SA-14:19.tcp (rev link:https://svnweb.freebsd.org/changeset/base/271666[271666]). |1100035 |link:https://svnweb.freebsd.org/changeset/base/271705[271705] |September 17, 2014 |11.0-CURRENT after i915 HW context support. |1100036 |link:https://svnweb.freebsd.org/changeset/base/271724[271724] |September 17, 2014 |Version bump to have ABI note distinguish binaries ready for strict man:mmap[2] flags checking (rev link:https://svnweb.freebsd.org/changeset/base/271724[271724]). |1100037 |link:https://svnweb.freebsd.org/changeset/base/272674[272674] |October 6, 2014 |11.0-CURRENT after addition of man:explicit_bzero[3] (rev link:https://svnweb.freebsd.org/changeset/base/272673[272673]). |1100038 |link:https://svnweb.freebsd.org/changeset/base/272951[272951] |October 11, 2014 |11.0-CURRENT after cleanup of TCP wrapper headers. |1100039 |link:https://svnweb.freebsd.org/changeset/base/273250[273250] |October 18, 2014 |11.0-CURRENT after removal of `MAP_RENAME` and `MAP_NORESERVE`. |1100040 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |October 21, 2014 |11.0-CURRENT after FreeBSD-SA-14:23 (rev link:https://svnweb.freebsd.org/changeset/base/273146[273146]). |1100041 |link:https://svnweb.freebsd.org/changeset/base/273875[273875] |October 30, 2014 |11.0-CURRENT after API changes to `syscall_register`, `syscall32_register`, `syscall_register_helper` and `syscall32_register_helper` (rev link:https://svnweb.freebsd.org/changeset/base/273707[273707]). |1100042 |link:https://svnweb.freebsd.org/changeset/base/274046[274046] |November 3, 2014 |11.0-CURRENT after a change to `struct tcpcb`. |1100043 |link:https://svnweb.freebsd.org/changeset/base/274085[274085] |November 4, 2014 |11.0-CURRENT after enabling man:vt[4] by default. |1100044 |link:https://svnweb.freebsd.org/changeset/base/274116[274116] |November 4, 2014 |11.0-CURRENT after adding new libraries/utilities (`dpv` and `figpar`) for data throughput visualization. |1100045 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |November 4, 2014 |11.0-CURRENT after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25. |1100046 |link:https://svnweb.freebsd.org/changeset/base/274470[274470] |November 13, 2014 |11.0-CURRENT after `kern_poll` signature change (rev link:https://svnweb.freebsd.org/changeset/base/274462[274462]). |1100047 |link:https://svnweb.freebsd.org/changeset/base/274476[274476] |November 13, 2014 |11.0-CURRENT after removal of no-at version of VFS syscalls helpers, like `kern_open`. |1100048 |link:https://svnweb.freebsd.org/changeset/base/275358[275358] |December 1, 2014 |11.0-CURRENT after starting the process of removing the use of the deprecated "M_FLOWID" flag from the network code. |1100049 |link:https://svnweb.freebsd.org/changeset/base/275633[275633] |December 9, 2014 |11.0-CURRENT after importing an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases. |1100050 |link:https://svnweb.freebsd.org/changeset/base/275732[275732] |December 12, 2014 |11.0-CURRENT after adding AES-ICM and AES-GCM to OpenCrypto. |1100051 |link:https://svnweb.freebsd.org/changeset/base/276096[276096] |December 23, 2014 |11.0-CURRENT after removing old NFS client and server code from the kernel. |1100052 |link:https://svnweb.freebsd.org/changeset/base/276479[276479] |December 31, 2014 |11.0-CURRENT after upgrade of clang, llvm and lldb to 3.5.0 release. |1100053 |link:https://svnweb.freebsd.org/changeset/base/276781[276781] |January 7, 2015 |11.0-CURRENT after man:MCLGET[9] gained a return value (rev link:https://svnweb.freebsd.org/changeset/base/276750[276750]). |1100054 |link:https://svnweb.freebsd.org/changeset/base/277213[277213] |January 15, 2015 |11.0-CURRENT after rewrite of callout subsystem. |1100055 |link:https://svnweb.freebsd.org/changeset/base/277528[277528] |January 22, 2015 |11.0-CURRENT after reverting callout changes in link:https://svnweb.freebsd.org/changeset/base/277213[277213]. |1100056 |link:https://svnweb.freebsd.org/changeset/base/277610[277610] |January 23, 2015 |11.0-CURRENT after addition of `futimens` and `utimensat` system calls. |1100057 |link:https://svnweb.freebsd.org/changeset/base/277897[277897] |January 29, 2015 |11.0-CURRENT after removal of `d_thread_t`. |1100058 |link:https://svnweb.freebsd.org/changeset/base/278228[278228] |February 5, 2015 |11.0-CURRENT after addition of support for probing the SCSI VPD Extended Inquiry page (0x86). |1100059 |link:https://svnweb.freebsd.org/changeset/base/278442[278442] |February 9, 2015 |11.0-CURRENT after import of xz 5.2.0, which added multi-threaded compression and lzma gained libthr dependency (rev link:https://svnweb.freebsd.org/changeset/base/278433[278433]). |1100060 |link:https://svnweb.freebsd.org/changeset/base/278846[278846] |February 16, 2015 |11.0-CURRENT after forwarding `FBIO_BLANK` to framebuffer clients. |1100061 |link:https://svnweb.freebsd.org/changeset/base/278964[278964] |February 18, 2015 |11.0-CURRENT after `CDAI_FLAG_NONE` addition. |1100062 |link:https://svnweb.freebsd.org/changeset/base/279221[279221] |February 23, 2015 |11.0-CURRENT after man:mtio[4] and man:sa[4] API and man:ioctl[2] additions. |1100063 |link:https://svnweb.freebsd.org/changeset/base/279728[279728] |March 7, 2015 |11.0-CURRENT after adding mutex support to the `pps_ioctl()` API in the kernel. |1100064 |link:https://svnweb.freebsd.org/changeset/base/279729[279729] |March 7, 2015 |11.0-CURRENT after adding PPS support to USB serial drivers. |1100065 |link:https://svnweb.freebsd.org/changeset/base/280031[280031] |March 15, 2015 |11.0-CURRENT after upgrading clang, llvm and lldb to 3.6.0. |1100066 |link:https://svnweb.freebsd.org/changeset/base/280306[280306] |March 20, 2015 |11.0-CURRENT after removal of SSLv2 support from OpenSSL. |1100067 |link:https://svnweb.freebsd.org/changeset/base/280630[280630] |March 25, 2015 |11.0-CURRENT after removal of SSLv2 support from man:fetch[1] and man:fetch[3]. |1100068 |link:https://svnweb.freebsd.org/changeset/base/281172[281172] |April 6, 2015 |11.0-CURRENT after change to net.inet6.ip6.mif6table sysctl. |1100069 |link:https://svnweb.freebsd.org/changeset/base/281550[281550] |April 15, 2015 |11.0-CURRENT after removal of const qualifier from man:iconv[3]. |1100070 |link:https://svnweb.freebsd.org/changeset/base/281613[281613] |April 16, 2015 |11.0-CURRENT after moving ALTQ from [.filename]#contrib# to [.filename]#net/altq#. |1100071 |link:https://svnweb.freebsd.org/changeset/base/282256[282256] |April 29, 2015 |11.0-CURRENT after API/ABI change to man:smb[4] (rev link:https://svnweb.freebsd.org/changeset/base/281985[281985]). |1100072 |link:https://svnweb.freebsd.org/changeset/base/282319[282319] |May 1, 2015 |11.0-CURRENT after adding man:reallocarray[3] in libc (rev link:https://svnweb.freebsd.org/changeset/base/282314[282314]). |1100073 |link:https://svnweb.freebsd.org/changeset/base/282650[282650] |May 8, 2015 |11.0-CURRENT after extending the maximum number of allowed PCM channels in a PCM stream to 127 and decreasing the maximum number of sub-channels to 1. |1100074 |link:https://svnweb.freebsd.org/changeset/base/283526[283526] |May 25, 2015 |11.0-CURRENT after adding preliminary support for x86-64 Linux binaries (rev link:https://svnweb.freebsd.org/changeset/base/283424[283424]), and upgrading clang and llvm to 3.6.1. |1100075 |link:https://svnweb.freebsd.org/changeset/base/283623[283623] |May 27, 2015 |11.0-CURRENT after `dounmount()` requiring a reference on the passed struct mount (rev link:https://svnweb.freebsd.org/changeset/base/283602[283602]). |1100076 |link:https://svnweb.freebsd.org/changeset/base/283983[283983] |June 4, 2015 |11.0-CURRENT after disabled generation of legacy formatted password databases entries by default. |1100077 |link:https://svnweb.freebsd.org/changeset/base/284233[284233] |June 10, 2015 |11.0-CURRENT after API changes to `lim_cur`, `lim_max`, and `lim_rlimit` (rev link:https://svnweb.freebsd.org/changeset/base/284215[284215]). |1100078 |link:https://svnweb.freebsd.org/changeset/base/286672[286672] |August 12, 2015 |11.0-CURRENT after man:crunchgen[1] changes from link:https://svnweb.freebsd.org/changeset/base/284356[284356] to link:https://svnweb.freebsd.org/changeset/base/285986[285986]. |1100079 |link:https://svnweb.freebsd.org/changeset/base/286874[286874] |August 18, 2015 |11.0-CURRENT after import of jemalloc 4.0.0 (rev link:https://svnweb.freebsd.org/changeset/base/286866[286866]). |1100080 |link:https://svnweb.freebsd.org/changeset/base/288943[288943] |October 5, 2015 |11.0-CURRENT after upgrading clang, llvm, lldb, compiler-rt and libc++ to 3.7.0. |1100081 |link:https://svnweb.freebsd.org/changeset/base/289415[289415] |October 16, 2015 |11.0-CURRENT after `undating` ZFS to support resumable send/receive (rev link:https://svnweb.freebsd.org/changeset/base/289362[289362]). |1100082 |link:https://svnweb.freebsd.org/changeset/base/289594[289594] |October 19, 2015 |11.0-CURRENT after Linux KPI updates. |1100083 |link:https://svnweb.freebsd.org/changeset/base/289749[289749] |October 22, 2015 |11.0-CURRENT after renaming [.filename]#linuxapi.ko# to [.filename]#linuxkpi.ko#. |1100084 |link:https://svnweb.freebsd.org/changeset/base/290135[290135] |October 29, 2015 |11.0-CURRENT after moving the LinuxKPI module into the default kernel build. |1100085 |link:https://svnweb.freebsd.org/changeset/base/290207[290207] |October 30, 2015 |11.0-CURRENT after import of OpenSSL 1.0.2d. |1100086 |link:https://svnweb.freebsd.org/changeset/base/290275[290275] |November 2, 2015 |11.0-CURRENT after making man:figpar[3] macros more unique. |1100087 |link:https://svnweb.freebsd.org/changeset/base/290479[290479] |November 7, 2015 |11.0-CURRENT after changing man:sysctl_add_oid[9]'s ABI. |1100088 |link:https://svnweb.freebsd.org/changeset/base/290495[290495] |November 7, 2015 |11.0-CURRENT after string collation and locales rework. |1100089 |link:https://svnweb.freebsd.org/changeset/base/290505[290505] |November 7, 2015 |11.0-CURRENT after API change to man:sysctl_add_oid[9] (rev link:https://svnweb.freebsd.org/changeset/base/290475[290475]). |1100090 |link:https://svnweb.freebsd.org/changeset/base/290715[290715] |November 10, 2015 |11.0-CURRENT after API change to callout_stop macro; (rev link:https://svnweb.freebsd.org/changeset/base/290664[290664]). |1100091 |link:https://svnweb.freebsd.org/changeset/base/291537[291537] |November 30, 2015 |11.0-CURRENT after changing the interface between the [.filename]#nfsd.ko# and [.filename]#nfscommon.ko# modules in link:https://svnweb.freebsd.org/changeset/base/291527[291527]. |1100092 |link:https://svnweb.freebsd.org/changeset/base/292499[292499] |December 19, 2015 |11.0-CURRENT after removal of `vm_pageout_grow_cache` (rev link:https://svnweb.freebsd.org/changeset/base/292469[292469]). |1100093 |link:https://svnweb.freebsd.org/changeset/base/292966[292966] |December 30, 2015 |11.0-CURRENT after removal of sys/crypto/sha2.h (rev link:https://svnweb.freebsd.org/changeset/base/292782[292782]). |1100094 |link:https://svnweb.freebsd.org/changeset/base/294086[294086] |January 15, 2016 |11.0-CURRENT after LinuxKPI PCI changes (rev link:https://svnweb.freebsd.org/changeset/base/294086[294086]). |1100095 |link:https://svnweb.freebsd.org/changeset/base/294327[294327] |January 19, 2016 |11.0-CURRENT after LRO optimizations. |1100096 |link:https://svnweb.freebsd.org/changeset/base/294505[294505] |January 21, 2016 |11.0-CURRENT after LinuxKPI idr_* additions. |1100097 |link:https://svnweb.freebsd.org/changeset/base/294860[294860] |January 26, 2016 |11.0-CURRENT after API change to man:dpv[3]. |1100098 |link:https://svnweb.freebsd.org/changeset/base/295682[295682] |February 16, 2016 |11.0-CURRENT after API change to `rman` (rev link:https://svnweb.freebsd.org/changeset/base/294883[294883]). |1100099 |link:https://svnweb.freebsd.org/changeset/base/295739[295739] |February 18, 2016 |11.0-CURRENT after allowing drivers to set the TCP ACK/data segment aggregation limit. |1100100 |link:https://svnweb.freebsd.org/changeset/base/296136[296136] |February 26, 2016 |11.0-CURRENT after man:bus_alloc_resource_any[9] API addition. |1100101 |link:https://svnweb.freebsd.org/changeset/base/296417[296417] |March 5, 2016 |11.0-CURRENT after upgrading copies of clang, llvm, lldb and compiler-rt to 3.8.0 release. |1100102 |link:https://svnweb.freebsd.org/changeset/base/296749[296749] |March 12, 2016 |11.0-CURRENT after libelf cross-endian fix in rev link:https://svnweb.freebsd.org/changeset/base/296685[296685]. |1100103 |link:https://svnweb.freebsd.org/changeset/base/297000[297000] |March 18, 2016 |11.0-CURRENT after using `uintmax_t` for `rman` ranges. |1100104 |link:https://svnweb.freebsd.org/changeset/base/297156[297156] |March 21, 2016 |11.0-CURRENT after tracking `filemon` usage via a proc.p_filemon pointer rather than its own lists. |1100105 |link:https://svnweb.freebsd.org/changeset/base/297602[297602] |April 6, 2016 |11.0-CURRENT after fixing sed functions `i` and `a` from discarding leading space. |1100106 |link:https://svnweb.freebsd.org/changeset/base/298486[298486] |April 22, 2016 |11.0-CURRENT after fixes for using IPv6 addresses with RDMA. |1100107 |link:https://svnweb.freebsd.org/changeset/base/299090[299090] |May 4, 2016 |11.0-CURRENT after improving performance and functionality of the man:bitstring[3] API. |1100108 |link:https://svnweb.freebsd.org/changeset/base/299530[299530] |May 12, 2016 |11.0-CURRENT after fixing handling of IOCTLs in the LinuxKPI. |1100109 |link:https://svnweb.freebsd.org/changeset/base/299933[299933] |May 16, 2016 |11.0-CURRENT after implementing more Linux device related functions in the LinuxKPI. |1100110 |link:https://svnweb.freebsd.org/changeset/base/300207[300207] |May 19, 2016 |11.0-CURRENT after adding support for managing Shingled Magnetic Recording (SMR) drives. |1100111 |link:https://svnweb.freebsd.org/changeset/base/300303[300303] |May 20, 2016 |11.0-CURRENT after removing `brk` and `sbrk` from arm64. |1100112 |link:https://svnweb.freebsd.org/changeset/base/300539[300539] |May 23, 2016 |11.0-CURRENT after adding `bit_count` to the man:bitstring[3] API. |1100113 |link:https://svnweb.freebsd.org/changeset/base/300701[300701] |May 26, 2016 |11.0-CURRENT after disabling alignment faults on armv6. |1100114 |link:https://svnweb.freebsd.org/changeset/base/300806[300806] |May 26, 2016 |11.0-CURRENT after fixing man:crunchgen[1] usage with `MAKEOBJDIRPREFIX`. |1100115 |link:https://svnweb.freebsd.org/changeset/base/300982[300982] |May 30, 2016 |11.0-CURRENT after adding an mbuf flag for `M_HASHTYPE_`. |1100116 |link:https://svnweb.freebsd.org/changeset/base/301011[301011] |May 31, 2016 |11.0-CURRENT after SHA-512t256 (rev link:https://svnweb.freebsd.org/changeset/base/300903[300903]) and Skein (rev link:https://svnweb.freebsd.org/changeset/base/300966[300966]) where added to libmd, libcrypt, the kernel, and ZFS (rev link:https://svnweb.freebsd.org/changeset/base/301010[301010]). |1100117 |link:https://svnweb.freebsd.org/changeset/base/301892[301892] |June 6, 2016 |11.0-CURRENT after libpam was synced with stock link:https://svnweb.freebsd.org/changeset/base/301602[301602], bumping library version. |1100118 |link:https://svnweb.freebsd.org/changeset/base/302071[302071] |June 21, 2016 |11.0-CURRENT after breaking binary compatibility of struct disk link:https://svnweb.freebsd.org/changeset/base/302069[302069]. |1100119 |link:https://svnweb.freebsd.org/changeset/base/302150[302150] |June 23, 2016 |11.0-CURRENT after switching `geom_disk` to using a pool mutex. |1100120 |link:https://svnweb.freebsd.org/changeset/base/302153[302153] |June 23, 2016 |11.0-CURRENT after adding spares to struct ifnet. |1100121 |link:https://svnweb.freebsd.org/changeset/base/303979[303979] |August 12, 2015 |11-STABLE after `releng/11.0` branched from 11-STABLE (rev link:https://svnweb.freebsd.org/changeset/base/303975[303975]). |1100500 |link:https://svnweb.freebsd.org/changeset/base/303979[303979] |August 12, 2016 |11.0-STABLE adding branched link:https://svnweb.freebsd.org/changeset/base/303976[303976]. |1100501 |link:https://svnweb.freebsd.org/changeset/base/304609[304609] |August 22, 2016 |11.0-STABLE after adding C++11 `thread_local` support. |1100502 |link:https://svnweb.freebsd.org/changeset/base/304865[304865] |August 26, 2016 |11.0-STABLE after `LC_*_MASK` fix. |1100503 |link:https://svnweb.freebsd.org/changeset/base/305733[305733] |September 12, 2016 |11.0-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]. |1100504 |link:https://svnweb.freebsd.org/changeset/base/307330[307330] |October 14, 2016 |11.0-STABLE after ZFS merges. |1100505 |link:https://svnweb.freebsd.org/changeset/base/307590[307590] |October 19, 2016 |11.0-STABLE after `struct fb_info` change. |1100506 |link:https://svnweb.freebsd.org/changeset/base/308048[308048] |October 28, 2016 |11.0-STABLE after installing header files required development with `libzfs_core`. |1100507 |link:https://svnweb.freebsd.org/changeset/base/310120[310120] |December 15, 2016 |11.0-STABLE after adding the `ki_moretdname` member to `struct kinfo_proc` and `struct kinfo_proc32` to export the whole thread name to user-space utilities. |1100508 |link:https://svnweb.freebsd.org/changeset/base/310618[310618] |December 26, 2016 |11.0-STABLE after upgrading copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.1 release, and adding lld 3.9.1. |1100509 |link:https://svnweb.freebsd.org/changeset/base/311186[311186] |January 3, 2017 |11.0-STABLE after man:crunchgen[1] META_MODE fix (rev link:https://svnweb.freebsd.org/changeset/base/311185[311185]). |1100510 |link:https://svnweb.freebsd.org/changeset/base/315312[315312] |March 15, 2017 |11.0-STABLE after MFC of `fget_cap`, `getsock_cap`, and related changes. |1100511 |link:https://svnweb.freebsd.org/changeset/base/316423[316423] |April 2, 2017 |11.0-STABLE after multiple MFCs updating clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0 release. |1100512 |link:https://svnweb.freebsd.org/changeset/base/316498[316498] |April 4, 2017 |11.0-STABLE after making CAM SIM lock optional (revs link:https://svnweb.freebsd.org/changeset/base/315673[315673], link:https://svnweb.freebsd.org/changeset/base/315674[315674]). |1100513 |link:https://svnweb.freebsd.org/changeset/base/318197[318197] |May 11, 2017 |11.0-STABLE after merging the addition of the [.filename]## header. |1100514 |link:https://svnweb.freebsd.org/changeset/base/319279[319279] |May 31, 2017 |11.0-STABLE after multiple MFCs of `libpcap`, `WITHOUT_INET6`, and a few other minor changes. |1101000 |link:https://svnweb.freebsd.org/changeset/base/320486[320486] |June 30, 2017 |`releng/11.1` branched from `stable/11`. |1101001 |link:https://svnweb.freebsd.org/changeset/base/320763[320763] |June 30, 2017 |11.1-RC1 After merging the `MAP_GUARD` man:mmap[2] flag addition. |1101500 |link:https://svnweb.freebsd.org/changeset/base/320487[320487] |June 30, 2017 |11-STABLE after `releng/11.1` branched. |1101501 |link:https://svnweb.freebsd.org/changeset/base/320666[320666] |July 5, 2017 |11-STABLE after merging the `MAP_GUARD` man:mmap[2] flag addition. |1101502 |link:https://svnweb.freebsd.org/changeset/base/321688[321688] |July 29, 2017 |11-STABLE after merging the NFS client forced dismount support `umount -N` addition. |1101503 |link:https://svnweb.freebsd.org/changeset/base/323431[323431] |September 11, 2017 |11-STABLE after merging changes making the WRFSBASE instruction operational on amd64. |1101504 |link:https://svnweb.freebsd.org/changeset/base/324006[324006] |September 26, 2017 |11-STABLE after merging libm from head, which adds man:cacoshl[3], man:cacosl[3], man:casinhl[3], man:casinl[3], man:catanl[3], man:catanhl[3], man:sincos[3], man:sincosf[3], and man:sincosl[3]. |1101505 |link:https://svnweb.freebsd.org/changeset/base/324023[324023] |September 26, 2017 |11-STABLE after merging clang, llvm, lld, lldb, compiler-rt and libc++ 5.0.0 release. |1101506 |link:https://svnweb.freebsd.org/changeset/base/325003[325003] |October 25, 2017 |11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/324281[324281], adding the `value.u16` field to `struct diocgattr_arg`. |1101507 |link:https://svnweb.freebsd.org/changeset/base/328379[328379] |January 24, 2018 |11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/325028[325028], fixing `ptrace()` to always clear the correct thread event when resuming. |1101508 |link:https://svnweb.freebsd.org/changeset/base/328386[328386] |January 24, 2018 |11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/316648[316648], renaming `smp_no_rendevous_barrier()` to `smp_no_rendezvous_barrier()`. |1101509 |link:https://svnweb.freebsd.org/changeset/base/328653[328653] |February 1, 2018 |11-STABLE after an overwrite merge backport of the LinuxKPI from FreeBSD-head. |1101510 |link:https://svnweb.freebsd.org/changeset/base/329450[329450] |February 17, 2018 |11-STABLE after the `cmpxchg()` macro is now fully functional in the LinuxKPI. |1101511 |link:https://svnweb.freebsd.org/changeset/base/329981[329981] |February 25, 2018 |11-STABLE after concluding the recent LinuxKPI related updates. |1101512 |link:https://svnweb.freebsd.org/changeset/base/331219[331219] |March 19, 2018 |11-STABLE after merging `retpoline` support from the upstream llvm, clang and lld 5.0 branches. |1101513 |link:https://svnweb.freebsd.org/changeset/base/331838[331838] |March 31, 2018 |11-STABLE after merging clang, llvm, lld, lldb, compiler-rt and libc++ 6.0.0 release, and several follow-up fixes. |1101514 |link:https://svnweb.freebsd.org/changeset/base/332089[332089] |April 5, 2018 |11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/328331[328331], adding a new and incompatible interpretation of `${name}_limits` in rc scripts. |1101515 |link:https://svnweb.freebsd.org/changeset/base/332363[332363] |April 10, 2018 |11-STABLE after reverting link:https://svnweb.freebsd.org/changeset/base/331880[331880], removing the new and incompatible interpretation of `${name}_limits` in rc scripts. |1101516 |link:https://svnweb.freebsd.org/changeset/base/334392[334392] |May 30, 2018 |11-STABLE after man:dwatch[1] touch-ups. |1102000 |link:https://svnweb.freebsd.org/changeset/base/334459[334459] |June 1, 2018 |`releng/11.2` branched from `stable/11`. |1102500 |link:https://svnweb.freebsd.org/changeset/base/334461[334461] |June 1, 2018 |11-STABLE after releng/11.2 branched. |1102501 |link:https://svnweb.freebsd.org/changeset/base/335436[335436] |June 20, 2018 |11-STABLE after LinuxKPI updates requiring recompilation of external kernel modules. |1102502 |link:https://svnweb.freebsd.org/changeset/base/338617[338617] |September 12, 2018 |11-STABLE after adding a socket option SO_TS_CLOCK and fixing `recvmsg32()` system call to properly down-convert layout of the 64-bit structures to match what 32-bit app(s) expect. |1102503 |link:https://svnweb.freebsd.org/changeset/base/338931[338931] |September 25, 2018 |11-STABLE after merging a TCP checksum fix to man:iflib[9] and adding new media types to if_media.h |1102504 |link:https://svnweb.freebsd.org/changeset/base/340309[340309] |November 9, 2018 |11-STABLE after several MFCs: updating man:objcopy[1] to properly handle little-endian MIPS64 object; correcting mips64el test to use ELF header; adding test for 64-bit ELF in _libelf_is_mips64el. |1102505 |link:https://svnweb.freebsd.org/changeset/base/342804[342804] |January 6, 2019 |11-STABLE after merge of fixing `linux_destroy_dev()` behaviour when there are still files open from the destroying cdev. |1102506 |link:https://svnweb.freebsd.org/changeset/base/344220[344220] |February 17, 2019 |11-STABLE after merging multiple commits to lualoader. |1102507 |link:https://svnweb.freebsd.org/changeset/base/346296[346296] |April 16, 2019 |11-STABLE after merging llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 8.0.0 final release r356365. |1102508 |link:https://svnweb.freebsd.org/changeset/base/346784[346784] |April 27, 2019 |11-STABLE after `ether_gen_addr` availability. |1102509 |link:https://svnweb.freebsd.org/changeset/base/347212[347212] |May 6, 2019 |11-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] and partially of link:https://svnweb.freebsd.org/changeset/base/345305[345305]. |1102510 |link:https://svnweb.freebsd.org/changeset/base/347883[347883] |May 16, 2019 |11-STABLE after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4]). |1103000 |link:https://svnweb.freebsd.org/changeset/base/349026[349026] |June 14, 2019 |`releng/11.3` branched from `stable/11`. |1103500 |link:https://svnweb.freebsd.org/changeset/base/349027[349027] |June 14, 2019 |11-STABLE after releng/11.3 branched. |1103501 |link:https://svnweb.freebsd.org/changeset/base/354598[354598] |November 10, 2019 |11-STABLE after fixing a potential OOB read security issue in libc++. |1103502 |link:https://svnweb.freebsd.org/changeset/base/354614[354614] |November 11, 2019 |11-STABLE after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI. |1103503 |link:https://svnweb.freebsd.org/changeset/base/354615[354615] |November 11, 2019 |11-STABLE after LinuxKPI sysfs improvements. |1103504 |link:https://svnweb.freebsd.org/changeset/base/354616[354616] |November 11, 2019 |11-STABLE after enabling device class group attributes in the LinuxKPI. |1103505 |link:https://svnweb.freebsd.org/changeset/base/355899[355899] |December 19, 2019 |11-STABLE after adding `sigsetop` extensions commonly found in musl libc and glibc. |1103506 |link:https://svnweb.freebsd.org/changeset/base/356395[356395] |January 6, 2020 |11-STABLE after making USB statistics be per-device instead of per bus. |1103507 |link:https://svnweb.freebsd.org/changeset/base/356680[356680] |January 13, 2020 |11-STABLE after adding own counter for cancelled USB transfers. |1103508 |link:https://svnweb.freebsd.org/changeset/base/357613[357613] |February 6, 2020 |11-STABLE after recent LinuxKPI changes. |1103509 |link:https://svnweb.freebsd.org/changeset/base/359958[359958] |April 15, 2020 |11-STABLE after moving `id_mapped` to end of `bus_dma_impl` structure to preserve KPI. |1103510 |link:https://svnweb.freebsd.org/changeset/base/360658[360658] |May 5, 2020 |11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316. |1103511 |link:https://svnweb.freebsd.org/changeset/base/360784[360784] |May 7, 2020 |11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release. |1104000 |link:https://svnweb.freebsd.org/changeset/base/360804[360804] |May 8, 2020 |`releng/11.4` branched from `stable/11`. |1104001 |link:https://svnweb.freebsd.org/changeset/base/360822[360822] |May 8, 2020 |11.4-BETA1 after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release. |1104500 |link:https://svnweb.freebsd.org/changeset/base/360805[360805] |May 8, 2020 |11-STABLE after releng/11.4 branched. |1104501 |link:https://svnweb.freebsd.org/changeset/base/362320[362320] |June 18, 2020 |11-STABLE after implementing `__is_constexpr()` function macro in the LinuxKPI. |1104502 |link:https://svnweb.freebsd.org/changeset/base/362919[362919] |July 4, 2020 |11-STABLE after making liblzma use libmd implementation of SHA256. |1104503 |link:https://svnweb.freebsd.org/changeset/base/363496[363496] |July 24, 2020 |11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 release. |1104504 |link:https://svnweb.freebsd.org/changeset/base/363792[363792] |August 3, 2020 |11-STABLE after implementing the `array_size()` function in the LinuxKPI. |1104505 |link:https://svnweb.freebsd.org/changeset/base/364391[364391] |August 19, 2020 |11-STABLE after change to clone the task struct fields related to RCU. |1104506 |link:https://svnweb.freebsd.org/changeset/base/365471[365471] |September 8, 2020 |11-STABLE after adding atomic and `bswap` functions to libcompiler_rt. |1104507 |link:https://svnweb.freebsd.org/changeset/base/365661[365661] |September 12, 2020 |11-STABLE after followup commits to libcompiler_rt. |1104508 |link:https://svnweb.freebsd.org/changeset/base/366879[366879] |October 20, 2020 |11-STABLE after populating the acquire context field of a `ww_mutex` in the LinuxKPI. |1104509 |link:https://svnweb.freebsd.org/changeset/base/366889[366889] |October 20, 2020 |11-STABLE after additions to LinuxKPI's `RCU` list. |1104510 |link:https://svnweb.freebsd.org/changeset/base/367513[367513] |November 9, 2020 |11-STABLE after the addition of `ptsname_r`. |=== [[versions-10]] == FreeBSD 10 Versions [[freebsd-versions-table-10]] .FreeBSD 10 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |1000000 |link:https://svnweb.freebsd.org/changeset/base/225757[225757] |September 26, 2011 |10.0-CURRENT. |1000001 |link:https://svnweb.freebsd.org/changeset/base/227070[227070] |November 4, 2011 |10-CURRENT after addition of the man:posix_fadvise[2] system call. |1000002 |link:https://svnweb.freebsd.org/changeset/base/228444[228444] |December 12, 2011 |10-CURRENT after defining boolean true/false in sys/types.h, sizeof(bool) may have changed (rev link:https://svnweb.freebsd.org/changeset/base/228444[228444]). 10-CURRENT after xlocale.h was introduced (rev link:https://svnweb.freebsd.org/changeset/base/227753[227753]). |1000003 |link:https://svnweb.freebsd.org/changeset/base/228571[228571] |December 16, 2011 |10-CURRENT after major changes to man:carp[4], changing size of struct `in_aliasreq`, struct in6_aliasreq (rev link:https://svnweb.freebsd.org/changeset/base/228571[228571]) and straitening arguments check of SIOCAIFADDR (rev link:https://svnweb.freebsd.org/changeset/base/228574[228574]). |1000004 |link:https://svnweb.freebsd.org/changeset/base/229204[229204] |January 1, 2012 |10-CURRENT after the removal of `skpc()` and the addition of man:memcchr[9] (rev link:https://svnweb.freebsd.org/changeset/base/229200[229200]). |1000005 |link:https://svnweb.freebsd.org/changeset/base/230207[230207] |January 16, 2012 |10-CURRENT after the removal of support for SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFDSTADDR ioctls. |1000006 |link:https://svnweb.freebsd.org/changeset/base/230590[230590] |January 26, 2012 |10-CURRENT after introduction of read capacity data asynchronous notification in the man:cam[4] layer. |1000007 |link:https://svnweb.freebsd.org/changeset/base/231025[231025] |February 5, 2012 |10-CURRENT after introduction of new man:tcp[4] socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT. |1000008 |link:https://svnweb.freebsd.org/changeset/base/231505[231505] |February 11, 2012 |10-CURRENT after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists. |1000009 |link:https://svnweb.freebsd.org/changeset/base/232154[232154] |February 25, 2012 |10-CURRENT after import of libarchive 3.0.3 (rev link:https://svnweb.freebsd.org/changeset/base/232153[232153]). |1000010 |link:https://svnweb.freebsd.org/changeset/base/233757[233757] |March 31, 2012 |10-CURRENT after `xlocale` cleanup. |1000011 |link:https://svnweb.freebsd.org/changeset/base/234355[234355] |April 16, 2012 |10-CURRENT import of LLVM/Clang 3.1 trunk link:https://svnweb.freebsd.org/changeset/base/154661[154661] (rev link:https://svnweb.freebsd.org/changeset/base/234353[234353]). |1000012 |link:https://svnweb.freebsd.org/changeset/base/234924[234924] |May 2, 2012 |10-CURRENT jemalloc import. |1000013 |link:https://svnweb.freebsd.org/changeset/base/235788[235788] |May 22, 2012 |10-CURRENT after `byacc` import. |1000014 |link:https://svnweb.freebsd.org/changeset/base/237631[237631] |June 27, 2012 |10-CURRENT after BSD sort becoming the default sort (rev link:https://svnweb.freebsd.org/changeset/base/237629[237629]). |1000015 |link:https://svnweb.freebsd.org/changeset/base/238405[238405] |July 12, 2012 |10-CURRENT after import of OpenSSL 1.0.1c. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/238429[238429] |July 13, 2012 |10-CURRENT after the fix for LLVM/Clang 3.1 regression. |1000016 |link:https://svnweb.freebsd.org/changeset/base/239179[239179] |August 8, 2012 |10-CURRENT after KBI change in man:ucom[4]. |1000017 |link:https://svnweb.freebsd.org/changeset/base/239214[239214] |August 8, 2012 |10-CURRENT after adding streams feature to the USB stack. |1000018 |link:https://svnweb.freebsd.org/changeset/base/240233[240233] |September 8, 2012 |10-CURRENT after major rewrite of man:pf[4]. |1000019 |link:https://svnweb.freebsd.org/changeset/base/241245[241245] |October 6, 2012 |10-CURRENT after man:pfil[9] KBI/KPI changed to supply packets in net byte order to AF_INET filter hooks. |1000020 |link:https://svnweb.freebsd.org/changeset/base/241610[241610] |October 16, 2012 |10-CURRENT after the network interface cloning KPI changed and struct `if_clone` becoming opaque. |1000021 |link:https://svnweb.freebsd.org/changeset/base/241897[241897] |October 22, 2012 |10-CURRENT after removal of support for non-MPSAFE filesystems and addition of support for FUSEFS (rev link:https://svnweb.freebsd.org/changeset/base/241519[241519]). |1000022 |link:https://svnweb.freebsd.org/changeset/base/241913[241913] |October 22, 2012 |10-CURRENT after the entire IPv4 stack switched to network byte order for IP packet header storage. |1000023 |link:https://svnweb.freebsd.org/changeset/base/242619[242619] |November 5, 2012 |10-CURRENT after jitter buffer in the common USB serial driver code, to temporarily store characters if the TTY buffer is full. Add flow stop and start signals when this happens. |1000024 |link:https://svnweb.freebsd.org/changeset/base/242624[242624] |November 5, 2012 |10-CURRENT after clang was made the default compiler on i386 and amd64. |1000025 |link:https://svnweb.freebsd.org/changeset/base/243443[243443] |November 17, 2012 |10-CURRENT after the sin6_scope_id member variable in struct sockaddr_in6 was changed to being filled by the kernel before passing the structure to the userland via sysctl or routing socket. This means the KAME-specific embedded scope id in sin6_addr.s6_addr[2] is always cleared in userland application. |1000026 |link:https://svnweb.freebsd.org/changeset/base/245313[245313] |January 11, 2013 |10-CURRENT after install gained the -N flag. May also be used to indicate the presence of nmtree. |1000027 |link:https://svnweb.freebsd.org/changeset/base/246084[246084] |January 29, 2013 |10-CURRENT after cat gained the -l flag (rev link:https://svnweb.freebsd.org/changeset/base/246083[246083]). |1000028 |link:https://svnweb.freebsd.org/changeset/base/246759[246759] |February 13, 2013 |10-CURRENT after USB moved to the driver structure requiring a rebuild of all USB modules. |1000029 |link:https://svnweb.freebsd.org/changeset/base/247821[247821] |March 4, 2013 |10-CURRENT after the introduction of tickless callout facility which also changed the layout of struct callout (rev link:https://svnweb.freebsd.org/changeset/base/247777[247777]). |1000030 |link:https://svnweb.freebsd.org/changeset/base/248210[248210] |March 12, 2013 |10-CURRENT after KPI breakage introduced in the VM subsystem to support read/write locking (rev link:https://svnweb.freebsd.org/changeset/base/248084[248084]). |1000031 |link:https://svnweb.freebsd.org/changeset/base/249943[249943] |April 26, 2013 |10-CURRENT after the `dst` parameter of the ifnet `if_output` method was changed to take const qualifier (rev link:https://svnweb.freebsd.org/changeset/base/249925[249925]). |1000032 |link:https://svnweb.freebsd.org/changeset/base/250163[250163] |May 1, 2013 |10-CURRENT after the introduction of the man:accept4[2] (rev link:https://svnweb.freebsd.org/changeset/base/250154[250154]) and man:pipe2[2] (rev link:https://svnweb.freebsd.org/changeset/base/250159[250159]) system calls. |1000033 |link:https://svnweb.freebsd.org/changeset/base/250881[250881] |May 21, 2013 |10-CURRENT after flex 2.5.37 import. |1000034 |link:https://svnweb.freebsd.org/changeset/base/251294[251294] |June 3, 2013 |10-CURRENT after the addition of these functions to libm: man:cacos[3], man:cacosf[3], man:cacosh[3], man:cacoshf[3], man:casin[3], man:casinf[3], man:casinh[3], man:casinhf[3], man:catan[3], man:catanf[3], man:catanh[3], man:catanhf[3], man:logl[3], man:log2l[3], man:log10l[3], man:log1pl[3], man:expm1l[3]. |1000035 |link:https://svnweb.freebsd.org/changeset/base/251527[251527] |June 8, 2013 |10-CURRENT after the introduction of the man:aio_mlock[2] system call (rev link:https://svnweb.freebsd.org/changeset/base/251526[251526]). |1000036 |link:https://svnweb.freebsd.org/changeset/base/253049[253049] |July 9, 2013 |10-CURRENT after the addition of a new function to the kernel GSSAPI module's function call interface. |1000037 |link:https://svnweb.freebsd.org/changeset/base/253089[253089] |July 9, 2013 |10-CURRENT after the migration of statistics structures to PCPU counters. Changed structures include: `ahstat`, `arpstat`, `espstat`, `icmp6_ifstat`, `icmp6stat`, `in6_ifstat`, `ip6stat`, `ipcompstat`, `ipipstat`, `ipsecstat`, `mrt6stat`, `mrtstat`, `pfkeystat`, `pim6stat`, `pimstat`, `rip6stat`, `udpstat` (rev link:https://svnweb.freebsd.org/changeset/base/253081[253081]). |1000038 |link:https://svnweb.freebsd.org/changeset/base/253396[253396] |July 16, 2013 |10-CURRENT after making `ARM EABI` the default ABI on arm, armeb, armv6, and armv6eb architectures. |1000039 |link:https://svnweb.freebsd.org/changeset/base/253549[253549] |July 22, 2013 |10-CURRENT after `CAM` and man:mps[4] driver scanning changes. |1000040 |link:https://svnweb.freebsd.org/changeset/base/253638[253638] |July 24, 2013 |10-CURRENT after addition of libusb `pkgconf` files. |1000041 |link:https://svnweb.freebsd.org/changeset/base/253970[253970] |August 5, 2013 |10-CURRENT after change from `time_second` to `time_uptime` in `PF_INET6`. |1000042 |link:https://svnweb.freebsd.org/changeset/base/254138[254138] |August 9, 2013 |10-CURRENT after VM subsystem change to unify soft and hard busy mechanisms. |1000043 |link:https://svnweb.freebsd.org/changeset/base/254273[254273] |August 13, 2013 |10-CURRENT after `WITH_ICONV` is enabled by default. A new man:src.conf[5] option, `WITH_LIBICONV_COMPAT` (disabled by default) adds `libiconv_open` to provide compatibility with the package:converters/libiconv[] port. |1000044 |link:https://svnweb.freebsd.org/changeset/base/254358[254358] |August 15, 2013 |10-CURRENT after [.filename]#libc.so# conversion to an man:ld[1] script (rev link:https://svnweb.freebsd.org/changeset/base/251668[251668]). |1000045 |link:https://svnweb.freebsd.org/changeset/base/254389[254389] |August 15, 2013 |10-CURRENT after devfs programming interface change by replacing the cdevsw flag `D_UNMAPPED_IO` with the struct cdev flag `SI_UNMAPPED`. |1000046 |link:https://svnweb.freebsd.org/changeset/base/254537[254537] |August 19, 2013 |10-CURRENT after addition of `M_PROTO[9-12]` and removal of `M_FRAG\|M_FIRSTFRAG\|M_LASTFRAG` mbuf flags (rev link:https://svnweb.freebsd.org/changeset/base/254524[254524], link:https://svnweb.freebsd.org/changeset/base/254526[254526]). |1000047 |link:https://svnweb.freebsd.org/changeset/base/254627[254627] |August 21, 2013 |10-CURRENT after man:stat[2] update to allow storing some Windows/DOS and CIFS file attributes as man:stat[2] flags. |1000048 |link:https://svnweb.freebsd.org/changeset/base/254672[254672] |August 22, 2013 |10-CURRENT after modification of structure `xsctp_inpcb`. |1000049 |link:https://svnweb.freebsd.org/changeset/base/254760[254760] |August 24, 2013 |10-CURRENT after man:physio[9] support for devices that do not function properly with split I/O, such as man:sa[4]. |1000050 |link:https://svnweb.freebsd.org/changeset/base/254844[254844] |August 24, 2013 |10-CURRENT after modifications of structure `mbuf` (rev link:https://svnweb.freebsd.org/changeset/base/254780[254780], link:https://svnweb.freebsd.org/changeset/base/254799[254799], link:https://svnweb.freebsd.org/changeset/base/254804[254804], link:https://svnweb.freebsd.org/changeset/base/254807[254807]link:https://svnweb.freebsd.org/changeset/base/254842[254842]). |1000051 |link:https://svnweb.freebsd.org/changeset/base/254887[254887] |August 25, 2013 |10-CURRENT after Radeon KMS driver import (rev link:https://svnweb.freebsd.org/changeset/base/254885[254885]). |1000052 |link:https://svnweb.freebsd.org/changeset/base/255180[255180] |September 3, 2013 |10-CURRENT after import of NetBSD `libexecinfo` is connected to the build. |1000053 |link:https://svnweb.freebsd.org/changeset/base/255305[255305] |September 6, 2013 |10-CURRENT after API and ABI changes to the Capsicum framework. |1000054 |link:https://svnweb.freebsd.org/changeset/base/255321[255321] |September 6, 2013 |10-CURRENT after `gcc` and `libstdc++` are no longer built by default. |1000055 |link:https://svnweb.freebsd.org/changeset/base/255449[255449] |September 6, 2013 |10-CURRENT after addition of `MMAP_32BIT` man:mmap[2] flag (rev link:https://svnweb.freebsd.org/changeset/base/255426[255426]). |1000100 |link:https://svnweb.freebsd.org/changeset/base/259065[259065] |December 7, 2013 |`releng/10.0` branched from `stable/10`. |1000500 |link:https://svnweb.freebsd.org/changeset/base/256283[256283] |October 10, 2013 |10-STABLE after branch from `head/`. |1000501 |link:https://svnweb.freebsd.org/changeset/base/256916[256916] |October 22, 2013 |10-STABLE after addition of first-boot man:rc[8] support. |1000502 |link:https://svnweb.freebsd.org/changeset/base/258398[258398] |November 20, 2013 |10-STABLE after removal of iconv symbols from `libc.so.7`. |1000510 |link:https://svnweb.freebsd.org/changeset/base/259067[259067] |December 7, 2013 |`releng/10.0` __FreeBSD_version update to prevent the value from going backwards. |1000700 |link:https://svnweb.freebsd.org/changeset/base/259069[259069] |December 7, 2013 |10-STABLE after `releng/10.0` branch. |1000701 |link:https://svnweb.freebsd.org/changeset/base/259447[259447] |December 15, 2013 |10.0-STABLE after Heimdal encoding fix. |1000702 |link:https://svnweb.freebsd.org/changeset/base/260135[260135] |December 31, 2013 |10-STABLE after MAP_STACK fixes. |1000703 |link:https://svnweb.freebsd.org/changeset/base/262801[262801] |March 5, 2014 |10-STABLE after upgrade of libc++ to 3.4 release. |1000704 |link:https://svnweb.freebsd.org/changeset/base/262889[262889] |March 7, 2014 |10-STABLE after MFC of the man:vt[4] driver (rev link:https://svnweb.freebsd.org/changeset/base/262861[262861]). |1000705 |link:https://svnweb.freebsd.org/changeset/base/263508[263508] |March 21, 2014 |10-STABLE after upgrade of llvm/clang to 3.4 release. |1000706 |link:https://svnweb.freebsd.org/changeset/base/264214[264214] |April 6, 2014 |10-STABLE after GCC support for `__block` definition. |1000707 |link:https://svnweb.freebsd.org/changeset/base/264289[264289] |April 8, 2014 |10-STABLE after FreeBSD-SA-14:06.openssl. |1000708 |link:https://svnweb.freebsd.org/changeset/base/265122[265122] |April 30, 2014 |10-STABLE after FreeBSD-SA-14:07.devfs, FreeBSD-SA-14:08.tcp, and FreeBSD-SA-14:09.openssl. |1000709 |link:https://svnweb.freebsd.org/changeset/base/265946[265946] |May 13, 2014 |10-STABLE after support for UDP-Lite protocol (RFC 3828). |1000710 |link:https://svnweb.freebsd.org/changeset/base/267465[267465] |June 13, 2014 |10-STABLE after changes to man:strcasecmp[3], moving man:strcasecmp_l[3] and man:strncasecmp_l[3] from [.filename]## to [.filename]## for POSIX 2008 compliance. |1000711 |link:https://svnweb.freebsd.org/changeset/base/268442[268442] |July 8, 2014 |10-STABLE after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268432[268432]). |1000712 |link:https://svnweb.freebsd.org/changeset/base/269400[269400] |August 1, 2014 |10-STABLE after man:nfsd[8] 4.1 merge (rev link:https://svnweb.freebsd.org/changeset/base/269398[269398]). |1000713 |link:https://svnweb.freebsd.org/changeset/base/269484[269484] |August 3, 2014 |10-STABLE after man:regex[3] library update to add ">" and "<" delimiters. |1000714 |link:https://svnweb.freebsd.org/changeset/base/270174[270174] |August 3, 2014 |10-STABLE after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269490[269490]). |1000715 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |September 9, 2014 |10-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686]). |1000716 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |September 16, 2014 |10-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271667[271667]). |1000717 |link:https://svnweb.freebsd.org/changeset/base/271816[271816] |September 18, 2014 |10-STABLE after i915 HW context support. |1001000 |link:https://svnweb.freebsd.org/changeset/base/272463[272463] |October 2, 2014 |10.1-RC1 after releng/10.1 branch. |1001500 |link:https://svnweb.freebsd.org/changeset/base/272464[272464] |October 2, 2014 |10-STABLE after releng/10.1 branch. |1001501 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |October 21, 2014 |10-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:22, and FreeBSD-SA-14:23 (rev link:https://svnweb.freebsd.org/changeset/base/273411[273411]). |1001502 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |November 4, 2014 |10-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25. |1001503 |link:https://svnweb.freebsd.org/changeset/base/275040[275040] |November 25, 2014 |10-STABLE after merging new libraries/utilities (man:dpv[1] man:dpv[3], and man:figpar[3]) for data throughput visualization. |1001504 |link:https://svnweb.freebsd.org/changeset/base/275742[275742] |December 13, 2014 |10-STABLE after merging an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases. |1001505 |link:https://svnweb.freebsd.org/changeset/base/276633[276633] |January 3, 2015 |10-STABLE after merging some arm constants in link:https://svnweb.freebsd.org/changeset/base/276312[276312]. |1001506 |link:https://svnweb.freebsd.org/changeset/base/277087[277087] |January 12, 2015 |10-STABLE after merging max table size update for yacc. |1001507 |link:https://svnweb.freebsd.org/changeset/base/277790[277790] |January 27, 2015 |10-STABLE after changes to the UDP tunneling callback to provide a context pointer and the source `sockaddr`. |1001508 |link:https://svnweb.freebsd.org/changeset/base/278974[278974] |February 18, 2015 |10-STABLE after addition of the `CDAI_TYPE_EXT_INQ` request type. |1001509 |link:https://svnweb.freebsd.org/changeset/base/279287[279287] |February 25, 2015 -pass:[] |10-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind. -pass:[] |1001510 |link:https://svnweb.freebsd.org/changeset/base/279329[279329] |February 26, 2015 |10-STABLE after MFC of rev link:https://svnweb.freebsd.org/changeset/base/278964[278964]. |1001511 |link:https://svnweb.freebsd.org/changeset/base/280246[280246] |March 19, 2015 |10-STABLE after [.filename]#sys/capability.h# is renamed to [.filename]#sys/capsicum.h# (rev link:https://svnweb.freebsd.org/changeset/base/280224/[280224/]). |1001512 |link:https://svnweb.freebsd.org/changeset/base/280438[280438] |March 24, 2015 |10-STABLE after addition of new man:mtio[4], man:sa[4] ioctls. |1001513 |link:https://svnweb.freebsd.org/changeset/base/281955[281955] |April 24, 2015 |10-STABLE after starting the process of removing the use of the deprecated "M_FLOWID" flag from the network code. |1001514 |link:https://svnweb.freebsd.org/changeset/base/282275[282275] |April 30, 2015 |10-STABLE after MFC of man:iconv[3] fixes. |1001515 |link:https://svnweb.freebsd.org/changeset/base/282781[282781] |May 11, 2015 |10-STABLE after adding back `M_FLOWID`. |1001516 |link:https://svnweb.freebsd.org/changeset/base/283341[283341] |May 24, 2015 |10-STABLE after MFC of many USB things. |1001517 |link:https://svnweb.freebsd.org/changeset/base/283950[283950] |June 3, 2015 |10-STABLE after MFC of sound related things. |1001518 |link:https://svnweb.freebsd.org/changeset/base/284204[284204] |June 10, 2015 |10-STABLE after MFC of zfs vfs fixes (rev link:https://svnweb.freebsd.org/changeset/base/284203[284203]). |1001519 |link:https://svnweb.freebsd.org/changeset/base/284720[284720] |June 23, 2015 |10-STABLE after reverting bumping `MAXCPU` on amd64. |1002000 |link:https://svnweb.freebsd.org/changeset/base/285830[285830] |July 24, 2015 |`releng/10.2` branched from 10-STABLE. |1002500 |link:https://svnweb.freebsd.org/changeset/base/285831[285831] |July 24, 2015 |10-STABLE after `releng/10.2` branched from 10-STABLE. |1002501 |link:https://svnweb.freebsd.org/changeset/base/289005[289005] |October 8, 2015 |10-STABLE after merge of ZFS changes that affected the internal interface of `zfeature_info` structure (rev link:https://svnweb.freebsd.org/changeset/base/288572[288572]). |1002502 |link:https://svnweb.freebsd.org/changeset/base/291243[291243] |November 24, 2015 |10-STABLE after merge of dump device changes that affected the arguments of `g_dev_setdumpdev()`(rev link:https://svnweb.freebsd.org/changeset/base/291215[291215]). |1002503 |link:https://svnweb.freebsd.org/changeset/base/292224[292224] |December 14, 2015 |10-STABLE after merge of changes to the internal interface between the nfsd.ko and nfscommon.ko modules, requiring them to be upgraded together (rev link:https://svnweb.freebsd.org/changeset/base/292223[292223]). |1002504 |link:https://svnweb.freebsd.org/changeset/base/292589[292589] |December 22, 2015 |10-STABLE after merge of xz 5.2.2 merge (multithread support) (rev link:https://svnweb.freebsd.org/changeset/base/292588[292588]). |1002505 |link:https://svnweb.freebsd.org/changeset/base/292908[292908] |December 30, 2015 |10-STABLE after merge of changes to man:pci[4] (rev link:https://svnweb.freebsd.org/changeset/base/292907[292907]). |1002506 |link:https://svnweb.freebsd.org/changeset/base/293476[293476] |January 9, 2016 |10-STABLE after merge of man:utimensat[2] (rev link:https://svnweb.freebsd.org/changeset/base/293473[293473]). |1002507 |link:https://svnweb.freebsd.org/changeset/base/293610[293610] |January 9, 2016 |10-STABLE after merge of changes to man:linux[4] (rev link:https://svnweb.freebsd.org/changeset/base/293477[293477] through link:https://svnweb.freebsd.org/changeset/base/293609[293609]). |1002508 |link:https://svnweb.freebsd.org/changeset/base/293619[293619] |January 9, 2016 |10-STABLE after merge of changes to man:figpar[3] types/macros (rev link:https://svnweb.freebsd.org/changeset/base/290275[290275]). |1002509 |link:https://svnweb.freebsd.org/changeset/base/295107[295107] |February 1, 2016 |10-STABLE after merge of API change to man:dpv[3]. |1003000 |link:https://svnweb.freebsd.org/changeset/base/296373[296373] |March 4, 2016 |`releng/10.3` branched from 10-STABLE. |1003500 |link:https://svnweb.freebsd.org/changeset/base/296374[296374] |March 4, 2016 |10-STABLE after `releng/10.3` branched from 10-STABLE. |1003501 |link:https://svnweb.freebsd.org/changeset/base/298299[298299] |June 19, 2016 |10-STABLE after adding -P option for `kdbcontrol` (rev link:https://svnweb.freebsd.org/changeset/base/298297[298297]). |1003502 |link:https://svnweb.freebsd.org/changeset/base/299966[299966] |June 19, 2016 |10-STABLE after libcrypto.so was made position independent. |1003503 |link:https://svnweb.freebsd.org/changeset/base/300235[300235] |June 19, 2016 |10-STABLE after allowing `MK_` overrides (rev link:https://svnweb.freebsd.org/changeset/base/300233[300233]). |1003504 |link:https://svnweb.freebsd.org/changeset/base/302066[302066] |June 21, 2016 |10-STABLE after MFC of `filemon` changes from 11-CURRENT. |1003505 |link:https://svnweb.freebsd.org/changeset/base/302228[302228] |June 27, 2016 |10-STABLE after converting sed to use REG_STARTEND, fixing a Mesa issue. |1003506 |link:https://svnweb.freebsd.org/changeset/base/304611[304611] |August 22, 2016 |10-STABLE after adding C++11 `thread_local` support. |1003507 |link:https://svnweb.freebsd.org/changeset/base/304864[304864] |August 26, 2016 |10-STABLE after `LC_*_MASK` fix. |1003508 |link:https://svnweb.freebsd.org/changeset/base/305734[305734] |September 12, 2016 |10-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]. |1003509 |link:https://svnweb.freebsd.org/changeset/base/307331[307331] |October 14, 2016 |10-STABLE after ZFS merges. |1003510 |link:https://svnweb.freebsd.org/changeset/base/308047[308047] |October 28, 2016 |10-STABLE after installing header files required development with libzfs_core. |1003511 |link:https://svnweb.freebsd.org/changeset/base/310121[310121] |December 15, 2016 |10-STABLE after exporting whole thread name in `kinfo_proc` (rev link:https://svnweb.freebsd.org/changeset/base/309676[309676]). |1003512 |link:https://svnweb.freebsd.org/changeset/base/315730[315730] |March 22, 2017 |10-STABLE after libmd changes (rev link:https://svnweb.freebsd.org/changeset/base/314143[314143]). |1003513 |link:https://svnweb.freebsd.org/changeset/base/316499[316499] |April 4, 2017 |10-STABLE after making CAM SIM lock optional (revs link:https://svnweb.freebsd.org/changeset/base/315673[315673], link:https://svnweb.freebsd.org/changeset/base/315674[315674]). |1003514 |link:https://svnweb.freebsd.org/changeset/base/318198[318198] |May 11, 2017 |10-STABLE after merging the addition of the [.filename]## header. |1003515 |link:https://svnweb.freebsd.org/changeset/base/321222[321222] |July 19, 2017 |10-STABLE after adding C++14 sized deallocation functions to libc++. |1003516 |link:https://svnweb.freebsd.org/changeset/base/321717[321717] |July 30, 2017 |10-STABLE after merging the `MAP_GUARD` man:mmap[2] flag addition. |1004000 |link:https://svnweb.freebsd.org/changeset/base/323604[323604] |September 15, 2017 |`releng/10.4` branched from 10-STABLE. |1004500 |link:https://svnweb.freebsd.org/changeset/base/323605[323605] |September 15, 2017 |10-STABLE after `releng/10.4` branched from 10-STABLE. |1004501 |link:https://svnweb.freebsd.org/changeset/base/328379[328379] |January 24, 2018 |10-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/325028[325028], fixing `ptrace()` to always clear the correct thread event when resuming. |1004502 |link:https://svnweb.freebsd.org/changeset/base/356396[356396] |January 6, 2020 |10-STABLE after making USB statistics be per-device instead of per bus. |1004503 |link:https://svnweb.freebsd.org/changeset/base/356681[356681] |January 13, 2020 |10-STABLE after adding own counter for cancelled USB transfers. |=== [[versions-9]] == FreeBSD 9 Versions [[freebsd-versions-table-9]] .FreeBSD 9 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |900000 |link:https://svnweb.freebsd.org/changeset/base/196432[196432] |August 22, 2009 |9.0-CURRENT. |900001 |link:https://svnweb.freebsd.org/changeset/base/197019[197019] |September 8, 2009 |9.0-CURRENT after importing x86emu, a software emulator for real mode x86 CPU from OpenBSD. |900002 |link:https://svnweb.freebsd.org/changeset/base/197430[197430] |September 23, 2009 |9.0-CURRENT after implementing the EVFILT_USER `kevent` filter functionality. |900003 |link:https://svnweb.freebsd.org/changeset/base/200039[200039] |December 2, 2009 |9.0-CURRENT after addition of man:sigpause[2] and PIE support in `csu`. |900004 |link:https://svnweb.freebsd.org/changeset/base/200185[200185] |December 6, 2009 |9.0-CURRENT after addition of libulog and its libutempter compatibility interface. |900005 |link:https://svnweb.freebsd.org/changeset/base/200447[200447] |December 12, 2009 |9.0-CURRENT after addition of man:sleepq_sleepcnt[9], which can be used to query the number of waiters on a specific waiting queue. |900006 |link:https://svnweb.freebsd.org/changeset/base/201513[201513] |January 4, 2010 |9.0-CURRENT after change of the man:scandir[3] and man:alphasort[3] prototypes to conform to SUSv4. |900007 |link:https://svnweb.freebsd.org/changeset/base/202219[202219] |January 13, 2010 |9.0-CURRENT after the removal of man:utmp[5] and the addition of `utmpx` (see man:getutxent[3]) for improved logging of user logins and system events. |900008 |link:https://svnweb.freebsd.org/changeset/base/202722[202722] |January 20, 2010 |9.0-CURRENT after the import of BSDL bc/dc and the deprecation of GNU bc/dc. |900009 |link:https://svnweb.freebsd.org/changeset/base/203052[203052] |January 26, 2010 |9.0-CURRENT after the addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network interfaces. These ioctl can be used to manipulate interface description, as inspired by OpenBSD. |900010 |link:https://svnweb.freebsd.org/changeset/base/205471[205471] |March 22, 2010 |9.0-CURRENT after the import of zlib 1.2.4. |900011 |link:https://svnweb.freebsd.org/changeset/base/207410[207410] |April 24, 2010 |9.0-CURRENT after adding soft-updates journaling. |900012 |link:https://svnweb.freebsd.org/changeset/base/207842[207842] |May 10, 2010 |9.0-CURRENT after adding liblzma, xz, xzdec, and lzmainfo. |900013 |link:https://svnweb.freebsd.org/changeset/base/208486[208486] |May 24, 2010 |9.0-CURRENT after bringing in USB fixes for man:linux[4]. |900014 |link:https://svnweb.freebsd.org/changeset/base/208973[208973] |June 10, 2010 |9.0-CURRENT after adding Clang. |900015 |link:https://svnweb.freebsd.org/changeset/base/210390[210390] |July 22, 2010 |9.0-CURRENT after the import of BSD grep. |900016 |link:https://svnweb.freebsd.org/changeset/base/210565[210565] |July 28, 2010 |9.0-CURRENT after adding `mti_zone` to struct `malloc_type_internal`. |900017 |link:https://svnweb.freebsd.org/changeset/base/211701[211701] |August 23, 2010 |9.0-CURRENT after changing back default grep to GNU grep and adding WITH_BSD_GREP knob. |900018 |link:https://svnweb.freebsd.org/changeset/base/211735[211735] |August 24, 2010 |9.0-CURRENT after the man:pthread_kill[3] -generated signal is identified as SI_LWP in `si_code`. Previously, `si_code` was SI_USER. |900019 |link:https://svnweb.freebsd.org/changeset/base/211937[211937] |August 28, 2010 |9.0-CURRENT after addition of the MAP_PREFAULT_READ flag to man:mmap[2]. |900020 |link:https://svnweb.freebsd.org/changeset/base/212381[212381] |September 9, 2010 |9.0-CURRENT after adding drain functionality to `sbufs`, which also changed the layout of struct `sbuf`. |900021 |link:https://svnweb.freebsd.org/changeset/base/212568[212568] |September 13, 2010 |9.0-CURRENT after DTrace has grown support for userland tracing. |900022 |link:https://svnweb.freebsd.org/changeset/base/213395[213395] |October 2, 2010 |9.0-CURRENT after addition of the BSDL man utilities and retirement of GNU/GPL man utilities. |900023 |link:https://svnweb.freebsd.org/changeset/base/213700[213700] |October 11, 2010 |9.0-CURRENT after updating xz to git 20101010 snapshot. |900024 |link:https://svnweb.freebsd.org/changeset/base/215127[215127] |November 11, 2010 |9.0-CURRENT after libgcc.a was replaced by libcompiler_rt.a. |900025 |link:https://svnweb.freebsd.org/changeset/base/215166[215166] |November 12, 2010 |9.0-CURRENT after the introduction of the modularised congestion control. |900026 |link:https://svnweb.freebsd.org/changeset/base/216088[216088] |November 30, 2010 |9.0-CURRENT after the introduction of Serial Management Protocol (SMP) passthrough and the XPT_SMP_IO and XPT_GDEV_ADVINFO CAM `CCBs`. |900027 |link:https://svnweb.freebsd.org/changeset/base/216212[216212] |December 5, 2010 |9.0-CURRENT after the addition of log2 to libm. |900028 |link:https://svnweb.freebsd.org/changeset/base/216615[216615] |December 21, 2010 |9.0-CURRENT after the addition of the Hhook (Helper Hook), Khelp (Kernel Helpers) and Object Specific Data (OSD) KPIs. |900029 |link:https://svnweb.freebsd.org/changeset/base/216758[216758] |December 28, 2010 |9.0-CURRENT after the modification of the TCP stack to allow Khelp modules to interact with it via helper hook points and store per-connection data in the TCP control block. |900030 |link:https://svnweb.freebsd.org/changeset/base/217309[217309] |January 12, 2011 |9.0-CURRENT after the update of libdialog to version 20100428. |900031 |link:https://svnweb.freebsd.org/changeset/base/218414[218414] |February 7, 2011 |9.0-CURRENT after the addition of man:pthread_getthreadid_np[3]. |900032 |link:https://svnweb.freebsd.org/changeset/base/218425[218425] |February 8, 2011 |9.0-CURRENT after the removal of the `uio_yield` prototype and symbol. |900033 |link:https://svnweb.freebsd.org/changeset/base/218822[218822] |February 18, 2011 |9.0-CURRENT after the update of binutils to version 2.17.50. |900034 |link:https://svnweb.freebsd.org/changeset/base/219406[219406] |March 8, 2011 |9.0-CURRENT after the struct `sysvec` (`sv_schedtail`) changes. |900035 |link:https://svnweb.freebsd.org/changeset/base/220150[220150] |March 29, 2011 |9.0-CURRENT after the update of base gcc and libstdc++ to the last GPLv2 licensed revision. |900036 |link:https://svnweb.freebsd.org/changeset/base/220770[220770] |April 18, 2011 |9.0-CURRENT after the removal of libobjc and Objective-C support from the base system. |900037 |link:https://svnweb.freebsd.org/changeset/base/221862[221862] |May 13, 2011 |9.0-CURRENT after importing the man:libprocstat[3] library and man:fuser[1] utility to the base system. |900038 |link:https://svnweb.freebsd.org/changeset/base/222167[222167] |May 22, 2011 |9.0-CURRENT after adding a lock flag argument to man:VFS_FHTOVP[9]. |900039 |link:https://svnweb.freebsd.org/changeset/base/223637[223637] |June 28, 2011 |9.0-CURRENT after importing pf from OpenBSD 4.5. |900040 |link:https://svnweb.freebsd.org/changeset/base/224217[224217] |July 19, 2011 |Increase default MAXCPU for FreeBSD to 64 on amd64 and ia64 and to 128 for XLP (mips). |900041 |link:https://svnweb.freebsd.org/changeset/base/224834[224834] |August 13, 2011 |9.0-CURRENT after the implementation of Capsicum capabilities; man:fget[9] gains a rights argument. |900042 |link:https://svnweb.freebsd.org/changeset/base/225350[225350] |August 28, 2011 |Bump shared libraries' version numbers for libraries whose ABI has changed in preparation for 9.0. |900043 |link:https://svnweb.freebsd.org/changeset/base/225350[225350] |September 2, 2011 |Add automatic detection of USB mass storage devices which do not support the no synchronize cache SCSI command. |900044 |link:https://svnweb.freebsd.org/changeset/base/225469[225469] |September 10, 2011 |Re-factor auto-quirk. 9.0-RELEASE. |900045 |link:https://svnweb.freebsd.org/changeset/base/229285[229285] |January 2, 2012 |9-STABLE after MFC of true/false from 1000002. |900500 |link:https://svnweb.freebsd.org/changeset/base/229318[229318] |January 2, 2012 |9.0-STABLE. |900501 |link:https://svnweb.freebsd.org/changeset/base/229723[229723] |January 6, 2012 |9.0-STABLE after merging of addition of the man:posix_fadvise[2] system call. |900502 |link:https://svnweb.freebsd.org/changeset/base/230237[230237] |January 16, 2012 |9.0-STABLE after merging gperf 3.0.3 |900503 |link:https://svnweb.freebsd.org/changeset/base/231768[231768] |February 15, 2012 |9.0-STABLE after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists. |900504 |link:https://svnweb.freebsd.org/changeset/base/232728[232728] |March 3, 2012 |9.0-STABLE after changes related to mounting of filesystem inside a jail. |900505 |link:https://svnweb.freebsd.org/changeset/base/232945[232945] |March 13, 2012 |9.0-STABLE after introduction of new man:tcp[4] socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT. |900506 |link:https://svnweb.freebsd.org/changeset/base/235786[235786] |May 22, 2012 |9.0-STABLE after introduction of the `quick_exit` function and related changes required for C++11. |901000 |link:https://svnweb.freebsd.org/changeset/base/239082[239082] |August 5, 2012 |9.1-RELEASE. |901500 |link:https://svnweb.freebsd.org/changeset/base/239081[239081] |August 6, 2012 |9.1-STABLE after branching releng/9.1 (RELENG_9_1). |901501 |link:https://svnweb.freebsd.org/changeset/base/240659[240659] |November 11, 2012 |9.1-STABLE after man:LIST_PREV[3] added to queue.h (rev link:https://svnweb.freebsd.org/changeset/base/242893[242893]) and KBI change in USB serial devices. |901502 |link:https://svnweb.freebsd.org/changeset/base/243656[243656] |November 28, 2012 |9.1-STABLE after USB serial jitter buffer requires rebuild of USB serial device modules. |901503 |link:https://svnweb.freebsd.org/changeset/base/247090[247090] |February 21, 2013 |9.1-STABLE after USB moved to the driver structure requiring a rebuild of all USB modules. Also indicates the presence of nmtree. |901504 |link:https://svnweb.freebsd.org/changeset/base/248338[248338] |March 15, 2013 |9.1-STABLE after install gained -l, -M, -N and related flags and cat gained the -l option. |901505 |link:https://svnweb.freebsd.org/changeset/base/251687[251687] |June 13, 2013 |9.1-STABLE after fixes in `ctfmerge` bootstrapping (rev link:https://svnweb.freebsd.org/changeset/base/249243[249243]). |902001 |link:https://svnweb.freebsd.org/changeset/base/253912[253912] |August 3, 2013 |`releng/9.2` branched from `stable/9`. |902501 |link:https://svnweb.freebsd.org/changeset/base/253913[253913] |August 2, 2013 |9.2-STABLE after creation of `releng/9.2` branch. |902502 |link:https://svnweb.freebsd.org/changeset/base/254938[254938] |August 26, 2013 |9.2-STABLE after inclusion of the `PIM_RESCAN` CAM path inquiry flag. |902503 |link:https://svnweb.freebsd.org/changeset/base/254979[254979] |August 27, 2013 |9.2-STABLE after inclusion of the `SI_UNMAPPED` cdev flag. |902504 |link:https://svnweb.freebsd.org/changeset/base/256917[256917] |October 22, 2013 |9.2-STABLE after inclusion of support for "first boot" man:rc[8] scripts. |902505 |link:https://svnweb.freebsd.org/changeset/base/259448[259448] |December 12, 2013 |9.2-STABLE after Heimdal encoding fix. |902506 |link:https://svnweb.freebsd.org/changeset/base/260136[260136] |December 31, 2013 |9-STABLE after MAP_STACK fixes (rev link:https://svnweb.freebsd.org/changeset/base/260082[260082]). |902507 |link:https://svnweb.freebsd.org/changeset/base/262801[262801] |March 5, 2014 |9-STABLE after upgrade of libc++ to 3.4 release. |902508 |link:https://svnweb.freebsd.org/changeset/base/263171[263171] |March 14, 2014 |9-STABLE after merge of the Radeon KMS driver (rev link:https://svnweb.freebsd.org/changeset/base/263170[263170]). |902509 |link:https://svnweb.freebsd.org/changeset/base/263509[263509] |March 21, 2014 |9-STABLE after upgrade of llvm/clang to 3.4 release. |902510 |link:https://svnweb.freebsd.org/changeset/base/263818[263818] |March 27, 2014 |9-STABLE after merge of the man:vt[4] driver. |902511 |link:https://svnweb.freebsd.org/changeset/base/264289[264289] |March 27, 2014 |9-STABLE after FreeBSD-SA-14:06.openssl. |902512 |link:https://svnweb.freebsd.org/changeset/base/265123[265123] |April 30, 2014 |9-STABLE after FreeBSD-SA-14:08.tcp. |903000 |link:https://svnweb.freebsd.org/changeset/base/267656[267656] |June 20, 2014 |9-RC1 `releng/9.3` branch. |903500 |link:https://svnweb.freebsd.org/changeset/base/267657[267657] |June 20, 2014 |9.3-STABLE `releng/9.3` branch. |903501 |link:https://svnweb.freebsd.org/changeset/base/268443[268443] |July 8, 2014 |9-STABLE after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268433[268433]). |903502 |link:https://svnweb.freebsd.org/changeset/base/270175[270175] |August 19, 2014 |9-STABLE after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269789[269789]). |903503 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |September 9, 2014 |9-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269687[269687]). |903504 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |September 16, 2014 |9-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668]). |903505 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |October 21, 2014 |9-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:21, and FreeBSD-SA-14:22 (rev link:https://svnweb.freebsd.org/changeset/base/273412[273412]). |903506 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |November 4, 2014 |9-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25. |903507 |link:https://svnweb.freebsd.org/changeset/base/275742[275742] |December 13, 2014 |9-STABLE after merging an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases. |903508 |link:https://svnweb.freebsd.org/changeset/base/279287[279287] |February 25, 2015 -pass:[] |9-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind. -pass:[] |903509 |link:https://svnweb.freebsd.org/changeset/base/296219[296219] |February 29, 2016 |9-STABLE after bumping the default value of `compat.linux.osrelease` to `2.6.18` to support the linux-c6-* ports out of the box. |903510 |link:https://svnweb.freebsd.org/changeset/base/300236[300236] |May 19, 2016 |9-STABLE after System Binary Interface (SBI) page was moved in latest version of Berkeley Boot Loader (BBL) due to code size increase in link:https://svnweb.freebsd.org/changeset/base/300234[300234]. |903511 |link:https://svnweb.freebsd.org/changeset/base/305735[305735] |September 12, 2016 |9-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]. |=== [[versions-8]] == FreeBSD 8 Versions [[freebsd-versions-table-8]] .FreeBSD 8 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |800000 |link:https://svnweb.freebsd.org/changeset/base/172531[172531] |October 11, 2007 |8.0-CURRENT. Separating wide and single byte `ctype`. |800001 |link:https://svnweb.freebsd.org/changeset/base/172688[172688] |October 16, 2007 |8.0-CURRENT after libpcap 0.9.8 and tcpdump 3.9.8 import. |800002 |link:https://svnweb.freebsd.org/changeset/base/172841[172841] |October 21, 2007 |8.0-CURRENT after renaming man:kthread_create[9] and friends to man:kproc_create[9] etc. |800003 |link:https://svnweb.freebsd.org/changeset/base/172932[172932] |October 24, 2007 |8.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was added, which required the ABI of the PCIOCGETCONF IOCTL to be broken again |800004 |link:https://svnweb.freebsd.org/changeset/base/173573[173573] |November 12, 2007 |8.0-CURRENT after man:agp[4] driver moved from src/sys/pci to src/sys/dev/agp |800005 |link:https://svnweb.freebsd.org/changeset/base/174261[174261] |December 4, 2007 |8.0-CURRENT after changes to the jumbo frame allocator (rev link:https://svnweb.freebsd.org/changeset/base/174247[174247]). |800006 |link:https://svnweb.freebsd.org/changeset/base/174399[174399] |December 7, 2007 |8.0-CURRENT after the addition of `callgraph` capture functionality to man:hwpmc[4]. |800007 |link:https://svnweb.freebsd.org/changeset/base/174901[174901] |December 25, 2007 |8.0-CURRENT after `kdb_enter()` gains a "why" argument. |800008 |link:https://svnweb.freebsd.org/changeset/base/174951[174951] |December 28, 2007 |8.0-CURRENT after LK_EXCLUPGRADE option removal. |800009 |link:https://svnweb.freebsd.org/changeset/base/175168[175168] |January 9, 2008 |8.0-CURRENT after introduction of man:lockmgr_disown[9] |800010 |link:https://svnweb.freebsd.org/changeset/base/175204[175204] |January 10, 2008 |8.0-CURRENT after the man:vn_lock[9] prototype change. |800011 |link:https://svnweb.freebsd.org/changeset/base/175295[175295] |January 13, 2008 |8.0-CURRENT after the man:VOP_LOCK[9] and man:VOP_UNLOCK[9] prototype changes. |800012 |link:https://svnweb.freebsd.org/changeset/base/175487[175487] |January 19, 2008 |8.0-CURRENT after introduction of man:lockmgr_recursed[9], man:BUF_RECURSED[9] and man:BUF_ISLOCKED[9] and the removal of `BUF_REFCNT()`. |800013 |link:https://svnweb.freebsd.org/changeset/base/175581[175581] |January 23, 2008 |8.0-CURRENT after introduction of the "ASCII" encoding. |800014 |link:https://svnweb.freebsd.org/changeset/base/175636[175636] |January 24, 2008 |8.0-CURRENT after changing the prototype of man:lockmgr[9] and removal of `lockcount()` and `LOCKMGR_ASSERT()`. |800015 |link:https://svnweb.freebsd.org/changeset/base/175688[175688] |January 26, 2008 |8.0-CURRENT after extending the types of the man:fts[3] structures. |800016 |link:https://svnweb.freebsd.org/changeset/base/175872[175872] |February 1, 2008 |8.0-CURRENT after adding an argument to man:MEXTADD[9] |800017 |link:https://svnweb.freebsd.org/changeset/base/176015[176015] |February 6, 2008 |8.0-CURRENT after the introduction of LK_NODUP and LK_NOWITNESS options in the man:lockmgr[9] space. |800018 |link:https://svnweb.freebsd.org/changeset/base/176112[176112] |February 8, 2008 |8.0-CURRENT after the addition of `m_collapse`. |800019 |link:https://svnweb.freebsd.org/changeset/base/176124[176124] |February 9, 2008 |8.0-CURRENT after the addition of current working directory, root directory, and jail directory support to the kern.proc.filedesc sysctl. |800020 |link:https://svnweb.freebsd.org/changeset/base/176251[176251] |February 13, 2008 |8.0-CURRENT after introduction of man:lockmgr_assert[9] and `BUF_ASSERT` functions. |800021 |link:https://svnweb.freebsd.org/changeset/base/176321[176321] |February 15, 2008 |8.0-CURRENT after introduction of man:lockmgr_args[9] and LK_INTERNAL flag removal. |800022 |link:https://svnweb.freebsd.org/changeset/base/176556[176556] |(backed out) |8.0-CURRENT after changing the default system ar to BSD man:ar[1]. |800023 |link:https://svnweb.freebsd.org/changeset/base/176560[176560] |February 25, 2008 |8.0-CURRENT after changing the prototypes of man:lockstatus[9] and man:VOP_ISLOCKED[9];, more specifically retiring the `struct thread` argument. |800024 |link:https://svnweb.freebsd.org/changeset/base/176709[176709] |March 1, 2008 |8.0-CURRENT after axing out the `lockwaiters` and `BUF_LOCKWAITERS` functions, changing the return value of `brelvp` from void to int and introducing new flags for man:lockinit[9]. |800025 |link:https://svnweb.freebsd.org/changeset/base/176958[176958] |March 8, 2008 |8.0-CURRENT after adding F_DUP2FD command to man:fcntl[2]. |800026 |link:https://svnweb.freebsd.org/changeset/base/177086[177086] |March 12, 2008 |8.0-CURRENT after changing the priority parameter to `cv_broadcastpri` such that 0 means no priority. |800027 |link:https://svnweb.freebsd.org/changeset/base/177551[177551] |March 24, 2008 |8.0-CURRENT after changing the bpf monitoring ABI when `zerocopy` bpf buffers were added. |800028 |link:https://svnweb.freebsd.org/changeset/base/177637[177637] |March 26, 2008 |8.0-CURRENT after adding `l_sysid` to struct flock. |800029 |link:https://svnweb.freebsd.org/changeset/base/177688[177688] |March 28, 2008 |8.0-CURRENT after reintegration of the `BUF_LOCKWAITERS` function and the addition of man:lockmgr_waiters[9]. |800030 |link:https://svnweb.freebsd.org/changeset/base/177844[177844] |April 1, 2008 |8.0-CURRENT after the introduction of the man:rw_try_rlock[9] and man:rw_try_wlock[9] functions. |800031 |link:https://svnweb.freebsd.org/changeset/base/177958[177958] |April 6, 2008 |8.0-CURRENT after the introduction of the `lockmgr_rw` and `lockmgr_args_rw` functions. |800032 |link:https://svnweb.freebsd.org/changeset/base/178006[178006] |April 8, 2008 |8.0-CURRENT after the implementation of the `openat` and related syscalls, introduction of the O_EXEC flag for the man:open[2], and providing the corresponding Linux compatibility syscalls. |800033 |link:https://svnweb.freebsd.org/changeset/base/178017[178017] |April 8, 2008 |8.0-CURRENT after added man:write[2] support for man:psm[4] in native operation level. Now arbitrary commands can be written to [.filename]#/dev/psm%d# and status can be read back from it. |800034 |link:https://svnweb.freebsd.org/changeset/base/178051[178051] |April 10, 2008 |8.0-CURRENT after introduction of the `memrchr` function. |800035 |link:https://svnweb.freebsd.org/changeset/base/178256[178256] |April 16, 2008 |8.0-CURRENT after introduction of the `fdopendir` function. |800036 |link:https://svnweb.freebsd.org/changeset/base/178362[178362] |April 20, 2008 |8.0-CURRENT after switchover of 802.11 wireless to multi-bss support (aka `vaps`). |800037 |link:https://svnweb.freebsd.org/changeset/base/178892[178892] |May 9, 2008 |8.0-CURRENT after addition of multi routing table support (aka man:setfib[1], man:setfib[2]). |800038 |link:https://svnweb.freebsd.org/changeset/base/179316[179316] |May 26, 2008 |8.0-CURRENT after removal of `netatm` and ISDN4BSD. Also, the addition of the Compact C Type (CTF) tools. |800039 |link:https://svnweb.freebsd.org/changeset/base/179784[179784] |June 14, 2008 |8.0-CURRENT after removal of `sgtty`. |800040 |link:https://svnweb.freebsd.org/changeset/base/180025[180025] |June 26, 2008 |8.0-CURRENT with kernel NFS `lockd` client. |800041 |link:https://svnweb.freebsd.org/changeset/base/180691[180691] |July 22, 2008 |8.0-CURRENT after addition of man:arc4random_buf[3] and man:arc4random_uniform[3]. |800042 |link:https://svnweb.freebsd.org/changeset/base/181439[181439] |August 8, 2008 |8.0-CURRENT after addition of man:cpuctl[4]. |800043 |link:https://svnweb.freebsd.org/changeset/base/181694[181694] |August 13, 2008 |8.0-CURRENT after changing man:bpf[4] to use a single device node, instead of device cloning. |800044 |link:https://svnweb.freebsd.org/changeset/base/181803[181803] |August 17, 2008 |8.0-CURRENT after the commit of the first step of the VIMAGE project renaming global variables to be virtualized with a `V_` prefix with macros to map them back to their global names. |800045 |link:https://svnweb.freebsd.org/changeset/base/181905[181905] |August 20, 2008 |8.0-CURRENT after the integration of the MPSAFE TTY layer, including changes to various drivers and utilities that interact with it. |800046 |link:https://svnweb.freebsd.org/changeset/base/182869[182869] |September 8, 2008 |8.0-CURRENT after the separation of the GDT per CPU on amd64 architecture. |800047 |link:https://svnweb.freebsd.org/changeset/base/182905[182905] |September 10, 2008 |8.0-CURRENT after removal of VSVTX, VSGID and VSUID. |800048 |link:https://svnweb.freebsd.org/changeset/base/183091[183091] |September 16, 2008 |8.0-CURRENT after converting the kernel NFS mount code to accept individual mount options in the man:nmount[2] `iovec`, not just one big struct nfs_args. |800049 |link:https://svnweb.freebsd.org/changeset/base/183114[183114] |September 17, 2008 |8.0-CURRENT after the removal of man:suser[9] and man:suser_cred[9]. |800050 |link:https://svnweb.freebsd.org/changeset/base/184099[184099] |October 20, 2008 |8.0-CURRENT after buffer cache API change. |800051 |link:https://svnweb.freebsd.org/changeset/base/184205[184205] |October 23, 2008 |8.0-CURRENT after the removal of the man:MALLOC[9] and man:FREE[9] macros. |800052 |link:https://svnweb.freebsd.org/changeset/base/184419[184419] |October 28, 2008 |8.0-CURRENT after the introduction of `accmode_t` and renaming of VOP_ACCESS `a_mode` argument to `a_accmode`. |800053 |link:https://svnweb.freebsd.org/changeset/base/184555[184555] |November 2, 2008 |8.0-CURRENT after the prototype change of man:vfs_busy[9] and the introduction of its MBF_NOWAIT and MBF_MNTLSTLOCK flags. |800054 |link:https://svnweb.freebsd.org/changeset/base/185162[185162] |November 22, 2008 |8.0-CURRENT after the addition of `buf_ring`, memory barriers and ifnet functions to facilitate multiple hardware transmit queues for cards that support them, and a lockless ring-buffer implementation to enable drivers to more efficiently manage queuing of packets. |800055 |link:https://svnweb.freebsd.org/changeset/base/185363[185363] |November 27, 2008 |8.0-CURRENT after the addition of Intel(TM) Core, Core2, and Atom support to man:hwpmc[4]. |800056 |link:https://svnweb.freebsd.org/changeset/base/185435[185435] |November 29, 2008 |8.0-CURRENT after the introduction of multi-/no-IPv4/v6 jails. |800057 |link:https://svnweb.freebsd.org/changeset/base/185522[185522] |December 1, 2008 |8.0-CURRENT after the switch to the ath `hal` source code. |800058 |link:https://svnweb.freebsd.org/changeset/base/185968[185968] |December 12, 2008 |8.0-CURRENT after the introduction of the VOP_VPTOCNP operation. |800059 |link:https://svnweb.freebsd.org/changeset/base/186119[186119] |December 15, 2008 |8.0-CURRENT incorporates the new arp-v2 rewrite. |800060 |link:https://svnweb.freebsd.org/changeset/base/186344[186344] |December 19, 2008 |8.0-CURRENT after the addition of makefs. |800061 |link:https://svnweb.freebsd.org/changeset/base/187289[187289] |January 15, 2009 |8.0-CURRENT after TCP Appropriate Byte Counting. |800062 |link:https://svnweb.freebsd.org/changeset/base/187830[187830] |January 28, 2009 |8.0-CURRENT after removal of `minor()`, `minor2unit()`, `unit2minor()`, etc. |800063 |link:https://svnweb.freebsd.org/changeset/base/188745[188745] |February 18, 2009 |8.0-CURRENT after GENERIC config change to use the USB2 stack, but also the addition of man:fdevname[3]. |800064 |link:https://svnweb.freebsd.org/changeset/base/188946[188946] |February 23, 2009 |8.0-CURRENT after the USB2 stack is moved to and replaces dev/usb. |800065 |link:https://svnweb.freebsd.org/changeset/base/189092[189092] |February 26, 2009 |8.0-CURRENT after the renaming of all functions in man:libmp[3]. |800066 |link:https://svnweb.freebsd.org/changeset/base/189110[189110] |February 27, 2009 |8.0-CURRENT after changing USB devfs handling and layout. |800067 |link:https://svnweb.freebsd.org/changeset/base/189136[189136] |February 28, 2009 |8.0-CURRENT after adding `getdelim()`, `getline()`, `stpncpy()`, `strnlen()`, `wcsnlen()`, `wcscasecmp()`, and `wcsncasecmp()`. |800068 |link:https://svnweb.freebsd.org/changeset/base/189276[189276] |March 2, 2009 |8.0-CURRENT after renaming the `ushub` devclass to `uhub`. |800069 |link:https://svnweb.freebsd.org/changeset/base/189585[189585] |March 9, 2009 |8.0-CURRENT after libusb20.so.1 was renamed to libusb.so.1. |800070 |link:https://svnweb.freebsd.org/changeset/base/189592[189592] |March 9, 2009 |8.0-CURRENT after merging IGMPv3 and Source-Specific Multicast (SSM) to the IPv4 stack. |800071 |link:https://svnweb.freebsd.org/changeset/base/189825[189825] |March 14, 2009 |8.0-CURRENT after gcc was patched to use C99 inline semantics in c99 and gnu99 mode. |800072 |link:https://svnweb.freebsd.org/changeset/base/189853[189853] |March 15, 2009 |8.0-CURRENT after the IFF_NEEDSGIANT flag has been removed; non-MPSAFE network device drivers are no longer supported. |800073 |link:https://svnweb.freebsd.org/changeset/base/190265[190265] |March 18, 2009 |8.0-CURRENT after the dynamic string token substitution has been implemented for rpath and needed paths. |800074 |link:https://svnweb.freebsd.org/changeset/base/190373[190373] |March 24, 2009 |8.0-CURRENT after tcpdump 4.0.0 and libpcap 1.0.0 import. |800075 |link:https://svnweb.freebsd.org/changeset/base/190787[190787] |April 6, 2009 |8.0-CURRENT after layout of structs vnet_net, vnet_inet and vnet_ipfw has been changed. |800076 |link:https://svnweb.freebsd.org/changeset/base/190866[190866] |April 9, 2009 |8.0-CURRENT after adding delay profiles in dummynet. |800077 |link:https://svnweb.freebsd.org/changeset/base/190914[190914] |April 14, 2009 |8.0-CURRENT after removing `VOP_LEASE()` and vop_vector.vop_lease. |800078 |link:https://svnweb.freebsd.org/changeset/base/191080[191080] |April 15, 2009 |8.0-CURRENT after struct `rt_weight` fields have been added to struct `rt_metrics` and struct `rt_metrics_lite`, changing the layout of struct `rt_metrics_lite`. A bump to RTM_VERSION was made, but backed out. |800079 |link:https://svnweb.freebsd.org/changeset/base/191117[191117] |April 15, 2009 |8.0-CURRENT after struct `llentry` pointers are added to struct route and struct route_in6. |800080 |link:https://svnweb.freebsd.org/changeset/base/191126[191126] |April 15, 2009 |8.0-CURRENT after layout of struct inpcb has been changed. |800081 |link:https://svnweb.freebsd.org/changeset/base/191267[191267] |April 19, 2009 |8.0-CURRENT after the layout of struct `malloc_type` has been changed. |800082 |link:https://svnweb.freebsd.org/changeset/base/191368[191368] |April 21, 2009 |8.0-CURRENT after the layout of struct ifnet has changed, and with `if_ref()` and `if_rele()` ifnet `refcounting`. |800083 |link:https://svnweb.freebsd.org/changeset/base/191389[191389] |April 22, 2009 |8.0-CURRENT after the implementation of a low-level Bluetooth HCI API. |800084 |link:https://svnweb.freebsd.org/changeset/base/191672[191672] |April 29, 2009 |8.0-CURRENT after IPv6 SSM and MLDv2 changes. |800085 |link:https://svnweb.freebsd.org/changeset/base/191688[191688] |April 30, 2009 |8.0-CURRENT after enabling support for VIMAGE kernel builds with one active image. |800086 |link:https://svnweb.freebsd.org/changeset/base/191910[191910] |May 8, 2009 |8.0-CURRENT after adding support for input lines of arbitrarily length in man:patch[1]. |800087 |link:https://svnweb.freebsd.org/changeset/base/191990[191990] |May 11, 2009 |8.0-CURRENT after some VFS KPI changes. The thread argument has been removed from the FSD parts of the VFS. `VFS_*` functions do not need the context any more because it always refers to `curthread`. In some special cases, the old behavior is retained. |800088 |link:https://svnweb.freebsd.org/changeset/base/192470[192470] |May 20, 2009 |8.0-CURRENT after net80211 monitor mode changes. |800089 |link:https://svnweb.freebsd.org/changeset/base/192649[192649] |May 23, 2009 |8.0-CURRENT after adding UDP control block support. |800090 |link:https://svnweb.freebsd.org/changeset/base/192669[192669] |May 23, 2009 |8.0-CURRENT after virtualizing interface cloning. |800091 |link:https://svnweb.freebsd.org/changeset/base/192895[192895] |May 27, 2009 |8.0-CURRENT after adding hierarchical jails and removing global securelevel. |800092 |link:https://svnweb.freebsd.org/changeset/base/193011[193011] |May 29, 2009 |8.0-CURRENT after changing `sx_init_flags()` KPI. The `SX_ADAPTIVESPIN` is retired and a new `SX_NOADAPTIVE` flag is introduced to handle the reversed logic. |800093 |link:https://svnweb.freebsd.org/changeset/base/193047[193047] |May 29, 2009 |8.0-CURRENT after adding `mnt_xflag` to struct mount. |800094 |link:https://svnweb.freebsd.org/changeset/base/193093[193093] |May 30, 2009 |8.0-CURRENT after adding man:VOP_ACCESSX[9]. |800095 |link:https://svnweb.freebsd.org/changeset/base/193096[193096] |May 30, 2009 |8.0-CURRENT after changing the polling KPI. The polling handlers now return the number of packets processed. A new `IFCAP_POLLING_NOCOUNT` is also introduced to specify that the return value is not significant and the counting should be skipped. |800096 |link:https://svnweb.freebsd.org/changeset/base/193219[193219] |June 1, 2009 |8.0-CURRENT after updating to the new netisr implementation and after changing the way of storing and accessing FIBs. |800097 |link:https://svnweb.freebsd.org/changeset/base/193731[193731] |June 8, 2009 |8.0-CURRENT after the introduction of vnet destructor hooks and infrastructure. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/194012[194012] |June 11, 2009 |8.0-CURRENT after the introduction of netgraph outbound to inbound path call detection and queuing, which also changed the layout of struct thread. |800098 |link:https://svnweb.freebsd.org/changeset/base/194210[194210] |June 14, 2009 |8.0-CURRENT after OpenSSL 0.9.8k import. |800099 |link:https://svnweb.freebsd.org/changeset/base/194675[194675] |June 22, 2009 |8.0-CURRENT after NGROUPS update and moving route virtualization into its own VImage module. |800100 |link:https://svnweb.freebsd.org/changeset/base/194920[194920] |June 24, 2009 |8.0-CURRENT after SYSVIPC ABI change. |800101 |link:https://svnweb.freebsd.org/changeset/base/195175[195175] |June 29, 2009 |8.0-CURRENT after the removal of the /dev/net/* per-interface character devices. |800102 |link:https://svnweb.freebsd.org/changeset/base/195634[195634] |July 12, 2009 |8.0-CURRENT after padding was added to struct `sackhint`, struct tcpcb, and struct `tcpstat`. |800103 |link:https://svnweb.freebsd.org/changeset/base/195654[195654] |July 13, 2009 |8.0-CURRENT after replacing struct `tcpopt` with struct `toeopt` in the TOE driver interface to the TCP `syncache`. |800104 |link:https://svnweb.freebsd.org/changeset/base/195699[195699] |July 14, 2009 |8.0-CURRENT after the addition of the linker-set based per-vnet allocator. |800105 |link:https://svnweb.freebsd.org/changeset/base/195767[195767] |July 19, 2009 |8.0-CURRENT after version bump for all shared libraries that do not have symbol versioning turned on. |800106 |link:https://svnweb.freebsd.org/changeset/base/195852[195852] |July 24, 2009 |8.0-CURRENT after introduction of OBJT_SG VM object type. |800107 |link:https://svnweb.freebsd.org/changeset/base/196037[196037] |August 2, 2009 |8.0-CURRENT after making the newbus subsystem Giant free by adding the newbus `sxlock` and 8.0-RELEASE. |800108 |link:https://svnweb.freebsd.org/changeset/base/199627[199627] |November 21, 2009 |8.0-STABLE after implementing EVFILT_USER `kevent` filter. |800500 |link:https://svnweb.freebsd.org/changeset/base/201749[201749] |January 7, 2010 |8.0-STABLE after `__FreeBSD_version` bump to make `pkg_add -r` use packages-8-stable. |800501 |link:https://svnweb.freebsd.org/changeset/base/202922[202922] |January 24, 2010 |8.0-STABLE after change of the man:scandir[3] and man:alphasort[3] prototypes to conform to SUSv4. |800502 |link:https://svnweb.freebsd.org/changeset/base/203299[203299] |January 31, 2010 |8.0-STABLE after addition of man:sigpause[2]. |800503 |link:https://svnweb.freebsd.org/changeset/base/204344[204344] |February 25, 2010 |8.0-STABLE after addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network interfaces. These ioctl can be used to manipulate interface description, as inspired by OpenBSD. |800504 |link:https://svnweb.freebsd.org/changeset/base/204546[204546] |March 1, 2010 |8.0-STABLE after MFC of importing x86emu, a software emulator for real mode x86 CPU from OpenBSD. |800505 |link:https://svnweb.freebsd.org/changeset/base/208259[208259] |May 18, 2010 |8.0-STABLE after MFC of adding liblzma, xz, xzdec, and lzmainfo. |801000 |link:https://svnweb.freebsd.org/changeset/base/209150[209150] |June 14, 2010 |8.1-RELEASE |801500 |link:https://svnweb.freebsd.org/changeset/base/209146[209146] |June 14, 2010 |8.1-STABLE after 8.1-RELEASE. |801501 |link:https://svnweb.freebsd.org/changeset/base/214762[214762] |November 3, 2010 |8.1-STABLE after KBI change in struct `sysentvec`, and implementation of PL_FLAG_SCE/SCX/EXEC/SI and `pl_siginfo` for ptrace(PT_LWPINFO) . |802000 |link:https://svnweb.freebsd.org/changeset/base/216639[216639] |December 22, 2010 |8.2-RELEASE |802500 |link:https://svnweb.freebsd.org/changeset/base/216654[216654] |December 22, 2010 |8.2-STABLE after 8.2-RELEASE. |802501 |link:https://svnweb.freebsd.org/changeset/base/219107[219107] |February 28, 2011 |8.2-STABLE after merging DTrace changes, including support for userland tracing. |802502 |link:https://svnweb.freebsd.org/changeset/base/219324[219324] |March 6, 2011 |8.2-STABLE after merging log2 and log2f into libm. |802503 |link:https://svnweb.freebsd.org/changeset/base/221275[221275] |May 1, 2011 |8.2-STABLE after upgrade of the gcc to the last GPLv2 version from the FSF gcc-4_2-branch. |802504 |link:https://svnweb.freebsd.org/changeset/base/222401[222401] |May 28, 2011 |8.2-STABLE after introduction of the KPI and supporting infrastructure for modular congestion control. |802505 |link:https://svnweb.freebsd.org/changeset/base/222406[222406] |May 28, 2011 |8.2-STABLE after introduction of Hhook and Khelp KPIs. |802506 |link:https://svnweb.freebsd.org/changeset/base/222408[222408] |May 28, 2011 |8.2-STABLE after addition of OSD to struct tcpcb. |802507 |link:https://svnweb.freebsd.org/changeset/base/222741[222741] |June 6, 2011 |8.2-STABLE after ZFS v28 import. |802508 |link:https://svnweb.freebsd.org/changeset/base/222846[222846] |June 8, 2011 |8.2-STABLE after removal of the `schedtail` event handler and addition of the `sv_schedtail` method to struct `sysvec`. |802509 |link:https://svnweb.freebsd.org/changeset/base/224017[224017] |July 14, 2011 |8.2-STABLE after merging the SSSE3 support into binutils. |802510 |link:https://svnweb.freebsd.org/changeset/base/224214[224214] |July 19, 2011 |8.2-STABLE after addition of RFTSIGZMB flag for man:rfork[2]. |802511 |link:https://svnweb.freebsd.org/changeset/base/225458[225458] |September 9, 2011 |8.2-STABLE after addition of automatic detection of USB mass storage devices which do not support the no synchronize cache SCSI command. |802512 |link:https://svnweb.freebsd.org/changeset/base/225470[225470] |September 10, 2011 |8.2-STABLE after merging of re-factoring of auto-quirk. |802513 |link:https://svnweb.freebsd.org/changeset/base/226763[226763] |October 25, 2011 |8.2-STABLE after merging of the MAP_PREFAULT_READ flag to man:mmap[2]. |802514 |link:https://svnweb.freebsd.org/changeset/base/227573[227573] |November 16, 2011 |8.2-STABLE after merging of addition of man:posix_fallocate[2] syscall. |802515 |link:https://svnweb.freebsd.org/changeset/base/229725[229725] |January 6, 2012 |8.2-STABLE after merging of addition of the man:posix_fadvise[2] system call. |802516 |link:https://svnweb.freebsd.org/changeset/base/230239[230239] |January 16, 2012 |8.2-STABLE after merging gperf 3.0.3 |802517 |link:https://svnweb.freebsd.org/changeset/base/231769[231769] |February 15, 2012 |8.2-STABLE after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists. |803000 |link:https://svnweb.freebsd.org/changeset/base/232446[232446] |March 3, 2012 |8.3-RELEASE. |803500 |link:https://svnweb.freebsd.org/changeset/base/232439[232439] |March 3, 2012 |8.3-STABLE after branching releng/8.3 (RELENG_8_3). |803501 |link:https://svnweb.freebsd.org/changeset/base/247091[247091] |February 21, 2013 |8.3-STABLE after MFC of two USB fixes (rev link:https://svnweb.freebsd.org/changeset/base/246616[246616] and link:https://svnweb.freebsd.org/changeset/base/246759[246759]). |804000 |link:https://svnweb.freebsd.org/changeset/base/248850[248850] |March 28, 2013 |8.4-RELEASE. |804500 |link:https://svnweb.freebsd.org/changeset/base/248819[248819] |March 28, 2013 |8.4-STABLE after 8.4-RELEASE. |804501 |link:https://svnweb.freebsd.org/changeset/base/259449[259449] |December 16, 2013 |8.4-STABLE after MFC of upstream Heimdal encoding fix. |804502 |link:https://svnweb.freebsd.org/changeset/base/265123[265123] |April 30, 2014 |8.4-STABLE after FreeBSD-SA-14:08.tcp. |804503 |link:https://svnweb.freebsd.org/changeset/base/268444[268444] |July 9, 2014 |8.4-STABLE after FreeBSD-SA-14:17.kmem. |804504 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |September 9, 2014 |8.4-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/271305[271305]). |804505 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |September 16, 2014 |8.4-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668]). |804506 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |October 21, 2014 |8.4-STABLE after FreeBSD-SA-14:21 (rev link:https://svnweb.freebsd.org/changeset/base/273413[273413]). |804507 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |November 4, 2014 |8.4-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25. |804508 |link:https://svnweb.freebsd.org/changeset/base/279287[279287] |February 25, 2015 -pass:[] |8-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind. -pass:[] |804509 |link:https://svnweb.freebsd.org/changeset/base/305736[305736] |September 12, 2016 |8-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]. |=== [[versions-7]] == FreeBSD 7 Versions [[freebsd-versions-table-7]] .FreeBSD 7 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |700000 |link:https://svnweb.freebsd.org/changeset/base/147925[147925] |July 11, 2005 |7.0-CURRENT. |700001 |link:https://svnweb.freebsd.org/changeset/base/148341[148341] |July 23, 2005 |7.0-CURRENT after bump of all shared library versions that had not been changed since RELENG_5. |700002 |link:https://svnweb.freebsd.org/changeset/base/149039[149039] |August 13, 2005 |7.0-CURRENT after credential argument is added to `dev_clone` event handler. |700003 |link:https://svnweb.freebsd.org/changeset/base/149470[149470] |August 25, 2005 |7.0-CURRENT after man:memmem[3] is added to libc. |700004 |link:https://svnweb.freebsd.org/changeset/base/151888[151888] |October 30, 2005 |7.0-CURRENT after man:solisten[9] kernel arguments are modified to accept a backlog parameter. |700005 |link:https://svnweb.freebsd.org/changeset/base/152296[152296] |November 11, 2005 |7.0-CURRENT after `IFP2ENADDR()` was changed to return a pointer to `IF_LLADDR()`. |700006 |link:https://svnweb.freebsd.org/changeset/base/152315[152315] |November 11, 2005 |7.0-CURRENT after addition of `if_addr` member to `struct ifnet` and `IFP2ENADDR()` removal. |700007 |link:https://svnweb.freebsd.org/changeset/base/153027[153027] |December 2, 2005 |7.0-CURRENT after incorporating scripts from the `local_startup` directories into the base man:rcorder[8]. |700008 |link:https://svnweb.freebsd.org/changeset/base/153107[153107] |December 5, 2005 |7.0-CURRENT after removal of MNT_NODEV mount option. |700009 |link:https://svnweb.freebsd.org/changeset/base/153519[153519] |December 19, 2005 |7.0-CURRENT after ELF-64 type changes and symbol versioning. |700010 |link:https://svnweb.freebsd.org/changeset/base/153579[153579] |December 20, 2005 |7.0-CURRENT after addition of `hostb` and `vgapci` drivers, addition of `pci_find_extcap()`, and changing the AGP drivers to no longer map the aperture. |700011 |link:https://svnweb.freebsd.org/changeset/base/153936[153936] |December 31, 2005 |7.0-CURRENT after `tv_sec` was made `time_t` on all platforms but Alpha. |700012 |link:https://svnweb.freebsd.org/changeset/base/154114[154114] |January 8, 2006 |7.0-CURRENT after ldconfig_local_dirs change. |700013 |link:https://svnweb.freebsd.org/changeset/base/154269[154269] |January 12, 2006 |7.0-CURRENT after changes to [.filename]#/etc/rc.d/abi# to support [.filename]#/compat/linux/etc/ld.so.cache# being a symlink in a read-only filesystem. |700014 |link:https://svnweb.freebsd.org/changeset/base/154863[154863] |January 26, 2006 |7.0-CURRENT after pts import. |700015 |link:https://svnweb.freebsd.org/changeset/base/157144[157144] |March 26, 2006 |7.0-CURRENT after the introduction of version 2 of man:hwpmc[4]'s ABI. |700016 |link:https://svnweb.freebsd.org/changeset/base/157962[157962] |April 22, 2006 |7.0-CURRENT after addition of man:fcloseall[3] to libc. |700017 |link:https://svnweb.freebsd.org/changeset/base/158513[158513] |May 13, 2006 |7.0-CURRENT after removal of ip6fw. |700018 |link:https://svnweb.freebsd.org/changeset/base/160386[160386] |July 15, 2006 |7.0-CURRENT after import of snd_emu10kx. |700019 |link:https://svnweb.freebsd.org/changeset/base/160821[160821] |July 29, 2006 |7.0-CURRENT after import of OpenSSL 0.9.8b. |700020 |link:https://svnweb.freebsd.org/changeset/base/161931[161931] |September 3, 2006 |7.0-CURRENT after addition of `bus_dma_get_tag` function |700021 |link:https://svnweb.freebsd.org/changeset/base/162023[162023] |September 4, 2006 |7.0-CURRENT after libpcap 0.9.4 and tcpdump 3.9.4 import. |700022 |link:https://svnweb.freebsd.org/changeset/base/162170[162170] |September 9, 2006 |7.0-CURRENT after `dlsym` change to look for a requested symbol both in specified DSO and its implicit dependencies. |700023 |link:https://svnweb.freebsd.org/changeset/base/162588[162588] |September 23, 2006 |7.0-CURRENT after adding new sound IOCTLs for the OSSv4 mixer API. |700024 |link:https://svnweb.freebsd.org/changeset/base/162919[162919] |September 28, 2006 |7.0-CURRENT after import of OpenSSL 0.9.8d. |700025 |link:https://svnweb.freebsd.org/changeset/base/164190[164190] |November 11, 2006 |7.0-CURRENT after the addition of libelf. |700026 |link:https://svnweb.freebsd.org/changeset/base/164614[164614] |November 26, 2006 |7.0-CURRENT after major changes on sound sysctls. |700027 |link:https://svnweb.freebsd.org/changeset/base/164770[164770] |November 30, 2006 |7.0-CURRENT after the addition of Wi-Spy quirk. |700028 |link:https://svnweb.freebsd.org/changeset/base/165242[165242] |December 15, 2006 |7.0-CURRENT after the addition of `sctp` calls to libc |700029 |link:https://svnweb.freebsd.org/changeset/base/166259[166259] |January 26, 2007 |7.0-CURRENT after the GNU man:gzip[1] implementation was replaced with a BSD licensed version ported from NetBSD. |700030 |link:https://svnweb.freebsd.org/changeset/base/166549[166549] |February 7, 2007 |7.0-CURRENT after the removal of IPIP tunnel encapsulation (VIFF_TUNNEL) from the IPv4 multicast forwarding code. |700031 |link:https://svnweb.freebsd.org/changeset/base/166907[166907] |February 23, 2007 |7.0-CURRENT after the modification of `bus_setup_intr()` (newbus). |700032 |link:https://svnweb.freebsd.org/changeset/base/167165[167165] |March 2, 2007 |7.0-CURRENT after the inclusion of man:ipw[4] and man:iwi[4] firmware. |700033 |link:https://svnweb.freebsd.org/changeset/base/167360[167360] |March 9, 2007 |7.0-CURRENT after the inclusion of ncurses wide character support. |700034 |link:https://svnweb.freebsd.org/changeset/base/167684[167684] |March 19, 2007 |7.0-CURRENT after changes to how `insmntque()`, `getnewvnode()`, and `vfs_hash_insert()` work. |700035 |link:https://svnweb.freebsd.org/changeset/base/167906[167906] |March 26, 2007 |7.0-CURRENT after addition of a notify mechanism for CPU frequency changes. |700036 |link:https://svnweb.freebsd.org/changeset/base/168413[168413] |April 6, 2007 |7.0-CURRENT after import of the ZFS filesystem. |700037 |link:https://svnweb.freebsd.org/changeset/base/168504[168504] |April 8, 2007 |7.0-CURRENT after addition of CAM 'SG' peripheral device, which implements a subset of Linux SCSI SG passthrough device API. |700038 |link:https://svnweb.freebsd.org/changeset/base/169151[169151] |April 30, 2007 |7.0-CURRENT after changing man:getenv[3], man:putenv[3], man:setenv[3] and man:unsetenv[3] to be POSIX conformant. |700039 |link:https://svnweb.freebsd.org/changeset/base/169190[169190] |May 1, 2007 |7.0-CURRENT after the changes in 700038 were backed out. |700040 |link:https://svnweb.freebsd.org/changeset/base/169453[169453] |May 10, 2007 |7.0-CURRENT after the addition of man:flopen[3] to libutil. |700041 |link:https://svnweb.freebsd.org/changeset/base/169526[169526] |May 13, 2007 |7.0-CURRENT after enabling symbol versioning, and changing the default thread library to libthr. |700042 |link:https://svnweb.freebsd.org/changeset/base/169758[169758] |May 19, 2007 |7.0-CURRENT after the import of gcc 4.2.0. |700043 |link:https://svnweb.freebsd.org/changeset/base/169830[169830] |May 21, 2007 |7.0-CURRENT after bump of all shared library versions that had not been changed since RELENG_6. |700044 |link:https://svnweb.freebsd.org/changeset/base/170395[170395] |June 7, 2007 |7.0-CURRENT after changing the argument for `vn_open()`/`VOP_OPEN()` from file descriptor index to the struct file *. |700045 |link:https://svnweb.freebsd.org/changeset/base/170510[170510] |June 10, 2007 |7.0-CURRENT after changing man:pam_nologin[8] to provide an account management function instead of an authentication function to the PAM framework. |700046 |link:https://svnweb.freebsd.org/changeset/base/170530[170530] |June 11, 2007 |7.0-CURRENT after updated 802.11 wireless support. |700047 |link:https://svnweb.freebsd.org/changeset/base/170579[170579] |June 11, 2007 |7.0-CURRENT after adding TCP LRO interface capabilities. |700048 |link:https://svnweb.freebsd.org/changeset/base/170613[170613] |June 12, 2007 |7.0-CURRENT after RFC 3678 API support added to the IPv4 stack. Legacy RFC 1724 behavior of the IP_MULTICAST_IF ioctl has now been removed; 0.0.0.0/8 may no longer be used to specify an interface index. Use struct `ipmreqn` instead. |700049 |link:https://svnweb.freebsd.org/changeset/base/171175[171175] |July 3, 2007 |7.0-CURRENT after importing pf from OpenBSD 4.1 |(not changed) |link:https://svnweb.freebsd.org/changeset/base/171167[171167] | |7.0-CURRENT after adding IPv6 support for FAST_IPSEC, deleting KAME IPSEC, and renaming FAST_IPSEC to IPSEC. |700050 |link:https://svnweb.freebsd.org/changeset/base/171195[171195] |July 4, 2007 |7.0-CURRENT after converting setenv/putenv/etc. calls from traditional BSD to POSIX. |700051 |link:https://svnweb.freebsd.org/changeset/base/171211[171211] |July 4, 2007 |7.0-CURRENT after adding new mmap/lseek/etc syscalls. |700052 |link:https://svnweb.freebsd.org/changeset/base/171275[171275] |July 6, 2007 |7.0-CURRENT after moving I4B headers to include/i4b. |700053 |link:https://svnweb.freebsd.org/changeset/base/172394[172394] |September 30, 2007 |7.0-CURRENT after the addition of support for PCI domains |700054 |link:https://svnweb.freebsd.org/changeset/base/172988[172988] |October 25, 2007 |7.0-STABLE after MFC of wide and single byte ctype separation. |700055 |link:https://svnweb.freebsd.org/changeset/base/173104[173104] |October 28, 2007 |7.0-RELEASE, and 7.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was MFCed, which required the ABI of the PCIOCGETCONF IOCTL to be broken again |700100 |link:https://svnweb.freebsd.org/changeset/base/174864[174864] |December 22, 2007 |7.0-STABLE after 7.0-RELEASE |700101 |link:https://svnweb.freebsd.org/changeset/base/176111[176111] |February 8, 2008 |7.0-STABLE after the MFC of `m_collapse()`. |700102 |link:https://svnweb.freebsd.org/changeset/base/177735[177735] |March 30, 2008 |7.0-STABLE after the MFC of `kdb_enter_why()`. |700103 |link:https://svnweb.freebsd.org/changeset/base/178061[178061] |April 10, 2008 |7.0-STABLE after adding `l_sysid` to struct flock. |700104 |link:https://svnweb.freebsd.org/changeset/base/178108[178108] |April 11, 2008 |7.0-STABLE after the MFC of man:procstat[1]. |700105 |link:https://svnweb.freebsd.org/changeset/base/178120[178120] |April 11, 2008 |7.0-STABLE after the MFC of `umtx` features. |700106 |link:https://svnweb.freebsd.org/changeset/base/178225[178225] |April 15, 2008 |7.0-STABLE after the MFC of man:write[2] support to man:psm[4]. |700107 |link:https://svnweb.freebsd.org/changeset/base/178353[178353] |April 20, 2008 |7.0-STABLE after the MFC of F_DUP2FD command to man:fcntl[2]. |700108 |link:https://svnweb.freebsd.org/changeset/base/178783[178783] |May 5, 2008 |7.0-STABLE after some man:lockmgr[9] changes, which makes it necessary to include [.filename]#sys/lock.h# to use man:lockmgr[9]. |700109 |link:https://svnweb.freebsd.org/changeset/base/179367[179367] |May 27, 2008 |7.0-STABLE after MFC of the man:memrchr[3] function. |700110 |link:https://svnweb.freebsd.org/changeset/base/181328[181328] |August 5, 2008 |7.0-STABLE after MFC of kernel NFS `lockd` client. |700111 |link:https://svnweb.freebsd.org/changeset/base/181940[181940] |August 20, 2008 |7.0-STABLE after addition of physically contiguous jumbo frame support. |700112 |link:https://svnweb.freebsd.org/changeset/base/182294[182294] |August 27, 2008 |7.0-STABLE after MFC of kernel DTrace support. |701000 |link:https://svnweb.freebsd.org/changeset/base/185315[185315] |November 25, 2008 |7.1-RELEASE |701100 |link:https://svnweb.freebsd.org/changeset/base/185302[185302] |November 25, 2008 |7.1-STABLE after 7.1-RELEASE. |701101 |link:https://svnweb.freebsd.org/changeset/base/187023[187023] |January 10, 2009 |7.1-STABLE after man:strndup[3] merge. |701102 |link:https://svnweb.freebsd.org/changeset/base/187370[187370] |January 17, 2009 |7.1-STABLE after man:cpuctl[4] support added. |701103 |link:https://svnweb.freebsd.org/changeset/base/188281[188281] |February 7, 2009 |7.1-STABLE after the merge of multi-/no-IPv4/v6 jails. |701104 |link:https://svnweb.freebsd.org/changeset/base/188625[188625] |February 14, 2009 |7.1-STABLE after the store of the suspension owner in the struct mount, and introduction of vfs_susp_clean method into the struct vfsops. |701105 |link:https://svnweb.freebsd.org/changeset/base/189740[189740] |March 12, 2009 |7.1-STABLE after the incompatible change to the kern.ipc.shmsegs sysctl to allow allocating larger SysV shared memory segments on 64bit architectures. |701106 |link:https://svnweb.freebsd.org/changeset/base/189786[189786] |March 14, 2009 |7.1-STABLE after the merge of a fix for POSIX semaphore wait operations. |702000 |link:https://svnweb.freebsd.org/changeset/base/191099[191099] |April 15, 2009 |7.2-RELEASE |702100 |link:https://svnweb.freebsd.org/changeset/base/191091[191091] |April 15, 2009 |7.2-STABLE after 7.2-RELEASE. |702101 |link:https://svnweb.freebsd.org/changeset/base/192149[192149] |May 15, 2009 |7.2-STABLE after man:ichsmb[4] was changed to use left-adjusted secondary addressing to match other SMBus controller drivers. |702102 |link:https://svnweb.freebsd.org/changeset/base/193020[193020] |May 28, 2009 |7.2-STABLE after MFC of the man:fdopendir[3] function. |702103 |link:https://svnweb.freebsd.org/changeset/base/193638[193638] |June 6, 2009 |7.2-STABLE after MFC of PmcTools. |702104 |link:https://svnweb.freebsd.org/changeset/base/195694[195694] |July 14, 2009 |7.2-STABLE after MFC of the man:closefrom[2] system call. |702105 |link:https://svnweb.freebsd.org/changeset/base/196006[196006] |July 31, 2009 |7.2-STABLE after MFC of the SYSVIPC ABI change. |702106 |link:https://svnweb.freebsd.org/changeset/base/197198[197198] |September 14, 2009 |7.2-STABLE after MFC of the x86 PAT enhancements and addition of `d_mmap_single()` and the scatter/gather list VM object type. |703000 |link:https://svnweb.freebsd.org/changeset/base/203740[203740] |February 9, 2010 |7.3-RELEASE |703100 |link:https://svnweb.freebsd.org/changeset/base/203742[203742] |February 9, 2010 |7.3-STABLE after 7.3-RELEASE. |704000 |link:https://svnweb.freebsd.org/changeset/base/216647[216647] |December 22, 2010 |7.4-RELEASE |704100 |link:https://svnweb.freebsd.org/changeset/base/216658[216658] |December 22, 2010 |7.4-STABLE after 7.4-RELEASE. |704101 |link:https://svnweb.freebsd.org/changeset/base/221318[221318] |May 2, 2011 |7.4-STABLE after the gcc MFC in rev link:https://svnweb.freebsd.org/changeset/base/221317[221317]. |=== [[versions-6]] == FreeBSD 6 Versions [[freebsd-versions-table-6]] .FreeBSD 6 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |600000 |link:https://svnweb.freebsd.org/changeset/base/133921[133921] |August 18, 2004 |6.0-CURRENT |600001 |link:https://svnweb.freebsd.org/changeset/base/134396[134396] |August 27, 2004 |6.0-CURRENT after permanently enabling PFIL_HOOKS in the kernel. |600002 |link:https://svnweb.freebsd.org/changeset/base/134514[134514] |August 30, 2004 |6.0-CURRENT after initial addition of `ifi_epoch` to struct `if_data`. Backed out after a few days. Do not use this value. |600003 |link:https://svnweb.freebsd.org/changeset/base/134933[134933] |September 8, 2004 |6.0-CURRENT after the re-addition of the `ifi_epoch` member of struct `if_data`. |600004 |link:https://svnweb.freebsd.org/changeset/base/135920[135920] |September 29, 2004 |6.0-CURRENT after addition of the struct inpcb argument to the pfil API. |600005 |link:https://svnweb.freebsd.org/changeset/base/136172[136172] |October 5, 2004 |6.0-CURRENT after addition of the "-d DESTDIR" argument to newsyslog. |600006 |link:https://svnweb.freebsd.org/changeset/base/137192[137192] |November 4, 2004 |6.0-CURRENT after addition of glibc style man:strftime[3] padding options. |600007 |link:https://svnweb.freebsd.org/changeset/base/138760[138760] |December 12, 2004 |6.0-CURRENT after addition of 802.11 framework updates. |600008 |link:https://svnweb.freebsd.org/changeset/base/140809[140809] |January 25, 2005 |6.0-CURRENT after changes to `VOP_*VOBJECT()` functions and introduction of `MNTK_MPSAFE` flag for Giant-free filesystems. |600009 |link:https://svnweb.freebsd.org/changeset/base/141250[141250] |February 4, 2005 |6.0-CURRENT after addition of the cpufreq framework and drivers. |600010 |link:https://svnweb.freebsd.org/changeset/base/141394[141394] |February 6, 2005 |6.0-CURRENT after importing OpenBSD's man:nc[1]. |600011 |link:https://svnweb.freebsd.org/changeset/base/141727[141727] |February 12, 2005 |6.0-CURRENT after removing semblance of SVID2 `matherr()` support. |600012 |link:https://svnweb.freebsd.org/changeset/base/141940[141940] |February 15, 2005 |6.0-CURRENT after increase of default thread stacks' size. |600013 |link:https://svnweb.freebsd.org/changeset/base/142089[142089] |February 19, 2005 |6.0-CURRENT after fixes in [.filename]## and [.filename]## for using the GCC-compatibility of the Intel C/C++ compiler. |600014 |link:https://svnweb.freebsd.org/changeset/base/142184[142184] |February 21, 2005 |6.0-CURRENT after EOVERFLOW checks in man:vswprintf[3] fixed. |600015 |link:https://svnweb.freebsd.org/changeset/base/142501[142501] |February 25, 2005 |6.0-CURRENT after changing the struct `if_data` member, `ifi_epoch`, from wall clock time to uptime. |600016 |link:https://svnweb.freebsd.org/changeset/base/142582[142582] |February 26, 2005 |6.0-CURRENT after LC_CTYPE disk format changed. |600017 |link:https://svnweb.freebsd.org/changeset/base/142683[142683] |February 27, 2005 |6.0-CURRENT after NLS catalogs disk format changed. |600018 |link:https://svnweb.freebsd.org/changeset/base/142686[142686] |February 27, 2005 |6.0-CURRENT after LC_COLLATE disk format changed. |600019 |link:https://svnweb.freebsd.org/changeset/base/142752[142752] |February 28, 2005 |Installation of `acpica` includes into /usr/include. |600020 |link:https://svnweb.freebsd.org/changeset/base/143308[143308] |March 9, 2005 |Addition of MSG_NOSIGNAL flag to man:send[2] API. |600021 |link:https://svnweb.freebsd.org/changeset/base/143746[143746] |March 17, 2005 |Addition of fields to cdevsw |600022 |link:https://svnweb.freebsd.org/changeset/base/143901[143901] |March 21, 2005 |Removed gtar from base system. |600023 |link:https://svnweb.freebsd.org/changeset/base/144980[144980] |April 13, 2005 |LOCAL_CREDS, LOCAL_CONNWAIT socket options added to man:unix[4]. |600024 |link:https://svnweb.freebsd.org/changeset/base/145565[145565] |April 19, 2005 |man:hwpmc[4] and related tools added to 6.0-CURRENT. |600025 |link:https://svnweb.freebsd.org/changeset/base/145565[145565] |April 26, 2005 |struct `icmphdr` added to 6.0-CURRENT. |600026 |link:https://svnweb.freebsd.org/changeset/base/145843[145843] |May 3, 2005 |pf updated to 3.7. |600027 |link:https://svnweb.freebsd.org/changeset/base/145966[145966] |May 6, 2005 |Kernel libalias and `ng_nat` introduced. |600028 |link:https://svnweb.freebsd.org/changeset/base/146191[146191] |May 13, 2005 |POSIX man:ttyname_r[3] made available through unistd.h and libc. |600029 |link:https://svnweb.freebsd.org/changeset/base/146780[146780] |May 29, 2005 |6.0-CURRENT after libpcap updated to v0.9.1 alpha 096. |600030 |link:https://svnweb.freebsd.org/changeset/base/146988[146988] |June 5, 2005 |6.0-CURRENT after importing NetBSD's man:if_bridge[4]. |600031 |link:https://svnweb.freebsd.org/changeset/base/147256[147256] |June 10, 2005 |6.0-CURRENT after struct ifnet was broken out of the driver `softcs`. |600032 |link:https://svnweb.freebsd.org/changeset/base/147898[147898] |July 11, 2005 |6.0-CURRENT after the import of libpcap v0.9.1. |600033 |link:https://svnweb.freebsd.org/changeset/base/148388[148388] |July 25, 2005 |6.0-STABLE after bump of all shared library versions that had not been changed since RELENG_5. |600034 |link:https://svnweb.freebsd.org/changeset/base/149040[149040] |August 13, 2005 |6.0-STABLE after credential argument is added to `dev_clone` event handler. 6.0-RELEASE. |600100 |link:https://svnweb.freebsd.org/changeset/base/151958[151958] |November 1, 2005 |6.0-STABLE after 6.0-RELEASE |600101 |link:https://svnweb.freebsd.org/changeset/base/153601[153601] |December 21, 2005 |6.0-STABLE after incorporating scripts from the `local_startup` directories into the base man:rcorder[8]. |600102 |link:https://svnweb.freebsd.org/changeset/base/153912[153912] |December 30, 2005 |6.0-STABLE after updating the ELF types and constants. |600103 |link:https://svnweb.freebsd.org/changeset/base/154396[154396] |January 15, 2006 |6.0-STABLE after MFC of man:pidfile[3] API. |600104 |link:https://svnweb.freebsd.org/changeset/base/154453[154453] |January 17, 2006 |6.0-STABLE after MFC of ldconfig_local_dirs change. |600105 |link:https://svnweb.freebsd.org/changeset/base/156019[156019] |February 26, 2006 |6.0-STABLE after NLS catalog support of man:csh[1]. |601000 |link:https://svnweb.freebsd.org/changeset/base/158330[158330] |May 6, 2006 |6.1-RELEASE |601100 |link:https://svnweb.freebsd.org/changeset/base/158331[158331] |May 6, 2006 |6.1-STABLE after 6.1-RELEASE. |601101 |link:https://svnweb.freebsd.org/changeset/base/159861[159861] |June 22, 2006 |6.1-STABLE after the import of `csup`. |601102 |link:https://svnweb.freebsd.org/changeset/base/160253[160253] |July 11, 2006 |6.1-STABLE after the man:iwi[4] update. |601103 |link:https://svnweb.freebsd.org/changeset/base/160429[160429] |July 17, 2006 |6.1-STABLE after the resolver update to BIND9, and exposure of reentrant version of `netdb` functions. |601104 |link:https://svnweb.freebsd.org/changeset/base/161098[161098] |August 8, 2006 |6.1-STABLE after DSO (dynamic shared objects) support has been enabled in OpenSSL. |601105 |link:https://svnweb.freebsd.org/changeset/base/161900[161900] |September 2, 2006 |6.1-STABLE after 802.11 fix-ups changed the API for the IEEE80211_IOC_STA_INFO ioctl. |602000 |link:https://svnweb.freebsd.org/changeset/base/164312[164312] |November 15, 2006 |6.2-RELEASE |602100 |link:https://svnweb.freebsd.org/changeset/base/162329[162329] |September 15, 2006 |6.2-STABLE after 6.2-RELEASE. |602101 |link:https://svnweb.freebsd.org/changeset/base/165122[165122] |December 12, 2006 |6.2-STABLE after the addition of Wi-Spy quirk. |602102 |link:https://svnweb.freebsd.org/changeset/base/165596[165596] |December 28, 2006 |6.2-STABLE after `pci_find_extcap()` addition. |602103 |link:https://svnweb.freebsd.org/changeset/base/166039[166039] |January 16, 2007 |6.2-STABLE after MFC of `dlsym` change to look for a requested symbol both in specified DSO and its implicit dependencies. |602104 |link:https://svnweb.freebsd.org/changeset/base/166314[166314] |January 28, 2007 |6.2-STABLE after MFC of man:ng_deflate[4] and man:ng_pred1[4] netgraph nodes and new compression and encryption modes for man:ng_ppp[4] node. |602105 |link:https://svnweb.freebsd.org/changeset/base/166840[166840] |February 20, 2007 |6.2-STABLE after MFC of BSD licensed version of man:gzip[1] ported from NetBSD. |602106 |link:https://svnweb.freebsd.org/changeset/base/168133[168133] |March 31, 2007 |6.2-STABLE after MFC of PCI MSI and MSI-X support. |602107 |link:https://svnweb.freebsd.org/changeset/base/168438[168438] |April 6, 2007 |6.2-STABLE after MFC of ncurses 5.6 and wide character support. |602108 |link:https://svnweb.freebsd.org/changeset/base/168611[168611] |April 11, 2007 |6.2-STABLE after MFC of CAM 'SG' peripheral device, which implements a subset of Linux SCSI SG passthrough device API. |602109 |link:https://svnweb.freebsd.org/changeset/base/168805[168805] |April 17, 2007 |6.2-STABLE after MFC of readline 5.2 patch-set 002. |602110 |link:https://svnweb.freebsd.org/changeset/base/169222[169222] |May 2, 2007 |6.2-STABLE after MFC of `pmap_invalidate_cache()`, `pmap_change_attr()`, `pmap_mapbios()`, `pmap_mapdev_attr()`, and `pmap_unmapbios()` for amd64 and i386. |602111 |link:https://svnweb.freebsd.org/changeset/base/170556[170556] |June 11, 2007 |6.2-STABLE after MFC of BOP_BDFLUSH and caused breakage of the filesystem modules KBI. |602112 |link:https://svnweb.freebsd.org/changeset/base/172284[172284] |September 21, 2007 |6.2-STABLE after man:libutil[3] MFC's. |602113 |link:https://svnweb.freebsd.org/changeset/base/172986[172986] |October 25, 2007 |6.2-STABLE after MFC of wide and single byte ctype separation. Newly compiled binary that references to ctype.h may require a new symbol, `__mb_sb_limit`, which is not available on older systems. |602114 |link:https://svnweb.freebsd.org/changeset/base/173170[173170] |October 30, 2007 |6.2-STABLE after ctype ABI forward compatibility restored. |602115 |link:https://svnweb.freebsd.org/changeset/base/173794[173794] |November 21, 2007 |6.2-STABLE after back out of wide and single byte ctype separation. |603000 |link:https://svnweb.freebsd.org/changeset/base/173897[173897] |November 25, 2007 |6.3-RELEASE |603100 |link:https://svnweb.freebsd.org/changeset/base/173891[173891] |November 25, 2007 |6.3-STABLE after 6.3-RELEASE. |(not changed) |link:https://svnweb.freebsd.org/changeset/base/174434[174434] |December 7, 2007 |6.3-STABLE after fixing multibyte type support in bit macro. |603102 |link:https://svnweb.freebsd.org/changeset/base/178459[178459] |April 24, 2008 |6.3-STABLE after adding `l_sysid` to struct flock. |603103 |link:https://svnweb.freebsd.org/changeset/base/179367[179367] |May 27, 2008 |6.3-STABLE after MFC of the man:memrchr[3] function. |603104 |link:https://svnweb.freebsd.org/changeset/base/179810[179810] |June 15, 2008 |6.3-STABLE after MFC of support for `:u` variable modifier in man:make[1]. |604000 |link:https://svnweb.freebsd.org/changeset/base/183583[183583] |October 4, 2008 |6.4-RELEASE |604100 |link:https://svnweb.freebsd.org/changeset/base/183584[183584] |October 4, 2008 |6.4-STABLE after 6.4-RELEASE. |=== [[versions-5]] == FreeBSD 5 Versions [[freebsd-versions-table-5]] .FreeBSD 5 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |500000 |link:https://svnweb.freebsd.org/changeset/base/58009[58009] |March 13, 2000 |5.0-CURRENT |500001 |link:https://svnweb.freebsd.org/changeset/base/59348[59348] |April 18, 2000 |5.0-CURRENT after adding addition ELF header fields, and changing ELF binary branding method. |500002 |link:https://svnweb.freebsd.org/changeset/base/59906[59906] |May 2, 2000 |5.0-CURRENT after kld metadata changes. |500003 |link:https://svnweb.freebsd.org/changeset/base/60688[60688] |May 18, 2000 |5.0-CURRENT after buf/bio changes. |500004 |link:https://svnweb.freebsd.org/changeset/base/60936[60936] |May 26, 2000 |5.0-CURRENT after binutils upgrade. |500005 |link:https://svnweb.freebsd.org/changeset/base/61221[61221] |June 3, 2000 |5.0-CURRENT after merging libxpg4 code into libc and after TASKQ interface introduction. |500006 |link:https://svnweb.freebsd.org/changeset/base/61500[61500] |June 10, 2000 |5.0-CURRENT after the addition of AGP interfaces. |500007 |link:https://svnweb.freebsd.org/changeset/base/62235[62235] |June 29, 2000 |5.0-CURRENT after Perl upgrade to 5.6.0 |500008 |link:https://svnweb.freebsd.org/changeset/base/62764[62764] |July 7, 2000 |5.0-CURRENT after the update of KAME code to 2000/07 sources. |500009 |link:https://svnweb.freebsd.org/changeset/base/63154[63154] |July 14, 2000 |5.0-CURRENT after `ether_ifattach()` and `ether_ifdetach()` changes. |500010 |link:https://svnweb.freebsd.org/changeset/base/63265[63265] |July 16, 2000 |5.0-CURRENT after changing mtree defaults back to original variant, adding -L to follow symlinks. |500011 |link:https://svnweb.freebsd.org/changeset/base/63459[63459] |July 18, 2000 |5.0-CURRENT after kqueue API changed. |500012 |link:https://svnweb.freebsd.org/changeset/base/65353[65353] |September 2, 2000 |5.0-CURRENT after man:setproctitle[3] moved from libutil to libc. |500013 |link:https://svnweb.freebsd.org/changeset/base/65671[65671] |September 10, 2000 |5.0-CURRENT after the first SMPng commit. |500014 |link:https://svnweb.freebsd.org/changeset/base/70650[70650] |January 4, 2001 |5.0-CURRENT after moved to . |500015 |link:https://svnweb.freebsd.org/changeset/base/70894[70894] |January 10, 2001 |5.0-CURRENT after combining libgcc.a and libgcc_r.a, and associated GCC linkage changes. |500016 |link:https://svnweb.freebsd.org/changeset/base/71583[71583] |January 24, 2001 |5.0-CURRENT after change allowing libc and libc_r to be linked together, deprecating -pthread option. |500017 |link:https://svnweb.freebsd.org/changeset/base/72650[72650] |February 18, 2001 |5.0-CURRENT after switch from struct `ucred` to struct `xucred` to stabilize kernel-exported API for mountd et al. |500018 |link:https://svnweb.freebsd.org/changeset/base/72975[72975] |February 24, 2001 |5.0-CURRENT after addition of CPUTYPE make variable for controlling CPU-specific optimizations. |500019 |link:https://svnweb.freebsd.org/changeset/base/77937[77937] |June 9, 2001 |5.0-CURRENT after moving machine/ioctl_fd.h to sys/fdcio.h |500020 |link:https://svnweb.freebsd.org/changeset/base/78304[78304] |June 15, 2001 |5.0-CURRENT after locale names renaming. |500021 |link:https://svnweb.freebsd.org/changeset/base/78632[78632] |June 22, 2001 |5.0-CURRENT after Bzip2 import. Also signifies removal of S/Key. |500022 |link:https://svnweb.freebsd.org/changeset/base/83435[83435] |July 12, 2001 |5.0-CURRENT after SSE support. |500023 |link:https://svnweb.freebsd.org/changeset/base/83435[83435] |September 14, 2001 |5.0-CURRENT after KSE Milestone 2. |500024 |link:https://svnweb.freebsd.org/changeset/base/84324[84324] |October 1, 2001 |5.0-CURRENT after `d_thread_t`, and moving UUCP to ports. |500025 |link:https://svnweb.freebsd.org/changeset/base/84481[84481] |October 4, 2001 |5.0-CURRENT after ABI change for descriptor and `creds` passing on 64 bit platforms. |500026 |link:https://svnweb.freebsd.org/changeset/base/84710[84710] |October 9, 2001 |5.0-CURRENT after moving to XFree86 4 by default for package builds, and after the new libc `strnstr()` function was added. |500027 |link:https://svnweb.freebsd.org/changeset/base/84743[84743] |October 10, 2001 |5.0-CURRENT after the new libc `strcasestr()` function was added. |500028 |link:https://svnweb.freebsd.org/changeset/base/87879[87879] |December 14, 2001 |5.0-CURRENT after the userland components of smbfs were imported. |(not changed) | | |5.0-CURRENT after the new C99 specific-width integer types were added. |500029 |link:https://svnweb.freebsd.org/changeset/base/89938[89938] |January 29, 2002 |5.0-CURRENT after a change was made in the return value of man:sendfile[2]. |500030 |link:https://svnweb.freebsd.org/changeset/base/90711[90711] |February 15, 2002 |5.0-CURRENT after the introduction of the type `fflags_t`, which is the appropriate size for file flags. |500031 |link:https://svnweb.freebsd.org/changeset/base/91203[91203] |February 24, 2002 |5.0-CURRENT after the usb structure element rename. |500032 |link:https://svnweb.freebsd.org/changeset/base/92453[92453] |March 16, 2002 |5.0-CURRENT after the introduction of Perl 5.6.1. |500033 |link:https://svnweb.freebsd.org/changeset/base/93722[93722] |April 3, 2002 |5.0-CURRENT after the `sendmail_enable` man:rc.conf[5] variable was made to take the value `NONE`. |500034 |link:https://svnweb.freebsd.org/changeset/base/95831[95831] |April 30, 2002 |5.0-CURRENT after `mtx_init()` grew a third argument. |500035 |link:https://svnweb.freebsd.org/changeset/base/96498[96498] |May 13, 2002 |5.0-CURRENT with Gcc 3.1. |500036 |link:https://svnweb.freebsd.org/changeset/base/96781[96781] |May 17, 2002 |5.0-CURRENT without Perl in /usr/src |500037 |link:https://svnweb.freebsd.org/changeset/base/97516[97516] |May 29, 2002 |5.0-CURRENT after the addition of man:dlfunc[3] |500038 |link:https://svnweb.freebsd.org/changeset/base/100591[100591] |July 24, 2002 |5.0-CURRENT after the types of some struct `sockbuf` members were changed and the structure was reordered. |500039 |link:https://svnweb.freebsd.org/changeset/base/102757[102757] |September 1, 2002 |5.0-CURRENT after GCC 3.2.1 import. Also after headers stopped using _BSD_FOO_T_ and started using _FOO_T_DECLARED. This value can also be used as a conservative estimate of the start of man:bzip2[1] package support. |500040 |link:https://svnweb.freebsd.org/changeset/base/103675[103675] |September 20, 2002 |5.0-CURRENT after various changes to disk functions were made in the name of removing dependency on disklabel structure internals. |500041 |link:https://svnweb.freebsd.org/changeset/base/104250[104250] |October 1, 2002 |5.0-CURRENT after the addition of man:getopt_long[3] to libc. |500042 |link:https://svnweb.freebsd.org/changeset/base/105178[105178] |October 15, 2002 |5.0-CURRENT after Binutils 2.13 upgrade, which included new FreeBSD emulation, `vec`, and output format. |500043 |link:https://svnweb.freebsd.org/changeset/base/106289[106289] |November 1, 2002 |5.0-CURRENT after adding weak pthread_XXX stubs to libc, obsoleting libXThrStub.so. 5.0-RELEASE. |500100 |link:https://svnweb.freebsd.org/changeset/base/109405[109405] |January 17, 2003 |5.0-CURRENT after branching for RELENG_5_0 |500101 |link:https://svnweb.freebsd.org/changeset/base/111120[111120] |February 19, 2003 | is empty. Do not include it. |500102 |link:https://svnweb.freebsd.org/changeset/base/111482[111482] |February 25, 2003 |5.0-CURRENT after the d_mmap_t interface change. |500103 |link:https://svnweb.freebsd.org/changeset/base/111540[111540] |February 26, 2003 |5.0-CURRENT after `taskqueue_swi` changed to run without Giant, and `taskqueue_swi_giant` added to run with Giant. |500104 |link:https://svnweb.freebsd.org/changeset/base/111600[111600] |February 27, 2003 |`cdevsw_add()` and `cdevsw_remove()` no longer exists. Appearance of `MAJOR_AUTO` allocation facility. |500105 |link:https://svnweb.freebsd.org/changeset/base/111864[111864] |March 4, 2003 |5.0-CURRENT after new cdevsw initialization method. |500106 |link:https://svnweb.freebsd.org/changeset/base/112007[112007] |March 8, 2003 |`devstat_add_entry()` has been replaced by `devstat_new_entry()` |500107 |link:https://svnweb.freebsd.org/changeset/base/112288[112288] |March 15, 2003 |`devstat` interface change; see sys/sys/param.h 1.149 |500108 |link:https://svnweb.freebsd.org/changeset/base/112300[112300] |March 15, 2003 |Token-Ring interface changes. |500109 |link:https://svnweb.freebsd.org/changeset/base/112571[112571] |March 25, 2003 |Addition of `vm_paddr_t`. |500110 |link:https://svnweb.freebsd.org/changeset/base/112741[112741] |March 28, 2003 |5.0-CURRENT after man:realpath[3] has been made thread-safe |500111 |link:https://svnweb.freebsd.org/changeset/base/113273[113273] |April 9, 2003 |5.0-CURRENT after man:usbhid[3] has been synced with NetBSD |500112 |link:https://svnweb.freebsd.org/changeset/base/113597[113597] |April 17, 2003 |5.0-CURRENT after new NSS implementation and addition of POSIX.1 getpw*_r, getgr*_r functions |500113 |link:https://svnweb.freebsd.org/changeset/base/114492[114492] |May 2, 2003 |5.0-CURRENT after removal of the old rc system. |501000 |link:https://svnweb.freebsd.org/changeset/base/115816[115816] |June 4, 2003 |5.1-RELEASE. |501100 |link:https://svnweb.freebsd.org/changeset/base/115710[115710] |June 2, 2003 |5.1-CURRENT after branching for RELENG_5_1. |501101 |link:https://svnweb.freebsd.org/changeset/base/117025[117025] |June 29, 2003 |5.1-CURRENT after correcting the semantics of man:sigtimedwait[2] and man:sigwaitinfo[2]. |501102 |link:https://svnweb.freebsd.org/changeset/base/117191[117191] |July 3, 2003 |5.1-CURRENT after adding the `lockfunc` and `lockfuncarg` fields to man:bus_dma_tag_create[9]. |501103 |link:https://svnweb.freebsd.org/changeset/base/118241[118241] |July 31, 2003 |5.1-CURRENT after GCC 3.3.1-pre 20030711 snapshot integration. |501104 |link:https://svnweb.freebsd.org/changeset/base/118511[118511] |August 5, 2003 |5.1-CURRENT 3ware API changes to twe. |501105 |link:https://svnweb.freebsd.org/changeset/base/119021[119021] |August 17, 2003 |5.1-CURRENT dynamically linked /bin and /sbin support and movement of libraries to /lib. |501106 |link:https://svnweb.freebsd.org/changeset/base/119881[119881] |September 8, 2003 |5.1-CURRENT after adding kernel support for Coda 6.x. |501107 |link:https://svnweb.freebsd.org/changeset/base/120180[120180] |September 17, 2003 |5.1-CURRENT after 16550 UART constants moved from [.filename]## to [.filename]##. Also when libmap functionality was unconditionally supported by rtld. |501108 |link:https://svnweb.freebsd.org/changeset/base/120386[120386] |September 23, 2003 |5.1-CURRENT after PFIL_HOOKS API update |501109 |link:https://svnweb.freebsd.org/changeset/base/120503[120503] |September 27, 2003 |5.1-CURRENT after adding man:kiconv[3] |501110 |link:https://svnweb.freebsd.org/changeset/base/120556[120556] |September 28, 2003 |5.1-CURRENT after changing default operations for open and close in cdevsw |501111 |link:https://svnweb.freebsd.org/changeset/base/121125[121125] |October 16, 2003 |5.1-CURRENT after changed layout of cdevsw |501112 |link:https://svnweb.freebsd.org/changeset/base/121129[121129] |October 16, 2003 | 5.1-CURRENT after adding kobj multiple inheritance |501113 |link:https://svnweb.freebsd.org/changeset/base/121816[121816] |October 31, 2003 | 5.1-CURRENT after the `if_xname` change in struct ifnet |501114 |link:https://svnweb.freebsd.org/changeset/base/122779[122779] |November 16, 2003 | 5.1-CURRENT after changing /bin and /sbin to be dynamically linked |502000 |link:https://svnweb.freebsd.org/changeset/base/123198[123198] |December 7, 2003 |5.2-RELEASE |502010 |link:https://svnweb.freebsd.org/changeset/base/126150[126150] |February 23, 2004 |5.2.1-RELEASE |502100 |link:https://svnweb.freebsd.org/changeset/base/123196[123196] |December 7, 2003 |5.2-CURRENT after branching for RELENG_5_2 |502101 |link:https://svnweb.freebsd.org/changeset/base/123677[123677] |December 19, 2003 |5.2-CURRENT after `__cxa_atexit`/`__cxa_finalize` functions were added to libc. |502102 |link:https://svnweb.freebsd.org/changeset/base/125236[125236] |January 30, 2004 |5.2-CURRENT after change of default thread library from libc_r to libpthread. |502103 |link:https://svnweb.freebsd.org/changeset/base/126083[126083] |February 21, 2004 |5.2-CURRENT after device driver API mega patch. |502104 |link:https://svnweb.freebsd.org/changeset/base/126208[126208] |February 25, 2004 |5.2-CURRENT after `getopt_long_only()` addition. |502105 |link:https://svnweb.freebsd.org/changeset/base/126644[126644] |March 5, 2004 |5.2-CURRENT after NULL is made into ((void *)0) for C, creating more warnings. |502106 |link:https://svnweb.freebsd.org/changeset/base/126757[126757] |March 8, 2004 |5.2-CURRENT after pf is linked to the build and install. |502107 |link:https://svnweb.freebsd.org/changeset/base/126819[126819] |March 10, 2004 |5.2-CURRENT after `time_t` is changed to a 64-bit value on sparc64. |502108 |link:https://svnweb.freebsd.org/changeset/base/126891[126891] |March 12, 2004 |5.2-CURRENT after Intel C/C++ compiler support in some headers and man:execve[2] changes to be more strictly conforming to POSIX. |502109 |link:https://svnweb.freebsd.org/changeset/base/127312[127312] |March 22, 2004 |5.2-CURRENT after the introduction of the `bus_alloc_resource_any` API |502110 |link:https://svnweb.freebsd.org/changeset/base/127475[127475] |March 27, 2004 |5.2-CURRENT after the addition of UTF-8 locales |502111 |link:https://svnweb.freebsd.org/changeset/base/128144[128144] |April 11, 2004 |5.2-CURRENT after the removal of the man:getvfsent[3] API |502112 |link:https://svnweb.freebsd.org/changeset/base/128182[128182] |April 13, 2004 |5.2-CURRENT after the addition of the .warning directive for make. |502113 |link:https://svnweb.freebsd.org/changeset/base/130057[130057] |June 4, 2004 |5.2-CURRENT after `ttyioctl()` was made mandatory for serial drivers. |502114 |link:https://svnweb.freebsd.org/changeset/base/130418[130418] |June 13, 2004 |5.2-CURRENT after import of the ALTQ framework. |502115 |link:https://svnweb.freebsd.org/changeset/base/130481[130481] |June 14, 2004 |5.2-CURRENT after changing man:sema_timedwait[9] to return 0 on success and a non-zero error code on failure. |502116 |link:https://svnweb.freebsd.org/changeset/base/130585[130585] |June 16, 2004 |5.2-CURRENT after changing kernel `dev_t` to be pointer to struct cdev *. |502117 |link:https://svnweb.freebsd.org/changeset/base/130640[130640] |June 17, 2004 |5.2-CURRENT after changing kernel `udev_t` to `dev_t`. |502118 |link:https://svnweb.freebsd.org/changeset/base/130656[130656] |June 17, 2004 |5.2-CURRENT after adding support for CLOCK_VIRTUAL and CLOCK_PROF to man:clock_gettime[2] and man:clock_getres[2]. |502119 |link:https://svnweb.freebsd.org/changeset/base/130934[130934] |June 22, 2004 |5.2-CURRENT after changing network interface cloning overhaul. |502120 |link:https://svnweb.freebsd.org/changeset/base/131429[131429] |July 2, 2004 |5.2-CURRENT after the update of the package tools to revision 20040629. |502121 |link:https://svnweb.freebsd.org/changeset/base/131883[131883] |July 9, 2004 |5.2-CURRENT after marking Bluetooth code as non-i386 specific. |502122 |link:https://svnweb.freebsd.org/changeset/base/131971[131971] |July 11, 2004 |5.2-CURRENT after the introduction of the KDB debugger framework, the conversion of DDB into a backend and the introduction of the GDB backend. |502123 |link:https://svnweb.freebsd.org/changeset/base/132025[132025] |July 12, 2004 |5.2-CURRENT after change to make VFS_ROOT take a struct thread argument as does vflush. Struct `kinfo_proc` now has a user data pointer. The switch of the default X implementation to `xorg` was also made at this time. |502124 |link:https://svnweb.freebsd.org/changeset/base/132597[132597] |July 24, 2004 |5.2-CURRENT after the change to separate the way ports rc.d and legacy scripts are started. |502125 |link:https://svnweb.freebsd.org/changeset/base/132726[132726] |July 28, 2004 |5.2-CURRENT after the backout of the previous change. |502126 |link:https://svnweb.freebsd.org/changeset/base/132914[132914] |July 31, 2004 |5.2-CURRENT after the removal of `kmem_alloc_pageable()` and the import of gcc 3.4.2. |502127 |link:https://svnweb.freebsd.org/changeset/base/132991[132991] |August 2, 2004 |5.2-CURRENT after changing the UMA kernel API to allow ctors/inits to fail. |502128 |link:https://svnweb.freebsd.org/changeset/base/133306[133306] |August 8, 2004 |5.2-CURRENT after the change of the vfs_mount signature as well as global replacement of PRISON_ROOT with SUSER_ALLOWJAIL for the man:suser[9] API. |503000 |link:https://svnweb.freebsd.org/changeset/base/134189[134189] |August 23, 2004 |5.3-BETA/RC before the pfil API change |503001 |link:https://svnweb.freebsd.org/changeset/base/135580[135580] |September 22, 2004 |5.3-RELEASE |503100 |link:https://svnweb.freebsd.org/changeset/base/136595[136595] |October 16, 2004 |5.3-STABLE after branching for RELENG_5_3 |503101 |link:https://svnweb.freebsd.org/changeset/base/138459[138459] |December 3, 2004 |5.3-STABLE after addition of glibc style man:strftime[3] padding options. |503102 |link:https://svnweb.freebsd.org/changeset/base/141788[141788] |February 13, 2005 |5.3-STABLE after OpenBSD's man:nc[1] import MFC. |503103 |link:https://svnweb.freebsd.org/changeset/base/142639[142639] |February 27, 2005 |5.4-PRERELEASE after the MFC of the fixes in [.filename]## and [.filename]## for using the GCC-compatibility of the Intel C/C++ compiler. |503104 |link:https://svnweb.freebsd.org/changeset/base/142835[142835] |February 28, 2005 |5.4-PRERELEASE after the MFC of the change of `ifi_epoch` from wall clock time to uptime. |503105 |link:https://svnweb.freebsd.org/changeset/base/143029[143029] |March 2, 2005 |5.4-PRERELEASE after the MFC of the fix of EOVERFLOW check in man:vswprintf[3]. |504000 |link:https://svnweb.freebsd.org/changeset/base/144575[144575] |April 3, 2005 |5.4-RELEASE. |504100 |link:https://svnweb.freebsd.org/changeset/base/144581[144581] |April 3, 2005 |5.4-STABLE after branching for RELENG_5_4 |504101 |link:https://svnweb.freebsd.org/changeset/base/146105[146105] |May 11, 2005 |5.4-STABLE after increasing the default thread stacksizes |504102 |link:https://svnweb.freebsd.org/changeset/base/504101[504101] |June 24, 2005 |5.4-STABLE after the addition of sha256 |504103 |link:https://svnweb.freebsd.org/changeset/base/150892[150892] |October 3, 2005 |5.4-STABLE after the MFC of if_bridge |504104 |link:https://svnweb.freebsd.org/changeset/base/152370[152370] |November 13, 2005 |5.4-STABLE after the MFC of bsdiff and portsnap |504105 |link:https://svnweb.freebsd.org/changeset/base/154464[154464] |January 17, 2006 |5.4-STABLE after MFC of ldconfig_local_dirs change. |505000 |link:https://svnweb.freebsd.org/changeset/base/158481[158481] |May 12, 2006 |5.5-RELEASE. |505100 |link:https://svnweb.freebsd.org/changeset/base/158482[158482] |May 12, 2006 |5.5-STABLE after branching for RELENG_5_5 |=== [[versions-4]] == FreeBSD 4 Versions [[freebsd-versions-table-4]] .FreeBSD 4 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |400000 |link:https://svnweb.freebsd.org/changeset/base/43041[43041] |January 22, 1999 |4.0-CURRENT after 3.4 branch |400001 |link:https://svnweb.freebsd.org/changeset/base/44177[44177] |February 20, 1999 |4.0-CURRENT after change in dynamic linker handling |400002 |link:https://svnweb.freebsd.org/changeset/base/44699[44699] |March 13, 1999 |4.0-CURRENT after C++ constructor/destructor order change |400003 |link:https://svnweb.freebsd.org/changeset/base/45059[45059] |March 27, 1999 |4.0-CURRENT after functioning man:dladdr[3] |400004 |link:https://svnweb.freebsd.org/changeset/base/45321[45321] |April 5, 1999 |4.0-CURRENT after `__deregister_frame_info` dynamic linker bug fix (also 4.0-CURRENT after EGCS 1.1.2 integration) |400005 |link:https://svnweb.freebsd.org/changeset/base/46113[46113] |April 27, 1999 |4.0-CURRENT after man:suser[9] API change (also 4.0-CURRENT after newbus) |400006 |link:https://svnweb.freebsd.org/changeset/base/47640[47640] |May 31, 1999 |4.0-CURRENT after cdevsw registration change |400007 |link:https://svnweb.freebsd.org/changeset/base/47992[47992] |June 17, 1999 |4.0-CURRENT after the addition of `so_cred` for socket level credentials |400008 |link:https://svnweb.freebsd.org/changeset/base/48048[48048] |June 20, 1999 |4.0-CURRENT after the addition of a poll syscall wrapper to libc_r |400009 |link:https://svnweb.freebsd.org/changeset/base/48936[48936] |July 20, 1999 |4.0-CURRENT after the change of the kernel's `dev_t` type to `struct specinfo` pointer |400010 |link:https://svnweb.freebsd.org/changeset/base/51649[51649] |September 25, 1999 |4.0-CURRENT after fixing a hole in man:jail[2] |400011 |link:https://svnweb.freebsd.org/changeset/base/51791[51791] |September 29, 1999 |4.0-CURRENT after the `sigset_t` datatype change |400012 |link:https://svnweb.freebsd.org/changeset/base/53164[53164] |November 15, 1999 |4.0-CURRENT after the cutover to the GCC 2.95.2 compiler |400013 |link:https://svnweb.freebsd.org/changeset/base/54123[54123] |December 4, 1999 |4.0-CURRENT after adding pluggable linux-mode ioctl handlers |400014 |link:https://svnweb.freebsd.org/changeset/base/56216[56216] |January 18, 2000 |4.0-CURRENT after importing OpenSSL |400015 |link:https://svnweb.freebsd.org/changeset/base/56700[56700] |January 27, 2000 |4.0-CURRENT after the C++ ABI change in GCC 2.95.2 from -fvtable-thunks to -fno-vtable-thunks by default |400016 |link:https://svnweb.freebsd.org/changeset/base/57529[57529] |February 27, 2000 |4.0-CURRENT after importing OpenSSH |400017 |link:https://svnweb.freebsd.org/changeset/base/58005[58005] |March 13, 2000 |4.0-RELEASE |400018 |link:https://svnweb.freebsd.org/changeset/base/58170[58170] |March 17, 2000 |4.0-STABLE after 4.0-RELEASE |400019 |link:https://svnweb.freebsd.org/changeset/base/60047[60047] |May 5, 2000 |4.0-STABLE after the introduction of delayed checksums. |400020 |link:https://svnweb.freebsd.org/changeset/base/61262[61262] |June 4, 2000 |4.0-STABLE after merging libxpg4 code into libc. |400021 |link:https://svnweb.freebsd.org/changeset/base/62820[62820] |July 8, 2000 |4.0-STABLE after upgrading Binutils to 2.10.0, ELF branding changes, and tcsh in the base system. |410000 |link:https://svnweb.freebsd.org/changeset/base/63095[63095] |July 14, 2000 |4.1-RELEASE |410001 |link:https://svnweb.freebsd.org/changeset/base/64012[64012] |July 29, 2000 |4.1-STABLE after 4.1-RELEASE |410002 |link:https://svnweb.freebsd.org/changeset/base/65962[65962] |September 16, 2000 |4.1-STABLE after man:setproctitle[3] moved from libutil to libc. |411000 |link:https://svnweb.freebsd.org/changeset/base/66336[66336] |September 25, 2000 |4.1.1-RELEASE |411001 | | |4.1.1-STABLE after 4.1.1-RELEASE |420000 |link:https://svnweb.freebsd.org/changeset/base/68066[68066] |October 31, 2000 |4.2-RELEASE |420001 |link:https://svnweb.freebsd.org/changeset/base/70895[70895] |January 10, 2001 |4.2-STABLE after combining libgcc.a and libgcc_r.a, and associated GCC linkage changes. |430000 |link:https://svnweb.freebsd.org/changeset/base/73800[73800] |March 6, 2001 |4.3-RELEASE |430001 |link:https://svnweb.freebsd.org/changeset/base/76779[76779] |May 18, 2001 |4.3-STABLE after `wint_t` introduction. |430002 |link:https://svnweb.freebsd.org/changeset/base/80157[80157] |July 22, 2001 |4.3-STABLE after PCI powerstate API merge. |440000 |link:https://svnweb.freebsd.org/changeset/base/80923[80923] |August 1, 2001 |4.4-RELEASE |440001 |link:https://svnweb.freebsd.org/changeset/base/85341[85341] |October 23, 2001 |4.4-STABLE after `d_thread_t` introduction. |440002 |link:https://svnweb.freebsd.org/changeset/base/86038[86038] |November 4, 2001 |4.4-STABLE after mount structure changes (affects filesystem klds). |440003 |link:https://svnweb.freebsd.org/changeset/base/88130[88130] |December 18, 2001 |4.4-STABLE after the userland components of smbfs were imported. |450000 |link:https://svnweb.freebsd.org/changeset/base/88271[88271] |December 20, 2001 |4.5-RELEASE |450001 |link:https://svnweb.freebsd.org/changeset/base/91203[91203] |February 24, 2002 |4.5-STABLE after the usb structure element rename. |450002 |link:https://svnweb.freebsd.org/changeset/base/92151[92151] |March 12, 2002 |4.5-STABLE after locale changes. |450003 | | |(Never created) |450004 |link:https://svnweb.freebsd.org/changeset/base/94840[94840] |April 16, 2002 |4.5-STABLE after the `sendmail_enable` man:rc.conf[5] variable was made to take the value `NONE`. |450005 |link:https://svnweb.freebsd.org/changeset/base/95555[95555] |April 27, 2002 |4.5-STABLE after moving to XFree86 4 by default for package builds. |450006 |link:https://svnweb.freebsd.org/changeset/base/95846[95846] |May 1, 2002 |4.5-STABLE after accept filtering was fixed so that is no longer susceptible to an easy DoS. |460000 |link:https://svnweb.freebsd.org/changeset/base/97923[97923] |June 21, 2002 |4.6-RELEASE |460001 |link:https://svnweb.freebsd.org/changeset/base/98730[98730] |June 21, 2002 |4.6-STABLE man:sendfile[2] fixed to comply with documentation, not to count any headers sent against the amount of data to be sent from the file. |460002 |link:https://svnweb.freebsd.org/changeset/base/100366[100366] |July 19, 2002 |4.6.2-RELEASE |460100 |link:https://svnweb.freebsd.org/changeset/base/98857[98857] |June 26, 2002 |4.6-STABLE |460101 |link:https://svnweb.freebsd.org/changeset/base/98880[98880] |June 26, 2002 |4.6-STABLE after MFC of `sed -i`. |460102 |link:https://svnweb.freebsd.org/changeset/base/102759[102759] |September 1, 2002 |4.6-STABLE after MFC of many new pkg_install features from the HEAD. |470000 |link:https://svnweb.freebsd.org/changeset/base/104655[104655] |October 8, 2002 |4.7-RELEASE |470100 |link:https://svnweb.freebsd.org/changeset/base/104717[104717] |October 9, 2002 |4.7-STABLE |470101 |link:https://svnweb.freebsd.org/changeset/base/106732[106732] |November 10, 2002 |Start generated __std{in,out,err}p references rather than __sF. This changes std{in,out,err} from a compile time expression to a runtime one. |470102 |link:https://svnweb.freebsd.org/changeset/base/109753[109753] |January 23, 2003 |4.7-STABLE after MFC of mbuf changes to replace `m_aux` mbufs by `m_tag`'s |470103 |link:https://svnweb.freebsd.org/changeset/base/110887[110887] |February 14, 2003 |4.7-STABLE gets OpenSSL 0.9.7 |480000 |link:https://svnweb.freebsd.org/changeset/base/112852[112852] |March 30, 2003 |4.8-RELEASE |480100 |link:https://svnweb.freebsd.org/changeset/base/113107[113107] |April 5, 2003 |4.8-STABLE |480101 |link:https://svnweb.freebsd.org/changeset/base/115232[115232] |May 22, 2003 |4.8-STABLE after man:realpath[3] has been made thread-safe |480102 |link:https://svnweb.freebsd.org/changeset/base/118737[118737] |August 10, 2003 |4.8-STABLE 3ware API changes to twe. |490000 |link:https://svnweb.freebsd.org/changeset/base/121592[121592] |October 27, 2003 |4.9-RELEASE |490100 |link:https://svnweb.freebsd.org/changeset/base/121593[121593] |October 27, 2003 |4.9-STABLE |490101 |link:https://svnweb.freebsd.org/changeset/base/124264[124264] |January 8, 2004 |4.9-STABLE after `e_sid` was added to struct `kinfo_eproc`. |490102 |link:https://svnweb.freebsd.org/changeset/base/125417[125417] |February 4, 2004 |4.9-STABLE after MFC of libmap functionality for rtld. |491000 |link:https://svnweb.freebsd.org/changeset/base/129700[129700] |May 25, 2004 |4.10-RELEASE |491100 |link:https://svnweb.freebsd.org/changeset/base/129918[129918] |June 1, 2004 |4.10-STABLE |491101 |link:https://svnweb.freebsd.org/changeset/base/133506[133506] |August 11, 2004 |4.10-STABLE after MFC of revision 20040629 of the package tools |491102 |link:https://svnweb.freebsd.org/changeset/base/137786[137786] |November 16, 2004 |4.10-STABLE after VM fix dealing with unwiring of fictitious pages |492000 |link:https://svnweb.freebsd.org/changeset/base/138960[138960] |December 17, 2004 |4.11-RELEASE |492100 |link:https://svnweb.freebsd.org/changeset/base/138959[138959] |December 17, 2004 |4.11-STABLE |492101 |link:https://svnweb.freebsd.org/changeset/base/157843[157843] |April 18, 2006 |4.11-STABLE after adding libdata/ldconfig directories to mtree files. |=== [[versions-3]] == FreeBSD 3 Versions [[freebsd-versions-table-3]] .FreeBSD 3 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |300000 |link:https://svnweb.freebsd.org/changeset/base/22917[22917] |February 19, 1996 |3.0-CURRENT before man:mount[2] change |300001 |link:https://svnweb.freebsd.org/changeset/base/36283[36283] |September 24, 1997 |3.0-CURRENT after man:mount[2] change |300002 |link:https://svnweb.freebsd.org/changeset/base/36592[36592] |June 2, 1998 |3.0-CURRENT after man:semctl[2] change |300003 |link:https://svnweb.freebsd.org/changeset/base/36735[36735] |June 7, 1998 |3.0-CURRENT after ioctl arg changes |300004 |link:https://svnweb.freebsd.org/changeset/base/38768[38768] |September 3, 1998 |3.0-CURRENT after ELF conversion |300005 |link:https://svnweb.freebsd.org/changeset/base/40438[40438] |October 16, 1998 |3.0-RELEASE |300006 |link:https://svnweb.freebsd.org/changeset/base/40445[40445] |October 16, 1998 |3.0-CURRENT after 3.0-RELEASE |300007 |link:https://svnweb.freebsd.org/changeset/base/43042[43042] |January 22, 1999 |3.0-STABLE after 3/4 branch |310000 |link:https://svnweb.freebsd.org/changeset/base/43807[43807] |February 9, 1999 |3.1-RELEASE |310001 |link:https://svnweb.freebsd.org/changeset/base/45060[45060] |March 27, 1999 |3.1-STABLE after 3.1-RELEASE |310002 |link:https://svnweb.freebsd.org/changeset/base/45689[45689] |April 14, 1999 |3.1-STABLE after C++ constructor/destructor order change |320000 | | |3.2-RELEASE |320001 |link:https://svnweb.freebsd.org/changeset/base/46742[46742] |May 8, 1999 |3.2-STABLE |320002 |link:https://svnweb.freebsd.org/changeset/base/50563[50563] |August 29, 1999 |3.2-STABLE after binary-incompatible IPFW and socket changes |330000 |link:https://svnweb.freebsd.org/changeset/base/50813[50813] |September 2, 1999 |3.3-RELEASE |330001 |link:https://svnweb.freebsd.org/changeset/base/51328[51328] |September 16, 1999 |3.3-STABLE |330002 |link:https://svnweb.freebsd.org/changeset/base/53671[53671] |November 24, 1999 |3.3-STABLE after adding man:mkstemp[3] to libc |340000 |link:https://svnweb.freebsd.org/changeset/base/54166[54166] |December 5, 1999 |3.4-RELEASE |340001 |link:https://svnweb.freebsd.org/changeset/base/54730[54730] |December 17, 1999 |3.4-STABLE |350000 |link:https://svnweb.freebsd.org/changeset/base/61876[61876] |June 20, 2000 |3.5-RELEASE |350001 |link:https://svnweb.freebsd.org/changeset/base/63043[63043] |July 12, 2000 |3.5-STABLE |=== [[versions-2.2]] == FreeBSD 2.2 Versions [[freebsd-versions-table-2.2]] .FreeBSD 2.2 `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |220000 |link:https://svnweb.freebsd.org/changeset/base/22918[22918] |February 19, 1997 |2.2-RELEASE |(not changed) | | |2.2.1-RELEASE |(not changed) | | |2.2-STABLE after 2.2.1-RELEASE |221001 |link:https://svnweb.freebsd.org/changeset/base/24941[24941] |April 15, 1997 |2.2-STABLE after texinfo-3.9 |221002 |link:https://svnweb.freebsd.org/changeset/base/25325[25325] |April 30, 1997 |2.2-STABLE after top |222000 |link:https://svnweb.freebsd.org/changeset/base/25851[25851] |May 16, 1997 |2.2.2-RELEASE |222001 |link:https://svnweb.freebsd.org/changeset/base/25921[25921] |May 19, 1997 |2.2-STABLE after 2.2.2-RELEASE |225000 |link:https://svnweb.freebsd.org/changeset/base/30053[30053] |October 2, 1997 |2.2.5-RELEASE |225001 |link:https://svnweb.freebsd.org/changeset/base/31300[31300] |November 20, 1997 |2.2-STABLE after 2.2.5-RELEASE |225002 |link:https://svnweb.freebsd.org/changeset/base/32019[32019] |December 27, 1997 |2.2-STABLE after ldconfig -R merge |226000 |link:https://svnweb.freebsd.org/changeset/base/34445[34445] |March 24, 1998 |2.2.6-RELEASE |227000 |link:https://svnweb.freebsd.org/changeset/base/37803[37803] |July 21, 1998 |2.2.7-RELEASE |227001 |link:https://svnweb.freebsd.org/changeset/base/37809[37809] |July 21, 1998 |2.2-STABLE after 2.2.7-RELEASE |227002 |link:https://svnweb.freebsd.org/changeset/base/39489[39489] |September 19, 1998 |2.2-STABLE after man:semctl[2] change |228000 |link:https://svnweb.freebsd.org/changeset/base/41403[41403] |November 29, 1998 |2.2.8-RELEASE |228001 |link:https://svnweb.freebsd.org/changeset/base/41418[41418] |November 29, 1998 |2.2-STABLE after 2.2.8-RELEASE |=== [NOTE] ==== Note that 2.2-STABLE sometimes identifies itself as "2.2.5-STABLE" after the 2.2.5-RELEASE. The pattern used to be year followed by the month, but the community decided to change it to a more straightforward major/minor system starting from 2.2. This is because the parallel development on several branches made it infeasible to classify the releases merely by their real release dates. Do not worry about old -CURRENTs; they are listed here just for reference. ==== [[versions-2]] == FreeBSD 2 Before 2.2-RELEASE Versions [[freebsd-versions-table-2]] .FreeBSD 2 Before 2.2-RELEASE `__FreeBSD_version` Values [cols="1,1,1,1", frame="none", options="header"] |=== | Value | Revision | Date | Release |119411 | | |2.0-RELEASE |199501 |link:https://svnweb.freebsd.org/changeset/base/7153[7153] |March 19, 1995 |2.1-CURRENT |199503 |link:https://svnweb.freebsd.org/changeset/base/7310[7310] |March 24, 1995 |2.1-CURRENT |199504 |link:https://svnweb.freebsd.org/changeset/base/7704[7704] |April 9, 1995 |2.0.5-RELEASE |199508 |link:https://svnweb.freebsd.org/changeset/base/10297[10297] |August 26, 1995 |2.2-CURRENT before 2.1 |199511 |link:https://svnweb.freebsd.org/changeset/base/12189[12189] |November 10, 1995 |2.1.0-RELEASE |199512 |link:https://svnweb.freebsd.org/changeset/base/12196[12196] |November 10, 1995 |2.2-CURRENT before 2.1.5 |199607 |link:https://svnweb.freebsd.org/changeset/base/17067[17067] |July 10, 1996 |2.1.5-RELEASE |199608 |link:https://svnweb.freebsd.org/changeset/base/17127[17127] |July 12, 1996 |2.2-CURRENT before 2.1.6 |199612 |link:https://svnweb.freebsd.org/changeset/base/19358[19358] |November 15, 1996 |2.1.6-RELEASE |199612 | | |2.1.7-RELEASE |===