diff --git a/documentation/content/ru/books/fdp-primer/asciidoctor-primer/_index.adoc b/documentation/content/ru/books/fdp-primer/asciidoctor-primer/_index.adoc index 2b84d3eb2c..4dc39524fe 100644 --- a/documentation/content/ru/books/fdp-primer/asciidoctor-primer/_index.adoc +++ b/documentation/content/ru/books/fdp-primer/asciidoctor-primer/_index.adoc @@ -1,335 +1,338 @@ --- description: 'Краткое введение в Asciidoctor' next: books/fdp-primer/rosetta params: path: /books/fdp-primer/asciidoctor-primer/ prev: books/fdp-primer/doc-build showBookMenu: true tags: ["AsciiDoc", "Asciidoctor", "Primer", "Introduction", "Guide"] title: 'Глава 6. Введение в Asciidoctor' weight: 7 --- [[asciidoctor-primer]] = Основы Asciidoctor :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 6 :partnums: :source-highlighter: rouge :experimental: :images-path: books/fdp-primer/ 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::[] Большая часть документации FDP написана с использованием AsciiDoc. В этой главе объясняется, что это значит, как читать и понимать исходный код документации, а также используемые методы. Для получения полного справочника по возможностям Asciidoctor обратитесь к link:https://docs.asciidoctor.org/home/[документации Asciidoctor]. Некоторые примеры, используемые в этой главе, взяты из link:https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference[краткого справочника по синтаксису AsciiDoc]. [[asciidoctor-primer-overview]] == Обзор В первые дни существования компьютеров электронный текст был простым. Существовало несколько наборов символов, таких как ASCII или EBCDIC, но на этом всё и заканчивалось. Текст был текстом, и вы видели именно то, что получали. Никаких изысков, никакого форматирования, никакого интеллекта. Неизбежно, этого оказалось недостаточно. Когда текст представлен в формате, пригодном для машинной обработки, ожидается, что машины смогут использовать и обрабатывать его интеллектуально. Авторы хотят указывать, что определённые фразы должны быть выделены, добавлены в глоссарий или преобразованы в гиперссылки. Имена файлов могут отображаться моноширинным шрифтом при просмотре на экране, но курсивом при печати или в любом другом из множества вариантов представления. Однажды надеялись, что искусственный интеллект (ИИ) сделает это легко. Компьютер прочитает документ и автоматически определит ключевые фразы, имена файлов, текст, который читатель должен ввести, примеры и многое другое. К сожалению, в реальной жизни всё оказалось не так просто, и компьютерам до сих пор требуется помощь, прежде чем они смогут осмысленно обрабатывать текст. Точнее говоря, им нужна помощь в определении, что есть что. Рассмотрим этот текст: Для удаления [.filename]#/tmp/foo# используйте man:rm[1]. [source, shell] ---- % rm /tmp/foo ---- Читателю легко понять, какие части являются именами файлов, какие — командами для ввода, какие — ссылками на страницы руководства и так далее. Однако компьютер, обрабатывающий документ, не может надежно определить это. Для этого нам нужна разметка. Предыдущий пример фактически представлен в этом документе следующим образом: .... To remove */tmp/foo*, use man:rm[1]. [source,shell] ---- % rm /tmp/foo ---- .... [[asciidoctor-headings]] == Заголовки Asciidoctor поддерживает шесть уровней заголовков. Если тип документа `article`, можно использовать только один заголовок уровня 0 (`=`). Если тип документа `book`, то может быть несколько заголовков уровня 0 (`=`). Вот пример заголовков в `article`. .... = Название документа (Уровень 0) == Уровень 1 Название Раздела === Уровень 2 Раздел Заголовок ==== Уровень 3 Раздел Заголовок ===== Уровень 4 Раздел Заголовок ====== Level 5 Section Title == Другой заголовок раздела первого уровня .... [WARNING] ==== Уровни разделов нельзя пропускать при вложении разделов. Следующий синтаксис неверен. .... = Заголовок документа == Уровень 1 ==== Уровень 3 .... ==== [[asciidoctor-paragraphs]] == Абзацы Абзацы не требуют специальной разметки в AsciiDoc. Абзац определяется одной или несколькими последовательными строками текста. Чтобы создать новый абзац, оставьте одну пустую строку. Например, это заголовок с двумя абзацами. .... = Это заголовок Это первый абзац. Это тоже первый абзац. А это второй абзац. .... [[asciidoctor-lists]] == Списки Asciidoctor поддерживает несколько типов списков, наиболее распространённые — `ordered` и `unordered`. Для получения дополнительной информации о списках см. link:https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#lists[AsciiDoc Syntax Quick Reference]. [[asciidoctor-ordered-lists]] === Упорядоченные списки Для создания нумерованного списка используйте символ `.`. Например, это нумерованный список. .... . Первый пункт . Второй пункт .. Подпункт второго пункта . Третий пункт .... И это будет отображено как. . Первый пункт . Второй пункт .. Подпункт второго пункта . Третий пункт [[asciidoctor-unordered-lists]] === Неупорядоченные списки Для создания маркированного списка используйте символ `*`. Например, это ненумерованный список. .... * Первый пункт * Второй пункт ** Подпункт второго пункта * Третий пункт .... И это будет отображено как. * Первый пункт * Второй пункт ** Подпункт второго пункта * Третий пункт [[asciidoctor-links]] == Links [[asciidoctor-links-external]] === Внешние ссылки Чтобы указать на другой веб-сайт, следует использовать макрос `link`. .... link:https://www.FreeBSD.org[FreeBSD] .... [NOTE] ==== Как описано в документации Asciidoctor, макрос `link` не требуется, когда цель начинается со схемы URL, такой как `https`. Тем не менее, рекомендуется всё равно использовать его, чтобы гарантировать корректное отображение ссылки в Asciidoctor, особенно в языках с нелатинской письменностью, таких как японский. ==== [[asciidoctor-links-internal]] === Ссылки на другую книгу или статью Для указания на другую книгу или статью следует использовать переменные Asciidoctor. Например, если мы находимся в статье `cups` и хотим сослаться на `ipsec-must`, необходимо выполнить следующие шаги. . Включите файл [.filename]#urls.adoc# из папки [.filename]#~/doc/shared#. + .... \include::shared/{lang}/urls.adoc[] .... + . Затем создайте ссылку с использованием переменной Asciidoctor на статью `ipsec-must`. + .... extref:{ipsec-must}[Статья IPSec-Must] .... + И это будет отображено как. + extref:{ipsec-must}[Статья IPSec-Must] [NOTE] ==== Макрос `extref` определён как расширение. Он предназначен для корректного отображения ссылки в различных выходных форматах ==== === Ссылки на тот же файл или на другой файл в той же книге Книги структурированы в разных каталогах для поддержания удобной организации. Чтобы создать ссылку из одного подкаталога книги в другой подкаталог той же книги, используйте макрос `crossref`: .... crossref:doc-build[documentation-makefile, Эта ссылка] .... И это будет отображено как crossref:doc-build[documentation-makefile, Эта ссылка] [NOTE] ==== Макрос `crossref` определен как расширение. Он предназначен для формирования корректной ссылки в различных выходных форматах ==== [NOTE] ==== Используйте макрос `crossref` для внутридокументных ссылок. Хотя указание имени текущего документа может быть неудобным, это гарантирует корректное отображение ссылки в различных выходных форматах ==== [WARNING] ==== Не используйте макрос `xref` или его сокращение `<<` `>>`. Они не работают хорошо во всех выходных форматах. ==== [[asciidoctor-images-icons]] == Изображения и иконки Изображения и иконки играют ключевую роль в улучшении общего пользовательского опыта. Эти визуальные элементы стратегически интегрированы для передачи информации, пояснения концепций и создания визуально привлекательного интерфейса. [[asciidoctor-images]] === Изображения Изображения помогают проиллюстрировать сложные концепции, делая их более понятными для пользователей. Первым шагом будет добавление изображения в директорию `images` по пути: * [.filename]#~/website/static/images/# для веб-сайта. * [.filename]#~/documentation/static/images/# для документации. Например, чтобы добавить новое изображение в процесс установки FreeBSD, изображение сохраняется по пути [.filename]#~/documentation/static/images/books/handbook/bsdinstall/new-image3.png#. Следующим шагом будет настройка атрибутов Asciidoctor `images-path` и `imagesdir`. В качестве примера мы используем заголовок статьи extref:{freebsd-releng}[Подготовка релизов FreeBSD]. [source, asciidoc] .... = Подготовка релизов FreeBSD :doctype: article [...] :images-path: articles/freebsd-releng/ <1> -ifdef::env-beastie[] ifdef::backend-html5[] +ifdef::env-beastie[] +ifdef::backend-html5[] [...] -:imagesdir: ../../../images/{images-path} <2> endif::[] endif::[] +:imagesdir: ../../../images/{images-path} <2> +endif::[] +endif::[] [...] .... <.> Ссылается на путь внутри папки [.filename]#/static/images#. <.> Делает ссылку на атрибут Asciidoctor. Как только изображение окажется в нужном пути и атрибуты Asciidoctor будут настроены в документе, можно использовать макрос `image`. Вот пример: .... image::new-image3.png[New step in the FreeBSD install process] .... [TIP] ==== Для улучшения доступности обязательно добавлять описательный текст к каждому изображению. ==== [[asciidoctor-icons]] === Иконки Значки служат интуитивно понятными символами для быстрого распознавания и навигации. Первым шагом для использования иконок является добавление свойства `icons` в раздел свойств Asciidoctor в начале каждого документа. .... :icons: font .... После установки свойства иконки Asciidoctor можно добавить иконку, поддерживаемую link:https://fontawesome.com/v4/icons/[Font Awesome]. Это пример использования иконки `envelope`: .... icon:envelope[link=mailto:test@example.com, title="contact"] .... [TIP] ==== Для повышения доступности веб-сайта атрибут `title` является обязательным. ==== [[asciidoctor-conclusion]] == Заключение Это заключение введения в Asciidoctor. Из-за ограничений по объёму и сложности некоторые аспекты не были рассмотрены глубоко (или вообще не затронуты). diff --git a/documentation/content/ru/books/fdp-primer/examples/_index.adoc b/documentation/content/ru/books/fdp-primer/examples/_index.adoc index 2850975453..239beff506 100644 --- a/documentation/content/ru/books/fdp-primer/examples/_index.adoc +++ b/documentation/content/ru/books/fdp-primer/examples/_index.adoc @@ -1,133 +1,139 @@ --- description: 'Пример статьи и книги, используемых в проекте документации FreeBSD' params: path: /books/fdp-primer/examples/ prev: books/fdp-primer/see-also/ showBookMenu: true tags: ["examples", "tutorial", "AsciiDoctor", "Book", "Article"] title: 'Приложение A. Примеры' weight: 16 --- [appendix] [[examples]] = Примеры :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: A :partnums: :source-highlighter: rouge :experimental: :images-path: books/fdp-primer/ 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::[] Эти примеры не являются исчерпывающими — они не содержат всех элементов, которые может быть желательно использовать, особенно в преамбуле документа. Для дополнительных примеров использования AsciiDoctor изучите исходный AsciiDoc код для этого и других документов, доступных в Git-репозитории *doc* или онлайн, начиная с link:https://cgit.freebsd.org/doc/[https://cgit.freebsd.org/doc/]. [[examples-asciidoctor-book]] == *Книга* AsciiDoctor .*Книга* AsciiDoctor [example] ==== [.programlisting] .... --- title: An Example Book authors: - author: The FreeBSD Documentation Project copyright: 1995-2021 The FreeBSD Documentation Project releaseinfo: "" trademarks: ["general"] --- = Пример книги :doctype: book :toc: macro :toclevels: 2 :icons: font :xrefstyle: basic :relfileprefix: ../ :outfilesuffix: :sectnums: :sectnumlevels: 6 :partnums: :chapter-signifier: Chapter :part-signifier: Part :source-highlighter: rouge :experimental: :skip-front-matter: :book: true :pdf: false -ifeval::["{backend}" == "html5"] :chapters-path: content/ru/books/bookname/ endif::[] +ifeval::["{backend}" == "html5"] +:chapters-path: content/ru/books/bookname/ +endif::[] -ifeval::["{backend}" == "pdf"] :chapters-path: endif::[] +ifeval::["{backend}" == "pdf"] +:chapters-path: +endif::[] -ifeval::["{backend}" == "epub3"] :chapters-path: endif::[] +ifeval::["{backend}" == "epub3"] +:chapters-path: +endif::[] [abstract] Аннотация Раздел аннотации ''' toc::[] :sectnums!: \include::{chapters-path}preface/_index.adoc[leveloffset=+1] :sectnums: \include::{chapters-path}parti.adoc[lines=7..18] \include::{chapters-path}chapter-name/_index.adoc[leveloffset=+1] .... ==== [[examples-asciidoctor-article]] == *Статья* AsciiDoctor .*Статья* AsciiDoctor [example] ==== [.programlisting] .... --- title: An Example Article authors: - author: Your name and surname email: foo@example.com trademarks: ["general"] --- = Пример статьи :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: ''' toc::[] == Мой первый раздел Это первый раздел в моей статье. === Мой первый подраздел Это первый подраздел в моей статье. .... ==== diff --git a/documentation/content/ru/books/porters-handbook/makefiles/_index.adoc b/documentation/content/ru/books/porters-handbook/makefiles/_index.adoc index a9fd70ea66..51a032507e 100644 --- a/documentation/content/ru/books/porters-handbook/makefiles/_index.adoc +++ b/documentation/content/ru/books/porters-handbook/makefiles/_index.adoc @@ -1,4919 +1,4924 @@ --- description: 'Настройка Makefile для портов FreeBSD' next: books/porters-handbook/special params: path: /books/porters-handbook/makefiles/ prev: books/porters-handbook/slow-porting showBookMenu: true tags: ["makefiles", "configuring", "naming", "versions"] title: 'Глава 5. Настройка Makefile' weight: 5 --- [[makefiles]] = Настройка 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::[] Настройка [.filename]#Makefile# довольно проста, и мы снова рекомендуем изучить существующие примеры перед началом. Также в этом руководстве есть crossref:porting-samplem[porting-samplem,пример Makefile], поэтому ознакомьтесь с ним и, пожалуйста, соблюдайте порядок переменных и разделов в этом шаблоне, чтобы порт был удобнее для чтения другими. Рассмотрите эти проблемы последовательно при разработке нового [.filename]#Makefile#: [[makefile-source]] == Оригинальный исходный код Находится ли он в `DISTDIR` в виде стандартного архива ``gzip`` с именем вроде [.filename]#foozolix-1.2.tar.gz#? Если да, переходите к следующему шагу. Если нет, возможно, для формата имени файла дистрибутива потребуется переопределить одну или несколько переменных: `DISTVERSION`, `DISTNAME`, `EXTRACT_CMD`, `EXTRACT_BEFORE_ARGS`, `EXTRACT_AFTER_ARGS`, `EXTRACT_SUFX` или `DISTFILES`. В худшем случае создайте пользовательскую цель `do-extract`, чтобы переопределить стандартную. Это редко, если вообще когда-либо, необходимо. [[makefile-naming]] == Именование Первая часть [.filename]#Makefile# порта указывает его название, описывает номер версии и помещает его в соответствующую категорию. [[makefile-portname]] === `PORTNAME` Установите `PORTNAME` как базовое имя программы. Оно используется в качестве основы для пакета FreeBSD и для crossref:makefiles[makefile-distname,`DISTNAME`]. [IMPORTANT] ==== Название пакета должно быть уникальным во всём дереве портов. Убедитесь, что `PORTNAME` ещё не используется существующим портом и что никакой другой порт уже не имеет такой же `PKGBASE`. Если имя уже занято, добавьте либо crossref:makefiles[porting-pkgnameprefix-suffix,`PKGNAMEPREFIX`, либо `PKGNAMESUFFIX`]. ==== [[makefile-versions]] === Версии, `DISTVERSION` _или_ `PORTVERSION` Установите `DISTVERSION` в номер версии программы. `PORTVERSION` — это версия, используемая для пакета FreeBSD. Она будет автоматически вычислена из `DISTVERSION` в соответствии со схемой версионирования пакетов FreeBSD. Если версия содержит _буквы_, может потребоваться задать `PORTVERSION` вместо `DISTVERSION`. [IMPORTANT] ==== Только одна из переменных `PORTVERSION` и `DISTVERSION` может быть установлена одновременно. ==== Время от времени некоторые программы используют схему версионирования, которая несовместима с тем, как `DISTVERSION` преобразуется в `PORTVERSION`. [TIP] ==== При обновлении порта можно использовать аргумент `-t` утилиты man:pkg-version[8], чтобы проверить, является ли новая версия больше или меньше предыдущей. Смотрите ниже, как использовать man:pkg-version[8] для сравнения версий. ==== [[makefile-versions-ex-pkg-version]] .Использование man:pkg-version[8] для сравнения версий [example] ==== `pkg version -t` принимает две версии в качестве аргументов и возвращает `<`, `=` или `>`, если первая версия меньше, равна или больше второй версии соответственно. [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 < <.> +% 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` идёт перед `1.3`. <.> `1.2` и `1.2` равны, так как имеют одинаковую версию. <.> `1.2` и `1.2.0` равны, так как ноль ничего не значит. <.> `1.2` идёт после `1.2.p1`, так как `.p1` означает «pre-release 1» (предрелизная версия 1). <.> `1.2.a1` предшествует `1.2.b1`, представьте "alpha" и "beta", где `a` идёт перед `b`. <.> `1.2` находится перед `1.2p1`, так же как `2p1` (читается как "2, уровень исправления 1") — это версия, следующая после любой `2.X`, но перед `3`. [NOTE] **** Здесь `a`, `b` и `p` используются так, как если бы они означали "альфа", "бета" или "пре-релиз" и "уровень патча", но на самом деле это просто буквы, которые сортируются в алфавитном порядке, поэтому можно использовать любую букву, и они будут отсортированы соответствующим образом. **** ==== .Примеры `DISTVERSION` и производной `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]] .Использование `DISTVERSION` [example] ==== Если версия содержит только числа, разделённые точками, тире или подчёркиваниями, используйте `DISTVERSION`. [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2-4 .... Это сгенерирует `PORTVERSION` равный `1.2.4`. ==== [[makefile-versions-ex2]] .Использование `DISTVERSION` когда версия начинается с буквы или префикса [example] ==== Когда версия начинается или заканчивается буквой, или префиксом, или суффиксом, которые не являются частью версии, используйте `DISTVERSIONPREFIX`, `DISTVERSION` и `DISTVERSIONSUFFIX`. Если версия `v1.2-4`: [.programlisting] .... PORTNAME= nekoto DISTVERSIONPREFIX= v DISTVERSION= 1_2_4 .... Некоторые проекты, использующие GitHub, могут включать своё название в версии. Например, версия может выглядеть как `nekoto-1.2-4`: [.programlisting] .... PORTNAME= nekoto DISTVERSIONPREFIX= nekoto- DISTVERSION= 1.2_4 .... Эти проекты также иногда используют строку в конце версии, например, `1.2-4_RELEASE`: [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2-4 DISTVERSIONSUFFIX= _RELEASE .... Или они делают и то, и другое, например, `nekoto-1.2-4_RELEASE`: [.programlisting] .... PORTNAME= nekoto DISTVERSIONPREFIX= nekoto- DISTVERSION= 1.2-4 DISTVERSIONSUFFIX= _RELEASE .... `DISTVERSIONPREFIX` и `DISTVERSIONSUFFIX` не будут использоваться при формировании `PORTVERSION`, а только в `DISTNAME`. Все сгенерируют `PORTVERSION` равный `1.2.4`. ==== [[makefile-versions-ex3]] .Использование `DISTVERSION`, когда версия содержит буквы, означающие "alpha", "beta" или "pre-release" [example] ==== Если версия содержит числа, разделённые точками, тире или подчёркиваниями, а буквы используются для обозначения "альфа", "бета" или "предварительной версии" (то есть до версии без букв), используйте `DISTVERSION`. [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2-pre4 .... [.programlisting] .... PORTNAME= nekoto DISTVERSION= 1.2p4 .... Оба варианта создадут `PORTVERSION` равную `1.2.p4`, что предшествует версии 1.2. Для проверки этого факта можно использовать man:pkg-version[8]: [source, shell] .... % pkg version -t 1.2.p4 1.2 < .... ==== [[makefile-versions-ex4]] .Не использовать `DISTVERSION`, если версия содержит буквы, означающие "уровень патча" [example] ==== Если версия содержит буквы, которые не означают "alpha", "beta" или "pre", а скорее указывают на "уровень исправления" и следуют после версии без букв, используйте `PORTVERSION`. [.programlisting] .... PORTNAME= nekoto PORTVERSION= 1.2p4 .... В данном случае использование `DISTVERSION` невозможно, так как это приведёт к генерации версии `1.2.p4`, которая будет считаться более ранней, чем `1.2`, а не более поздней. man:pkg-version[8] подтвердит это: [source, shell] .... % pkg version -t 1.2 1.2.p4 > <.> % pkg version -t 1.2 1.2p4 < <.> .... <.> `1.2` идёт после `1.2.p4`, что в данном случае _неверно_. <.> `1.2` находится перед `1.2p4`, что и требовалось. ==== Для более сложных примеров настройки `PORTVERSION`, когда версия программного обеспечения действительно несовместима с FreeBSD, или `DISTNAME`, когда файл дистрибутива не содержит саму версию, см. crossref:makefiles[makefile-distname, `DISTNAME`]. [[makefile-naming-revepoch]] === `PORTREVISION` и `PORTEPOCH` [[makefile-portrevision]] ==== `PORTREVISION` `PORTREVISION` — это монотонно возрастающее значение, которое сбрасывается в 0 при каждом увеличении `DISTVERSION`, обычно при каждом новом официальном выпуске от поставщика. Если `PORTREVISION` не равен нулю, его значение добавляется к имени пакета. Изменения `PORTREVISION` используются автоматизированными инструментами, такими как man:pkg-version[8], для определения доступности нового пакета. `PORTREVISION` должен быть увеличен каждый раз, когда в порт вносятся изменения, которые так или иначе влияют на сгенерированный пакет. Это включает изменения, затрагивающие только пакеты, собранные с нестандартными crossref:makefiles[makefile-options,опциями]. Примеры случаев, когда необходимо увеличить `PORTREVISION`: * Добавление исправлений для устранения уязвимостей безопасности, ошибок или для добавления новой функциональности в порт. * Изменения в [.filename]#Makefile# порта для включения или отключения параметров сборки в пакете. * Изменения в списке файлов пакета или в поведении во время установки. Например, изменение скрипта, который генерирует начальные данные для пакета, такие как ключи хоста man:ssh[1]. * Увеличение версии зависимости порта от общей библиотеки (в данном случае, попытка установить старый пакет после установки более новой версии зависимости завершится неудачей, так как будет искаться старая версия libfoo.x вместо libfoo.(x+1)). * Тихие изменения в дистрибутивном файле порта, которые имеют значительные функциональные отличия. Например, изменения в дистрибутивном файле, требующие корректировки файла [.filename]#distinfo# без соответствующего изменения `DISTVERSION`, когда сравнение `diff -ru` старой и новой версий показывает нетривиальные изменения в коде. * Изменения в `MAINTAINER`. Примеры изменений, которые не требуют увеличения `PORTREVISION`: * Стилевые изменения в каркасе портов без функциональных изменений в итоговом пакете. * Изменения в `MASTER_SITES` или другие функциональные изменения порта, которые не влияют на итоговый пакет. * Тривиальные исправления в дистрибутивном файле, такие как исправление опечаток, которые не настолько важны, чтобы пользователи пакета были вынуждены тратить время на обновление. * Исправления сборки, которые позволяют пакету компилироваться там, где ранее это не удавалось. При условии, что изменения не вносят функциональных изменений на других платформах, где порт ранее собирался. Поскольку `PORTREVISION` отражает содержимое пакета, если пакет ранее не мог быть собран, то нет необходимости увеличивать `PORTREVISION` для обозначения изменений. Эмпирическое правило заключается в том, чтобы решить, является ли изменение, внесённое в порт, чем-то, что принесёт пользу _некоторым_ пользователям. Будь то улучшение, исправление или просто факт, что новый пакет вообще будет работать. Затем необходимо сопоставить это с тем, что всем, кто регулярно обновляет своё дерево портов, придётся выполнить обновление. Если ответ положительный, необходимо увеличить `PORTREVISION`. [NOTE] ==== Пользователи бинарных пакетов _никогда_ не увидят обновления, если `PORTREVISION` не увеличен. Без увеличения `PORTREVISION` сборщики пакетов не могут обнаружить изменение и, следовательно, не пересоберут пакет. ==== [[makefile-portepoch]] ==== `PORTEPOCH` Время от времени разработчики программного обеспечения или сопровождающие портов FreeBSD совершают ошибку и выпускают версию своего ПО, которая фактически имеет меньший номер по сравнению с предыдущей. Примером может служить переход с foo-20000801 на foo-1.0 (первая версия будет ошибочно считаться более новой, поскольку число 20000801 больше, чем 1.0). [TIP] ==== Результаты сравнения номеров версий не всегда очевидны. Команда `pkg version` (см. man:pkg-version[8]) может быть использована для проверки сравнения двух строк с номерами версий. Например: [source, shell] .... % pkg version -t 0.031 0.29 > .... Символ `>` в выводе указывает, что версия 0.031 считается больше, чем версия 0.29, что могло быть неочевидно для сопровождающего. ==== В таких ситуациях необходимо увеличить `PORTEPOCH`. Если `PORTEPOCH` не равен нулю, он добавляется к имени пакета, как описано в разделе 0 выше. `PORTEPOCH` никогда не должен уменьшаться или сбрасываться до нуля, потому что это приведёт к ошибке при сравнении с пакетом из более ранней эпохи. Например, пакет не будет обнаружен как устаревший. Новый номер версии, `1.0,1` в приведённом выше примере, всё ещё численно меньше предыдущей версии, 20000801, но суффикс `,1` обрабатывается автоматизированными инструментами особым образом и считается большим, чем подразумеваемый суффикс `,0` у предыдущего пакета. Неправильное удаление или сброс `PORTEPOCH` приводит к бесконечным проблемам. Если приведённое выше объяснение недостаточно ясно, обратитесь к {freebsd-ports}. Ожидается, что `PORTEPOCH` не будет использоваться для большинства портов, и что разумное использование `DISTVERSION` или аккуратное применение `PORTVERSION` часто может предотвратить необходимость его использования, если будущий выпуск программного обеспечения изменит структуру версий. Однако разработчикам портов FreeBSD следует быть осторожными, когда вендор выпускает релиз без официального номера версии — например, релиз в виде "снимка" кода. Возникает соблазн обозначить такой релиз датой выпуска, что вызовет проблемы, как в примере выше, когда будет сделан новый "официальный" релиз. Например, если снимок выпущен на дату `20000917`, а предыдущая версия программного обеспечения была `1.2`, не следует использовать `20000917` для `DISTVERSION`. Правильным будет указать `DISTVERSION` как `1.2.20000917` или подобное, чтобы следующая версия, например `1.3`, оставалась численно большей. [[makefile-portrevision-example]] ==== Пример использования `PORTREVISION` и `PORTEPOCH` Порт `gtkmumble` версии `0.10` добавлен в коллекцию портов: [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.10 .... `PKGNAME` становится `gtkmumble-0.10`. Обнаружена уязвимость в безопасности, требующая локального исправления FreeBSD. `PORTREVISION` соответствующим образом увеличивается. [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.10 PORTREVISION= 1 .... `PKGNAME` принимает значение `gtkmumble-0.10_1` Выпущена новая версия от поставщика под номером `0.2` (оказывается, автор изначально подразумевал, что `0.10` на самом деле означает `0.1.0`, а не "то, что идет после 0.9" — увы, теперь уже поздно). Поскольку новая минорная версия `2` численно меньше предыдущей версии `10`, необходимо увеличить `PORTEPOCH`, чтобы вручную заставить систему распознавать новый пакет как "более новый". Так как это новый релиз кода от поставщика, `PORTREVISION` сбрасывается до 0 (или удаляется из [.filename]#Makefile#). [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.2 PORTEPOCH= 1 .... `PKGNAME` становится `gtkmumble-0.2,1` Следующий выпуск — 0.3. Поскольку `PORTEPOCH` никогда не уменьшается, переменные версий теперь выглядят так: [.programlisting] .... PORTNAME= gtkmumble DISTVERSION= 0.3 PORTEPOCH= 1 .... `PKGNAME` принимает значение `gtkmumble-0.3,1` [NOTE] ==== Если бы `PORTEPOCH` был сброшен в `0` при этом обновлении, пользователь, установивший пакет `gtkmumble-0.10_1`, не увидел бы пакет `gtkmumble-0.3` как более новый, поскольку `3` всё ещё численно меньше, чем `10`. Помните, в этом и заключается вся суть `PORTEPOCH` изначально. ==== [[porting-pkgnameprefix-suffix]] === `PKGNAMEPREFIX` и `PKGNAMESUFFIX` Две необязательные переменные, `PKGNAMEPREFIX` и `PKGNAMESUFFIX`, объединяются с `PORTNAME` и `PORTVERSION` для формирования `PKGNAME` в виде `${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`. Убедитесь, что это соответствует нашим crossref:makefiles[porting-pkgname,рекомендациям по именованию пакетов]. В частности, использование дефиса (`-`) в `PORTVERSION` _не_ допускается. Кроме того, если имя пакета содержит часть _language-_ или _-compiled.specifics_ (см. ниже), используйте `PKGNAMEPREFIX` и `PKGNAMESUFFIX` соответственно. Не включайте их в `PORTNAME`. [[porting-pkgname]] === Соглашения о наименовании пакетов Вот соглашения, которым следует придерживаться при наименовании пакетов. Это сделано для того, чтобы каталог пакетов было легко просматривать, поскольку там уже тысячи пакетов, и пользователи могут отказаться от их использования, если это будет напрягать их глаза! Имена пакетов имеют формат [.filename]#language_region-name-compiled.specifics-version.numbers#. Имя пакета определяется как `${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`. Убедитесь, что переменные заданы в соответствии с этим форматом. [[porting-pkgname-language]] [.filename]#language_region-#:: FreeBSD стремится поддерживать родной язык своих пользователей. Часть _language-_ представляет собой двухбуквенное сокращение естественного языка, определённое стандартом ISO-639, когда порт относится к определённому языку. Примерами являются `ja` для японского, `ru` для русского, `vi` для вьетнамского, `zh` для китайского, `ko` для корейского и `de` для немецкого. + Если порт относится к определённому региону в языковой зоне, добавьте также двухбуквенный код страны. Например, `en_US` для американского английского и `fr_CH` для швейцарского французского. + Часть _language-_ задается в `PKGNAMEPREFIX`. [[porting-pkgname-name]] [.filename]#name#:: Убедитесь, что название порта и его версия четко разделены и указаны в `PORTNAME` и `DISTVERSION`. Единственная причина, по которой `PORTNAME` может содержать часть версии, — это если вышестоящее распространяемое ПО действительно так названо, как в портах package:textproc/libxml2[] или package:japanese/kinput2-freewnn[]. В противном случае `PORTNAME` не может содержать информацию о версии. Довольно нормально, когда несколько портов имеют одинаковый `PORTNAME`, как это делают порты package:www/apache*[]; в таком случае разные версии (и разные записи в индексе) различаются значениями `PKGNAMEPREFIX` и `PKGNAMESUFFIX`. + Существует традиция называть модули `Perl 5`, добавляя префикс `p5-` и заменя разделитель в виде двойного двоеточия на дефис. Например, модуль `Data::Dumper` становится `p5-Data-Dumper`. [[porting-pkgname-compiled-specifics]] [.filename]#-compiled.specifics#:: Если порт может быть собран с различными crossref:makefiles[makefile-masterdir,жестко заданными значениями по умолчанию] (обычно это часть имени каталога в семействе портов), часть _-compiled.specifics_ указывает скомпилированные значения по умолчанию. Дефис является необязательным. Примерами могут служить размер бумаги и единицы измерения шрифтов. + Часть _-compiled.specifics_ задаётся в `PKGNAMESUFFIX`. [[porting-pkgname-version-numbers]] [.filename]#-version.numbers#:: Строка версии следует после тире (`-`) и представляет собой разделённый точками список целых чисел и строчных букв латинского алфавита. В частности, не допускается использование дополнительных тире внутри строки версии. Единственное исключение — строка `pl` (означающая "уровень исправления"), которую можно использовать _только_ в случае отсутствия у программного обеспечения номеров основной и дополнительной версий. Если в версии программного обеспечения встречаются строки типа "alpha", "beta", "rc" или "pre", следует взять первую букву и поместить её сразу после точки. Если после таких названий строка версии продолжается, числа следуют за буквой без дополнительной точки между ними (например, `1.0b2`). + Идея заключается в упрощении сортировки портов за счёт анализа строки версии. В частности, необходимо убедиться, что компоненты номера версии всегда разделены точкой, а если дата является частью строки, использовать формат `d__yyyy.mm.dd__`, а не `_dd.mm.yyyy_` или не соответствующий стандарту Y2K формат `_yy.mm.dd_`. Важно добавлять перед версией букву, в данном случае `d` (от слова "дата"), на случай, если будет выпущена версия с фактическим номером, который численно окажется меньше `_yyyy_`. [IMPORTANT] ==== Название пакета должно быть уникальным среди всех портов в дереве. Убедитесь, что порт с таким же `PORTNAME` ещё не существует, и если он есть, добавьте один из crossref:makefiles[porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` или `PKGNAMESUFFIX`]. ==== Вот несколько (реальных) примеров преобразования названия, указанного авторами программного обеспечения, в подходящее имя пакета. В каждой строке указана только одна из переменных `DISTVERSION` или `PORTVERSION`, в зависимости от того, какая используется в [.filename]#Makefile# порта: .Примеры наименования пакетов [cols="1,1,1,1,1,1,1", frame="none", options="header"] |=== | Имя дистрибутива | PKGNAMEPREFIX | PORTNAME | PKGNAMESUFFIX | DISTVERSION | .PORTVERSION | Причина или комментарий |mule-2.2.2 |(пусто) |mule |(пусто) |2.2.2 | |Никаких изменений не требуется |mule-1.0.1 |(пусто) |mule |1 |1.0.1 | |Это версия 1 mule, а версия 2 уже существует |EmiClock-1.0.2 |(пусто) |emiclock |(пусто) |1.0.2 | |Нет имен в верхнем регистре для отдельных программ |rdist-1.3alpha |(пусто) |rdist |(пусто) |1.3alpha | |Версия будет `1.3.a` |es-0.9-beta1 |(пусто) |es |(пусто) |0.9-beta1 | |Версия будет `0.9.b1` |mailman-2.0rc3 |(пусто) |mailman |(пусто) |2.0rc3 | |Версия будет `2.0.r3` |v3.3beta021.src |(пусто) |tiff |(пусто) | |3.3 |Что это вообще было? |tvtwm |(пусто) |tvtwm |(пусто) | |p11 |Нет версии в имени файла, используйте то, что указано в исходном коде |piewm |(пусто) |piewm |(пусто) |1.0 | |Нет версии в имени файла, используйте то, что указано в исходном коде |xvgr-2.10pl1 |(пусто) |xvgr |(пусто) | |2.10.pl1 |В таком случае, `pl1` означает уровень патча, поэтому использование DISTVERSION невозможно. |gawk-2.15.6 |ja- |gawk |(пусто) |2.15.6 | |Японская языковая версия |psutils-1.13 |(пусто) |psutils |-letter |1.13 | |Размер бумаги жестко задан во время сборки пакета |pkfonts |(пусто) |pkfonts |300 |1.0 | |Пакет для шрифтов с разрешением 300dpi |=== Если в исходном источнике полностью отсутствует информация о версии и маловероятно, что автор когда-либо выпустит новую версию, просто укажите строку версии как `1.0` (как в примере с `piewm` выше). В противном случае, спросите автора или используйте дату выпуска исходного файла в формате `d__yyyy.mm.dd__` или `d__yyyymmdd__` в качестве версии. [TIP] ==== Используйте любую букву. Здесь `d` означает дату, если источник — это репозиторий Git, часто используется `g` с последующей датой коммита, также распространено использование `s` для снимка. ==== [[makefile-categories]] == Категоризация [[makefile-categories-definition]] === `CATEGORIES` При создании пакета он помещается в [.filename]#/usr/ports/packages/All#, и ссылки на него создаются в одной или нескольких поддиректориях [.filename]#/usr/ports/packages#. Имена этих поддиректорий задаются переменной `CATEGORIES`. Это предназначено для облегчения поиска пакетов пользователем при просмотре большого количества пакетов на FTP-сайте или CDROM. Пожалуйста, ознакомьтесь с crossref:makefiles[porting-categories,текущим списком категорий] и выберите подходящие для данного порта. Этот список также определяет, где в дереве портов будет размещён порт. Если здесь указано несколько категорий, файлы порта должны быть помещены в подкаталог с названием первой категории. Дополнительные сведения о выборе подходящих категорий см. в crossref:makefiles[choosing-categories,ниже]. [[porting-categories]] === Текущий список категорий Вот текущий список категорий портов. Категории, помеченные звёздочкой (`*`), являются _виртуальными_ — они не имеют соответствующего подкаталога в дереве портов. Они используются только как вторичные категории и исключительно для целей поиска. [NOTE] ==== Для невиртуальных категорий в `COMMENT` в [.filename]#Makefile# соответствующего подкаталога содержится однострочное описание. ==== [.informaltable] [cols="1,1,1", frame="none", options="header"] |=== | Категория | Описание | Заметки |[.filename]#accessibility# |Порты для помощи пользователям с ограниченными возможностями. | |[.filename]#afterstep#`*` |Порты для поддержки оконного менеджера http://www.afterstep.org/[AfterStep]. | |[.filename]#arabic# |Поддержка арабского языка. | |[.filename]#archivers# |Инструменты для архивирования. | |[.filename]#astro# |Астрономические порты. | |[.filename]#audio# |Поддержка звука. | |[.filename]#benchmarks# |Утилиты для тестирования производительности. | |[.filename]#biology# |Программное обеспечение, связанное с биологией. | |[.filename]#cad# |Компьютерные средства автоматизированного проектирования. | |[.filename]#chinese# |Поддержка китайского языка. | |[.filename]#comms# |Программное обеспечение для связи. |В основном программное обеспечение для работы с последовательным портом. |[.filename]#converters# |Преобразователи символьных кодировок. | |[.filename]#databases# |Базы данных. | |[.filename]#deskutils# |Вещи, которые раньше находились на рабочем столе до изобретения компьютеров. | |[.filename]#devel# |Средства разработки. |Не размещайте библиотеки здесь только потому, что они являются библиотеками. Они _не_ должны быть в этой категории, если только они действительно не подходят никуда больше. |[.filename]#dns# |Программное обеспечение, связанное с DNS. | |[.filename]#docs#`*` |Мета-порты для документации FreeBSD. | |[.filename]#editors# |Общие редакторы. |Специализированные редакторы помещаются в раздел соответствующих инструментов. Например, редактор математических формул будет помещён в [.filename]#math#, а [.filename]#editors# будет для него второй категорией. |[.filename]#education#`*` |Программное обеспечение для образования. |Это включает приложения, утилиты или игры, разработанные в первую очередь или в значительной степени для помощи пользователю в изучении конкретной темы или обучении в целом. Также сюда входят приложения для создания курсов, приложения для предоставления курсов и приложения для управления классом или школой |[.filename]#elisp#`*` |Порты Emacs-lisp. | |[.filename]#emulators# |Эмуляторы других операционных систем. |Терминальные эмуляторы _не_ относятся сюда. Основанные на X идут в [.filename]#x11#, а текстовые — либо в [.filename]#comms#, либо в [.filename]#misc#, в зависимости от конкретной функциональности. |[.filename]#enlightenment#`*` |Порты, связанные с оконным менеджером Enlightenment. | |[.filename]#filesystems# |Файловые системы и связанные утилиты. | |[.filename]#finance# |Монетарные, финансовые и связанные с ними приложения. | |[.filename]#french# |Поддержка французского языка. | |[.filename]#ftp# |Клиентские и серверные утилиты FTP. |Если порт поддерживает как FTP, так и HTTP, поместите его в [.filename]#ftp# с дополнительной категорией [.filename]#www#. |[.filename]#games# |Игры. | |[.filename]#география#`*` |Программное обеспечение, связанное с географией. | |[.filename]#german# |Поддержка немецкого языка. | |[.filename]#gnome#`*` |Порты из проекта https://www.gnome.org/[GNOME]. | |[.filename]#gnustep#`*` |Программное обеспечение, связанное со средой рабочего стола GNUstep. | |[.filename]#graphics# |Графические утилиты. | |[.filename]#hamradio#`*` |Программное обеспечение для радиолюбителей. | |[.filename]#haskell#`*` |Программное обеспечение, связанное с языком Haskell. | |[.filename]#hebrew# |Поддержка иврита. | |[.filename]#hungarian# |Венгерская языковая поддержка. | |[.filename]#irc# |Утилиты Internet Relay Chat. | |[.filename]#japanese# |Поддержка японского языка. | |[.filename]#java# |Программное обеспечение, связанное с языком Java(TM). |Категория [.filename]#java# не должна быть единственной для порта. За исключением портов, непосредственно связанных с языком Java, разработчикам также рекомендуется не использовать [.filename]#java# в качестве основной категории для порта. |[.filename]#kde#`*` |Порты проекта https://www.kde.org/[KDE] (общие). | |[.filename]#kde-приложения#`*` |Приложения от проекта https://www.kde.org/[KDE]. | |[.filename]#kde-frameworks#`*` |Дополнительные библиотеки от проекта https://www.kde.org/[KDE] для программирования с использованием Qt. | |[.filename]#kde-plasma#`*` |Рабочий стол от проекта https://www.kde.org/[KDE]. | |[.filename]#kld#`*` |Загружаемые модули ядра. | |[.filename]#korean# |Поддержка корейского языка. | |[.filename]#lang# |Языки программирования. | |[.filename]#linux#`*` |Приложения и вспомогательные утилиты Linux. | |[.filename]#lisp#`*` |Программное обеспечение, связанное с языком Lisp. | |[.filename]#mail# |Почтовое программное обеспечение. | |[.filename]#mate#`*` |Порты, связанные с окружением рабочего стола MATE, форком GNOME 2. | |[.filename]#math# |Численные расчеты и другие математические утилиты. | |[.filename]#mbone#`*` |Приложения MBone. | |[.filename]#misc# |Различные утилиты |Вещи, которые не подходят никуда больше. По возможности, попытайтесь найти для порта категорию лучше, чем `misc`, так как порты здесь часто остаются без внимания. |[.filename]#multimedia# |Мультимедийное программное обеспечение. | |[.filename]#net# |Различное сетевое программное обеспечение. | |[.filename]#net-im# |Программное обеспечение для обмена мгновенными сообщениями. | |[.filename]#net-mgmt# |Программное обеспечение для управления сетями. | |[.filename]#net-p2p# |Одноранговые сетевые приложения. | |[.filename]#сеть-vpn#`*` |Виртуальные частные сети. | |[.filename]#news# |Программное обеспечение для USENET-новостей. | |[.filename]#parallel#`*` |Приложения, работающие с параллелизмом в вычислениях. | |[.filename]#pear#`*` |Порты, связанные с PHP-фреймворком Pear. | |[.filename]#perl5#`*` |Порты, требующие Perl версии 5 для работы. | |[.filename]#plan9#`*` |Различные программы с https://9p.io/wiki/plan9/Download/index.html[Plan9]. | |[.filename]#polish# |Поддержка польского языка. | |[.filename]#ports-mgmt# |Порты для управления, установки и разработки портов и пакетов FreeBSD. | |[.filename]#portuguese# |Поддержка португальского языка. | |[.filename]#print# |Программное обеспечение для печати. |Инструменты для настольных издательских систем (превьюеры и т. д.) также относятся сюда. |[.filename]#python#`*` |Программное обеспечение, связанное с языком https://www.python.org/[Python]. | |[.filename]#ruby#`*` |Программное обеспечение, связанное с языком https://www.ruby-lang.org/[Ruby]. | |[.filename]#rubygems#`*` |Порты пакетов https://www.rubygems.org/[RubyGems]. | |[.filename]#russian# |Поддержка русского языка. | |[.filename]#scheme#`*` |Программное обеспечение, связанное с языком Scheme. | |[.filename]#science# |Научные порты, которые не входят в другие категории, такие как [.filename]#astro#, [.filename]#biology# и [.filename]#math#. | |[.filename]#security# |Средства обеспечения безопасности. | |[.filename]#shells# |Командные оболочки. | |[.filename]#spanish#`*` |Поддержка испанского языка. | |[.filename]#sysutils# |Системные утилиты. | |[.filename]#tcl#`*` |Порты, использующие Tcl для запуска. | |[.filename]#textproc# |Средства обработки текста. |Он не включает инструменты для настольных издательских систем, которые помещаются в [.filename]#print#. |[.filename]#tk#`*` |Порты, использующие Tk для работы. | |[.filename]#ukrainian# |Поддержка украинского языка. | |[.filename]#vietnamese# |Поддержка вьетнамского языка. | |[.filename]#wayland#`*` |Порты для поддержки сервера дисплея Wayland. | |[.filename]#windowmaker#`*` |Порты для поддержки оконного менеджера Window Maker. | |[.filename]#www# |Программное обеспечение, связанное с Всемирной паутиной. |Поддержка языка HTML также относится сюда. |[.filename]#x11# |Система X Window и связанные компоненты. |Эта категория предназначена только для программного обеспечения, которое напрямую поддерживает оконную систему. Не помещайте сюда обычные X-приложения. Большинство из них относятся к другим категориям [.filename]#x11-*# (см. ниже). |[.filename]#x11-clocks# |Часы X11. | |[.filename]#x11-drivers# |Драйверы X11. | |[.filename]#x11-fm# |Менеджеры файлов X11. | |[.filename]#x11-fonts# |Шрифты и утилиты для работы со шрифтами в X11. | |[.filename]#x11-servers# |Серверы X11. | |[.filename]#x11-themes# |Темы X11. | |[.filename]#x11-toolkits# |Инструментарии X11. | |[.filename]#x11-wm# |Оконные менеджеры X11. | |[.filename]#xfce#`*` |Порты, связанные с окружением рабочего стола https://www.xfce.org/[Xfce]. | |[.filename]#zope#`*` |https://www.zope.org/[Zope] поддержка. | |=== [[choosing-categories]] === Выбор подходящей категории Поскольку многие категории пересекаются, выбор основной категории для порта может быть утомительным. Существует несколько правил, регулирующих этот вопрос. Вот список приоритетов в порядке убывания важности: * Первая категория должна быть физической (см. crossref:makefiles[porting-categories,выше]). Это необходимо для работы упаковки. Виртуальные категории и физические категории могут чередоваться после этого. * Языковые категории всегда указываются первыми. Например, если порт устанавливает японские шрифты для X11, то строка `CATEGORIES` будет выглядеть так: [.filename]#japanese x11-fonts#. * Конкретные категории перечислены перед менее специфичными. Например, HTML-редактор указывается как [.filename]#www editors#, а не наоборот. Также не следует указывать [.filename]#net#, если порт принадлежит к любой из категорий [.filename]#irc#, [.filename]#mail#, [.filename]#news#, [.filename]#security# или [.filename]#www#, так как [.filename]#net# подразумевается автоматически. * [.filename]#x11# используется как вторичная категория только в случае, когда основной категорией указан естественный язык. В частности, не указывайте [.filename]#x11# в строке категории для X-приложений. * Режимы Emacs размещаются в той же категории портов, что и приложение, поддерживаемое данным режимом, а не в [.filename]#editors#. Например, режим Emacs для редактирования исходных файлов какого-либо языка программирования попадает в [.filename]#lang#. * Порты, устанавливающие загружаемые модули ядра, также имеют виртуальную категорию [.filename]#kld# в строке `CATEGORIES`. Это одна из вещей, автоматически обрабатываемых при добавлении `USES=kmod`. * [.filename]#misc# не встречается вместе с другими невиртуальными категориями. Если `misc` указан вместе с чем-то еще в `CATEGORIES`, это означает, что `misc` можно безопасно удалить, а порт разместить только в другом подкаталоге. * Если порт действительно не подходит никуда больше, поместите его в [.filename]#misc#. Если категория не определена четко, пожалуйста, укажите это в комментарии при https://bugs.freebsd.org/submit/[отправке порта] в баг-трекере, чтобы мы могли обсудить её перед импортом. Как коммиттер, отправьте сообщение в рассылку {freebsd-ports}, чтобы мы сначала обсудили это. Слишком часто новые порты импортируются в неправильную категорию, после чего их сразу же приходится перемещать. [[proposing-categories]] === Предложение новой категории По мере роста Коллекции портов со временем были введены различные новые категории. Новые категории могут быть _виртуальными_ — те, у которых нет соответствующего подкаталога в дереве портов, или _физическими_ — те, у которых он есть. В этом разделе обсуждаются вопросы, связанные с созданием новой физической категории. Внимательно ознакомьтесь с ним, прежде чем предлагать новую. Наша текущая практика заключается в том, чтобы избегать создания новой физической категории, если только либо большое количество портов логически принадлежит к ней, либо порты, которые к ней относятся, представляют собой логически обособленную группу, представляющую ограниченный общий интерес (например, категории, связанные с разговорными человеческими языками), или, желательно, оба условия одновременно. Обоснование этого заключается в том, что такое изменение создает extref:{committers-guide}[значительный объем работы, ports] как для коммиттеров, так и для всех пользователей, которые отслеживают изменения в Коллекции портов. Кроме того, предлагаемые изменения категорий, как правило, вызывают споры. (Возможно, это связано с отсутствием четкого консенсуса относительно того, когда категория становится «слишком большой», а также относительно того, должны ли категории способствовать удобству просмотра (и, следовательно, какое количество категорий было бы идеальным), и так далее.) Вот процедура: [.procedure] . Предложите новую категорию на {freebsd-ports}. Включите подробное обоснование для новой категории, объясните, почему существующие категории недостаточны, и укажите список существующих портов, предлагаемых к перемещению. (Если в Bugzilla есть ожидающие рассмотрения новые порты, которые подходят под эту категорию, также перечислите их.) Если вы являетесь сопровождающим и/или подающим предложение, укажите это, так как это может помочь в рассмотрении. . Участвуйте в обсуждении. . Если кажется, что идея находит поддержку, оформите PR, включающий как обоснование, так и список существующих портов, которые необходимо переместить. В идеале, этот PR также должен содержать следующие исправления: ** [.filename]##Makefile## для новых портов после копирования их репозитория ** [.filename]#Makefile# для новой категории ** [.filename]#Makefile# для старых категорий портов ** [.filename]##Makefile## для портов, зависящих от старых портов ** (для дополнительной оценки включите другие файлы, которые необходимо изменить, в соответствии с процедурой, описанной в Руководстве коммиттера.) . Поскольку это затрагивает инфраструктуру портов и включает перемещение и исправление многих портов, а также, возможно, проведение регрессионных тестов на сборочном кластере, назначьте PR для {portmgr}. . Если этот PR будет одобрен, коммиттер должен будет выполнить оставшуюся часть процедуры, extref:{committers-guide}[описанной в Руководстве коммиттера,ports]. Предложение новой виртуальной категории аналогично описанному выше, но гораздо менее трудоёмко, так как фактически не потребуется перемещать порты. В этом случае единственные патчи, которые нужно включить в PR, — это добавление новой категории в `CATEGORIES` затронутых портов. [[proposing-reorg]] === Предложение о реорганизации всех категорий Изредка кто-то предлагает реорганизовать категории, используя либо двухуровневую структуру, либо какую-либо другую структуру ключевых слов. На сегодняшний день ни одно из этих предложений не было реализовано, потому что, хотя их очень легко выдвинуть, усилия, необходимые для переработки всей существующей коллекции портов в рамках любой реорганизации, пугают, мягко говоря. Пожалуйста, ознакомьтесь с историей этих предложений в архивах списка рассылки, прежде чем публиковать эту идею. Более того, будьте готовы к тому, что вас попросят предоставить рабочий прототип. [[makefile-distfiles]] == Файлы дистрибутива Вторая часть [.filename]#Makefile# описывает файлы, которые необходимо загрузить для сборки порта, и места, откуда их можно скачать. [[makefile-distname]] === `DISTNAME` `DISTNAME` — это имя порта, используемое авторами программного обеспечения. По умолчанию `DISTNAME` имеет значение `${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`, а если не задано, `DISTVERSION` по умолчанию принимает значение `${PORTVERSION}`, поэтому переопределяйте `DISTNAME` только при необходимости. `DISTNAME` используется только в двух случаях. Во-первых, список файлов дистрибутива (`DISTFILES`) по умолчанию имеет значение `${DISTNAME}${EXTRACT_SUFX}`. Во-вторых, ожидается, что файл дистрибутива распакуется в подкаталог с именем `WRKSRC`, который по умолчанию равен [.filename]#work/${DISTNAME}#. Некоторые названия дистрибутивов от поставщиков, которые не соответствуют схеме `${PORTNAME}-${PORTVERSION}`, могут обрабатываться автоматически путем установки `DISTVERSIONPREFIX`, `DISTVERSION` и `DISTVERSIONSUFFIX`. `PORTVERSION` будет автоматически вычисляться из `DISTVERSION`. [IMPORTANT] ==== Только одна из переменных `PORTVERSION` и `DISTVERSION` может быть установлена одновременно. Если `DISTVERSION` не определяет корректную `PORTVERSION`, не используйте `DISTVERSION`. ==== Если схема версий исходного проекта может быть преобразована в схему, совместимую с портами, установите некоторую переменную в версию исходного проекта, _не используйте_ имя переменной `DISTVERSION`. Установите `PORTVERSION` в вычисленную версию на основе созданной вами переменной и задайте `DISTNAME` соответствующим образом. Если схема версионирования вышестоящего проекта не может быть легко преобразована в значение, совместимое с портами, установите `PORTVERSION` в разумное значение и задайте `DISTNAME` как `PORTNAME` с дословной версией вышестоящего проекта. [[makefile-distname-ex1]] .Получение `PORTVERSION` вручную [example] ==== BIND9 использует схему версионирования, несовместимую с версиями портов (в версиях используется `-`), и её нельзя получить с помощью `DISTVERSION`, так как после выпуска 9.9.9 выходят «уровни исправлений» в формате `9.9.9-P1`. `DISTVERSION` преобразует это в `9.9.9.p1`, что в схеме версионирования портов означает 9.9.9 pre-release 1, то есть версию, предшествующую 9.9.9, а не следующую за ней. Поэтому `PORTVERSION` вручную формируется из переменной `ISCVERSION`, чтобы получить `9.9.9p1`. Порядок, в котором система портов и pkg будут сортировать версии, проверяется с помощью аргумента `-t` из 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 < <.> .... <.> Знак `>` означает, что первый аргумент, переданный в `-t`, больше второго аргумента. `9.9.9` находится после `9.9.9.p1`. <.> Знак `<` означает, что первый аргумент, переданный в `-t`, меньше второго аргумента. `9.9.9` находится перед `9.9.9p1`. В файле [.filename]#Makefile# порта, например package:dns/bind99[], это достигается с помощью: [.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 .... Определите версию вышестоящего пакета в `ISCVERSION`, с комментарием, объясняющим, _почему_ это необходимо. Используйте `ISCVERSION` для получения совместимого с портами `PORTVERSION`. Используйте `ISCVERSION` напрямую для получения правильного URL для загрузки файла дистрибутива. Используйте `ISCVERSION` напрямую для именования дистрибутивного файла. ==== [[makefile-distname-ex2]] .Получить `DISTNAME` из `PORTVERSION` [example] ==== Время от времени имя файла дистрибутива имеет мало отношения или вообще никакого отношения к версии программного обеспечения. В пакете package:comms/kermit[], в файле дистрибутива присутствует только последний элемент версии: [.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 .... Модификатор `:E` man:make[1] возвращает суффикс переменной, в данном случае `304`. Файл дистрибутива корректно создаётся как `cku304-dev20.tar.gz`. ==== [[makefile-distname-ex3]] .Экзотический случай 1 [example] ==== Иногда нет связи между названием программы, её версией и файлом дистрибутива, в котором она распространяется. Из пакета package:audio/libworkman[]: [.programlisting] .... PORTNAME= libworkman PORTVERSION= 1.4 CATEGORIES= audio MASTER_SITES= LOCAL/jim DISTNAME= ${PORTNAME}-1999-06-20 .... ==== [[makefile-distname-ex4]] .Экзотический случай 2 [example] ==== В пакете package:comms/librs232[] файл дистрибутива не имеет версии, поэтому необходимо использовать crossref:makefiles[makefile-dist_subdir,`DIST_SUBDIR`]: [.programlisting] .... PORTNAME= librs232 PORTVERSION= 20160710 CATEGORIES= comms MASTER_SITES= http://www.teuniz.net/RS-232/ DISTNAME= RS-232 DIST_SUBDIR= ${PORTNAME}-${PORTVERSION} .... ==== [NOTE] ==== `PKGNAMEPREFIX` и `PKGNAMESUFFIX` не влияют на `DISTNAME`. Также обратите внимание, что если `WRKSRC` равно [.filename]#${WRKDIR}/${DISTNAME}#, а исходный архив с исходным кодом называется иначе, чем `${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX}`, оставьте `DISTNAME` без изменений — определение только `DISTFILES` проще, чем определение и `DISTNAME`, и `WRKSRC` (а возможно, и `EXTRACT_SUFX`). ==== [[makefile-master_sites]] === `MASTER_SITES` Запишите именем каталога из FTP/HTTP-URL, указывающего на исходный tarball, в `MASTER_SITES`. Не забудьте завершающий слэш ([.filename]#/#)! Макросы `make` будут пытаться использовать эту спецификацию для загрузки файла дистрибутива с помощью `FETCH`, если не смогут найти его уже в системе. Рекомендуется включать в этот список несколько сайтов, желательно с разных континентов. Это обеспечит защиту от проблем в глобальной сети. [IMPORTANT] ==== `MASTER_SITES` не должен быть пустым. Он должен указывать на реальный сайт, где размещены файлы дистрибутива. Он не может указывать на веб-архивы или кэшированные сайты с файлами дистрибутива FreeBSD. Единственное исключение из этого правила — порты, у которых нет файлов дистрибутива. Например, мета-порты не имеют файлов дистрибутива, поэтому `MASTER_SITES` не нужно задавать. ==== [[makefile-master_sites-shorthand]] ==== Использование переменных `MASTER_SITE_*` Для популярных архивов, таких как SourceForge (`SOURCEFORGE`), GNU (`GNU`) или Perl CPAN (`PERL_CPAN`), доступны сокращённые обозначения. `MASTER_SITES` может использовать их напрямую: [.programlisting] .... MASTER_SITES= GNU/make .... Старый расширенный формат по-прежнему работает, но все порты были преобразованы в компактный формат. Расширенный формат выглядит следующим образом: [.programlisting] .... MASTER_SITES= ${MASTER_SITE_GNU} MASTER_SITE_SUBDIR= make .... Эти значения и переменные определены в https://cgit.freebsd.org/ports/tree/Mk/bsd.sites.mk[Mk/bsd.sites.mk]. Новые записи добавляются часто, поэтому обязательно проверяйте последнюю версию этого файла перед отправкой порта. [TIP] ==== Для любой переменной `MASTER_SITE_FOO` можно использовать сокращение `_FOO_`. Например, используйте: [.programlisting] .... MASTER_SITES= FOO .... Если требуется `MASTER_SITE_SUBDIR`, используйте следующее: [.programlisting] .... MASTER_SITES= FOO/bar .... ==== [NOTE] ==== Некоторые имена `MASTER_SITE_*` довольно длинные, и для удобства использования были определены сокращения: [[makefile-master_sites-shortcut]] .Сокращения для макросов `MASTER_SITE_*` [cols="1,1", frame="none", options="header"] |=== | Макрос | Сокращение |`PERL_CPAN` |`CPAN` |`GITHUB` |`GH` |`GITHUB_CLOUD` |`GHC` |`LIBREOFFICE_DEV` |`LODEV` |`NETLIB` |`NL` |`RUBYGEMS` |`RG` |`SOURCEFORGE` |`SF` |=== ==== [[makefile-master_sites-magic]] ==== Волшебные макросы MASTER_SITES Существует несколько "волшебных" макросов для популярных сайтов с предсказуемой структурой каталогов. Для них достаточно использовать сокращение, и система автоматически выберет подкаталог. Например, для порта с именем `Stardict`, версии `1.2.3`, размещенного на SourceForge, добавьте следующую строку: [.programlisting] .... MASTER_SITES= SF .... подразумевает подкаталог с именем `/project/stardict/stardict/1.2.3`. Если подразумеваемый каталог указан неверно, его можно переопределить: [.programlisting] .... MASTER_SITES= SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION} .... Это также можно записать как [.programlisting] .... MASTER_SITES= SF MASTER_SITE_SUBDIR= stardict/WyabdcRealPeopleTTS/${PORTVERSION} .... [[makefile-master_sites-popular]] .Волшебные макросы `MASTER_SITES` [cols="1,1", frame="none", options="header"] |=== | Макрос | Предполагаемая поддиректория |`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` Если файл дистрибутива получен из определённого коммита или тега на https://github.com/[GitHub], для которого нет официально выпущенного файла, существует простой способ автоматически установить правильные значения `DISTNAME` и `MASTER_SITES`. [WARNING] ==== По состоянию на 2023-02-21 link:https://github.blog/2023-02-21-update-on-the-future-stability-of-source-code-archives-and-hashes/[GitHub] объявили, что загрузки исходного кода будут стабильными в течение года. Пожалуйста, переключитесь на ресурсы выпусков (release assets), а если они недоступны, запросите их создание у вышестоящих разработчиков. ==== Доступны следующие переменные: [[makefile-master_sites-github-description]] .`USE_GITHUB` Описание [cols="1,1,1", options="header"] |=== | Переменная | Описание | По умолчанию |`GH_ACCOUNT` |Имя учётной записи пользователя GitHub, который размещает проект |`${PORTNAME}` |`GH_PROJECT` |Название проекта на GitHub |`${PORTNAME}` |`GH_TAGNAME` |Имя тега для загрузки (2.0.1, хэш, ...) Использование имени ветки здесь некорректно. Также можно использовать хэш идентификатора коммита для создания снимка состояния. |`${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}` |`GH_SUBDIR` |Когда программному обеспечению требуется дополнительный файл дистрибутива для извлечения в `${WRKSRC}`, можно использовать эту переменную. Примеры можно найти в crossref:makefiles[makefile-master_sites-github-multiple, Загрузка нескольких файлов из GitHub] для получения дополнительной информации. |(отсутствует) |`GH_TUPLE` |`GH_TUPLE` позволяет объединить `GH_ACCOUNT`, `GH_PROJECT`, `GH_TAGNAME` и `GH_SUBDIR` в одну переменную. Формат следующий: _account_`:`_project_`:`_tagname_`:`_group_`/`_subdir_. Часть `/`_subdir_ является необязательной. Это полезно, когда требуется получить несколько проектов с GitHub. | |=== [IMPORTANT] ==== Не используйте `GH_TUPLE` для файла дистрибутива по умолчанию, так как у него нет значения по умолчанию. ==== [[makefile-master_sites-github-ex1]] .Простое использование `USE_GITHUB` [example] ==== При попытке создать порт для версии `1.2.7` pkg от пользователя FreeBSD на github, по адресу https://github.com/freebsd/pkg/[], файл [.filename]#Makefile# в итоге будет выглядеть следующим образом (незначительно сокращено для примера): [.programlisting] .... PORTNAME= pkg DISTVERSION= 1.2.7 USE_GITHUB= yes GH_ACCOUNT= freebsd .... Он автоматически получит `MASTER_SITES` установленным в `GH` и `WRKSRC` в `${WRKDIR}/pkg-1.2.7`. ==== [[makefile-master_sites-github-ex2]] .Более полное использование `USE_GITHUB` [example] ==== При попытке создать порт для самой последней версии pkg от пользователя FreeBSD на github, по адресу https://github.com/freebsd/pkg/[], файл [.filename]#Makefile# в итоге выглядит следующим образом (незначительно сокращено для примера): [.programlisting] .... PORTNAME= pkg-devel DISTVERSION= 1.3.0.a.20140411 USE_GITHUB= yes GH_ACCOUNT= freebsd GH_PROJECT= pkg GH_TAGNAME= 6dbb17b .... Он автоматически получит `MASTER_SITES` со значением `GH` и `WRKSRC` со значением `${WRKDIR}/pkg-6dbb17b`. [TIP] **** `20140411` — это дата коммита, указанного в `GH_TAGNAME`, а не дата редактирования файла [.filename]#Makefile# или дата создания коммита. **** ==== [[makefile-master_sites-github-ex3]] .Использование `USE_GITHUB` с `DISTVERSIONPREFIX` [example] ==== Время от времени `GH_TAGNAME` немного отличается от `DISTVERSION`. Например, если версия `1.0.2`, то тег будет `v1.0.2`. В таких случаях можно использовать `DISTVERSIONPREFIX` или `DISTVERSIONSUFFIX`: [.programlisting] .... PORTNAME= foo DISTVERSIONPREFIX= v DISTVERSION= 1.0.2 USE_GITHUB= yes .... Он автоматически установит `GH_TAGNAME` в `v1.0.2`, в то время как `WRKSRC` останется `${WRKDIR}/foo-1.0.2`. ==== [[makefile-master_sites-github-ex4]] .Использование `USE_GITHUB` при отсутствии версий у исходного проекта [example] ==== Если никогда не было версии вышестоящего репозитория, не изобретайте её, например `0.1` или `1.0`. Создайте порт с `DISTVERSION` в формате `g__YYYYMMDD__`, где `g` означает Git, а `_YYYYMMDD_` представляет дату коммита, указанного в `GH_TAGNAME`. [.programlisting] .... PORTNAME= bar DISTVERSION= g20140411 USE_GITHUB= yes GH_TAGNAME= c472d66b .... Это создаёт схему версионирования, которая увеличивается со временем и всё ещё находится до версии `0`. Подробности об использовании man:pkg-version[8] для сравнения версий смотрите в crossref:makefiles[makefile-versions-ex-pkg-version, этой секции]: [source, shell] .... % pkg version -t g20140411 0 < .... Что означает, что использование `PORTEPOCH` не потребуется, если вышестоящий проект решит сократить версии в будущем. ==== [[makefile-master_sites-github-ex5]] .Использование `USE_GITHUB` для доступа к коммиту между двумя версиями [example] ==== Если текущая версия программного обеспечения использует тег Git, и порт необходимо обновить до более новой промежуточной версии без тега, используйте man:git-describe[1], чтобы определить версию для использования: [source, shell] .... % git describe --tags f0038b1 v0.7.3-14-gf0038b1 .... `v0.7.3-14-gf0038b1` можно разделить на три части: `v0.7.3`:: Это последний тег Git, который появляется в истории коммитов перед запрошенным коммитом. `-14`:: Это означает, что запрошенный коммит `f0038b1` является 14-м коммитом после тега `v0.7.3`. `-gf0038b1`:: `-g` означает "Git", а `f0038b1` — это хеш коммита, на который указывает данная ссылка. [.programlisting] .... PORTNAME= bar DISTVERSIONPREFIX= v DISTVERSION= 0.7.3-14 DISTVERSIONSUFFIX= -gf0038b1 USE_GITHUB= yes .... Это создаёт схему версионирования, которая увеличивается со временем (точнее, с коммитами) и не конфликтует с созданием версии `0.7.4`. Подробности об использовании man:pkg-version[8] для сравнения версий смотрите в crossref:makefiles[makefile-versions-ex-pkg-version, этой секции] : [source, shell] .... % pkg version -t 0.7.3 0.7.3.14 < % pkg version -t 0.7.3.14 0.7.4 < .... [NOTE] **** Если запрошенный коммит совпадает с тегом, по умолчанию отображается более короткое описание. Полная версия эквивалентна: [source, shell] .... % git describe --tags c66c71d v0.7.3 % git describe --tags --long c66c71d v0.7.3-0-gc66c71d .... **** ==== [[makefile-master_sites-github-multiple]] ==== Извлечение нескольких файлов из GitHub Фреймворк `USE_GITHUB` также поддерживает загрузку нескольких файлов дистрибутива из разных мест в GitHub. Он работает очень похоже на crossref:makefiles[porting-master-sites-n, Файлы дистрибуции или патчей из нескольких мест]. В `GH_ACCOUNT`, `GH_PROJECT` и `GH_TAGNAME` добавляются несколько значений. Каждому различному значению присваивается группа. Основное значение может не иметь группы или принадлежать группе `:DEFAULT`. Значение может быть опущено, если оно совпадает со значением по умолчанию, указанным в crossref:makefiles[makefile-master_sites-github-description,описании `USE_GITHUB`]. `GH_TUPLE` также можно использовать, когда имеется множество файлов дистрибутива. Это помогает сохранять учётные данные, проект, имя тега и информацию о группе в одном месте. Для каждой группы создаётся вспомогательная переменная `${WRKSRC_group}`, содержащая каталог, в который был извлечён файл. Переменные `${WRKSRC_group}` могут использоваться для перемещения каталогов во время `post-extract`, добавления в `CONFIGURE_ARGS` или любых других действий, необходимых для корректной сборки программного обеспечения. [CAUTION] ==== Часть `:__group__` _должна_ использоваться _только для одного_ файла дистрибутива. Она служит уникальным ключом, и её повторное использование приведёт к перезаписи предыдущих значений. ==== [NOTE] ==== Поскольку это всего лишь синтаксический сахар над `DISTFILES` и `MASTER_SITES`, имена групп должны соответствовать ограничениям на имена групп, описанным в crossref:makefiles[porting-master-sites-n, Файлы дистрибутивов или патчей из нескольких источников] ==== При получении нескольких файлов из GitHub иногда файл дистрибутива по умолчанию не загружается из GitHub. Чтобы отключить загрузку файла дистрибутива по умолчанию, установите: [.programlisting] .... USE_GITHUB= nodefault .... [IMPORTANT] ==== При использовании `USE_GITHUB=nodefault` в [.filename]#Makefile# необходимо указать `DISTFILES` в его crossref:porting-order[porting-order-portname,верхнем блоке]. Определение должно быть следующим: [.programlisting] .... DISTFILES= ${DISTNAME}${EXTRACT_SUFX} .... ==== [[makefile-master_sites-github-multi]] .Использование `USE_GITHUB` с несколькими файлами дистрибутива [example] ==== Время от времени возникает необходимость загрузить более одного файла дистрибутива. Например, когда вышестоящий репозиторий git использует подмодули. Это можно легко сделать с помощью групп в переменных `GH_*`: [.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} .... Это загрузит три файла дистрибутива с github. Стандартный берется из [.filename]#foo/foo# и имеет версию `1.0.2`. Второй, с группой `icons`, берется из [.filename]#bar/foo-icons# и имеет версию `1.0`. Третий берется из [.filename]#bar/foo-contrib# и использует Git-коммит `fa579bc`. Файлы дистрибутива называются [.filename]#foo-foo-1.0.2_GH0.tar.gz#, [.filename]#bar-foo-icons-1.0_GH0.tar.gz# и [.filename]#bar-foo-contrib-fa579bc_GH0.tar.gz#. Все файлы дистрибутива извлекаются в `${WRKDIR}` в соответствующих подкаталогах. Основной файл по-прежнему извлекается в `${WRKSRC}`, в данном случае, [.filename]#${WRKDIR}/foo-1.0.2#. Каждый дополнительный файл дистрибутива извлекается в `${WRKSRC_group}`. Здесь, для группы `icons`, он называется `${WRKSRC_icons}` и содержит [.filename]#${WRKDIR}/foo-icons-1.0#. Файл с группой `contrib` называется `${WRKSRC_contrib}` и содержит `${WRKDIR}/foo-contrib-fa579bc`. Система сборки программы ожидает найти иконки в подкаталоге [.filename]#ext/icons# в её исходниках, поэтому используется `GH_SUBDIR`. `GH_SUBDIR` гарантирует, что [.filename]#ext# существует, но [.filename]#ext/icons# ещё не существует. Затем он выполняет следующее: [.programlisting] .... post-extract: @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons .... ==== [[makefile-master_sites-github-multi2]] .Использование `USE_GITHUB` с несколькими файлами дистрибутива с помощью `GH_TUPLE` [example] ==== Это функционально эквивалентно crossref:makefiles[makefile-master_sites-github-multi,Использованию `USE_GITHUB` с несколькими файлами дистрибутива], но с использованием `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} .... В предыдущем примере использовалась группировка с `bar:icons,contrib`. В `GH_TUPLE` присутствует избыточная информация, так как группировка невозможна. ==== [[makefile-master_sites-github-submodules]] .Как использовать `USE_GITHUB` с подмодулями Git? [example] ==== Порты, использующие GitHub в качестве вышестоящего репозитория, иногда применяют подмодули. Подробнее см. man:git-submodule[1]. Проблема с подмодулями заключается в том, что каждый из них является отдельным репозиторием. Таким образом, каждый из них должен быть загружен отдельно. В качестве примера используем пакет package:finance/moneymanagerex[], его репозиторий на GitHub находится по адресу https://github.com/moneymanagerex/moneymanagerex/[]. В корне репозитория есть файл https://github.com/moneymanagerex/moneymanagerex/blob/master/.gitmodules[.gitmodules]. Этот файл описывает все подмодули, используемые в данном репозитории, и перечисляет дополнительные необходимые репозитории. Этот файл покажет, какие дополнительные репозитории требуются: [.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 [...] .... Единственная информация, отсутствующая в этом файле, — это хэш коммита или тег, который следует использовать в качестве версии. Эта информация находится после клонирования репозитория: [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) [...] .... Это также можно найти на GitHub. Каждый подкаталог, который является подмодулем, отображается как `_директория @ хэш_`, например, `mongoose @ 2140e59`. [NOTE] **** Хотя получение информации из GitHub кажется более простым, данные, полученные с помощью `git submodule status`, будут более информативными. Например, здесь хеш коммита ``lib/wxsqlite3`` `fb66eb2` соответствует `v3.4.0`. Оба варианта можно использовать взаимозаменяемо, но если доступен тег, предпочтительнее использовать его. **** Теперь, когда вся необходимая информация собрана, можно написать [.filename]#Makefile# (показаны только строки, связанные с GitHub): [.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` Подобно GitHub, если файл дистрибутива поставляется с https://gitlab.com/[gitlab.com] или использует программное обеспечение GitLab, эти переменные доступны для использования и могут потребовать установки. [[makefile-master_sites-gitlab-description]] .Описание `USE_GITLAB` [cols="1,1,1", options="header"] |=== | Переменная | Описание | По умолчанию |`GL_SITE` |Название сайта, на котором размещен проект GitLab |https://gitlab.com/ |`GL_ACCOUNT` |Имя учётной записи пользователя GitLab, размещающего проект |`${PORTNAME}` |`GL_PROJECT` |Название проекта на GitLab |`${PORTNAME}` |`GL_COMMIT` |Хэш коммита для загрузки. Должен быть полным 160-битным, 40-символьным шестнадцатеричным хэшем sha1. Это обязательная переменная для GitLab. |`(нет)` |`GL_SUBDIR` |Когда программному обеспечению требуется дополнительный файл дистрибутива для извлечения в `${WRKSRC}`, можно использовать эту переменную. Примеры можно найти в crossref:makefiles[makefile-master_sites-gitlab-multiple, Загрузка нескольких файлов из GitLab] для получения дополнительной информации. |(отсутствует) |`GL_TUPLE` |`GL_TUPLE` позволяет объединить `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT`, `GL_COMMIT` и `GL_SUBDIR` в одну переменную. Формат записи: _сайт_`:`_учётная запись_`:`_проект_`:`_коммит_`:`_группа_`/`_поддиректория_. Части _сайт_`:` и `/`_поддиректория_ являются необязательными. Это полезно, когда требуется загрузить данные из нескольких проектов GitLab. | |=== [[makefile-master_sites-gitlab-ex1]] .Простое использование `USE_GITLAB` [example] ==== Пытаясь создать порт для версии `1.14` библиотеки libsignon-glib от пользователя accounts-sso на gitlab.com, по адресу https://gitlab.com/accounts-sso/libsignon-glib/[], файл [.filename]#Makefile# будет выглядеть следующим образом для загрузки дистрибутивных файлов: [.programlisting] .... PORTNAME= libsignon-glib DISTVERSION= 1.14 USE_GITLAB= yes GL_ACCOUNT= accounts-sso GL_COMMIT= e90302e342bfd27bc8c9132ab9d0ea3d8723fd03 .... Он автоматически получит `MASTER_SITES`, установленный на https://gitlab.com/[gitlab.com], и `WRKSRC` на `${WRKDIR}/libsignon-glib-e90302e342bfd27bc8c9132ab9d0ea3d8723fd03-e90302e342bfd27bc8c9132ab9d0ea3d8723fd03`. ==== [[makefile-master_sites-gitlab-ex2]] .Более полное использование `USE_GITLAB` [example] ==== Более полный пример использования вышеописанного, если порт не имеет версионирования и foobar принадлежит пользователю foo в проекте bar на самостоятельно размещенном сайте GitLab `https://gitlab.example.com/`, тогда [.filename]#Makefile# будет выглядеть следующим образом для загрузки дистрибутивных файлов: [.programlisting] .... PORTNAME= foobar DISTVERSION= g20170906 USE_GITLAB= yes GL_SITE= https://gitlab.example.com GL_ACCOUNT= foo GL_PROJECT= bar GL_COMMIT= 9c1669ce60c3f4f5eb43df874d7314483fb3f8a6 .... В нем будет установлено `MASTER_SITES` в `"https://gitlab.example.com"` и `WRKSRC` в `${WRKDIR}/bar-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6`. [TIP] ====== `20170906` — это дата коммита, указанного в `GL_COMMIT`, а не дата редактирования файла [.filename]#Makefile# или дата коммита в дерево портов FreeBSD. ====== [NOTE] ====== Протокол, порт и корневая директория веб-сервера ``GL_SITE`` могут быть изменены в той же переменной. ====== ==== [[makefile-master_sites-gitlab-multiple]] ==== Извлечение нескольких файлов из GitLab Фреймворк `USE_GITLAB` также поддерживает загрузку нескольких файлов дистрибутивов из различных мест GitLab и сайтов, размещённых на GitLab. Он работает очень похоже на crossref:makefiles[porting-master-sites-n, Несколько файлов дистрибутивов или патчей из разных местоположений] и crossref:makefiles[makefile-master_sites-gitlab-multiple, Загрузка нескольких файлов из GitLab]. В `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT` и `GL_COMMIT` добавляются множественные значения. Каждое уникальное значение назначается группе. crossref:makefiles[makefile-master_sites-gitlab-description,Описание `USE_GITLAB`]. `GL_TUPLE` также может использоваться, когда имеется множество файлов дистрибутива. Это помогает хранить информацию о сайте, учётной записи, проекте, коммите и группе в одном месте. Для каждой группы создаётся вспомогательная переменная `${WRKSRC_group}`, содержащая каталог, в который был извлечён файл. Переменные `${WRKSRC_group}` могут использоваться для перемещения каталогов во время `post-extract`, добавления в `CONFIGURE_ARGS` или любых других действий, необходимых для корректной сборки программного обеспечения. [CAUTION] ==== Часть `:__group__` _должна_ использоваться _только для одного_ файла дистрибутива. Она служит уникальным ключом, и её повторное использование приведёт к перезаписи предыдущих значений. ==== [NOTE] ==== Поскольку это всего лишь синтаксический сахар над `DISTFILES` и `MASTER_SITES`, имена групп должны соответствовать ограничениям на имена групп, описанным в crossref:makefiles[porting-master-sites-n, Файлы дистрибутивов или патчей из нескольких источников] ==== При получении нескольких файлов с использованием GitLab иногда файл дистрибутива по умолчанию не загружается с сайта GitLab. Чтобы отключить загрузку файла дистрибутива по умолчанию, установите: [.programlisting] .... USE_GITLAB= nodefault .... [IMPORTANT] ==== При использовании `USE_GITLAB=nodefault`, [.filename]#Makefile# должен устанавливать `DISTFILES` в своем crossref:makefiles[porting-order-portname,верхнем блоке]. Определение должно быть следующим: [.programlisting] .... DISTFILES= ${DISTNAME}${EXTRACT_SUFX} .... ==== [[makefile-master_sites-gitlab-multi]] .Использование `USE_GITLAB` с несколькими файлами дистрибутива [example] ==== Время от времени возникает необходимость загрузить более одного файла дистрибутива. Например, когда вышестоящий git-репозиторий использует подмодули. Это можно легко сделать с помощью групп в переменных `GL_*`: [.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} .... Это загрузит два файла дистрибутива с gitlab.com и один с `gitlab.example.com`, где размещается GitLab. По умолчанию файл берется из [.filename]#https://gitlab.com/foo/foo#, а коммит — `c189207a55da45305c884fe2b50e086fcad4724b`. Второй файл, из группы `icons`, берется из [.filename]#https://gitlab.example.com:9434/gitlab/bar/foo-icons#, а коммит — `ae7368cab1ca7ca754b38d49da064df87968ffe4`. Третий файл берется из [.filename]#https://gitlab.com/bar/foo-contrib#, а коммит — `9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`. Файлы дистрибутива называются [.filename]#foo-foo-c189207a55da45305c884fe2b50e086fcad4724b_GL0.tar.gz#, [.filename]#bar-foo-icons-ae7368cab1ca7ca754b38d49da064df87968ffe4_GL0.tar.gz# и [.filename]#bar-foo-contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a_GL0.tar.gz#. Все файлы дистрибутива извлекаются в `${WRKDIR}` в соответствующих подкаталогах. Основной файл по-прежнему извлекается в `${WRKSRC}`, в данном случае это [.filename]#${WRKDIR}/foo-c189207a55da45305c884fe2b50e086fcad4724b-c189207a55da45305c884fe2b50e086fcad4724b#. Каждый дополнительный файл дистрибутива извлекается в `${WRKSRC_group}`. Здесь для группы `icons` он называется `${WRKSRC_icons}` и содержит [.filename]#${WRKDIR}/foo-icons-ae7368cab1ca7ca754b38d49da064df87968ffe4-ae7368cab1ca7ca754b38d49da064df87968ffe4#. Файл группы `contrib` называется `${WRKSRC_contrib}` и содержит `${WRKDIR}/foo-contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`. Система сборки программного обеспечения ожидает найти иконки в подкаталоге [.filename]#ext/icons# в своих исходниках, поэтому используется `GL_SUBDIR`. `GL_SUBDIR` гарантирует, что [.filename]#ext# существует, но [.filename]#ext/icons# ещё не существует. Затем она выполняет следующее: [.programlisting] .... post-extract: @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons .... ==== [[makefile-master_sites-gitlab-multi2]] .Использование `USE_GITLAB` с несколькими файлами дистрибуции с помощью `GL_TUPLE` [example] ==== Это функционально эквивалентно crossref:makefiles[makefile-master_sites-gitlab-multi,Использование `USE_GITLAB` с несколькими файлами дистрибуции], но с использованием `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} .... В предыдущем примере использовалась группировка с `bar:icons,contrib`. Некоторую избыточную информацию приходится указывать с `GL_TUPLE`, так как группировка невозможна. ==== [[makefile-extract_sufx]] === `EXTRACT_SUFX` Если имеется один файл дистрибутива, и он использует нестандартное суффикс для указания механизма сжатия, установите `EXTRACT_SUFX`. Например, если файл дистрибутива был назван [.filename]#foo.tar.gzip# вместо более привычного [.filename]#foo.tar.gz#, напишите: [.programlisting] .... DISTNAME= foo EXTRACT_SUFX= .tar.gzip .... `USES=tar[:__xxx__]`, `USES=lha` или `USES=zip` автоматически устанавливают `EXTRACT_SUFX` в наиболее распространённые расширения архивов при необходимости, подробнее см. crossref:uses[uses,Использование макросов `USES`]. Если ни один из них не задан, `EXTRACT_SUFX` по умолчанию принимает значение `.tar.gz`. [NOTE] ==== Как `EXTRACT_SUFX` используется только в `DISTFILES`, следует задавать только один из них. ==== [[makefile-distfiles-definition]] === `DISTFILES` Иногда названия файлов для загрузки не имеют ничего общего с именем порта. Например, файл может называться [.filename]#source.tar.gz# или подобным образом. В других случаях исходный код приложения может быть разбит на несколько различных архивов, все из которых необходимо загрузить. Если это так, установите `DISTFILES` как список разделённых пробелами файлов, которые необходимо загрузить. [.programlisting] .... DISTFILES= source1.tar.gz source2.tar.gz .... Если явно не задано, `DISTFILES` по умолчанию равно `${DISTNAME}${EXTRACT_SUFX}`. [[makefile-extract_only]] === `EXTRACT_ONLY` Если необходимо извлечь только некоторые из `DISTFILES` — например, один из них является исходным кодом, а другой — несжатым документом — укажите имена файлов, которые нужно извлечь, в `EXTRACT_ONLY`. [.programlisting] .... DISTFILES= source.tar.gz manual.html EXTRACT_ONLY= source.tar.gz .... Если ни один из `DISTFILES` не требует распаковки, установите `EXTRACT_ONLY` в пустую строку. [.programlisting] .... EXTRACT_ONLY= .... [[porting-patchfiles]] === `PATCHFILES` Если порт требует дополнительных исправлений, доступных через FTP или HTTP, установите `PATCHFILES` в имена файлов, а `PATCH_SITES` — в URL каталога, содержащего их (формат такой же, как у `MASTER_SITES`). Если патч не относится к корню исходного дерева (то есть к `WRKSRC`), потому что содержит дополнительные пути, установите `PATCH_DIST_STRIP` соответствующим образом. Например, если все пути в патче имеют дополнительный префикс `foozolix-1.0/` перед именами файлов, задайте `PATCH_DIST_STRIP=-p1`. Не беспокойтесь, если патчи сжаты; они будут автоматически распакованы, если их имена заканчиваются на [.filename]#.Z#, [.filename]#.gz#, [.filename]#.bz2# или [.filename]#.xz#. Если патч распространяется вместе с другими файлами, такими как документация, в сжатом tarball, использование `PATCHFILES` невозможно. В таком случае добавьте имя и расположение tarball с патчами в `DISTFILES` и `MASTER_SITES`. Затем используйте `EXTRA_PATCHES`, чтобы указать на эти файлы, и [.filename]#bsd.port.mk# автоматически применит их. В частности, _не_ копируйте файлы патчей в [.filename]#${PATCHDIR}#. Этот каталог может быть недоступен для записи. [TIP] ==== Если есть несколько патчей и для них требуются разные значения параметра strip, его можно добавить рядом с именем патча в `PATCHFILES`, например: [.programlisting] .... PATCHFILES= patch1 patch2:-p1 .... Это не конфликтует с crossref:makefiles[porting-master-sites-n,функцией группировки мастер-сайтов], добавление группы также работает: [.programlisting] .... PATCHFILES= patch2:-p1:source2 .... ==== [NOTE] ==== Tarball уже будет распакован вместе с обычными исходными кодами, поэтому нет необходимости явно его распаковывать, если это обычный сжатый tarball. Будьте особенно осторожны, чтобы не перезаписать существующие файлы в этом каталоге при ручной распаковке. Также не забудьте добавить команду для удаления скопированного патча в цель `pre-clean`. ==== [[porting-master-sites-n]] === Несколько файлов дистрибутивов или исправлений из нескольких местоположений (Считайте, что это несколько «продвинутая тема»; тем, кто впервые читает этот документ, возможно, стоит сначала пропустить этот раздел). Этот раздел содержит информацию о механизме загрузки, известном как `MASTER_SITES:n` и `MASTER_SITES_NN`. Мы будем называть этот механизм `MASTER_SITES:n`. Небольшая предыстория. В OpenBSD есть удобная функция внутри `DISTFILES` и `PATCHFILES`, которая позволяет добавлять постфикс `:n` к файлам и патчам. Здесь `n` может быть любым словом, содержащим `[0-9a-zA-Z_]`, и обозначать группу. Например: [.programlisting] .... DISTFILES= alpha:0 beta:1 .... В OpenBSD файл дистрибутива [.filename]#alpha# будет связан с переменной `MASTER_SITES0`, а не с нашей общей `MASTER_SITES`, а [.filename]#beta# — с `MASTER_SITES1`. Это очень интересная функция, которая может сократить бесконечные поиски нужного сайта для загрузки. Представьте 2 файла в `DISTFILES` и 20 сайтов в `MASTER_SITES`, причём сайты медленные как черепаха, где [.filename]#beta# есть на всех сайтах из `MASTER_SITES`, а [.filename]#alpha# можно найти только на 20-м сайте. Было бы так обидно проверять их все, если бы сопровождающий знал это заранее, не так ли? Не самое лучшее начало для чудесных выходных! Теперь, когда вы поняли идею, представьте больше `DISTFILES` и больше `MASTER_SITES`. Безусловно, наш "мастер по исследованию distfiles" оценил бы снижение нагрузки на сеть, которое это принесло бы. В следующих разделах будет приведена информация о реализации этой идеи в FreeBSD. Мы немного улучшили концепцию OpenBSD. [IMPORTANT] ==== Имена групп не могут содержать дефисы (`-`), более того, они не могут содержать любые символы вне диапазона `[a-zA-Z0-9_]`. Это связано с тем, что, хотя man:make[1] допускает использование имён переменных с дефисами, man:sh[1] — нет. ==== [[porting-master-sites-n-simplified]] ==== Упрощенная информация В этом разделе объясняется, как быстро настроить детализированное получение нескольких файлов дистрибутивов и патчей с разных сайтов и подкаталогов. Здесь описывается случай упрощённого использования `MASTER_SITES:n`. Этого будет достаточно для большинства сценариев. Более подробная информация доступна в crossref:makefiles[ports-master-sites-n-detailed, Подробная Информация]. Некоторые приложения состоят из нескольких распространяемых файлов, которые необходимо загрузить с различных сайтов. Например, Ghostscript включает основную часть программы и множество драйверов, используемых в зависимости от принтера пользователя. Некоторые из этих драйверов поставляются вместе с основной частью, но многие другие необходимо загружать с различных сайтов. Для поддержки этого, каждая запись в `DISTFILES` может сопровождаться двоеточием и "именем группы". Затем каждый сайт, указанный в `MASTER_SITES`, сопровождается двоеточием и группой, которая указывает, какие файлы дистрибутива загружаются с данного сайта. Например, рассмотрим приложение, исходный код которого разделён на две части: [.filename]#source1.tar.gz# и [.filename]#source2.tar.gz#, которые необходимо загрузить с двух разных сайтов. В [.filename]#Makefile# порта будут присутствовать строки, подобные crossref:makefiles[ports-master-sites-n-example-simple-use-one-file-per-site,Упрощённое использование `MASTER_SITES:n` с одним файлом на сайт]. [[ports-master-sites-n-example-simple-use-one-file-per-site]] .Упрощённое использование `MASTER_SITES:n` с одним файлом на сайт [example] ==== [.programlisting] .... MASTER_SITES= ftp://ftp1.example.com/:source1 \ http://www.example.com/:source2 DISTFILES= source1.tar.gz:source1 \ source2.tar.gz:source2 .... ==== Несколько файлов дистрибутивов могут принадлежать одной группе. Продолжая предыдущий пример, предположим, что существует третий файл дистрибутива [.filename]#source3.tar.gz#, который загружается с `ftp.example2.com`. Тогда [.filename]#Makefile# будет записан, как показано в crossref:makefiles[ports-master-sites-n-example-simple-use-more-than-one-file-per-site,Упрощённое использование `MASTER_SITES:n` с несколькими файлами на один сайт]. [[ports-master-sites-n-example-simple-use-more-than-one-file-per-site]] .Упрощённое использование `MASTER_SITES:n` с несколькими файлами на одном сайте [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]] ==== Подробная информация Хорошо, значит, предыдущий пример не отражал потребности нового порта? В этом разделе мы подробно объясним, как работает механизм детализированного получения `MASTER_SITES:n` и как его можно использовать. . Элементы могут иметь постфикс `:__n__`, где _n_ — это `[^:,]+`, то есть _n_ концептуально может быть любой буквенно-цифровой строкой, но пока мы ограничим её `[a-zA-Z_][0-9a-zA-Z_]+`. + Более того, сравнение строк чувствительно к регистру; то есть, `n` отличается от `N`. + Однако эти слова не могут использоваться для постфиксных целей, так как имеют специальное значение: `default`, `all` и `ALL` (они используются внутри системы, см. crossref:makefiles[porting-master-sites-n-what-changes-in-port-targets, ii]). Кроме того, `DEFAULT` является словом специального назначения (проверьте пункт crossref:makefiles[porting-master-sites-n-DEFAULT-group,3]). . Элементы с постфиксом `:n` принадлежат группе `n`, `:m` — группе `m` и так далее. + [[porting-master-sites-n-DEFAULT-group]] . Элементы без постфикса не принадлежат к группам, все они относятся к специальной группе `DEFAULT`. Элементы с постфиксом `DEFAULT` избыточны, за исключением случаев, когда элемент одновременно принадлежит и к `DEFAULT`, и к другим группам (см. пункт crossref:makefiles[porting-master-sites-n-comma-operator,5]). + Эти примеры эквивалентны, но первый предпочтительнее: + [.programlisting] .... MASTER_SITES= alpha .... + [.programlisting] .... MASTER_SITES= alpha:DEFAULT .... . Группы не являются исключительными, элемент может принадлежать нескольким разным группам одновременно, а группа может содержать несколько разных элементов или не содержать их вовсе. + [[porting-master-sites-n-comma-operator]] . Когда элемент принадлежит нескольким группам одновременно, используйте оператор запятую (`,`). + Вместо повторения несколько раз, каждый раз с разным постфиксом, мы можем перечислить несколько групп сразу в одном постфиксе. Например, `:m,n,o` обозначает элемент, принадлежащий группам `m`, `n` и `o`. + Все эти примеры эквивалентны, но последний является предпочтительным: + [.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 .... . Все сайты в заданной группе сортируются согласно `MASTER_SORT_AWK`. Все группы в `MASTER_SITES` и `PATCH_SITES` также сортируются. + [[porting-master-sites-n-group-semantics]] . Семантика групп может использоваться в любых переменных `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR`, `PATCH_SITE_SUBDIR`, `DISTFILES` и `PATCHFILES` согласно следующему синтаксису: .. Все элементы `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR` и `PATCH_SITE_SUBDIR` должны заканчиваться символом дробной черты `/`. Если элементы принадлежат к какой-либо группе, постфикс группы `:__n__` должен следовать сразу после завершающего символа `/`. Механизм `MASTER_SITES:n` полагается на наличие завершающего символа `/`, чтобы избежать путаницы между элементами, где `:n` является допустимой частью элемента, и случаями, где `:n` обозначает группу `n`. В целях совместимости, поскольку ранее завершающий символ `/` не требовался в элементах `MASTER_SITE_SUBDIR` и `PATCH_SITE_SUBDIR`, если символ, непосредственно предшествующий постфиксу, не является `/`, то `:n` будет считаться допустимой частью элемента, а не постфиксом группы, даже если элемент оканчивается на `:n`. См. оба раздела crossref:makefiles[ports-master-sites-n-example-detailed-use-master-site-subdir,Подробное использование `MASTER_SITES:n` в `MASTER_SITE_SUBDIR`] и crossref:makefiles[ports-master-sites-n-example-detailed-use-complete-example-master-sites,Подробное использование `MASTER_SITES:n` с оператором запятая, несколькими файлами, несколькими сайтами и несколькими подкаталогами]. + [[ports-master-sites-n-example-detailed-use-master-site-subdir]] .Подробное использование `MASTER_SITES:n` в `MASTER_SITE_SUBDIR` [example] ==== [.programlisting] .... MASTER_SITE_SUBDIR= old:n new/:NEW .... *** Каталоги в группе `DEFAULT` -> old:n *** Каталоги в группе `NEW` -> new ==== + [[ports-master-sites-n-example-detailed-use-complete-example-master-sites]] .Подробное использование `MASTER_SITES:n` с оператором запятая, несколькими файлами, сайтами и подкаталогами [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 .... Предыдущий пример приводит к такой детализированной загрузке файлов. Сайты перечислены в точном порядке их использования. *** [.filename]#file1# будет загружен из **** `MASTER_SITE_OVERRIDE` **** http://site1/directory-trial:1/ **** http://site1/directory-one/ **** http://site1/directory/ **** http://site2/ **** http://site7/ **** `MASTER_SITE_BACKUP` *** [.filename]#file2# будет загружен точно так же, как [.filename]#file1#, поскольку они оба принадлежат к одной и той же группе **** `MASTER_SITE_OVERRIDE` **** http://site1/directory-trial:1/ **** http://site1/directory-one/ **** http://site1/directory/ **** http://site2/ **** http://site7/ **** `MASTER_SITE_BACKUP` *** [.filename]#file3# будет загружен из **** `MASTER_SITE_OVERRIDE` **** http://site3/ **** `MASTER_SITE_BACKUP` *** [.filename]#file4# будет загружен из **** `MASTER_SITE_OVERRIDE` **** http://site4/ **** http://site5/ **** http://site6/ **** http://site7/ **** http://site8/directory-one/ **** `MASTER_SITE_BACKUP` *** [.filename]#file5# будет загружен из **** `MASTER_SITE_OVERRIDE` **** `MASTER_SITE_BACKUP` *** [.filename]#file6# будет получен из **** `MASTER_SITE_OVERRIDE` **** http://site8/ **** `MASTER_SITE_BACKUP` ==== . Как сгруппировать один из специальных макросов из [.filename]#bsd.sites.mk#, например, SourceForge (`SF`)? + Это максимально упрощено. См. crossref:makefiles[ports-master-sites-n-example-detailed-use-master-site-sourceforge,Подробное использование `MASTER_SITES:n` с SourceForge (`SF`)]. + [[ports-master-sites-n-example-detailed-use-master-site-sourceforge]] .Подробное использование `MASTER_SITES:n` с SourceForge (`SF`) [example] ==== [.programlisting] .... MASTER_SITES= http://site1/ SF/something/1.0:sourceforge,TEST DISTFILES= something.tar.gz:sourceforge .... [.filename]#something.tar.gz# будет загружен со всех сайтов в пределах SourceForge. ==== . Как использовать это с `PATCH*`? + Все примеры были выполнены с `MASTER*`, но они работают точно так же для `PATCH*`, как можно увидеть в crossref:makefiles[ports-master-sites-n-example-detailed-use-patch-sites,Упрощённое использование `MASTER_SITES:n` с `PATCH_SITES`]. + [[ports-master-sites-n-example-detailed-use-patch-sites]] .Упрощённое использование `MASTER_SITES:n` с `PATCH_SITES` [example] ==== [.programlisting] .... PATCH_SITES= http://site1/ http://site2/:test PATCHFILES= patch1:test .... ==== [[port-master-sites-n-what-changed]] ==== Что меняется для портов? Что остается неизменным? [lowerroman] . Все текущие порты остаются без изменений. Функция `MASTER_SITES:n` активируется только при наличии элементов с постфиксом `:__n__`, соответствующих указанным выше синтаксическим правилам, в частности, как показано в пункте crossref:makefiles[porting-master-sites-n-group-semantics, 7]. + [[porting-master-sites-n-what-changes-in-port-targets]] . Порты сохраняют те же цели: `checksum`, `makesum`, `patch`, `configure`, `build` и т.д., за исключением очевидных случаев: `do-fetch`, `fetch-list`, `master-sites` и `patch-sites`. ** `do-fetch`: развертывает новую группировку с постфиксом `DISTFILES` и `PATCHFILES` с соответствующими групповыми элементами в `MASTER_SITES` и `PATCH_SITES`, которые используют соответствующие групповые элементы в `MASTER_SITE_SUBDIR` и `PATCH_SITE_SUBDIR`. Проверьте crossref:makefiles[ports-master-sites-n-example-detailed-use-complete-example-master-sites,Подробное использование `MASTER_SITES:n` с оператором запятой, множественными файлами, множественными сайтами и множественными подкаталогами]. ** `fetch-list`: работает как старый `fetch-list`, за исключением того, что группировка происходит так же, как в `do-fetch`. ** `master-sites` и `patch-sites`: (несовместимо с более старыми версиями) возвращают только элементы группы `DEFAULT`; фактически они выполняют цели `master-sites-default` и `patch-sites-default` соответственно. + Кроме того, предпочтительнее использовать цель `master-sites-all` или `patch-sites-all`, чем напрямую проверять `MASTER_SITES` или `PATCH_SITES`. Кроме того, прямая проверка не гарантирует работу в будущих версиях. Для получения дополнительной информации об этих новых целях портов см. пункт crossref:makefiles[porting-master-sites-n-new-port-targets-master-sites-all, B]. . Новые цели портов .. Существуют цели `master-sites-_n_` и `patch-sites-_n_`, которые будут выводить элементы соответствующей группы _n_ в `MASTER_SITES` и `PATCH_SITES` соответственно. Например, и `master-sites-DEFAULT`, и `patch-sites-DEFAULT` вернут элементы группы `DEFAULT`, `master-sites-test` и `patch-sites-test` — группы `test`, и так далее. + [[porting-master-sites-n-new-port-targets-master-sites-all]] .. Существуют новые цели `master-sites-all` и `patch-sites-all`, которые выполняют работу старых `master-sites` и `patch-sites`. Они возвращают элементы всех групп, как если бы они все принадлежали одной группе, с оговоркой, что перечисляется столько же `MASTER_SITE_BACKUP` и `MASTER_SITE_OVERRIDE`, сколько определено групп в `DISTFILES` или `PATCHFILES`; соответственно для `master-sites-all` и `patch-sites-all`. [[makefile-dist_subdir]] === `DIST_SUBDIR` Не допускайте захламления портом каталога [.filename]#/usr/ports/distfiles#. Если порт требует загрузки большого количества файлов или содержит файл с именем, которое может конфликтовать с другими портами (например, [.filename]#Makefile#), установите `DIST_SUBDIR` в имя порта (подойдут `${PORTNAME}` или `${PKGNAMEPREFIX}${PORTNAME}`). Это изменит `DISTDIR` со значения по умолчанию [.filename]#/usr/ports/distfiles# на [.filename]#/usr/ports/distfiles/${DIST_SUBDIR}#, фактически помещая все необходимые для порта файлы в этот подкаталог. Также будет проверяться подкаталог с тем же именем на основном резервном сайте по адресу http://distcache.FreeBSD.org[http://distcache.FreeBSD.org] (Явное указание `DISTDIR` в [.filename]#Makefile# не решит эту задачу, поэтому используйте `DIST_SUBDIR`.) [NOTE] ==== Это не влияет на сайты в `MASTER_SITES`, определённые в [.filename]#Makefile#. ==== [[makefile-maintainer]] == `MAINTAINER` Установите здесь свой адрес электронной почты. Пожалуйста. _:-)_ Только один адрес без комментария допускается в качестве значения `MAINTAINER`. Используемый формат: `user@hostname.domain`. Пожалуйста, не включайте в эту запись описательный текст, например, настоящее имя. Это только вносит путаницу в инфраструктуру Ports и большинство инструментов, которые её используют. Ответственный за поддержку порта обязан поддерживать порт в актуальном состоянии и обеспечивать его корректную работу. Подробное описание обязанностей ответственного за поддержку порта приведено в разделе extref:{contributing}[Задача для сопровождающих портов,maintain-port]. [NOTE] ==== Сопровождающий добровольно поддерживает порт в рабочем состоянии. Сопровождающие несут основную ответственность за свои порты, но не имеют исключительных прав на них. Порты существуют для пользы сообщества и, по сути, принадлежат сообществу. Это означает, что люди, не являющиеся сопровождающими, также могут вносить изменения в порт. Крупные изменения в коллекции портов могут потребовать правок во многих портах. Команда управления портами FreeBSD или члены других команд могут изменять порты для исправления проблем с зависимостями или других проблем, таких как обновление версии динамической библиотеки. Некоторые типы исправлений имеют "автоматическое согласование" от {portmgr}, что позволяет любому коммиттеру исправлять эти категории проблем в любом порте. Такие исправления не требуют одобрения от сопровождающего. Автоматическое согласование для большинства портов применяется к исправлениям, таким как изменения инфраструктуры, или тривиальным и _проверенным_ исправлениям сборки и выполнения. Текущий список доступен в extref:{committers-guide}[разделе Портов Руководства коммиттера, ports-qa-misc-blanket-approval]. ==== Другие изменения в порте будут отправлены сопровождающему на проверку и утверждение перед внесением. Если сопровождающий не отвечает на запрос об обновлении в течение двух недель (за исключением основных государственных праздников), это считается превышением времени ожидания сопровождающего, и обновление может быть внесено без его явного одобрения. Если сопровождающий не отвечает в течение трех месяцев или если произошло три последовательных превышения времени ожидания, то сопровождающий считается отсутствующим без уведомления, и все его порты могут быть возвращены в общий пул. Исключениями являются порты, сопровождаемые {portmgr} или {security-officer}. Никакие несанкционированные изменения не могут быть внесены в порты, сопровождаемые этими группами. Мы оставляем за собой право изменять представленные сопровождающим материалы, чтобы лучше соответствовать существующим политикам и стилю Коллекции портов, без явного одобрения отправителя или сопровождающего. Кроме того, масштабные инфраструктурные изменения могут привести к модификации порта без согласия сопровождающего. Подобные изменения никогда не повлияют на функциональность порта. {portmgr} оставляет за собой право отозвать или изменить права сопровождающего по любой причине, а {security-officer} оставляет за собой право отозвать или изменить права сопровождающего по соображениям безопасности. [[makefile-comment]] == `COMMENT` Комментарий — это однострочное описание порта, отображаемое командой `pkg info`. При составлении придерживайтесь следующих правил: . Строка COMMENT должна быть не длиннее 70 символов. . Не включайте название пакета или номер версии программного обеспечения. . Комментарий должен начинаться с заглавной буквы и заканчиваться без точки. . Не начинайте с неопределённого артикля (то есть A или An). . Пишите названия с заглавной буквы, например: Apache, JavaScript или Perl. . Используйте запятую для списков слов: "green, red, and blue." . Проверяйте на наличие орфографических ошибок. Вот пример: [.programlisting] .... COMMENT= Cat chasing a mouse all over the screen .... Переменная COMMENT следует сразу за переменной MAINTAINER в файле [.filename]#Makefile#. [[makefile-www]] == Веб-сайт проекта Каждый порт должен указывать на веб-сайт, предоставляющий дополнительную информацию о программном обеспечении. Везде, где это возможно, следует использовать официальный сайт проекта, поддерживаемый разработчиками программного обеспечения. [.programlisting] .... WWW= https://ffmpeg.org/ .... Но это также может быть каталог или ресурс в репозитории исходного кода: [.programlisting] .... WWW= https://sourceforge.net/projects/mpd/ .... Переменная WWW следует сразу за переменной COMMENT в файле [.filename]#Makefile#. Если один и тот же контент доступен по HTTP и HTTPS, следует использовать URL, начинающийся с `https://`. Если URI является корнем веб-сайта или директории, он должен заканчиваться косой чертой. Эта информация ранее размещалась в последней строке файла [.filename]#pkg-descr#. Она была перенесена в Makefile для удобства обслуживания и обработки. Наличие строки `WWW:` в конце файла [.filename]#pkg-descr# считается устаревшим. [[licenses]] == Лицензии Каждый порт должен содержать документацию о лицензии, под которой он распространяется. Если лицензия не одобрена OSI, необходимо также указать любые ограничения на распространение. [[licenses-license]] === `LICENSE` Краткое название лицензии или лицензий, если применяется более одной лицензии. Если это одна из лицензий, перечисленных в crossref:makefiles[licenses-license-list,Предопределенный список лицензий], можно задать только переменные `LICENSE_FILE` и `LICENSE_DISTFILES`. Если это лицензия, которая не определена в рамках портов (см. crossref:makefiles[licenses-license-list,Список предопределённых лицензий]), необходимо задать `LICENSE_PERMS` и `LICENSE_NAME`, а также `LICENSE_FILE` или `LICENSE_TEXT`. Также можно задать `LICENSE_DISTFILES` и `LICENSE_GROUPS`, но это не обязательно. Предопределенные лицензии показаны в crossref:makefiles[licenses-license-list,Список предопределенных лицензий]. Текущий список всегда доступен в [.filename]#Mk/bsd.licenses.db.mk#. [[licenses-license-ex1]] .Простейшее использование, предопределённые лицензии [example] ==== Когда в файле [.filename]#README# какого-либо программного обеспечения указано: «Данное программное обеспечение распространяется на условиях GNU Lesser General Public License, опубликованной Free Software Foundation; либо версии 2.1 Лицензии, либо (по вашему выбору) любой более поздней версии», но сам файл лицензии не предоставлен, используйте следующее: [.programlisting] .... LICENSE= LGPL21+ .... Когда программное обеспечение предоставляет файл лицензии, используйте это: [.programlisting] .... LICENSE= LGPL21+ LICENSE_FILE= ${WRKSRC}/COPYING .... ==== Для предопределённых лицензий права по умолчанию: `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept`. [[licenses-license-list]] .Предопределенный список лицензий [cols="1,1,1,1", frame="none", options="header"] |=== | Короткое имя | Имя | Группа | Разрешения |`AGPLv3` |Универсальная общественная лицензия GNU Affero версии 3 |`FSF GPL OSI` |(по умолчанию) |`AGPLv3+` |Универсальная общественная лицензия GNU Affero версии 3 (или позднее) |`FSF GPL OSI` |(по умолчанию) |`APACHE10` |Apache License 1.0 |`FSF` |(по умолчанию) |`APACHE11` |Apache License 1.1 |`FSF OSI` |(по умолчанию) |`APACHE20` |Apache License 2.0 |`FSF OSI` |(по умолчанию) |`ART10` |Художественная лицензия версия 1.0 |`OSI` |(по умолчанию) |`ART20` |Художественная лицензия версии 2.0 |`FSF GPL OSI` |(по умолчанию) |`ARTPERL10` |Художественная лицензия (perl) версия 1.0 |`OSI` |(по умолчанию) |`BSD` |Лицензия BSD, общая версия (устарела) |`FSF OSI COPYFREE` |(по умолчанию) |`BSD2CLAUSE` |BSD 2-пунктная лицензия "Упрощенная" |`FSF OSI COPYFREE` |(по умолчанию) |`BSD3CLAUSE` |BSD 3-пунктная лицензия "Новая" или "Пересмотренная" |`FSF OSI COPYFREE` |(по умолчанию) |`BSD4CLAUSE` |BSD 4-пунктная лицензия "Оригинальная" или "Старая" |`FSF` |(по умолчанию) |`BSL` |Лицензия программного обеспечения Boost |`FSF OSI COPYFREE` |(по умолчанию) |`CC-BY-1.0` |Creative Commons с указанием авторства 1.0 | |(по умолчанию) |`CC-BY-2.0` |Creative Commons с указанием авторства 2.0 | |(по умолчанию) |`CC-BY-2.5` |Creative Commons с указанием авторства 2.5 | |(по умолчанию) |`CC-BY-3.0` |Creative Commons с указанием авторства 3.0 | |(по умолчанию) |`CC-BY-4.0` |Creative Commons с указанием авторства 4.0 | |(по умолчанию) |`CC-BY-NC-1.0` |Creative Commons с указанием авторства – некоммерческая 1.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-2.0` |Creative Commons с указанием авторства – некоммерческая 2.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-2.5` |Creative Commons с указанием авторства – некоммерческая 2.5 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-3.0` |Creative Commons с указанием авторства – некоммерческая 3.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-4.0` |Creative Commons с указанием авторства – некоммерческая 4.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-1.0` |Creative Commons с указанием авторства – некоммерческая – без производных 1.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-2.0` |Creative Commons с указанием авторства – некоммерческая – без производных 2.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-2.5` |Creative Commons с указанием авторства – некоммерческая – без производных 2.5 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-3.0` |Creative Commons с указанием авторства – некоммерческая – без производных 3.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-ND-4.0` |Creative Commons с указанием авторства – некоммерческая – без производных 4.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-1.0` |Creative Commons с указанием авторства – некоммерческая – на тех же условиях 1.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-2.0` |Creative Commons с указанием авторства – некоммерческая – на тех же условиях 2.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-2.5` |Creative Commons с указанием авторства – некоммерческая – на тех же условиях 2.5 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-3.0` |Creative Commons с указанием авторства – некоммерческая – на тех же условиях 3.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-NC-SA-4.0` |Creative Commons с указанием авторства – некоммерческая – на тех же условиях 4.0 | |`dist-mirror``pkg-mirror``auto-accept` |`CC-BY-ND-1.0` |Creative Commons с указанием авторства – без производных 1.0 | |(по умолчанию) |`CC-BY-ND-2.0` |Creative Commons с указанием авторства – без производных 2.0 | |(по умолчанию) |`CC-BY-ND-2.5` |Creative Commons с указанием авторства – без производных 2.5 | |(по умолчанию) |`CC-BY-ND-3.0` |Creative Commons с указанием авторства – без производных 3.0 | |(по умолчанию) |`CC-BY-ND-4.0` |Creative Commons с указанием авторства – без производных 4.0 | |(по умолчанию) |`CC-BY-SA-1.0` |Creative Commons с указанием авторства – на тех же условиях 1.0 | |(по умолчанию) |`CC-BY-SA-2.0` |Creative Commons с указанием авторства – на тех же условиях 2.0 | |(по умолчанию) |`CC-BY-SA-2.5` |Creative Commons с указанием авторства – на тех же условиях 2.5 | |(по умолчанию) |`CC-BY-SA-3.0` |Creative Commons с указанием авторства – на тех же условиях 3.0 | |(по умолчанию) |`CC-BY-SA-4.0` |Creative Commons с указанием авторства – на тех же условиях 4.0 | |(по умолчанию) |`CC0-1.0` |Creative Commons Zero v1.0 Universal (Отказ от прав 1.0 Универсальная) |`FSF GPL COPYFREE` |(по умолчанию) |`CDDL` |Лицензия на совместную разработку и распространение |`FSF OSI` |(по умолчанию) |`CPAL-1.0` |Публичная лицензия общего распространения с указанием авторства |`FSF OSI` |(по умолчанию) |`ClArtistic` |Уточнённая художественная лицензия |`FSF GPL OSI` |(по умолчанию) |`EPL` |Публичная лицензия Eclipse |`FSF OSI` |(по умолчанию) |`GFDL` |GNU Свободная лицензия на документацию |`FSF` |(по умолчанию) |`GMGPL` |Модифицированная Общедоступная лицензия GNAT |`FSF GPL OSI` |(по умолчанию) |`GPLv1` |Универсальная общественная лицензия GNU версии 1 |`FSF GPL OSI` |(по умолчанию) |`GPLv1+` |Универсальная общественная лицензия GNU версии 1 (или более поздняя) |`FSF GPL OSI` |(по умолчанию) |`GPLv2` |Универсальная общественная лицензия GNU версии 2 |`FSF GPL OSI` |(по умолчанию) |`GPLv2+` |Универсальная общественная лицензия GNU версии 2 (или более поздняя) |`FSF GPL OSI` |(по умолчанию) |`GPLv3` |Универсальная общественная лицензия GNU версии 3 |`FSF GPL OSI` |(по умолчанию) |`GPLv3+` |Универсальная общественная лицензия GNU версии 3 (или более поздняя) |`FSF GPL OSI` |(по умолчанию) |`GPLv3RLE` |Исключение для библиотеки времени выполнения GNU GPL версии 3 |`FSF GPL OSI` |(по умолчанию) |`GPLv3RLE+` |Исключение для библиотеки времени выполнения GNU GPL версии 3 (или более поздняя) |`FSF GPL OSI` |(по умолчанию) |`ISCL` |Лицензия Internet Systems Consortium |`FSF GPL OSI COPYFREE` |(по умолчанию) |`LGPL20` |Общедоступная лицензия GNU для библиотек, версия 2.0 |`FSF GPL OSI` |(по умолчанию) |`LGPL20+` |Общедоступная лицензия GNU для библиотек, версия 2.0 (или более поздняя) |`FSF GPL OSI` |(по умолчанию) |`LGPL21` |Универсальная общественная лицензия GNU ограниченного применения, версия 2.1 |`FSF GPL OSI` |(по умолчанию) |`LGPL21+` |Универсальная общественная лицензия GNU ограниченного применения, версия 2.1 (или более поздняя) |`FSF GPL OSI` |(по умолчанию) |`LGPL3` |Универсальная общественная лицензия GNU ограниченного применения, версия 3 |`FSF GPL OSI` |(по умолчанию) |`LGPL3+` |Универсальная общественная лицензия GNU ограниченного применения, версия 3 (или более поздней) |`FSF GPL OSI` |(по умолчанию) |`LPPL10` |Публичная лицензия проекта LaTeX, версия 1.0 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL11` |Публичная лицензия проекта LaTeX, версия 1.1 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL12` |Публичная лицензия проекта LaTeX, версия 1.2 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13` |Публичная лицензия проекта LaTeX, версия 1.3 |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13a` |Публичная лицензия проекта LaTeX, версия 1.3a |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13b` |Публичная лицензия проекта LaTeX, версия 1.3b |`FSF OSI` |`dist-mirror dist-sell` |`LPPL13c` |Публичная лицензия проекта LaTeX, версия 1.3c |`FSF OSI` |`dist-mirror dist-sell` |`MIT` |Лицензия MIT / Лицензия X11 |`COPYFREE FSF GPL OSI` |(по умолчанию) |`MPL10` |Публичная лицензия Mozilla, версия 1.0 |`FSF OSI` |(по умолчанию) |`MPL11` |Публичная лицензия Mozilla, версия 1.1 |`FSF OSI` |(по умолчанию) |`MPL20` |Публичная лицензия Mozilla, версия 2.0 |`FSF OSI` |(по умолчанию) |`NCSA` |Открытая лицензия Университета Иллинойса/NCSA |`COPYFREE FSF GPL OSI` |(по умолчанию) |`NONE` |Лицензия не указана | |`none` |`OFL10` |Лицензия SIL Open Font версия 1.0 (https://scripts.sil.org/OFL/) |`FONTS` |(по умолчанию) |`OFL11` |Лицензия SIL Open Font версия 1.1 (https://scripts.sil.org/OFL/) |`FONTS` |(по умолчанию) |`OWL` |Лицензия Открытых Произведений (owl.apotheon.org) |`COPYFREE` |(по умолчанию) |`OpenSSL` |Лицензия OpenSSL |`FSF` |(по умолчанию) |`PD` |Общественное достояние |`GPL COPYFREE` |(по умолчанию) |`PHP202` |Лицензия PHP версии 2.02 |`FSF OSI` |(по умолчанию) |`PHP30` |Лицензия PHP версии 3.0 |`FSF OSI` |(по умолчанию) |`PHP301` |Лицензия PHP версии 3.01 |`FSF OSI` |(по умолчанию) |`PSFL` |Лицензия Python Software Foundation |`FSF GPL OSI` |(по умолчанию) |`PostgreSQL` |Лицензия PostgreSQL |`FSF GPL OSI COPYFREE` |(по умолчанию) |`RUBY` |Лицензия Ruby |`FSF` |(по умолчанию) |`UNLICENSE` |Отказ от лицензии (The Unlicense) |`COPYFREE FSF GPL` |(по умолчанию) |`WTFPL` |Публичная лицензия "Делай что хочешь" версия 2 |`GPL FSF COPYFREE` |(по умолчанию) |`WTFPL1` |Публичная лицензия "Делай что хочешь" версия 1 |`GPL FSF COPYFREE` |(по умолчанию) |`ZLIB` |Лицензия zlib |`GPL FSF OSI` |(по умолчанию) |`ZPL21` |Публичная лицензия Zope версия 2.1 |`GPL OSI` |(по умолчанию) |=== [[licenses-license_perms]] === `LICENSE_PERMS` и `LICENSE_PERMS_NAME_` Разрешения. Используйте `none`, если пусто. .Список разрешений лицензии [[licenses-license_perms-dist-mirror]] `dist-mirror`:: Разрешается распространение дистрибутивных файлов. Дистрибутивные файлы будут добавлены в CDN `MASTER_SITE_BACKUP` FreeBSD. [[licenses-license_perms-no-dist-mirror]] `no-dist-mirror`:: Распространение дистрибутивных файлов запрещено. Это эквивалентно установке crossref:special[porting-restrictions-restricted,`RESTRICTED`]. Дистрибутивные файлы _не_ будут добавлены в CDN `MASTER_SITE_BACKUP` FreeBSD. [[licenses-license_perms-dist-sell]] `dist-sell`:: Продажа файлов дистрибутива разрешена. Файлы дистрибутива будут присутствовать на образах установщика. [[licenses-license_perms-no-dist-sell]] `no-dist-sell`:: Продажа файлов дистрибутива запрещена. Это эквивалентно установке crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`]. [[licenses-license_perms-pkg-mirror]] `pkg-mirror`:: Свободное распространение пакета разрешено. Пакет будет распространяться через CDN пакетов FreeBSD https://pkg.freebsd.org/[https://pkg.freebsd.org/]. [[licenses-license_perms-no-pkg-mirror]] `no-pkg-mirror`:: Свободное распространение пакета запрещено. Эквивалентно установке crossref:special[porting-restrictions-no_package,`NO_PACKAGE`]. Пакет _не_ будет распространяться через FreeBSD CDN для пакетов https://pkg.freebsd.org/[https://pkg.freebsd.org/]. [[licenses-license_perms-pkg-sell]] `pkg-sell`:: Продажа пакета разрешена. Пакет будет присутствовать на образах установщика. [[licenses-license_perms-no-pkg-sell]] `no-pkg-sell`:: Продажа пакета запрещена. Это эквивалентно установке crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`]. Пакет _не_ будет присутствовать на образах установщика. [[licenses-license_perms-auto-accept]] `auto-accept`:: Лицензия принимается по умолчанию. Запросы на принятие лицензии не отображаются, если пользователь не определил `LICENSES_ASK`. Используйте это, если в лицензии не указано, что пользователь должен принять условия лицензии. [[licenses-license_perms-no-auto-accept]] `no-auto-accept`:: Лицензия не принимается по умолчанию. Пользователь всегда будет запрошен на подтверждение принятия данной лицензии. Это должно использоваться, если лицензия требует, чтобы пользователь принял её условия. Когда присутствуют и `_permission_`, и `no-_permission_`, то `no-_permission_` отменяет `_permission_`. Когда `_permission_` отсутствует, это считается как `no-_permission_`. [WARNING] ==== Некоторые отсутствующие разрешения могут сделать порт (и все зависящие от него порты) непригодными для использования пользователями пакетов: Порт без разрешения `auto-accept` никогда не будет собран, и все зависящие от него порты будут проигнорированы. Порт без разрешения `pkg-mirror`, а также любые порты, зависящие от него, будут удалены после сборки, что гарантирует их отсутствие в дистрибуции. ==== [[licenses-license_perms-ex1]] .Нестандартная лицензия [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. LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept .... ==== [[licenses-license_perms-ex2]] .Стандартные и нестандартные лицензии [example] ==== Прочитайте условия лицензии и укажите их, используя доступные разрешения. В случае сомнений обратитесь за разъяснениями на {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 .... Когда разрешения лицензий GPLv2 и UNKNOWN смешиваются, порт получает `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept`. Опции `no-_разрешения_` отменяют соответствующие _разрешения_. Итоговый список разрешений: _dist-mirror pkg-mirror auto-accept_. Файлы дистрибутива и пакеты не будут доступны в образах установщика. ==== [[licenses-license_groups]] === `LICENSE_GROUPS` и `LICENSE_GROUPS_NAME` Группы, к которым принадлежит лицензия. .Список предопределенных групп лицензий [[licenses-license_groups-FSF]] `FSF`:: Одобрено Free Software Foundation, см. https://www.fsf.org/licensing/[Команда по лицензированию и соответствию FSF]. [[licenses-license_groups-GPL]] `GPL`:: Совместимые с GPL [[licenses-license_groups-OSI]] `OSI`:: Одобрено OSI, см. страницу https://opensource.org/licenses/[Открытых лицензий]. [[licenses-license_groups-COPYFREE]] `COPYFREE`:: Соответствует определению стандарта Copyfree, см. страницу https://copyfree.org/standard/licenses/[лицензий Copyfree]. [[licenses-license_groups-FONTS]] `FONTS`:: Лицензии на шрифты [[licenses-license_name]] === `LICENSE_NAME` и `LICENSE_NAME_NAME` Полное название лицензии. [[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` и `LICENSE_FILE_NAME` Полный путь к файлу, содержащему текст лицензии, обычно [.filename]#${WRKSRC}/some/file#. Если файл отсутствует в дистрибутиве, а его содержимое слишком длинное для размещения в crossref:makefiles[licenses-license_text,`LICENSE_TEXT`], поместите его в новый файл в [.filename]#${FILESDIR}#. [[licenses-license_file-ex1]] .`LICENSE_FILE` [example] ==== [.programlisting] .... LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/COPYING .... ==== [[licenses-license_text]] === `LICENSE_TEXT` и `LICENSE_TEXT_NAME` Текст для использования в качестве лицензии. Полезно, когда лицензия отсутствует в файлах дистрибутива и её текст краток. [[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` и `LICENSE_DISTFILES_NAME` Файлы дистрибутива, к которым применяются лицензии. По умолчанию — все файлы дистрибутива. [[licenses-license_distfiles-ex1]] .`LICENSE_DISTFILES` [example] ==== Используется, когда файлы дистрибутива имеют разные лицензии. Например, один файл имеет лицензию на код, а другой содержит некоторые произведения искусства, которые нельзя распространять: [.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` Установите значение `multi`, если применяются все лицензии. Установите значение `dual`, если применяется любая из лицензий. По умолчанию используется значение `single`. [[licenses-license_comb-ex1]] .Двойные лицензии [example] ==== Когда порт содержит указание «Это программное обеспечение может распространяться под GNU General Public License или Artistic License», это означает, что можно использовать любую из этих лицензий. Используйте следующее: [.programlisting] .... LICENSE= ART10 GPLv1 LICENSE_COMB= dual .... Если предоставлены файлы лицензий, используйте это: [.programlisting] .... LICENSE= ART10 GPLv1 LICENSE_COMB= dual LICENSE_FILE_ART10= ${WRKSRC}/Artistic LICENSE_FILE_GPLv1= ${WRKSRC}/Copying .... ==== [[licenses-license_comb-ex2]] .Множественные лицензии [example] ==== Если часть порта имеет одну лицензию, а другая часть — другую, используйте `multi`: [.programlisting] .... LICENSE= GPLv2 LGPL21+ LICENSE_COMB= multi .... ==== [[makefile-portscout]] == `PORTSCOUT` Portscout — это автоматизированная утилита проверки distfile для Коллекции портов FreeBSD, подробно описанная в crossref:keeping-up[distfile-survey,Portscout: сканирование distfile портов FreeBSD]. `PORTSCOUT` определяет специальные условия, в рамках которых работа сканера дистрибутивных файлов Portscout ограничена. Ситуации, когда установлена переменная `PORTSCOUT`, включают: * Когда необходимо игнорировать distfiles для определённых версий. Например, чтобы исключить версию _8.2_ и версию _8.3_ из проверок версий distfiles, так как известно, что они неработоспособны, добавьте: + [.programlisting] .... PORTSCOUT= skipv:8.2,8.3 .... * Когда проверки версий distfile необходимо полностью отключить. Например, если порт больше не будет обновляться, добавьте: + [.programlisting] .... PORTSCOUT= ignore:1 .... * Когда необходимо проверять конкретные версии или определенные мажорные и минорные редакции distfile. Например, если нужно отслеживать только версию _0.6.4_, потому что более новые версии имеют проблемы совместимости с FreeBSD, добавьте: + [.programlisting] .... PORTSCOUT= limit:^0\.6\.4 .... * Когда URL-адреса, перечисляющие доступные версии, отличаются от URL-адресов загрузки. Например, чтобы ограничить проверку версий distfile страницей загрузки для пакета: package:databases/pgtune[] добавьте: + [.programlisting] .... PORTSCOUT= site:http://www.renpy.org/dl/release/ .... [[makefile-depend]] == Зависимости Многие порты зависят от других портов. Это очень удобная особенность большинства Unix-подобных операционных систем, включая FreeBSD. Несколько портов могут использовать общую зависимость вместо того, чтобы включать эту зависимость в каждый порт или пакет, который в ней нуждается. Существует семь переменных, которые можно использовать для обеспечения наличия всех необходимых компонентов на машине пользователя. Также есть предопределенные переменные зависимостей для распространенных случаев и несколько дополнительных для управления поведением зависимостей. [IMPORTANT] ==== Когда у программного обеспечения есть дополнительные зависимости, предоставляющие дополнительные возможности, основные зависимости, перечисленные в `*_DEPENDS`, должны включать те дополнительные зависимости, которые будут полезны большинству пользователей. Основные зависимости никогда не должны быть "минимальным" набором зависимостей. Цель состоит не в том, чтобы включить все возможные зависимости. Включайте только те, которые будут полезны большинству людей. ==== [[makefile-lib_depends]] === `LIB_DEPENDS` Эта переменная определяет разделяемые библиотеки, от которых зависит данный порт. Это список кортежей вида `_lib:dir_`, где `_lib_` — имя разделяемой библиотеки, а `_dir_` — директория, в которой её следует искать, если она недоступна. Например, [.programlisting] .... LIB_DEPENDS= libjpeg.so:graphics/jpeg .... проверит наличие общей библиотеки jpeg с любой версией и перейдет в подкаталог [.filename]#graphics/jpeg# дерева портов, чтобы собрать и установить её, если она не найдена. Зависимость проверяется дважды: один раз внутри цели `build` и затем внутри цели `install`. Также имя зависимости добавляется в пакет, чтобы `pkg install` (см. man:pkg-install[8]) автоматически установил её, если её нет в системе пользователя. [[makefile-run_depends]] === `RUN_DEPENDS` Эта переменная определяет исполняемые файлы или файлы, от которых зависит порт во время выполнения. Это список кортежей ``_path:dir_``[:``_target_``], где `_path_` — это имя исполняемого файла или файла, _dir_ — директория, в которой его следует искать, если он недоступен, а _target_ — цель, которую нужно вызвать в этой директории. Если _path_ начинается с косой черты (`/`), он считается файлом, и его существование проверяется с помощью `test -e`; в противном случае предполагается, что это исполняемый файл, и `which -s` используется для проверки наличия программы в пути поиска. Например, [.programlisting] .... RUN_DEPENDS= ${LOCALBASE}/news/bin/innd:news/inn \ xmlcatmgr:textproc/xmlcatmgr .... проверит, существует ли файл или каталог [.filename]#/usr/local/news/bin/innd#, и соберет и установит его из подкаталога [.filename]#news/inn# дерева портов, если он не найден. Также будет проверено, находится ли исполняемый файл `xmlcatmgr` в пути поиска, и если он не найден, будет выполнен переход в [.filename]#textproc/xmlcatmgr# для сборки и установки. [NOTE] ==== В этом случае `innd` является исполняемым файлом; если исполняемый файл находится в месте, которое не ожидается в пути поиска, используйте полный путь. ==== [NOTE] ==== Официальный путь поиска `PATH`, используемый в кластере сборки портов [.programlisting] .... /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin .... ==== Зависимость проверяется внутри цели `install`. Также имя зависимости добавляется в пакет, чтобы команда `pkg install` (см. man:pkg-install[8]) автоматически установила её, если она отсутствует в системе пользователя. Часть _target_ может быть опущена, если она совпадает с `DEPENDS_TARGET`. Довольно распространённая ситуация, когда `RUN_DEPENDS` буквально совпадает с `BUILD_DEPENDS`, особенно если портируемое программное обеспечение написано на скриптовом языке или требует одинаковой среды для сборки и выполнения. В этом случае возникает соблазн и интуитивное желание напрямую присвоить одно другому: [.programlisting] .... RUN_DEPENDS= ${BUILD_DEPENDS} .... Однако такое присваивание может загрязнить зависимости во время выполнения записями, не определёнными в оригинальном `BUILD_DEPENDS` порта. Это происходит из-за ленивого вычисления присваивания переменных в man:make[1]. Рассмотрим [.filename]#Makefile# с `USE_*`, которые обрабатываются [.filename]#ports/Mk/bsd.*.mk# для добавления начальных зависимостей сборки. Например, `USES= gmake` добавляет package:devel/gmake[] в `BUILD_DEPENDS`. Чтобы предотвратить попадание таких дополнительных зависимостей в `RUN_DEPENDS`, создайте другую переменную с текущим содержимым `BUILD_DEPENDS` и присвойте её как `BUILD_DEPENDS`, так и `RUN_DEPENDS`: [.programlisting] .... MY_DEPENDS= some:devel/some \ other:lang/other BUILD_DEPENDS= ${MY_DEPENDS} RUN_DEPENDS= ${MY_DEPENDS} .... [IMPORTANT] ==== _Не используйте_ `:=` для присваивания `BUILD_DEPENDS` в `RUN_DEPENDS` или наоборот. Все переменные раскрываются немедленно, что является совершенно неправильным и почти всегда приводит к ошибке. ==== [[makefile-build_depends]] === `BUILD_DEPENDS` Эта переменная указывает исполняемые файлы или файлы, необходимые для сборки данного порта. Как и `RUN_DEPENDS`, это список кортежей ``_path:dir_``[:``_target_``]. Например, [.programlisting] .... BUILD_DEPENDS= unzip:archivers/unzip .... проверит наличие исполняемого файла с именем `unzip` и перейдет в подкаталог [.filename]#archivers/unzip# дерева портов, чтобы собрать и установить его, если он не будет найден. [NOTE] ==== "build" здесь означает все процессы от извлечения до компиляции. Зависимость проверяется внутри цели `extract`. Часть _target_ может быть опущена, если она совпадает с `DEPENDS_TARGET` ==== [[makefile-fetch_depends]] === `FETCH_DEPENDS` Эта переменная определяет исполняемые файлы или файлы, необходимые для загрузки этого порта. Как и предыдущие две, это список кортежей ``_path:dir_``[:``_target_``]. Например, [.programlisting] .... FETCH_DEPENDS= ncftp2:net/ncftp2 .... проверит наличие исполняемого файла с именем `ncftp2` и перейдет в подкаталог [.filename]#net/ncftp2# дерева портов для сборки и установки, если файл не будет найден. Зависимость проверяется внутри цели `fetch`. Часть _target_ может быть опущена, если она совпадает с `DEPENDS_TARGET`. [[makefile-extract_depends]] === `EXTRACT_DEPENDS` Эта переменная указывает исполняемые файлы или файлы, которые требуются для извлечения данного порта. Как и предыдущая, это список кортежей ``_path:dir_``[:``_target_``]. Например, [.programlisting] .... EXTRACT_DEPENDS= unzip:archivers/unzip .... проверит наличие исполняемого файла с именем `unzip` и перейдет в подкаталог [.filename]#archivers/unzip# дерева портов, чтобы собрать и установить его, если он не будет найден. Зависимость проверяется внутри цели `extract`. Часть _target_ может быть опущена, если она совпадает с `DEPENDS_TARGET`. [NOTE] ==== Используйте эту переменную только если извлечение уже не работает (по умолчанию предполагается `tar`) и не может быть исправлено с помощью `USES=tar`, `USES=lha` или `USES=zip`, как описано в crossref:uses[uses,Использование макросов `USES`]. ==== [[makefile-patch_depends]] === `PATCH_DEPENDS` Эта переменная указывает исполняемые файлы или файлы, которые требуются этому порту для применения патчей. Как и предыдущая, это список кортежей ``_path:dir_``[:``_target_``]. Например, [.programlisting] .... PATCH_DEPENDS= ${NONEXISTENT}:java/jfc:extract .... будет спускаться в подкаталог [.filename]#java/jfc# дерева портов для его извлечения. Зависимость проверяется в рамках цели `patch`. Часть _target_ может быть опущена, если она совпадает с `DEPENDS_TARGET`. [[makefile-uses]] === `USES` Параметры могут быть добавлены для определения различных функций и зависимостей, используемых портом. Они указываются путем добавления этой строки в [.filename]#Makefile#: [.programlisting] .... USES= feature[:arguments] .... Для полного списка значений обратитесь к crossref:uses[uses,Использование макросов `USES`]. [WARNING] ==== `USES` нельзя назначать после включения [.filename]#bsd.port.pre.mk#. ==== [[makefile-use-vars]] === `USE_*` Существует несколько переменных для определения общих зависимостей, используемых многими портами. Их использование необязательно, но помогает сократить многословность [.filename]##Makefile## портов. Каждая из них оформлена как `USE_*`. Эти переменные могут использоваться только в [.filename]##Makefile## портов и [.filename]#ports/Mk/bsd.*.mk#. Они не предназначены для настраиваемых пользователем опций — для этой цели используйте `PORT_OPTIONS`. [NOTE] ==== Всегда неправильно устанавливать любые `USE_*` в [.filename]#/etc/make.conf#. Например, установка [.programlisting] .... USE_GCC=X.Y .... (где X.Y — номер версии) добавит зависимость от gccXY для каждого порта, включая сам `lang/gccXY`! ==== [[makefile-use-vars-table]] .`USE_*` [cols="1,1", frame="none", options="header"] |=== | Переменная | Значение |`USE_GCC` a| Порт требует GCC (`gcc` или `{g-plus-plus}`) для сборки. Некоторые порты нуждаются в определённой, старой версии GCC, другие требуют современных, актуальных версий. Обычно устанавливается в `yes` (означает всегда использовать стабильную, современную версию GCC из портов, согласно `GCC_DEFAULT` в [.filename]#Mk/bsd.default-versions.mk#). Это также значение по умолчанию. Точная версия также может быть указана, например, значением `10`. GCC из базовой системы используется, если он удовлетворяет запрашиваемой версии, в противном случае подходящий компилятор собирается из портов, а `CC` и `CXX` корректируются соответствующим образом. Аргумент `:build`, следующий за указанием версии, добавляет только зависимость во время сборки порта. Например: [example] ==== [.programlisting] .... USE_GCC=yes # порт требует текущей версии GCC USE_GCC=11:build # порт требует GCC 11 только во время сборки .... ==== [NOTE] ==== `USE_GCC=any` устарел и не должен использоваться в новых портах ==== |=== Переменные, связанные с gmake и [.filename]#configure#, описаны в crossref:special[building,Механизмы сборки], тогда как autoconf, automake и libtool описаны в crossref:special[using-autotools,Использование GNU Autotools]. Переменные, связанные с Perl, описаны в crossref:special[using-perl,Использование Perl]. Переменные X11 перечислены в crossref:special[using-x11,Использование X11]. crossref:special[using-gnome,Использование GNOME] посвящено GNOME, а crossref:special[using-kde,Использование KDE] — переменным, связанным с KDE. crossref:special[using-java,Использование Java] документирует переменные Java, тогда как crossref:special[using-php,Веб-приложения, Apache и PHP] содержит информацию о модулях Apache, PHP и PEAR. Python обсуждается в crossref:special[using-python,Использование Python], а Ruby — в crossref:special[using-ruby,Использование Ruby]. crossref:special[using-sdl,Использование SDL] предоставляет переменные, используемые для приложений SDL, и, наконец, crossref:special[using-xfce,Использование Xfce] содержит информацию о Xfce. [[makefile-version-dependency]] === Минимальная версия зависимого пакета Минимальная версия зависимого пакета может быть указана в любом `*_DEPENDS`, кроме `LIB_DEPENDS`, используя следующий синтаксис: [.programlisting] .... p5-Spiffy>=0.26:devel/p5-Spiffy .... Первое поле содержит имя зависимого пакета, которое должно соответствовать записи в базе данных пакетов, знак сравнения и версию пакета. Зависимость считается удовлетворённой, если на машине установлен p5-Spiffy-0.26 или новее. [[makefile-note-on-dependencies]] === Заметки о зависимостях Как упомянуто выше, цель по умолчанию, вызываемая при необходимости зависимости, — это `DEPENDS_TARGET`. По умолчанию она установлена в `install`. Это пользовательская переменная; она никогда не определяется в [.filename]#Makefile# порта. Если порту требуется особый способ обработки зависимости, используйте часть `:target` в `*_DEPENDS` вместо переопределения `DEPENDS_TARGET`. При выполнении `make clean` зависимости портов также автоматически очищаются. Если это нежелательно, определите переменную `NOCLEANDEPENDS` в окружении. Это может быть особенно полезно, если среди зависимостей порта есть что-то, что требует много времени для пересборки, например KDE, GNOME или Mozilla. Для безусловной зависимости от другого порта используйте переменную `${NONEXISTENT}` в качестве первого поля `BUILD_DEPENDS` или `RUN_DEPENDS`. Используйте это только в случае, когда необходим исходный код другого порта. Время компиляции можно сократить, указав также цель. Например [.programlisting] .... BUILD_DEPENDS= ${NONEXISTENT}:graphics/jpeg:extract .... всегда будет переходить к порту `jpeg` и извлекать его. [[makefile-circular-dependencies]] === Циклические зависимости фатальны [IMPORTANT] ==== Не создавайте циклических зависимостей в дереве портов! ==== Технология сборки портов не допускает циклических зависимостей. Если такая зависимость будет добавлена, у кого-то в мире почти сразу окажется сломанной установка FreeBSD, а за этим последуют многие другие. Подобные проблемы бывает очень сложно обнаружить. Если есть сомнения, перед внесением изменений обязательно выполните: `cd /usr/ports; make index`. Этот процесс может быть довольно медленным на старых машинах, но он способен избавить множество людей, включая вас, от серьёзных проблем. [[makefile-automatic-dependencies]] === Проблемы, вызванные автоматическими зависимостями Зависимости должны быть объявлены явно или с использованием crossref:makefiles[makefile-options,OPTIONS framework]. Использование других методов, таких как автоматическое обнаружение, усложняет индексацию, что вызывает проблемы для управления портами и пакетами. [[makefile-automatic-dependencies-bad]] .Неправильное объявление необязательной зависимости [example] ==== [.programlisting] .... .include .if exists(${LOCALBASE}/bin/foo) LIB_DEPENDS= libbar.so:foo/bar .endif .... ==== Проблема с попыткой автоматического добавления зависимостей заключается в том, что файлы и настройки за пределами отдельного порта могут измениться в любой момент. Например: индекс строится, затем устанавливается группа портов. Но один из портов устанавливает проверяемый файл. Теперь индекс неверен, потому что у установленного порта неожиданно появилась новая зависимость. Индекс может оставаться неверным даже после пересборки, если другие порты также определяют свою потребность в зависимостях на основе существования других файлов. [[makefile-automatic-dependencies-good]] .Правильное объявление необязательной зависимости [example] ==== [.programlisting] .... OPTIONS_DEFINE= BAR BAR_DESC= Calling cellphones via bar BAR_LIB_DEPENDS= libbar.so:foo/bar .... ==== Проверка переменных опций является правильным методом. Это не вызовет несоответствий в индексе группы портов, при условии что опции были определены до сборки индекса. Затем можно использовать простые скрипты для автоматизации сборки, установки и обновления этих портов и их пакетов. [[makefile-masterdir]] == Подчиненные порты и `MASTERDIR` Если порту необходимо собирать немного разные версии пакетов, используя переменную (например, разрешение или размер бумаги) с разными значениями, создайте по одному подкаталогу для каждого пакета, чтобы пользователям было проще понять, что делать, но старайтесь максимально использовать общие файлы между портами. Обычно, при грамотном использовании переменных, во всех каталогах, кроме одного, требуется лишь очень короткий [.filename]#Makefile#. В единственном [.filename]#Makefile# укажите директорию с остальными файлами с помощью `MASTERDIR`. Также используйте переменную как часть crossref:makefiles[porting-pkgname,`PKGNAMESUFFIX`], чтобы пакеты имели разные имена. Это лучше всего продемонстрировать на примере. Это часть файла [.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[]` также содержит все обычные исправления, файлы пакетов и т.д. При запуске `make` в этом месте будет взято значение разрешения по умолчанию (300), и порт будет собран в обычном режиме. Что касается других разрешений, это _полный_ [.filename]#print/pkfonts360/Makefile#: [.programlisting] .... RESOLUTION= 360 MASTERDIR= ${.CURDIR}/../pkfonts300 .include "${MASTERDIR}/Makefile" .... ([.filename]#print/pkfonts118/Makefile#, [.filename]#print/pkfonts600/Makefile# и все остальные аналогичны). Определение `MASTERDIR` указывает [.filename]#bsd.port.mk#, что стандартный набор подкаталогов, таких как `FILESDIR` и `SCRIPTDIR`, следует искать в [.filename]#pkfonts300#. Строка `RESOLUTION=360` переопределит строку `RESOLUTION=300` в [.filename]#pkfonts300/Makefile#, и порт будет собран с разрешением, установленным на 360. [[makefile-manpages]] == Страницы Cправочника Если порт размещает дерево man в другом месте, отличном от `PREFIX`, используйте `MANDIRS` для указания этих каталогов. Обратите внимание, что файлы, соответствующие страницам руководства, должны быть добавлены в [.filename]#pkg-plist# вместе с остальными файлами. Назначение `MANDIRS` — обеспечить автоматическое сжатие страниц руководства, поэтому имена файлов имеют суффикс [.filename]#.gz#. [[makefile-info]] == Файлы информации Если пакету требуется установить файлы GNU info, перечислите их в `INFO` (без завершающего `.info`), по одному документу на строку. Предполагается, что эти файлы будут установлены в [.filename]#PREFIX/INFO_PATH#. Измените `INFO_PATH`, если пакет использует другое расположение. Однако это не рекомендуется. Эти записи содержат только путь относительно [.filename]#PREFIX/INFO_PATH#. Например, пакет package:lang/gcc34[] устанавливает файлы info в [.filename]#PREFIX/INFO_PATH/gcc34#, и `INFO` будет выглядеть примерно так: [.programlisting] .... INFO= gcc34/cpp gcc34/cppinternals gcc34/g77 ... .... Соответствующий код установки/удаления будет автоматически добавлен во временный файл [.filename]#pkg-plist# перед регистрацией пакета. [[makefile-options]] == Параметры Makefile Многие приложения могут быть собраны с дополнительными или различными конфигурациями. Примеры включают выбор естественного (человеческого) языка, графический интерфейс или командная строка, тип поддерживаемой базы данных. Пользователям может потребоваться конфигурация, отличная от стандартной, поэтому система портов предоставляет хуки, которые автор порта может использовать для управления вариантом сборки. Правильная поддержка этих опций сделает пользователей счастливыми и эффективно предоставит два или более порта по цене одного. [[makefile-options-options]] === `OPTIONS` [[makefile-options-background]] ==== Пояснения `OPTIONS_*` предоставляют пользователю, устанавливающему порт, диалоговое окно с доступными опциями, после чего сохраняют выбранные опции в [.filename]#${PORT_DBDIR}/${OPTIONS_NAME}/options#. При следующей сборке порта эти опции будут использованы повторно. `PORT_DBDIR` по умолчанию имеет значение [.filename]#/var/db/ports#. `OPTIONS_NAME` соответствует имени порта (origin) с заменой разделителя на подчёркивания, например, для package:dns/bind99[] это будет `dns_bind99`. Когда пользователь запускает `make config` (или впервые запускает `make build`), система проверяет наличие файла [.filename]#${PORT_DBDIR}/${OPTIONS_NAME}/options#. Если этот файл не существует, используются значения `OPTIONS_*`, и отображается диалоговое окно, где можно включить или отключить опции. Затем файл [.filename]#options# сохраняется, а настроенные переменные используются при сборке порта. Если новая версия порта добавляет новые `OPTIONS`, пользователю будет показан диалог с сохранёнными значениями старых `OPTIONS`, заполненными заранее. `make showconfig` показывает сохранённую конфигурацию. Используйте `make rmconfig` для удаления сохранённой конфигурации. [[makefile-options-syntax]] ==== Синтаксис `OPTIONS_DEFINE` содержит список `OPTIONS`, которые будут использоваться. Они независимы друг от друга и не сгруппированы: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 .... После определения `OPTIONS` описываются (необязательно, но настоятельно рекомендуется): [.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# содержит описания для многих распространённых `OPTIONS`. Хотя они часто полезны, переопределите их, если описание недостаточно для порта. [TIP] ==== При описании параметров рассматривайте их с точки зрения пользователя: «Какую функциональность это изменяет?» и «Зачем мне включать этот параметр?» Не просто повторяйте название. Например, описание параметра `NLS` как «включить поддержку NLS» не помогает пользователю, который уже видит название параметра, но может не знать, что оно означает. Описание вроде «Поддержка родного языка с помощью утилиты gettext» гораздо полезнее. ==== [IMPORTANT] ==== Названия параметров всегда пишутся в верхнем регистре. Они не могут использовать смешанный регистр или нижний регистр. ==== `OPTIONS` могут быть сгруппированы как переключаемые варианты, где допускается только один выбор из каждой группы: [.programlisting] .... OPTIONS_SINGLE= SG1 OPTIONS_SINGLE_SG1= OPT3 OPT4 .... [WARNING] ==== В каждый момент времени _должна_ быть выбрана одна опция из каждой группы `OPTIONS_SINGLE`, чтобы параметры были действительными. Один вариант из каждой группы _должен_ быть добавлен в `OPTIONS_DEFAULT`. ==== `OPTIONS` могут быть сгруппированы как переключаемые варианты, где ни один или только один вариант из каждой группы разрешён: [.programlisting] .... OPTIONS_RADIO= RG1 OPTIONS_RADIO_RG1= OPT7 OPT8 .... `OPTIONS` также могут быть сгруппированы в виде списков "множественного выбора", где _хотя бы одна_ опция должна быть включена: [.programlisting] .... OPTIONS_MULTI= MG1 OPTIONS_MULTI_MG1= OPT5 OPT6 .... `OPTIONS` также могут быть сгруппированы в виде списков "множественного выбора", где ни одна или любые опции могут быть включены: [.programlisting] .... OPTIONS_GROUP= GG1 OPTIONS_GROUP_GG1= OPT9 OPT10 .... `OPTIONS` по умолчанию не установлены, если они не перечислены в `OPTIONS_DEFAULT`: [.programlisting] .... OPTIONS_DEFAULT= OPT1 OPT3 OPT6 .... Определения `OPTIONS` должны быть указаны до включения файла [.filename]#bsd.port.options.mk#. Значения `PORT_OPTIONS` можно проверять только после включения [.filename]#bsd.port.options.mk#. Включение [.filename]#bsd.port.pre.mk# также может использоваться и до сих пор широко применяется в портах, написанных до введения [.filename]#bsd.port.options.mk#. Однако следует учитывать, что некоторые переменные не будут работать как ожидается после включения [.filename]#bsd.port.pre.mk#, обычно это некоторые флаги `USE_*`. [[ports-options-simple-use]] .Простое использование `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]] .Проверка неустановленных `OPTIONS` порта [example] ==== [.programlisting] .... .if ! ${PORT_OPTIONS:MEXAMPLES} CONFIGURE_ARGS+=--without-examples .endif .... Приведённая выше форма не рекомендуется. Предпочтительный метод — использование параметра configure для фактического включения и отключения функции в соответствии с опцией: [.programlisting] .... # Will add --with-examples / --without-examples EXAMPLES_CONFIGURE_WITH= examples .... ==== [[ports-options-practical-use]] .Пример реального использования `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]] ==== Опции по умолчанию Эти опции всегда включены по умолчанию. * `DOCS` — сборка и установка документации. * `NLS` — Поддержка родного языка. * `EXAMPLES` — сборка и установка примеров. * `IPV6` — Поддержка протокола IPv6. [NOTE] ==== Нет необходимости добавлять их в `OPTIONS_DEFAULT`. Однако, чтобы они были активны и отображались в диалоге выбора опций, их необходимо добавить в `OPTIONS_DEFINE`. ==== [[makefile-options-auto-activation]] === Автоматическая активация функций При использовании скрипта GNU configure следите за тем, какие дополнительные функции активируются автоматическим определением. Явно отключите ненужные дополнительные функции, добавив `--without-xxx` или `--disable-xxx` в `CONFIGURE_ARGS`. [[makefile-options-auto-activation-bad]] .Неправильная обработка опции [example] ==== [.programlisting] .... .if ${PORT_OPTIONS:MFOO} LIB_DEPENDS+= libfoo.so:devel/foo CONFIGURE_ARGS+= --enable-foo .endif .... ==== В приведённом выше примере представьте, что библиотека libfoo установлена в системе. Пользователь не хочет, чтобы это приложение использовало libfoo, поэтому он отключил соответствующую опцию в диалоге `make config`. Однако скрипт configure приложения обнаруживает библиотеку в системе и включает её поддержку в итоговом исполняемом файле. Теперь, когда пользователь решает удалить libfoo из системы, система портов не протестует (зависимость от libfoo не была записана), но приложение перестаёт работать. [[makefile-options-auto-activation-good]] .Правильная обработка опции [example] ==== [.programlisting] .... FOO_LIB_DEPENDS= libfoo.so:devel/foo # Will add --enable-foo / --disable-foo FOO_CONFIGURE_ENABLE= foo .... ==== [NOTE] ==== В некоторых случаях сокращенный синтаксис условных выражений может вызывать проблемы со сложными конструкциями. Ошибки обычно имеют вид `Malformed conditional`, тогда можно использовать альтернативный синтаксис. [.programlisting] .... .if !empty(VARIABLE:MVALUE) .... в качестве альтернативы [.programlisting] .... .if ${VARIABLE:MVALUE} .... ==== [[options-helpers]] === Помощники параметров Существуют макросы, которые помогают упростить условные значения, различающиеся в зависимости от установленных опций. Для удобства приведён полный список: `PLIST_SUB`, `SUB_LIST`:: Для автоматической генерации `%%_OPT_%%` и `%%NO__OPT__%%` см. crossref:makefiles[options_sub, `OPTIONS_SUB`]. + Для более сложных случаев использования см. crossref:makefiles[options-variables, Замена общих переменных, `OPT_VARIABLE` и `OPT_VARIABLE_OFF`]. `CONFIGURE_ARGS`:: Для информации о `--enable-_x_` и `--disable-_x_` см. crossref:makefiles[options-configure_enable, `OPT_CONFIGURE_ENABLE`]. + О `--with-_x_` и `--without-_x_` см. crossref:makefiles[options-configure_with, `OPT_CONFIGURE_WITH`]. + Во всех остальных случаях см. crossref:makefiles[options-configure_on, `OPT_CONFIGURE_ON` и `OPT_CONFIGURE_OFF`]. `CMAKE_ARGS`:: Для аргументов, которые являются булевыми значениями (`on`, `off`, `true`, `false`, `0`, `1`), см. crossref:makefiles[options-cmake_bool, `OPT_CMAKE_BOOL` и `OPT_CMAKE_BOOL_OFF`]. + Для всех остальных случаев см. crossref:makefiles[options-cmake_on, `OPT_CMAKE_ON` и `OPT_CMAKE_OFF`]. `MESON_ARGS`:: Для аргументов, принимающих `true` или `false`, см. crossref:makefiles[options-meson_true, `OPT_MESON_TRUE` и `OPT_MESON_FALSE`]. + Для аргументов, принимающих `yes` или `no`, используйте crossref:makefiles[options-meson_yes, `OPT_MESON_YES` и `OPT_MESON_NO`]. + Для аргументов, принимающих `enabled` или `disabled`, см. crossref:makefiles[options-meson_enabled, `OPT_MESON_ENABLED` и `OPT_MESON_DISABLED`]. + Во всех остальных случаях используйте crossref:makefiles[options-meson_on, `OPT_MESON_ON` и `OPT_MESON_OFF`]. `QMAKE_ARGS`:: См. crossref:makefiles[options-qmake_on, `OPT_QMAKE_ON` и `OPT_QMAKE_OFF`]. `USE_*`:: См. crossref:makefiles[options-use, `OPT_USE` и `OPT_USE_OFF`]. `*_DEPENDS`:: См. crossref:makefiles[options-dependencies, Зависимости, `OPT_DEPTYPE` и `OPT_DEPTYPE_OFF`]. `*` (Любая переменная):: Наиболее используемые переменные имеют своих помощников, см. crossref:makefiles[options-variables, Замена Общих Переменных, `OPT_VARIABLE` и `OPT_VARIABLE_OFF`]. + Для любой переменной без специального помощника см. crossref:makefiles[options-vars, `OPT_VARS` и `OPT_VARS_OFF`]. Зависимости параметров:: Когда для работы опции требуется другая опция, см. crossref:makefiles[options-implies, `OPT_IMPLIES`]. Конфликты опций:: Когда опция не может работать, если включена другая, см. crossref:makefiles[options-prevents, `OPT_PREVENTS` и `OPT_PREVENTS_MSG`]. Цели сборки:: Когда для опции требуется дополнительная обработка, см. crossref:makefiles[options-targets, Дополнительные цели сборки, `_target_-_OPT_-on` и `_target_-_OPT_-off`]. [[options_sub]] ==== `OPTIONS_SUB` Если `OPTIONS_SUB` установлен в `yes`, то каждая из опций, добавленных в `OPTIONS_DEFINE`, будет добавлена в `PLIST_SUB` и `SUB_LIST`, например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPTIONS_SUB= yes .... эквивалентно: [.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] ==== Значение `OPTIONS_SUB` игнорируется. Установка любого значения добавит записи `PLIST_SUB` и `SUB_LIST` для _всех_ опций. ==== [[options-use]] ==== `OPT_USE` и `OPT_USE_OFF` Когда выбрана опция _OPT_, для каждой пары `_ключ=значение_` в ``OPT_USE``, _значение_ добавляется к соответствующему `USE_KEY`. Если _значение_ содержит пробелы, замените их запятыми, и они будут преобразованы обратно в пробелы во время обработки. `OPT_USE_OFF` работает аналогично, но когда `OPT` _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_USES= xorg OPT1_USE= mysql=yes xorg=x11,xextproto,xext,xrandr OPT1_USE_OFF= openssl=yes .... эквивалентно: [.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` [[options-configure_enable]] ===== `OPT_CONFIGURE_ENABLE` Когда выбрана опция _OPT_, для каждого _элемента_ в `OPT_CONFIGURE_ENABLE` к `CONFIGURE_ARGS` добавляется `--enable-_элемент_`. Если опция _OPT_ _не_ выбрана, к `CONFIGURE_ARGS` добавляется `--disable-_элемент_`. Необязательный аргумент может быть указан с помощью символа `=`. Этот аргумент добавляется только к опции конфигурации `--enable-_элемент_`. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_CONFIGURE_ENABLE= test1 test2 OPT2_CONFIGURE_ENABLE= test2=exhaustive .... эквивалентно: [.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` Когда выбрана опция _OPT_, для каждого _элемента_ в `_OPT_CONFIGURE_WITH` к `CONFIGURE_ARGS` добавляется `--with-_элемент_`. Если опция _OPT_ _не_ выбрана, к `CONFIGURE_ARGS` добавляется `--without-_элемент_`. Необязательный аргумент можно указать с помощью символа `=`. Этот аргумент добавляется только к опции конфигурации `--with-_элемент_`. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_CONFIGURE_WITH= test1 OPT2_CONFIGURE_WITH= test2=exhaustive .... эквивалентно: [.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` и `OPT_CONFIGURE_OFF` Когда выбрана опция _OPT_, значение `OPT_CONFIGURE_ON`, если оно определено, добавляется к `CONFIGURE_ARGS`. `OPT_CONFIGURE_OFF` работает аналогично, но когда `OPT` _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_CONFIGURE_ON= --add-test OPT1_CONFIGURE_OFF= --no-test .... эквивалентно: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} CONFIGURE_ARGS+= --add-test .else CONFIGURE_ARGS+= --no-test .endif .... [TIP] ==== В большинстве случаев помощники crossref:makefiles[options-configure_enable, `OPT_CONFIGURE_ENABLE`] и crossref:makefiles[options-configure_with, `OPT_CONFIGURE_WITH`] предоставляют более короткий и понятный функционал. ==== [[options-cmake-helpers]] ==== Помощники `CMAKE_ARGS` [[options-cmake_on]] ===== `OPT_CMAKE_ON` и `OPT_CMAKE_OFF` Когда выбрана опция _OPT_, значение `OPT_CMAKE_ON`, если оно определено, добавляется к `CMAKE_ARGS`. `OPT_CMAKE_OFF` работает аналогично, но когда `OPT` _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_CMAKE_ON= -DTEST:BOOL=true -DDEBUG:BOOL=true OPT1_CMAKE_OFF= -DOPTIMIZE:BOOL=true .... эквивалентно: [.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] ==== См. crossref:makefiles[options-cmake_bool, `OPT_CMAKE_BOOL` и `OPT_CMAKE_BOOL_OFF`] для более краткой записи, когда значение является булевым. ==== [[options-cmake_bool]] ===== `OPT_CMAKE_BOOL` и `OPT_CMAKE_BOOL_OFF` Когда выбрана опция _OPT_, для каждого _элемента_ в `OPT_CMAKE_BOOL` добавляется `-D_элемент_:BOOL=true` к `CMAKE_ARGS`. Если опция _OPT_ _не_ выбрана, `-D_элемент_:BOOL=false` добавляется к `CONFIGURE_ARGS`. `OPT_CMAKE_BOOL_OFF` работает наоборот: `-D_элемент_:BOOL=false` добавляется к `CMAKE_ARGS`, когда опция выбрана, и `-D_элемент_:BOOL=true`, когда опция _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_CMAKE_BOOL= TEST DEBUG OPT1_CMAKE_BOOL_OFF= OPTIMIZE .... эквивалентно: [.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` [[options-meson_on]] ===== `OPT_MESON_ON` и `OPT_MESON_OFF` Когда выбрана опция _OPT_, значение `OPT_MESON_ON`, если оно определено, добавляется к `MESON_ARGS`. `OPT_MESON_OFF` работает аналогичным образом, но когда `OPT` _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_ON= -Dopt=1 OPT1_MESON_OFF= -Dopt=2 .... эквивалентно: [.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` и `OPT_MESON_FALSE` Когда выбрана опция _OPT_, для каждого _элемента_ в `OPT_MESON_TRUE` добавляется `-D_элемент_=true` в `MESON_ARGS`. Если опция _OPT_ _не_ выбрана, добавляется `-D_элемент_=false` в `MESON_ARGS`. `OPT_MESON_FALSE` работает противоположным образом: `-D_элемент_=false` добавляется в `MESON_ARGS`, когда опция выбрана, и `-D_элемент_=true`, когда опция _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_TRUE= test debug OPT1_MESON_FALSE= optimize .... эквивалентно: [.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` и `OPT_MESON_NO` Когда выбрана опция _OPT_, для каждого _элемента_ в `OPT_MESON_YES` добавляется `-D_элемент_=yes` к `MESON_ARGS`. Если опция _OPT_ _не_ выбрана, добавляется `-D_элемент_=no` к `MESON_ARGS`. `OPT_MESON_NO` работает противоположным образом: `-D_элемент_=no` добавляется к `MESON_ARGS`, когда опция выбрана, и `-D_элемент_=yes`, когда опция _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_YES= test debug OPT1_MESON_NO= optimize .... эквивалентно: [.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` и `OPT_MESON_DISABLED` Когда выбрана опция _OPT_, для каждого _элемента_ в `OPT_MESON_ENABLED` добавляется `-D_элемент_=enabled` к `MESON_ARGS`. Когда опция _OPT_ _не_ выбрана, добавляется `-D_элемент_=disabled` к `MESON_ARGS`. `OPT_MESON_DISABLED` работает противоположным образом: `-D_элемент_=disabled` добавляется к `MESON_ARGS`, когда опция выбрана, и `-D_элемент_=enabled`, когда опция _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_MESON_ENABLED= test OPT1_MESON_DISABLED= debug .... эквивалентно: [.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` и `OPT_QMAKE_OFF` Когда выбрана опция _OPT_, значение `OPT_QMAKE_ON`, если оно определено, добавляется к `QMAKE_ARGS`. `OPT_QMAKE_OFF` работает аналогичным образом, но когда `OPT` _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_QMAKE_ON= -DTEST:BOOL=true OPT1_QMAKE_OFF= -DPRODUCTION:BOOL=true .... эквивалентно: [.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` Предоставляет способ добавления зависимостей между опциями. При выборе _OPT_ все перечисленные в этой переменной опции также будут выбраны. В качестве примера можно использовать описанный ранее crossref:makefiles[options-configure_enable,`OPT_CONFIGURE_ENABLE`]: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_IMPLIES= OPT2 OPT1_CONFIGURE_ENABLE= opt1 OPT2_CONFIGURE_ENABLE= opt2 .... Эквивалентно: [.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]] .Простое использование `OPT_IMPLIES` [example] ==== Этот порт имеет опцию `X11` и опцию `GNOME`, для сборки которой необходимо выбрать опцию `X11`. [.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` и `OPT_PREVENTS_MSG` Предоставляет способ добавления конфликтов между опциями. Когда выбрана _OPT_, все опции, перечисленные в `OPT_PREVENTS`, должны быть сняты. Если задано `OPT_PREVENTS_MSG` и возникает конфликт, его содержимое будет показано с объяснением причины конфликта. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 OPT1_PREVENTS= OPT2 OPT1_PREVENTS_MSG= OPT1 and OPT2 enable conflicting options .... Примерно эквивалентно: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT2 .include .if ${PORT_OPTIONS:MOPT2} && ${PORT_OPTIONS:MOPT1} BROKEN= Option OPT1 conflicts with OPT2 (select only one) .endif .... Единственное отличие заключается в том, что первый вариант выведет ошибку после выполнения `make config`, предлагая изменить выбранные настройки. [[options-prevents-ex1]] .Простое использование `OPT_PREVENTS` [example] ==== Этот порт имеет опции `X509` и `SCTP`. Обе опции добавляют патчи, но патчи конфликтуют друг с другом, поэтому их нельзя выбрать одновременно. [.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` и `OPT_VARS_OFF` Предоставляет универсальный способ установки и добавления значений переменным. [WARNING] ==== Перед использованием `OPT_VARS` и `OPT_VARS_OFF` проверьте, доступен ли более специфичный вспомогательный инструмент в crossref:makefiles[options-variables, Универсальная замена переменных, `OPT_VARIABLE` и `OPT_VARIABLE_OFF`]. ==== Когда выбрана опция _OPT_ и определены `OPT_VARS`, пары `_key_=_value_` и `_key_+=_value_` обрабатываются из `OPT_VARS`. Оператор `=` приводит к перезаписи существующего значения `KEY`, а `+=` добавляет к значению. `OPT_VARS_OFF` работает аналогично, но когда `OPT` _не_ выбрана. [.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}" .... эквивалентно: [.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] ==== Значения, содержащие пробелы, должны быть заключены в кавычки: [.programlisting] .... OPT_VARS= foo="bar baz" .... Это связано с тем, как man:make[1] обрабатывает пробелы при раскрытии переменных. Когда `OPT_VARS= foo=bar baz` раскрывается, переменная в итоге содержит две строки: `foo=bar` и `baz`. Однако отправитель, вероятно, предполагал, что должна быть только одна строка — `foo=bar baz`. Заключение значения в кавычки предотвращает использование пробела в качестве разделителя. Также _не_ добавляйте лишние пробелы после знака `_var_=` и перед значением, это также разобьёт строку на две части. _Это не сработает_: [.programlisting] .... OPT_VARS= foo= bar .... ==== [[options-dependencies]] ==== Зависимости, `OPT_DEPTYPE` и `OPT_DEPTYPE_OFF` Для любого из этих типов зависимостей: * `PKG_DEPENDS` * `EXTRACT_DEPENDS` * `PATCH_DEPENDS` * `FETCH_DEPENDS` * `BUILD_DEPENDS` * `LIB_DEPENDS` * `RUN_DEPENDS` Когда выбрана опция _OPT_, значение `OPT_DEPTYPE`, если оно определено, добавляется к `DEPTYPE`. `OPT_DEPTYPE_OFF` работает аналогично, но когда _не_ выбрана `OPT`. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_LIB_DEPENDS= liba.so:devel/a OPT1_LIB_DEPENDS_OFF= libb.so:devel/b .... эквивалентно: [.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]] ==== Универсальная замена переменных, `OPT_VARIABLE` и `OPT_VARIABLE_OFF` Для любой из этих переменных: * `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` Когда выбрана опция _OPT_, значение `OPT_ABOVEVARIABLE`, если оно определено, добавляется к `_ABOVEVARIABLE_`. `OPT_ABOVEVARIABLE_OFF` работает аналогично, но когда `OPT` _не_ выбрана. Например: [.programlisting] .... OPTIONS_DEFINE= OPT1 OPT1_USES= gmake OPT1_CFLAGS_OFF= -DTEST .... эквивалентно: [.programlisting] .... OPTIONS_DEFINE= OPT1 .include .if ${PORT_OPTIONS:MOPT1} USES+= gmake .else CFLAGS+= -DTEST .endif .... [NOTE] ==== Некоторые переменные отсутствуют в этом списке, в частности `PKGNAMEPREFIX` и `PKGNAMESUFFIX`. Это сделано намеренно. Порт _не должен_ изменять своё имя при изменении набора опций. ==== [WARNING] ==== Некоторые из этих переменных, по крайней мере `ALL_TARGET`, `DISTFILES` и `INSTALL_TARGET`, получают свои значения по умолчанию _после_ обработки опций. С такими строками в [.filename]#Makefile#: [.programlisting] .... ALL_TARGET= all DOCS_ALL_TARGET= doc .... Если опция `DOCS` включена, `ALL_TARGET` будет иметь конечное значение `all doc`; если опция отключена, значение будет `all`. Только со строкой помощника опций в [.filename]#Makefile#: [.programlisting] .... DOCS_ALL_TARGET= doc .... Если опция `DOCS` включена, `ALL_TARGET` будет иметь окончательное значение `doc`; если опция отключена, значение будет `all`. ==== [[options-targets]] ==== Дополнительные цели сборки, `_target_-_OPT_-on` и `_target_-_OPT_-off` Эти цели в [.filename]#Makefile# могут принимать дополнительные опциональные цели сборки: * `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` Когда выбрана опция _OPT_, цель `_TARGET_-_OPT_-on`, если она определена, выполняется после `_TARGET_`. `_TARGET_-_OPT_-off` работает аналогично, но когда `OPT` _не_ выбрана. Например: [.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 .... эквивалентно: [.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]] == Указание рабочего каталога Каждый порт извлекается в рабочий каталог, который должен быть доступен для записи. Система портов по умолчанию распаковывает `DISTFILES` в каталог с именем `${DISTNAME}`. Другими словами, если в [.filename]#Makefile# указано: [.programlisting] .... PORTNAME= foo DISTVERSION= 1.0 .... то файлы дистрибутива порта содержат каталог верхнего уровня [.filename]#foo-1.0#, и остальные файлы находятся в этом каталоге. Если нужно расположение файлов в других каталогах, можно переопределить ряд переменных. [[makefile-wrksrc]] === `WRKSRC` Переменная указывает имя каталога, который создается при распаковке distfiles приложения. Чтобы в нашем предыдущем примере распаковка происходила в каталог с именем [.filename]#foo# (а не [.filename]#foo-1.0#), напишите: [.programlisting] .... WRKSRC= ${WRKDIR}/foo .... или можно [.programlisting] .... WRKSRC= ${WRKDIR}/${PORTNAME} .... [[makefile-wrksrc_subdir]] === `WRKSRC_SUBDIR` Если исходные файлы, необходимые для порта, находятся в подкаталоге распакованного дистрибутива, присвойте `WRKSRC_SUBDIR` имя этого каталога. [.programlisting] .... WRKSRC_SUBDIR= src .... [[makefile-no_wrksubdir]] === `NO_WRKSUBDIR` Если порт не распаковывается в подкаталог вообще, установите `NO_WRKSUBDIR`, чтобы указать это. [.programlisting] .... NO_WRKSUBDIR= yes .... [NOTE] ==== Поскольку `WRKDIR` является единственной директорией, которая должна быть доступна для записи во время сборки, и используется для хранения многих файлов, фиксирующих состояние сборки, извлечение порта будет принудительно выполнено в поддиректорию. ==== [[conflicts]] == Обработка конфликтов Существует три различные переменные для регистрации конфликтов между пакетами и портами: `CONFLICTS`, `CONFLICTS_INSTALL` и `CONFLICTS_BUILD`. [NOTE] ==== Эти переменные автоматически устанавливают переменную `IGNORE`, более подробно описанную в crossref:porting-dads[dads-noinstall,Пометка порта как неустанавливаемого с помощью `BROKEN`, `FORBIDDEN` или `IGNORE`]. ==== При удалении одного из нескольких конфликтующих портов рекомендуется оставлять `CONFLICTS` в тех других портах на несколько месяцев, чтобы учесть пользователей, которые обновляются лишь время от времени. [[conclicts-conflicts_install]] `CONFLICTS_INSTALL`:: Если пакет не может сосуществовать с другими пакетами (из-за конфликтов файлов, несовместимости во время выполнения и т.д.). Проверка `CONFLICTS_INSTALL` выполняется после этапа сборки и перед этапом установки. [[conclicts-conflicts_build]] `CONFLICTS_BUILD`:: Если порт не может быть собран, когда уже установлены другие определённые порты. Конфликты сборки не фиксируются в результирующем пакете. [[conclicts-conflicts]] `CONFLICTS`:: Если порт не может быть собран, когда определённый порт уже установлен и итоговый пакет не может сосуществовать с другим пакетом. Проверка `CONFLICTS` выполняется до этапа сборки и до этапа установки. Каждый элемент, разделённый пробелами, в значениях переменных `CONFLICTS*` сопоставляется с пакетами(кроме того, который собирается) с использованием правил раскрытия шаблонов имен файлов в оболочке shell. Это позволяет перечислить все варианты порта в списке конфликтов вместо необходимости исключать собираемый вариант из этого списка. Например, если установлен git-lite, `CONFLICTS_INSTALL=git git-lite` позволит выполнить: [source, shell] .... % make -C devel/git FLAVOR=lite all deinstall install .... Но следующая команда сообщит о конфликте, так как установленное имя базового пакета — `git-lite`, а `git` будет собран, но не может быть установлен вместе с `git-lite`: [source, shell] .... % make -C devel/git FLAVOR=default all deinstall install .... Без этой функции Makefile потребовал бы по одному `_flavor__CONFLICTS_INSTALL` для каждого варианта, перечисляя все остальные варианты. Наиболее распространённым содержимым одной из этих переменных является база пакета другого порта. База пакета — это имя пакета без указания версии, её можно получить, выполнив команду `make -V PKGBASE`. [[conflicts-ex1]] .Простой пример использования `CONFLICTS*` [example] ==== Пакет package:dns/bind99[] не может быть установлен, если присутствует пакет package:dns/bind910[], так как они устанавливают одинаковые файлы. Сначала соберите базовый пакет для использования: [source, shell] .... % make -C dns/bind99 -V PKGBASE bind99 % make -C dns/bind910 -V PKGBASE bind910 .... Затем добавьте в [.filename]#Makefile# пакета package:dns/bind99[]: [.programlisting] .... CONFLICTS_INSTALL= bind910 .... И добавьте в [.filename]#Makefile# пакета package:dns/bind910[]: [.programlisting] .... CONFLICTS_INSTALL= bind99 .... ==== Иногда только определенные версии другого порта несовместимы. В этом случае используйте полное имя пакета, включая версию. При необходимости используйте подстановочные символы шаблонов имён файлов оболочки, такие как `*` и `?`, чтобы охватить все необходимые версии. [[conflicts-ex2]] .Использование `CONFLICTS*` с шаблонами имён файлов. [example] ==== В версиях с 2.0 по 2.4.1_2 пакет package:deskutils/gnotime[] устанавливал встроенную версию пакета package:databases/qof[]. Чтобы отразить это прошлое, [.filename]#Makefile# пакета package:databases/qof[] содержит: [.programlisting] .... CONFLICTS_INSTALL= gnotime-2.[0-3]* \ gnotime-2.4.0* gnotime-2.4.1 \ gnotime-2.4.1_[12] .... Первый элемент соответствует версиям `2.0`–`2.3`, второй — всем редакциям `2.4.0`, третий — точно версии `2.4.1`, а последний — первой и второй редакциям версии `2.4.1`. package:deskutils/gnotime[] не имеет строки конфликтов, потому что его текущая версия не конфликтует ни с чем другим. ==== Переменная `DISABLE_CONFLICTS` может быть временно установлена при выполнении целей, на которые не влияют конфликты. Эту переменную не следует устанавливать в Makefiles портов. [source, shell] .... % make -DDISABLE_CONFLICTS patch .... [[install]] == Установка файлов [IMPORTANT] ==== Фаза `install` очень важна для конечного пользователя, так как она добавляет файлы в его систему. Все дополнительные команды, выполняемые в целях `*-install` [.filename]#Makefile# порта, должны выводиться на экран. _Не_ заглушайте эти команды с помощью `@` или `.SILENT`. ==== [[install-macros]] === Макросы `INSTALL_*` Используйте макросы, предоставленные в [.filename]#bsd.port.mk#, чтобы обеспечить корректные режимы файлов в целях `*-install` порта. Устанавливайте владельца напрямую в [.filename]#pkg-plist# в соответствующих записях, таких как `@(_владелец_,_группа_,)`, `@owner _владелец_` и `@group _группа_`. Эти операторы действуют до переопределения или до конца [.filename]#pkg-plist#, поэтому не забудьте сбросить их, когда они больше не нужны. Владелец по умолчанию — `root:wheel`. Дополнительную информацию см. в crossref:plist[plist-keywords-base,Базовые Ключевые Слова]. * `INSTALL_PROGRAM` — команда для установки бинарных исполняемых файлов. * `INSTALL_SCRIPT` — команда для установки исполняемых скриптов. * `INSTALL_LIB` — это команда для установки общих библиотек (но не статических библиотек). * `INSTALL_KLD` — это команда для установки загружаемых модулей ядра. Некоторые архитектуры не поддерживают удаление символов из модулей, поэтому используйте эту команду вместо `INSTALL_PROGRAM`. * `INSTALL_DATA` — это команда для установки общих данных, включая статические библиотеки. * `INSTALL_MAN` — это команда для установки man-страниц и другой документации (она ничего не сжимает). Эти переменные передаются команде man:install[1] с соответствующими флагами для каждой ситуации. [IMPORTANT] ==== Не используйте `INSTALL_LIB` для установки статических библиотек, так как их удаление делает их бесполезными. Вместо этого используйте `INSTALL_DATA`. ==== [[install-strip]] === Удаление символов из бинарных файлов и разделяемых библиотек Установленные бинарные файлы должны быть очищены от отладочной информации. Не очищайте бинарные файлы вручную, если это не является абсолютно необходимым. Макрос `INSTALL_PROGRAM` устанавливает и очищает бинарный файл одновременно. Макрос `INSTALL_LIB` делает то же самое с разделяемыми библиотеками. Когда файл необходимо очистить, но ни макросы `INSTALL_PROGRAM`, ни `INSTALL_LIB` не подходят, `${STRIP_CMD}` очищает программу или разделяемую библиотеку. Обычно это делается в цели `post-install`. Например: [.programlisting] .... post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl .... Когда необходимо удалить отладочную информацию из нескольких файлов: [.programlisting] .... post-install: .for l in geometry media body track world ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0 .endfor .... Используйте man:file[1] для файла, чтобы определить, был ли он подвергнут удалению символов. man:file[1] сообщает, что бинарные файлы либо `stripped` (удалены символы), либо `not stripped` (символы не удалены). Кроме того, man:strip[1] обнаружит программы, которые уже были подвергнуты удалению символов, и завершит работу без ошибок. [IMPORTANT] ==== Когда определён `WITH_DEBUG`, elf-файлы _не должны_ быть очищены. Переменные (`STRIP_CMD`, `INSTALL_PROGRAM`, `INSTALL_LIB`, ...) и crossref:uses[uses,`USES`], предоставляемые фреймворком, обрабатывают это автоматически. Некоторое программное обеспечение добавляет `-s` к своим `LDFLAGS`. В этом случае либо удалите `-s`, если установлен `WITH_DEBUG`, либо удалите его безусловно и используйте `STRIP_CMD` в `post-install`. ==== [[install-copytree]] === Установка целого дерева файлов Иногда необходимо установить большое количество файлов с сохранением их иерархической структуры. Например, копирование всего дерева каталогов из `WRKSRC` в целевой каталог под `PREFIX`. Обратите внимание, что `PREFIX`, `EXAMPLESDIR`, `DATADIR` и другие переменные путей всегда должны предваряться `STAGEDIR` для соблюдения процедуры промежуточной установки (см. crossref:special[staging,Промежуточная установка]). Для этой ситуации существуют два макроса. Преимущество использования этих макросов вместо `cp` заключается в том, что они гарантируют целевым файлам правильные значения владельца и разрешений. Первый макрос, `COPYTREE_BIN`, устанавливает все установленные файлы как исполняемые, что делает его подходящим для установки в [.filename]#PREFIX/bin#. Второй макрос, `COPYTREE_SHARE#, не устанавливает исполняемые разрешения для файлов и, следовательно, подходит для установки файлов в [.filename]#PREFIX/share#. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) .... Этот пример установит содержимое каталога [.filename]#examples# из дистрибутива вендора в соответствующее расположение примеров порта. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${DATADIR}/summer (cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} "June July August" ${STAGEDIR}${DATADIR}/summer) .... И этот пример установит данные летних месяцев в подкаталог [.filename]#summer# каталога [.filename]#DATADIR#. Дополнительные аргументы `find` могут быть переданы через третий аргумент макросов `COPYTREE_*`. Например, чтобы установить все файлы из первого примера, кроме Makefiles, можно использовать следующие команды. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} (cd ${WRKSRC}/examples && \ ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} "! -name Makefile") .... Эти макросы не добавляют установленные файлы в [.filename]#pkg-plist#. Их необходимо добавлять вручную. Для дополнительной документации (`PORTDOCS`, см. crossref:makefiles[install-documentation, Установка дополнительной документации]) и примеров (`PORTEXAMPLES`), префиксы `%%PORTDOCS%%` или `%%PORTEXAMPLES%%` должны быть добавлены в [.filename]#pkg-plist#. [[install-documentation]] === Установка дополнительной документации Если у программного обеспечения есть документация, помимо стандартных страниц man и info, которая может быть полезна пользователю, установите её в `DOCSDIR`. Это можно сделать, как и в предыдущем пункте, в цели `post-install`. Создайте новый каталог для порта. Имя каталога — `DOCSDIR`. Обычно оно равно `PORTNAME`. Однако, если пользователю может потребоваться установка разных версий порта одновременно, можно использовать полное имя `PKGNAME`. Поскольку устанавливаются только файлы, перечисленные в [.filename]#pkg-plist#, можно безопасно всегда устанавливать документацию в `STAGEDIR` (см. crossref:special[staging,Staging]). Поэтому блоки `.if` требуются только в тех случаях, когда устанавливаемые файлы достаточно велики, чтобы вызвать значительные накладные расходы на ввод-вывод. [.programlisting] .... post-install: ${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR} .... С другой стороны, если в порте есть опция DOCS, установите документацию в цели `post-install-DOCS-on`. Эти цели описаны в crossref:makefiles[options-targets, Дополнительные цели сборки, `_target_-_OPT_-on` и `_target_-_OPT_-off`]. Вот несколько полезных переменных и их стандартное раскрытие при использовании в [.filename]#Makefile#: * `DATADIR` раскрывается в [.filename]#PREFIX/share/PORTNAME#. * `DATADIR_REL` раскрывается в [.filename]#share/PORTNAME#. * `DOCSDIR` раскрывается в [.filename]#PREFIX/share/doc/PORTNAME#. * `DOCSDIR_REL` раскрывается в [.filename]#share/doc/PORTNAME#. * `EXAMPLESDIR` раскрывается в [.filename]#PREFIX/share/examples/PORTNAME#. * `EXAMPLESDIR_REL` раскрывается в [.filename]#share/examples/PORTNAME#. [NOTE] ==== Опция `DOCS` управляет только дополнительной документацией, устанавливаемой в `DOCSDIR`. Она не применяется к стандартным man-страницам и info-страницам. Содержимое, устанавливаемое в `EXAMPLESDIR`, контролируется опцией `EXAMPLES`. ==== Эти переменные экспортируются в `PLIST_SUB`. Их значения будут представлены там в виде путей относительно [.filename]#PREFIX#, если это возможно. То есть, [.filename]#share/doc/PORTNAME# будет заменено на `%%DOCSDIR%%` в списке упаковки по умолчанию и так далее. (Подробнее о подстановках в [.filename]#pkg-plist# см. crossref:plist[plist-sub,здесь].) Все условно устанавливаемые файлы и каталоги документации включаются в [.filename]#pkg-plist# с префиксом `%%PORTDOCS%%`, например: [.programlisting] .... %%PORTDOCS%%%%DOCSDIR%%/AUTHORS %%PORTDOCS%%%%DOCSDIR%%/CONTACT .... В качестве альтернативы перечислению файлов документации в [.filename]#pkg-plist#, порт может установить переменную `PORTDOCS` в список имён файлов и шаблонов имен файлов shell для добавления в итоговый список упаковки. Имена будут относительны к `DOCSDIR`. Поэтому порт, использующий `PORTDOCS` и нестандартное расположение документации, должен соответствующим образом установить `DOCSDIR`. Если в `PORTDOCS` указан каталог или он соответствует шаблону из этой переменной, всё поддерево содержащихся файлов и каталогов будет зарегистрировано в итоговом списке упаковки. Если опция `DOCS` отключена, файлы и каталоги, перечисленные в `PORTDOCS`, не будут установлены или добавлены в список упаковки порта. Установка документации в `PORTDOCS`, как показано выше, остаётся на усмотрение самого порта. Типичный пример использования `PORTDOCS`: [.programlisting] .... PORTDOCS= README.* ChangeLog docs/* .... [NOTE] ==== Эквивалентами `PORTDOCS` для файлов, установленных в `DATADIR` и `EXAMPLESDIR`, являются `PORTDATA` и `PORTEXAMPLES` соответственно. Содержимое файла [.filename]#pkg-message# отображается при установке. Подробности см. в разделе crossref:pkg-files[porting-message,использование файла [.filename]#pkg-message#]. Файл [.filename]#pkg-message# не нужно добавлять в [.filename]#pkg-plist#. ==== [[install-subdirs]] === Подкаталоги в `PREFIX` Попробуйте сделать так, чтобы порт размещал файлы в правильных подкаталогах `PREFIX`. Некоторые порты собирают всё в кучу и помещают в подкаталог с именем порта, что неверно. Также многие порты размещают все файлы, кроме бинарников, заголовочных файлов и страниц руководства, в подкаталоге [.filename]#lib#, что плохо согласуется с парадигмой BSD. Многие из этих файлов должны быть перемещены в один из следующих каталогов: [.filename]#etc# (файлы настройки/конфигурации), [.filename]#libexec# (исполняемые файлы для внутреннего использования), [.filename]#sbin# (исполняемые файлы для суперпользователей/администраторов), [.filename]#info# (документация для браузера info) или [.filename]#share# (архитектурно-независимые файлы). Подробности см. в man:hier[7]; правила, действующие для [.filename]#/usr#, в основном применимы и к [.filename]#/usr/local#. Исключение составляют порты, связанные с USENET "news". Они могут использовать [.filename]#PREFIX/news# в качестве места назначения для своих файлов. [[binary-alias]] == Используйте `BINARY_ALIAS` для переименования команд вместо исправления сборки Когда определена переменная `BINARY_ALIAS`, будут созданы символьные ссылки на указанные команды в каталоге, который будет добавлен в начало переменной `PATH`. Используйте это для замены жёстко заданных команд, от которых зависит этап сборки, без необходимости исправлять какие-либо файлы сборки. [[binary-alias-ex1]] .Использование `BINARY_ALIAS` для предоставления `gsed` в качестве `sed` [example] ==== Некоторые порты ожидают, что `sed` будет вести себя как GNU sed и используют возможности, которые man:sed[1] не предоставляет. GNU sed доступен в пакете package:textproc/gsed[] на FreeBSD. Используйте `BINARY_ALIAS` для замены `sed` на `gsed` на время сборки: [.programlisting] .... BUILD_DEPENDS= gsed:textproc/gsed ... BINARY_ALIAS= sed=gsed .... ==== [[binary-alias-ex2]] .Использование `BINARY_ALIAS` для создания псевдонимов жестко заданных команд `python3` [example] ==== Порт, в котором есть жёсткая ссылка на `python3` в скриптах сборки, требует его наличия в `PATH` во время сборки. Используйте `BINARY_ALIAS` для создания псевдонима, указывающего на нужный бинарный файл Python 3: [.programlisting] .... USES= python:3.4+,build ... BINARY_ALIAS= python3=${PYTHON_CMD} .... См. crossref:special[using-python,Использование Python] для получения дополнительной информации о `USES=python`. ==== [NOTE] ==== Бинарные псевдонимы создаются после обработки зависимостей, указанных через `BUILD_DEPENDS` и `LIB_DEPENDS`, но до цели `configure`. Это приводит к различным ограничениям. Например, программы, установленные через `TEST_DEPENDS`, нельзя использовать для создания бинарного псевдонима, так как тестовые зависимости, указанные таким образом, обрабатываются после создания бинарных псевдонимов. ==== diff --git a/documentation/content/ru/books/porters-handbook/versions/_index.adoc b/documentation/content/ru/books/porters-handbook/versions/_index.adoc index de0e82114f..9be7515004 100644 --- a/documentation/content/ru/books/porters-handbook/versions/_index.adoc +++ b/documentation/content/ru/books/porters-handbook/versions/_index.adoc @@ -1,7621 +1,7621 @@ --- description: 'Список изменений файла sys/param.h' params: path: /books/porters-handbook/versions/ prev: books/porters-handbook/uses showBookMenu: true tags: ["FreeBSD versions"] title: 'Глава 18. Значения __FreeBSD_version' weight: 18 --- [[versions]] = Значения `__FreeBSD_version` :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::[] Здесь удобный список значений `__FreeBSD_version` как определено в https://cgit.freebsd.org/src/tree/sys/sys/param.h[sys/param.h]: [[versions-15]] == Версии FreeBSD 15 [[freebsd-versions-table-15]] .Значения `__FreeBSD_version` в FreeBSD 15 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |1500000 |gitref:29a16ce065dbc28bc9e87c9bfadb08bb58b137e4[repository="src",length=12] |24 августа 2023 |15.0-CURRENT. |1500001 |gitref:a6662c37b6ffee46e18be5f7570149edc64c1d0b[repository="src",length=12] |17 сентября 2023 |15.0-CURRENT после реализации `fpu_kern_enter` и `fpu_kern_leave` для powerpc. |1500002 |gitref:17f5e2b904aff8e4863199a137ee21ef0939bcf4[repository="src",length=12] |18 октября 2023 |15.0-CURRENT после изменения внутреннего KAPI между модулями nfscommon и nfscl. |1500003 |gitref:ef85fd507e6e1784a726bccd485129e00bb63311[repository="src",length=12] |1 ноября 2023 |15.0-CURRENT после удаления кода обратной совместимости для преобразования inode64. |1500004 |gitref:7fabea328fed60d5207b262d2372e85a7f731eef[repository="src",length=12] |23 ноября 2023 |15.0-CURRENT после добавления новой функции VFS под названием `vfs_exjail_clone()`, которая будет использоваться модулем ZFS. |1500005 |gitref:21fce617d1de231a30833cdd9819ef61277b08d8[repository="src",length=12] |27 ноября 2023 |15.0-CURRENT после серии механических изменений в дереве: идентификаторы SCCS удалены, закомментированные строки с авторскими правами удалены с помощью `#if 0`, механические исправления стиля после этих изменений и удаление некоторых макросов из [.filename]#sys/cdefs.h#. |1500006 |gitref:c711af7727824da79d87f375f3d6829feec3799a[repository="src",length=12] |8 декабря 2023 |15.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-17.0.6-0-g6009708b4367, также известного как релиз 17.0.6. |1500007 |gitref:8ccd0b876e67fda6249f294ff484798cc1e1569f[repository="src",length=12] |11 декабря 2023 |15.0-CURRENT после предоставления доступа к execvpe для совместимости с Linux в libc. |1500008 |gitref:9bf957fc9b378e0f9e65eb97e84c2166b450fccc[repository="src",length=12] |24 декабря 2023 |15.0-CURRENT после изменений в LinuxKPI. |1500009 |gitref:b068bb09a1a82d9fef0e939ad6135443a959e290[repository="src",length=12] |11 января 2024 |15.0-CURRENT после добавления man:vnode_pager_clean_async[9] и man:vnode_pager_clean_sync[9]. |1500010 |gitref:a2da1bdb61bc2d9db0b4268f53281e7c0bbce0bc[repository="src",length=12] |12 января 2024 |15.0-CURRENT после изменения внутреннего KAPI между модулями nfscommon и nfscl. |1500011 |gitref:a2da1bdb61bc2d9db0b4268f53281e7c0bbce0bc[repository="src",length=12] |17 января 2024 |15.0-CURRENT после добавления поддержки zfs.dataset в man:jail[8]. |1500012 |gitref:120ceebab5d4947dfc80d7492effa034a925d43e[repository="src",length=12] |24 января 2024 |15.0-CURRENT после добавления man:kern_openatfp[9] и man:kcmp[2]. |1500013 |gitref:d04abb05375d3525132f1e9f78090db3d0d27f14[repository="src",length=12] |7 февраля 2024 |15.0-CURRENT после добавления libsys. |1500014 |gitref:ed27ae8df4b10f67289a32458d89d143e758f6d4[repository="src",length=12] |11 февраля 2024 |15.0-CURRENT после переключения clang и других исполняемых файлов LLVM на сборку как PIE. |1500015 |gitref:a7b9f4d96e8bdc30db27ec7a193a8d8fdf7c652c[repository="src",length=12] |13 марта 2024 |15.0-CURRENT после удаления избыточных аргументов `type` и `rid` из нескольких функций в API ресурсов new-bus. |1500016 |gitref:60bc9617e79e99bdf670304923f3baed4b749ad3[repository="src",length=12] |18 марта 2024 |15.0-CURRENT после введения man:livedump_start_vnode[9]. |1500017 |gitref:bcd401b5a39c6186bb1fe450286299f2a481244c[repository="src",length=12] |20 марта 2024 |15.0-CURRENT после исправления утверждения или сбоя clang при сборке последних библиотек boost. |1500018 |gitref:0192eda105b367d4670205547e8e830e3716bea3[repository="src",length=12] |6 апреля 2024 |15.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-18.1.3-0-gc13b7485b879, также известной как релиз 18.1.3. |1500019 |gitref:e03e8b07743385e5b199409074fb60b1a9ed1fac[repository="src",length=12] |31 мая 2024 |15.0-CURRENT после переопределения `CLOCK_BOOTTIME` как псевдонима для `CLOCK_MONOTONIC` вместо `CLOCK_UPTIME`. |1500020 |gitref:7818c2d37c2c600fc9ad6f2a0951e50dd21b17c8[repository="src",length=12] |12 июля 2024 |15.0-CURRENT после удаления поддержки сборки armv6. |1500021 |gitref:24388fccd551f79f64e54099a7d78196535c0a29[repository="src",length=12] |21 июля 2024 |15.0-CURRENT после изменений в LinuxKPI. |1500022 |gitref:a1740cb93639648b41055958ad8c7f6083efdc96[repository="src",length=12] |29 июля 2024 |15.0-CURRENT после удаления поддержки подкачки стека ядра. |1500023 |gitref:1206cf04a717a55bc15255ed043b066941cb43f2[repository="src",length=12] |30 июля 2024 |15.0-CURRENT после добавления новых флагов в man:malloc[9]. |1500024 |gitref:e3953c036f9d66c85b8e19f99f0710b3288ce5fb[repository="src",length=12] |2 октября 2024 |15.0-CURRENT после увеличения версии [.filename]#libmd.so.6# до [.filename]#libmd.so.7#. |1500025 |gitref:9d52823bf1dfac237e58b5208299aaa5e2df42e9[repository="src",length=12] |6 октября 2024 |15.0-CURRENT после расширения поля `flags` в `vm_object`. |1500026 |gitref:f3dbef108212460489ae68b4c47e20b73984f433[repository="src",length=12] |23 октября 2024 |15.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-19.1.2-0-g7ba7d8e2f7b6, также известной как релиз 19.1.2. |1500027 |gitref:893d044346d5ae5fe10cc188b8b0762efd2a5b27[repository="src",length=12] |14 ноября 2024 |15.0-CURRENT после скрытия `struct ifnet` и изменения KPI регистрации устройств man:sound[4]. |1500028 |gitref:cab31f5633c1ffdd8b24749a3c9dd22c59568503[repository="src",length=12] |25 ноября 2024 |15.0-CURRENT после добавления флага `TDA_PSELECT` для раннего восстановления масок сигналов. |1500029 |gitref:46297859a74563dde6fc5bff9f9ecded9fb61ba6[repository="src",length=12] |6 декабря 2024 |15.0-CURRENT после добавления `bus_attach_children`, `bus_detach_children` и `bus_identify_children`. |1500030 |gitref:b196276c20b577b364372f1aa1a646b9ce34bf5c[repository="src",length=12] |2 января 2025 |15.0-CURRENT после изменения `bus_generic_detach` для удаления дочерних устройств после их отключения. |1500037 |gitref:7acd5af48cf1870ec48d5910dff1a26466d98074[repository="src",length=12] |12 апреля 2025 |15.0-CURRENT после внесения изменений в alloc в LinuxKPI. |1500038 |gitref:[repository="src",length=12] |19 апреля 2025 |15.0-CURRENT после удаления vm_page_next() и _prev. |1500039 |gitref:[repository="src",length=12] |4 мая 2025 |15.0-CURRENT после введения правильно типизированных jiffies. |1500040 |gitref:[repository="src",length=12] |4 мая 2025 |15.0-CURRENT после изменения внутреннего API между модулями nfscommon и nfscl. |1500045 |gitref:a02180cf60a6a0102669b678e9c81ad9f1aa4d91[repository="src",length=12] |3 июня 2025 |15.0-CURRENT после внесения изменений dma-mapping.h из drm-kmod в LinuxKPI. |1500062 |gitref:567e6250c003eeb251b4bc8dbe60d2adabab2988[repository="src",length=12] |17 августа 2025 |15.0-CURRENT после добавления VTYPE_ISDEV(), VN_ISDEV() и VATTR_ISDEV(). |=== [[versions-14]] == Версии FreeBSD 14 [[freebsd-versions-table-14]] .Значения `__FreeBSD_version` в FreeBSD 14 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |1400000 |gitref:a53ce3fc4938e37d5ec89304846203d2083c61a2[repository="src",length=12] |22 января 2021 |14.0-CURRENT. |1400001 |gitref:739ecbcf1c4fd22b5f6ee0bb180a67644046a3e0[repository="src",length=12] |23 января 2021 |14.0-CURRENT после добавления поддержки символьных ссылок к бесблокировочному поиску. |1400002 |gitref:2cf84258922f306a3f84866685d2f5346f67db58[repository="src",length=12] |26 января 2021 |14.0-CURRENT после исправления утверждения clang при сборке порта package:devel/onetbb[]. |1400003 |gitref:d386f3a3c32f0396aa7995349dd65d6c59711393[repository="src",length=12] |28 января 2021 |14.0-CURRENT после добавления различных компонентов LinuxKPI, конфликтующих с drm-kmod. |1400004 |gitref:68f6800ce05c386ff045b4416d8595d09c4d8fdd[repository="src",length=12] |8 февраля 2021 |14.0-CURRENT после изменения интерфейсов ядра для диспетчеризации криптографических операций. |1400005 |gitref:45eabf5754ac1d291bd677fdf29f59ce4bbc2c8f[repository="src",length=12] |17 февраля 2021 |14.0-CURRENT после изменения API man:ptrace[2] `PT_GETDBREGS`/`PT_SETDBREGS` на arm64. |1400006 |gitref:c96151d33509655efb7fb26768cb56a041c176f1[repository="src",length=12] |17 марта 2021 |14.0-CURRENT после добавления перечисляющих ioctl в man:sndstat[4]. |1400007 |gitref:d36d6816151705907393889d661cbfd25c630ca8[repository="src",length=12] |6 апреля 2021 |14.0-CURRENT после исправления некорректного `dlpi_tls_data`. |1400008 |gitref:e152bbecb221a592e7dbcabe3d1170a60f0d0dfe[repository="src",length=12] |11 апреля 2021 |14.0-CURRENT после изменения внутреннего KAPI между модулями `krpc` и NFS. |1400009 |gitref:9ca874cf740ee68c5742df8b5f9e20910085c011[repository="src",length=12] |20 апреля 2021 |14.0-CURRENT после добавления поддержки TCP LRO для VLAN и VxLAN. |1400010 |gitref:a3a02acde1009f03dc78e979e051acee9f9247c2[repository="src",length=12] |21 апреля 2021 |14.0-CURRENT после изменения схемы и определений `nvlist` для ioctl man:sndstat[4]. |1400015 |gitref:d72cd275187c6399caf0ca4125292dc7e55fa478[repository="src",length=12] |25 мая 2021 |14.0-CURRENT после добавления дополнительных изменений LinuxKPI, требующих корректировки drm-kmod. |1400016 |gitref:21e3c1fbe2460f144f6d4dfd61c3346b2de59667[repository="src",length=12] |25 мая 2021 |14.0-CURRENT после удаления поддержки программных бэкендов KTLS. |1400017 |gitref:beb817edfe22cdea91e19a60c42caabd9404da48[repository="src",length=12] |25 мая 2021 |14.0-CURRENT после добавления `crypto_cursor_segment()`. |1400018 |gitref:a4b07a2701f568c2c0f0c0426091f1489244a92d[repository="src",length=12] |30 мая 2021 |14.0-CURRENT после разрешения реализации man:VFS_QUOTACTL[9] указывать изменения состояния занятости. |1400019 |gitref:37d64dcdfa519157aff9711f1f226ad7bd778f46[repository="src",length=12] |7 июня 2021 |14.0-CURRENT после включения `pr_err_once()` в LinuxKPI [.filename]#printk.h#. |1400020 |gitref:8a1a42b2a7a428fb97fda9f19fd0d67a4eec7535[repository="src",length=12] |9 июня 2021 |14.0-CURRENT после добавления макросов для `might_lock_nested()` и `lockdep_(re/un/)pin_lock()` в LinuxKPI. |1400021 |gitref:b47f461c8e67253fdb394968428b760e880baa08[repository="src",length=12] |10 июня 2021 |14.0-CURRENT после добавления макроса `list_for_each_entry_lockless()` в LinuxKPI. |1400022 |gitref:40cc9a3a6b81a65a03712dfd93bbed48552a97ad[repository="src",length=12] |11 июня 2021 |14.0-CURRENT после коммита gitref:e1a907a25cfa422c0d1acaf9f91352ada04f4bca[repository="src",length=12] изменил внутренний KAPI между модулями `krpc` и nfsserver. |1400023 |gitref:d409305fa3838fb39b38c26fc085fb729b8766d5[repository="src",length=12] |13 июня 2021 |14.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-12.0.0-0-gd28af7c654d8, также известной как релиз 12.0.0. |1400024 |gitref:41dfd8bd6466fd39957dee2614d88c81cdf420a7[repository="src",length=12] |18 июня 2021 |14.0-CURRENT после различных добавлений в LinuxKPI. |1400025 |gitref:5fa1eb1cd927219070b5753b64114a9240d76bf8[repository="src",length=12] |5 июля 2021 |14.0-CURRENT после различных добавлений в LinuxKPI. |1400026 |gitref:fad3f322efb53d4924fdda34f9f23f881659c269[repository="src",length=12] |16 июля 2021 |14.0-CURRENT после изменения внутреннего KAPI между модулями nfscommon и nfsd. |1400027 |gitref:cc55ee8009a550810d38777fd6ace9abf3a2f6b4[repository="src",length=12] |28 июля 2021 |14.0-CURRENT после добавления вспомогательных функций LSE атомарных операций вне строки в [.filename]#libcompiler_rt.a# для архитектуры aarch64. |1400028 |gitref:792b602a337ddc5efaa5e5326d9433fe3da7f303[repository="src",length=12] |31 июля 2021 |14.0-CURRENT после обеспечения потокобезопасности разделов FPU в LinuxKPI. |1400029 |gitref:245ec7651e4221043d1032fb3f82f335dc65fc7f[repository="src",length=12] |5 августа 2021 |14.0-CURRENT после добавления man:fspacectl[2], man:vn_deallocate[9] и man:VOP_DEALLOCATE[9]. |1400030 |gitref:95941b963606f6e03282cd6f866f3166dcedfa5b[repository="src",length=12] |12 августа 2021 |14.0-CURRENT после изменений параметров man:VOP_DEALLOCATE[9] и добавления поддержки man:fspacectl[2] для POSIX разделяемой памяти. |1400031 |gitref:1a4c5061fc5ba8f2eee41456a6873547915f268a[repository="src",length=12] |24 августа 2021 |14.0-CURRENT после изменения man:fspacectl[2], man:vn_deallocate[9] и man:VOP_DEALLOCATE[9] для обновления rmsr.r_offset до значимого значения. |1400032 |gitref:76321d2d432ed270d93b282e54e59b708c0cf3b4[repository="src",length=12] |25 августа 2021 |14.0-CURRENT после изменения man:fspacectl[2], man:vn_deallocate[9] и man:VOP_DEALLOCATE[9] для упрощения подсчёта количества обнулённых байт. |1400033 |gitref:c751d067c166db71ce8bf3a323c62ac3428bd32a[repository="src",length=12] |7 сентября 2021 |14.0-CURRENT после перемещения блокировок буфера сокета в содержащий сокет и переименования sb(un)lock в SOCK_IO_RECV_LOCK, SOCK_IO_RECV_UNLOCK, SOCK_IO_SEND_LOCK и SOCK_IO_SEND_UNLOCK. |1400034 |gitref:c751d067c166db71ce8bf3a323c62ac3428bd32a[repository="src",length=12] |29 сентября 2021 |14.0-CURRENT после изменений в LinuxKPI. |1400035 |gitref:16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0[repository="src",length=12] |4 октября 2021 |14.0-CURRENT после разделения libtinfow и libncurses. |1400036 |gitref:ac847dbf73685a5df9f70bbcdefa9fdeb559071d[repository="src",length=12] |6 октября 2021 |14.0-CURRENT после расширения шифров AES-CCM и Chacha20-Poly1305 в OCF для поддержки нескольких длин одноразовых номеров. |1400037 |gitref:2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3[repository="src",length=12] |11 октября 2021 |14.0-CURRENT после удаления аргумента thread из man:VOP_STAT[9] и `fo_stat`. |1400038 |gitref:0d6516b453469ce1d92ec903c4c4df9ee08be0f9[repository="src",length=12] |17 октября 2021 |14.0-CURRENT после того, как LinuxKPI получил поддержку отложенного выделения BAR. |1400039 |gitref:bd49c454ca62170506a98959c1acab7ad50c3276[repository="src",length=12] |19 октября 2021 |14.0-CURRENT после изменений в аллокаторе страниц. |1400040 |gitref:f38bef2ce417d6270f32b4ed17cec84bfd95d548[repository="src",length=12] |30 октября 2021 |14.0-CURRENT после увеличения номера версии разделяемой библиотеки libdialog. |1400041 |gitref:0c276dee030b241e12e1ceb1b2ab619004f08ce1[repository="src",length=12] |6 ноября 2021 |14.0-CURRENT после изменения аргументов для man:VOP_ALLOCATE[9]. |1400042 |gitref:20aa359773befc8182f6b5dcb5aad7390cab6c26[repository="src",length=12] |13 ноября 2021 |14.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-13.0.0-0-gd7b669b3a303, также известного как релиз 13.0.0. |1400043 |gitref:7e1d3eefd410ca0fbae5a217422821244c3eeee4[repository="src",length=12] |25 ноября 2021 |14.0-CURRENT после удаления неиспользуемого аргумента потока из man:NDINIT[9]*. |1400044 |gitref:ec434c85b46dd715da1940e2a8911bf476b0e477[repository="src",length=12] |9 декабря 2021 |14.0-CURRENT после изменения встроенных программных криптографических преобразований для поддержки AEAD-шифров и изменения аутентификационных преобразований Blake-2S/B для поддержки Init перед Setkey, как в других аутентификационных преобразованиях. |1400045 |gitref:b214fcceacad6b842545150664bd2695c1c2b34f[repository="src",length=12] |15 декабря 2021 |14.0-CURRENT после изменения аргумента cookies в man:VOP_READDIR[9] на `**uint64_t`. |1400046 |gitref:e2650af157bc7489deaf2c9054995f0f88a6e5da[repository="src",length=12] |30 декабря 2021 |14.0-CURRENT после приведения макросов CPU_SET в соответствие с glibc. |1400047 |gitref:ed6417cd8d0bb5a2c175fce9d8e4a495fae9e9f4[repository="src",length=12] |January 17, 2022 |14.0-CURRENT после множества изменений LinuxKPI, необходимых для drm-kmod. |1400048 |gitref:dd2f7a4b45eb1285e710cfce60cb77f7c11f8075[repository="src",length=12] |18 января 2022 |14.0-CURRENT после добавления . |1400049 |gitref:2c4b65cc3d227f31864e183c15f6c42e2c596cd9[repository="src",length=12] |January 24, 2022 |14.0-CURRENT after adding . |1400050 |gitref:213e91399b7998554d787bb290109ebe602aa279[repository="src",length=12] |25 января 2022 |14.0-CURRENT после iflib добавляет возможность, при которой драйвер может установить свою собственную функцию выбора TX-очереди как `ift_txq_select` в структуре `if_txrx`. |1400051 |gitref:59d465e200bb7058dfdb183c061730c10dd5bc03[repository="src",length=12] |25 января 2022 |14.0-CURRENT после добавления поддержки i2c для LinuxKPI. |1400052 |gitref:05f0b24bfb3416606c8ea02bc1bdb9bcee7aee0c[repository="src",length=12] |February 14, 2022 |14.0-CURRENT после добавления поддержки GUID_INIT и pm_qos.h для LinuxKPI. |1400053 |gitref:ba87e9bf74202b08b8e3b0a297b9b88f6869fbfb[repository="src",length=12] |February 17, 2022 |14.0-CURRENT после добавления mmap_lock.h в LinuxKPI. |1400054 |gitref:50bb3a33d879536e86e8a23365f070ef00b5cb32[repository="src",length=12] |28 марта 2022 |14.0-CURRENT после изменения `irq_work_queue` для возврата типа bool в LinuxKPI в соответствии с API 5.10. |1400055 |gitref:d69af4758be912625ec08656ba64eb90a98c9a7f[repository="src",length=12] |29 марта 2022 |14.0-CURRENT после добавления `for_each_sgtable_dma_sg` и `for_each_sgtable_dma_page` в LinuxKPI |1400056 |gitref:ab8ac4c28574a42a2891b2e2341f802949c1fb57[repository="src",length=12] |31 марта 2022 |14.0-CURRENT после обновления zlib до версии 1.2.12 |1400057 |gitref:e68b35e40881a1bd858e1b4b5003123a484fd7cd[repository="src",length=12] |22 апреля 2022 |14.0-CURRENT после изменения прототипа udp_tun_func_t(). |1400058 |gitref:2e32d4e41d205d6f14834f87306a77ff77b9c0bd[repository="src",length=12] |7 мая 2022 |14.0-CURRENT после изменений в newbus для удаления аргументов devclass. |1400059 |gitref:3a9a9c0ca44ec535dcf73fe8462bee458e54814b[repository="src",length=12] |14 мая 2022 |14.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-14.0.3-0-g1f9140064dfb, также известной как релиз 14.0.3. |1400060 |gitref:85d7875d42913c2cb10a007a1be05b210dc6aab2[repository="src",length=12] |6 июня 2022 |14.0-CURRENT после исправлений LinuxKPI dmi_matches(). |1400061 |gitref:c4c5981c14d5bd69e9df9ae691069ec4c2e92174[repository="src",length=12] |8 июня 2022 |14.0-CURRENT после изменений структуры man:mbuf[9]. |1400062 |gitref:8c309d48aabf1cb469334c7716033f177a2715c0[repository="src",length=12] |18 июня 2022 |14.0-CURRENT после изменений структуры `kinfo_file`. |1400063 |gitref:8cff8e6e13a6d3ccff40fc0d8d97f5aef22a8f4d[repository="src",length=12] |29 июня 2022 |14.0-CURRENT после множества изменений LinuxKPI, необходимых для drm-kmod. |1400064 |gitref:ddd9004e7a5dbf02c34ef0effcef90f7d5df357d[repository="src",length=12] |18 июля 2022 |14.0-CURRENT после удаления OBJT_DEFAULT. |1400065 |gitref:b273f93657cf0e6f2c6ee4d0f40a43656233c6d0[repository="src",length=12] |8 августа 2022 |14.0-CURRENT после множества изменений LinuxKPI, необходимых для drm-kmod. |1400066 |gitref:ff7812ee7d444b738a454064f9639c3feb5743e8[repository="src",length=12] |18 августа 2022 |14.0-CURRENT после множества изменений LinuxKPI, необходимых для drm-kmod. |1400069 |gitref:f95c0bc89ea4fcde04b0990d57e842ef387ea896[repository="src",length=12] |22 сентября 2022 |14.0-CURRENT после нескольких изменений в LinuxKPI. |1400070 |gitref:6bddde307e21eba297ac3f3e534b4cf3be81dfe2[repository="src",length=12] |22 сентября 2022 |14.0-CURRENT после изменений KPI в pmap_unmapdev() и kmem_*(). |1400071 |gitref:d3f96f661050e9bd21fe29931992a8b9e67ff189[repository="src",length=12] |26 сентября 2022 |14.0-CURRENT после изменений KPI, когда списки OID sysctl были преобразованы в RB-деревья. |1400072 |gitref:8a96874eeeee5195b0b0952b77227bef6a26d1a6[repository="src",length=12] |22 сентября 2022 |14.0-CURRENT после изменения прототипа `qsort_r` для соответствия POSIX. |1400073 |gitref:9c950139051298831ce19d01ea5fb33ec6ea7f89[repository="src",length=12] |17 октября 2022 |14.0-CURRENT after introduction of v2 of TX Queue Select Functionality. |1400074 |gitref:e28932c643e891294a49f386ba65322cf8410225[repository="src",length=12] |9 декабря 2022 |14.0-CURRENT после добавления запасных слотов fops в fileops. |1400078 |gitref:4b56afaf7bf4fa37bae5b26fd93ee1ff5969c1bb[repository="src",length=12] |13 января 2023 |14.0-CURRENT после изменения LinuxKPI pci.h. |1400079 |gitref:3264f6b88fce7c5437d205685863617d8f6a22dd[repository="src",length=12] |8 февраля 2023 |14.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-15.0.7-0-g8dfdcc7b7bf6, также известного как релиз 15.0.7. |1400084 |gitref:ea3061526e9ce5d3b65932c1d3e4437abd556d65[repository="src",length=12] |23 марта 2023 |14.0-CURRENT после изменения структур reg, gpreg, trapframe и pcb для архитектуры arm64. |1400085 |gitref:1cebc9298cf2272da46c3c574d06a80ce59854aa[repository="src",length=12] |28 марта 2023 |14.0-CURRENT после нескольких изменений в LinuxKPI. |1400086 |gitref:c17eb99a66e7d1e8a64458a969eeb7649f827493[repository="src",length=12] |8 апреля 2023 |14.0-CURRENT после изменений аргументов vn_lock_pair(). |1400087 |gitref:af22da75a035e25cb47cd3f2eabe5a84d8a5cb34[repository="src",length=12] |22 апреля 2023 |14.0-CURRENT после обновлений LinuxKPI. |1400088 |gitref:97583aa2567589cb83540d2d9de1980b76db9a99[repository="src",length=12] |24 апреля 2023 |14.0-CURRENT после миграции LinuxKPI на IfAPI. |1400089 |gitref:9fb6718d1b180c341373b25c03dbfc221ddee311[repository="src",length=12] |25 апреля 2023 |14.0-CURRENT после динамического выделения массива stoppcbs в smp. |1400090 |gitref:653738e895ba022be1179a95a85089e7bc66dbbe[repository="src",length=12] |7 июня 2023 |14.0-CURRENT после того, как ptrace начал очищать TDB_BORN во время PT_DETACH. |1400091 |gitref:a681cba16d8967651a2146385ce44a2bfeb1c4c3[repository="src",length=12] |22 июня 2023 |14.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-16.0.6-0-g7cbf1a259152, также известного как релиз 16.0.6. |1400092 |gitref:9ead001d5b42ef9cba04757c9e7ee74c06037139[repository="src",length=12] |24 июня 2023 |14.0-CURRENT после импорта OpenSSL 3.0.9 в базовую систему. |1400093 |gitref:ba8cc6d7271a50fec978a1d3a088aec7985fae48[repository="src",length=12] |5 июля 2023 |14.0-CURRENT после использования __enum_uint8 для vtype и vstate в VFS |1400097 |gitref:29a16ce065dbc28bc9e87c9bfadb08bb58b137e4[repository="src",length=12] |24 августа 2023 |14.0-STABLE после ветвления stable/14 |1400500 |gitref:29a16ce065dbc28bc9e87c9bfadb08bb58b137e4[repository="src",length=12] |8 сентября 2023 |14.0-STABLE после ветвления releng/14.0 |1400501 |gitref:91e53779b4fc39e755a03190f785ce0cf3f83eb7[repository="src",length=12] |19 ноября 2023 |14.0-STABLE после реализации `fpu_kern_enter` и `fpu_kern_leave` для powerpc. |1400502 |gitref:092abb839d1d2826533bb9c4c93d713f8b5043f9[repository="src",length=12] |24 декабря 2023 |14.0-STABLE после изменения внутреннего API между модулями kgssapi и krpc. |1400503 |gitref:ba99d960884d50eb7d36146914206644ee132aa4[repository="src",length=12] |29 декабря 2023 |14.0-STABLE после изменения внутреннего KAPI между модулями nfscommon и nfscl. |1400504 |gitref:68584c97ecfb3046de7fb1b16c2caa785392237c[repository="src",length=12] |7 января 2024 |14.0-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-17.0.6-0-g6009708b4367, также известного как релиз 17.0.6. |1400505 |gitref:64e869e9b93c8ce47f874b770df696c06bcba0d3[repository="src",length=12] |7 января 2024 |14.0-STABLE после добавления man:vnode_pager_clean_async[9] и man:vnode_pager_clean_sync[9]. |1400506 |gitref:d9041710958227194c5e34b169ae73d7ad411017[repository="src",length=12] |19 января 2024 |14.0-STABLE после изменения внутреннего KAPI между модулями nfscommon и nfscl. |1400507 |gitref:b566e44b2b88eb9f1b3b658998c7418cccab9e2f[repository="src",length=12] |31 января 2024 |14.0-STABLE после добавления man:kern_openatfp[9] и man:kcmp[2]. |1400508 |gitref:2d120981e26dfef5c9cb9eb9936bb46cb6918136[repository="src",length=12] |18 февраля 2024 |14.0-STABLE после обновлений LinuxKPI. |1400509 |gitref:b392b36d3776b696601ce0253256803276d24ea2[repository="src",length=12] |18 февраля 2024 |14.0-STABLE после изменения внутренней структуры `struct ieee80211vap` в net80211. |1400510 |gitref:69da6e0879831f1ccc5c60135ed43fcea10a933b[repository="src",length=12] |23 марта 2024 |14.0-STABLE после исправления утверждения или падения clang при сборке последних библиотек boost. |1400511 |gitref:7c41358a2b0a2e70a2b61ec347354f3452e4d2f3[repository="src",length=12] |20 апреля 2024 |14.0-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-18.1.3-0-gc13b7485b879, также известной как релиз 18.1.3. |1401500 |gitref:7b082bdf72e65f94b9b17d9fa1d0c1c202e4eb49[repository="src",length=12] |2 мая 2024 |14.1-STABLE после переименования из 14.1-PRERELEASE. |1401501 |gitref:f285eabc89ce8ccf3aaf563401df942e406c2b5f[repository="src",length=12] |6 июня 2024 |14.1-STABLE после добавления модуля linuxkpi_video. |1401502 |gitref:b37a6d41a046dbb46ee1d6bf00c710c03c944a24[repository="src",length=12] |2 августа 2024 |14.1-STABLE после изменений в LinuxKPI. |1401503 |gitref:8a5a9dbf389e86d278764ababf2f1eb8ee276680[repository="src",length=12] |15 октября 2024 |14.1-STABLE после расширения поля `flags` в `vm_object`. |1402500 |gitref:4e8444d5750a5d9da9c812e8f6caf6d62862be0a[repository="src",length=12] |31 октября 2024 |14.2-STABLE после переименования из 14.2-PRERELEASE. |1402501 |gitref:35d2f335e855af816d0a7fe5baf6a3facba84562[repository="src",length=12] |1 декабря 2024 |14.2-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-19.1.4-0-gaadaa00de76e, также известного как релиз 19.1.4. |1402502 |gitref:d172f42e4ba7ba8542ae0866aaba56e329b4ea2c[repository="src",length=12] |27 февраля 2025 |14.2-STABLE после удаления избыточных аргументов `type` и `rid` из нескольких функций в API ресурсов new-bus. |1402503 |gitref:4aed8b3b613c5e1499336e4d7ec7e9a3ac3d9a12[repository="src",length=12] |27 февраля 2025 |14.2-STABLE после добавления `bus_attach_children`, `bus_detach_children` и `bus_identify_children`. |1402505 |gitref:a3b2d8e360c37853035f9cede6064c4602312bfc[repository="src",length=12] |18 апреля 2025 |14.2-STABLE после изменения аллокации в LinuxKPI и удаления микропрограммы iwlwifi. |1403503 |gitref:6cdcf08c9c5eda6dc3b8395cefd9d30a4f5e2f1a[repository="src",length=12] |13 июля 2025 |14.3-STABLE после изменений в LinuxKPI dma-mapping.h and acpi. |=== //// Template: |14XXXXX |gitref:XXXXXXXX[repository="src",length=12] |October 30, 2021 |14.0-CURRENT after XXXXXX. //// [[versions-13]] == FreeBSD 13 Версии [[freebsd-versions-table-13]] .FreeBSD 13 Значения `__FreeBSD_version` [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |1300000 |link:https://svnweb.freebsd.org/changeset/base/339436[339436] |19 октября 2018 |13.0-CURRENT. |1300001 |link:https://svnweb.freebsd.org/changeset/base/339730[339730] |25 октября 2018 |13.0-CURRENT после увеличения номеров версий разделяемых библиотек OpenSSL. |1300002 |link:https://svnweb.freebsd.org/changeset/base/339765[339765] |25 октября 2018 |13.0-CURRENT после восстановления [.filename]#sys/joystick.h#. |1300003 |link:https://svnweb.freebsd.org/changeset/base/340055[340055] |2 ноября 2018 |13.0-CURRENT после изменения API `vop_symlink` (параметр `a_target` теперь объявлен как `const`.) |1300004 |link:https://svnweb.freebsd.org/changeset/base/340841[340841] |23 ноября 2018 |13.0-CURRENT после включения кода crtbegin и crtend. |1300005 |link:https://svnweb.freebsd.org/changeset/base/341836[341836] |11 декабря 2018 |13.0-CURRENT после включения контрольных сумм inode в UFS. |1300006 |link:https://svnweb.freebsd.org/changeset/base/342398[342398] |24 декабря 2018 |13.0-CURRENT после исправления включения [.filename]#sys/random.h# для использования из C++. |1300007 |link:https://svnweb.freebsd.org/changeset/base/342629[342629] |30 декабря 2018 |13.0-CURRENT после изменения размера `struct linux_cdev` на 32-битных платформах. |1300008 |link:https://svnweb.freebsd.org/changeset/base/342772[342772] |4 января 2019 |13.0-CURRENT после добавления системных переменных `kern.smp.threads_per_core` и `kern.smp.cores`. |1300009 |link:https://svnweb.freebsd.org/changeset/base/343213[343213] |20 января 2019 |13.0-CURRENT после изменения структуры `struct ieee80211vap` для устранения состояния гонки между ioctl и detach в структуре ieee80211com. |1300010 |link:https://svnweb.freebsd.org/changeset/base/343485[343485] |27 января 2019 |13.0-CURRENT после увеличения `SPECNAMELEN` с 63 до `MAXNAMELEN` (255). |1300011 |link:https://svnweb.freebsd.org/changeset/base/344041[344041] |12 февраля 2019 |13.0-CURRENT после исправления man:renameat[2] для работы с ядрами, собранными с опцией `CAPABILITIES`. |1300012 |link:https://svnweb.freebsd.org/changeset/base/344062[344062] |12 февраля 2019 |13.0-CURRENT после того, как `taskqgroup_attach()` и `taskqgroup_attach_cpu()` принимают аргументы `device_t` и указатель на структуру resource для обозначения прерываний устройства. |1300013 |link:https://svnweb.freebsd.org/changeset/base/344300[344300] |19 февраля 2019 |13.0-CURRENT после удаления drm и drm2. |1300014 |link:https://svnweb.freebsd.org/changeset/base/344779[344779] |4 марта 2019 |13.0-CURRENT после обновления clang, llvm, lld, lldb, compiler-rt и libc++ до версии 8.0.0 rc3. |1300015 |link:https://svnweb.freebsd.org/changeset/base/345196[345196] |15 марта 2019 |13.0-CURRENT после деанонимизации перечислений состояний потоков и процессов, что позволяет приложениям пользовательского пространства использовать их без переопределения имен значений. |1300016 |link:https://svnweb.freebsd.org/changeset/base/345236[345236] |16 марта 2019 |13.0-CURRENT после включения LLVM OpenMP 8.0.0 rc5 на amd64 по умолчанию. |1300017 |link:https://svnweb.freebsd.org/changeset/base/345305[345305] |19 марта 2019 |13.0-CURRENT после раскрытия размера буфера Rx mbuf для драйверов в iflib. |1300018 |link:https://svnweb.freebsd.org/changeset/base/346012[346012] |16 марта 2019 |13.0-CURRENT после введения системного вызова `funlinkat` в link:https://svnweb.freebsd.org/changeset/base/345982[345982]. |1300019 |link:https://svnweb.freebsd.org/changeset/base/346282[346282] |16 апреля 2019 |13.0-CURRENT после добавления man:is_random_seeded[9] в man:random[4]. |1300020 |link:https://svnweb.freebsd.org/changeset/base/346358[346358] |18 апреля 2019 |13.0-CURRENT после восстановления доступности man:random[4] с учетом компромиссов до link:https://svnweb.freebsd.org/changeset/base/346250[346250] и добавления новых настроек и диагностических sysctl для программного обнаружения проблем с ранней инициализацией семени после загрузки. |1300021 |link:https://svnweb.freebsd.org/changeset/base/346645[346645] |24 апреля 2019 |13.0-CURRENT после того, как LinuxKPI использует man:bus_dma[9] для совместимости с IOMMU. |1300022 |link:https://svnweb.freebsd.org/changeset/base/347089[347089] |4 мая 2019 |13.0-CURRENT после исправления регрессии, возникшей после link:https://svnweb.freebsd.org/changeset/base/346645[346645] в LinuxKPI. |1300023 |link:https://svnweb.freebsd.org/changeset/base/347192[347192] |6 мая 2019 |13.0-CURRENT после преобразования конфигурации устройства дампа ядра в список. |1300024 |link:https://svnweb.freebsd.org/changeset/base/347325[347325] |8 мая 2019 |13.0-CURRENT после увеличения номеров версий драйверов Mellanox (man:mlx4en[4]; man:mlx5en[4]). |1300025 |link:https://svnweb.freebsd.org/changeset/base/347532[347532] |13 мая 2019 |13.0-CURRENT после переименования `vm.max_wired` в `vm.max_user_wired` и изменения его типа. |1300026 |link:https://svnweb.freebsd.org/changeset/base/347596[347596] |14 мая 2019 |13.0-CURRENT после добавления члена контекста к ww_mutex в LinuxKPI. |1300027 |link:https://svnweb.freebsd.org/changeset/base/347601[347601] |14 мая 2019 |13.0-CURRENT после добавления prepare в `pm_ops` в LinuxKPI. |1300028 |link:https://svnweb.freebsd.org/changeset/base/347925[347925] |17 мая 2019 |13.0-CURRENT после удаления драйверов `bm`, `cs`, de, ed, `ep`, ex, `fe`, `pcn`, sf, `sn`, `tl`, `tx`, `txp`, `vx`, `wb` и xe. |1300029 |link:https://svnweb.freebsd.org/changeset/base/347984[347984] |20 мая 2019 |13.0-CURRENT после удаления некоторых загрязнений заголовков из-за [.filename]#sys/eventhandler.h#. Затронутые файлы теперь могут требовать явного включения одного или нескольких заголовков: [.filename]#sys/eventhandler.h#, [.filename]#sys/ktr.h#, [.filename]#sys/lock.h# или [.filename]#sys/mutex.h#, тогда как ранее они могли включаться неявно до версии 1300029. |1300030 |link:https://svnweb.freebsd.org/changeset/base/348350[348350] |29 мая 2019 |13.0-CURRENT после добавления поддержки перемещения в libdwarf на powerpc64 для исправления обработки DWARF-информации в несвязанных объектах. Оригинальный коммит в ссылке:https://svnweb.freebsd.org/changeset/base/348347[348347]. |1300031 |link:https://svnweb.freebsd.org/changeset/base/348808[348808] |8 июня 2019 |13.0-CURRENT после добавления исправлений разделов dpcpu и vnet в модули ядра i386 для предотвращения паники в определённых условиях. Модули ядра i386 необходимо перекомпилировать с включёнными изменениями в скрипт компоновщика, иначе они откажутся загружаться. |1300032 |link:https://svnweb.freebsd.org/changeset/base/349151[349151] |17 июня 2019 |13.0-CURRENT после выделения реализации `crc32()` ядра в отдельный заголовочный файл ([.filename]#gsb_crc32.h#) и переименования исходного файла в [.filename]#gsb_crc32.c#. |1300033 |link:https://svnweb.freebsd.org/changeset/base/349277[349277] |June 21, 2019 |13.0-CURRENT после добавлений в список `rcu` LinuxKPI. |1300034 |link:https://svnweb.freebsd.org/changeset/base/349352[349352] |24 июня 2019 |13.0-CURRENT после удаления NAND и NANDFS. |1300035 |link:https://svnweb.freebsd.org/changeset/base/349846[349846] |8 июля 2019 |13.0-CURRENT после объединения механизмов удержания и фиксации `vm_page`. |1300036 |link:https://svnweb.freebsd.org/changeset/base/349972[349972] |13 июля 2019 |13.0-CURRENT после добавления `arm_drain_writebuf()` и `arm_sync_icache()` для совместимости с NetBSD и OpenBSD. |1300037 |link:https://svnweb.freebsd.org/changeset/base/350307[350307] |24 июля 2019 |13.0-CURRENT после удаления man:libcap_random[3]. |1300038 |link:https://svnweb.freebsd.org/changeset/base/350437[350437] |30 июля 2019 |13.0-CURRENT после удаления поддержки gzip'ed a.out. |1300039 |link:https://svnweb.freebsd.org/changeset/base/350665[350665] |7 августа 2019 |13.0-CURRENT после объединения fusefs из projects/fuse2. |1300040 |link:https://svnweb.freebsd.org/changeset/base/351140[351140] |16 августа 2019 |13.0-CURRENT после удаления [.filename]#sys/dir.h#, который был устаревшим с 1997 года. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/351423[351423] |23 августа 2019 |13.0-CURRENT после изменения большинства аргументов в man:ping6[8]. |1300041 |link:https://svnweb.freebsd.org/changeset/base/351480[351480] |25 августа 2019 |13.0-CURRENT после удаления zlib 1.0.4 по завершении унификации zlib в ядре. |1300042 |link:https://svnweb.freebsd.org/changeset/base/351522[351522] |27 августа 2019 |13.0-CURRENT после добавления поддержки TLS внутри ядра на уровне ядра. |1300043 |link:https://svnweb.freebsd.org/changeset/base/351698[351698] |2 сентября 2019 |13.0-CURRENT после удаления man:gets[3]. |1300044 |link:https://svnweb.freebsd.org/changeset/base/351701[351701] |2 сентября 2019 |13.0-CURRENT после добавления функций создания/удаления sysfs, обрабатывающих несколько файлов за один вызов, в LinuxKPI. |1300045 |link:https://svnweb.freebsd.org/changeset/base/351729[351729] |3 сентября 2019 |13.0-CURRENT после добавления системного вызова man:sysctlbyname[3]. |1300046 |link:https://svnweb.freebsd.org/changeset/base/351937[351937] |6 сентября 2019 |13.0-CURRENT после улучшений LinuxKPI sysfs. |1300047 |link:https://svnweb.freebsd.org/changeset/base/352110[352110] |9 сентября 2019 |13.0-CURRENT после изменения правил синхронизации для подсчета ссылок `vm_page`. |1300048 |link:https://svnweb.freebsd.org/changeset/base/352700[352700] |25 сентября 2019 |13.0-CURRENT после добавления системного вызова shm_open2 для поддержки готовящегося системного вызова man:memfd_create[2]. |1300049 |link:https://svnweb.freebsd.org/changeset/base/353274[353274] |7 октября 2019 |13.0-CURRENT после вынесения проверки отключения VNET в отдельное поле структуры vnet. |1300050 |link:https://svnweb.freebsd.org/changeset/base/353358[353358] |9 октября 2019 |13.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до финального релиза 9.0.0 r372316. |1300051 |link:https://svnweb.freebsd.org/changeset/base/353685[353685] |17 октября 2019 |13.0-CURRENT после выделения более универсального man:debugnet[4] из man:netdump[4]. |1300052 |link:https://svnweb.freebsd.org/changeset/base/353698[353698] |17 октября 2019 |13.0-CURRENT после преобразования поля busy page в полноценную блокировку, которая больше не требует блокировки объекта для обеспечения согласованности. |1300053 |link:https://svnweb.freebsd.org/changeset/base/353700[353700] |17 октября 2019 |13.0-CURRENT после реализации NetGDB. |1300054 |link:https://svnweb.freebsd.org/changeset/base/353868[353868] |21 октября 2019 |13.0-CURRENT после удаления устаревших KPIs, которые использовались для доступа к спискам адресов интерфейсов. |1300055 |link:https://svnweb.freebsd.org/changeset/base/354335[354335] |4 ноября 2019 |13.0-CURRENT после включения атрибутов группы классов устройств в LinuxKPI. |1300056 |link:https://svnweb.freebsd.org/changeset/base/354460[354460] |7 ноября 2019 |13.0-CURRENT после исправления потенциальной проблемы безопасности с чтением за границами в libc++. |1300057 |link:https://svnweb.freebsd.org/changeset/base/354694[354694] |13 ноября 2019 |13.0-CURRENT после добавления поддержки `AT_EXECPATH` в man:elf_aux_info[3]. |1300058 |link:https://svnweb.freebsd.org/changeset/base/354820[354820] |18 ноября 2019 |13.0-CURRENT после расширения поля `aflags` в `vm_page` до 16 бит. |1300059 |link:https://svnweb.freebsd.org/changeset/base/354835[354835] |18 ноября 2019 |13.0-CURRENT после преобразования встроенных целей `sysent` для использования нового [.filename]#makesyscalls.lua#. |1300060 |link:https://svnweb.freebsd.org/changeset/base/354922[354922] |20 ноября 2019 |13.0-CURRENT после добавления символической ссылки [.filename]#/etc/os-release# на [.filename]#/var/run/os-release#. |1300061 |link:https://svnweb.freebsd.org/changeset/base/354977[354977] |21 ноября 2019 |13.0-CURRENT после добавления функций в man:bitstring[3] для поиска непрерывных последовательностей установленных или сброшенных битов. |1300062 |link:https://svnweb.freebsd.org/changeset/base/355309[355309] |2 декабря 2019 |13.0-CURRENT после добавления поддержки TCP_STATS. |1300063 |link:https://svnweb.freebsd.org/changeset/base/355537[355537] |8 декабря 2019 |13.0-CURRENT после удаления VI_DOOMED (используйте VN_IS_DOOMED вместо этого). |1300064 |link:https://svnweb.freebsd.org/changeset/base/355658[355658] |9 декабря 2019 |13.0-CURRENT после исправления проверки версии C++ для объявления man:timespec_get[3]. |1300065 |link:https://svnweb.freebsd.org/changeset/base/355643[355643] |12 декабря 2019 |13.0-CURRENT после добавления расширений `sigsetop`, которые обычно встречаются в musl libc и glibc. |1300066 |link:https://svnweb.freebsd.org/changeset/base/355679[355679] |12 декабря 2019 |13.0-CURRENT после изменения внутреннего интерфейса между модулями NFS в рамках внедрения NFS 4.2. |1300067 |link:https://svnweb.freebsd.org/changeset/base/355732[355732] |13 декабря 2019 |13.0-CURRENT после удаления устаревших функций `callout_handle_init`, `timeout` и `untimeout`. |1300068 |link:https://svnweb.freebsd.org/changeset/base/355828[355828] |16 декабря 2019 |13.0-CURRENT после удвоения значения `ARG_MAX` для 64-битных платформ. |1300069 |link:https://svnweb.freebsd.org/changeset/base/356051[356051] |24 декабря 2019 |13.0-CURRENT после добавления шаблонов busdma. |1300070 |link:https://svnweb.freebsd.org/changeset/base/356113[356113] |27 декабря 2019 |13.0-CURRENT после устранения последнего различия MI в определениях AT_* (для powerpc). |1300071 |link:https://svnweb.freebsd.org/changeset/base/356135[356135] |27 декабря 2019 |13.0-CURRENT после изменения статистики USB для каждого устройства вместо каждой шины. |1300072 |link:https://svnweb.freebsd.org/changeset/base/356185[356185] |29 декабря 2019 |13.0-CURRENT после удаления класса `GEOM_SCHED` и утилиты `gsched`. |1300073 |link:https://svnweb.freebsd.org/changeset/base/356263[356263] |2 января 2020 |13.0-CURRENT после удаления arm/arm как допустимой цели. |1300074 |link:https://svnweb.freebsd.org/changeset/base/356337[356337] |3 января 2020 |13.0-CURRENT после удаления аргумента flags из `VOP_UNLOCK`. |1300075 |link:https://svnweb.freebsd.org/changeset/base/356409[356409] |6 января 2020 |13.0-CURRENT после добавления собственного счетчика отмененных USB-передач. |1300076 |link:https://svnweb.freebsd.org/changeset/base/356511[356511] |8 января 2020 |13.0-CURRENT после внедрения реализации `vnop` в слой `fileop` в man:posix_fallocate[2]. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/357396[357396] |2 февраля 2020 |13.0-CURRENT после удаления кода архитектуры armv5 из дерева src. |1300077 |link:https://svnweb.freebsd.org/changeset/base/357455[357455] |3 февраля 2020 |13.0-CURRENT после удаления кода архитектуры sparc64 из дерева src. |1300078 |link:https://svnweb.freebsd.org/changeset/base/358020[358020] |17 февраля 2020 |13.0-CURRENT после изменения `struct vnet` и волшебного cookie VNET. |1300079 |link:https://svnweb.freebsd.org/changeset/base/358164[358164] |20 февраля 2020 |13.0-CURRENT после обновления ncurses до версии 6.2.x |1300080 |link:https://svnweb.freebsd.org/changeset/base/358172[358172] |20 февраля 2020 |13.0-CURRENT после добавления системного вызова `realpathat` в VFS. |1300081 |link:https://svnweb.freebsd.org/changeset/base/358218[358218] |21 февраля 2020 |13.0-CURRENT после недавних изменений в linuxkpi. |1300082 |link:https://svnweb.freebsd.org/changeset/base/358497[358497] |1 марта 2020 |13.0-CURRENT после удаления man:bktr[4]. |1300083 |link:https://svnweb.freebsd.org/changeset/base/358834[358834] |10 марта 2020 |13.0-CURRENT после удаления man:amd[8], r358821. |1300084 |link:https://svnweb.freebsd.org/changeset/base/358851[358851] |10 марта 2020 |13.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.0-rc3 c290cb61fdc. |1300085 |link:https://svnweb.freebsd.org/changeset/base/359261[359261] |23 марта 2020 |13.0-CURRENT после импорта тестового фреймворка kyua. |1300086 |link:https://svnweb.freebsd.org/changeset/base/359347[359347] |26 марта 2020 |13.0-CURRENT после переключения powerpc и powerpcspe на компоновщик lld. |1300087 |link:https://svnweb.freebsd.org/changeset/base/359374[359374] |27 марта 2020 |13.0-CURRENT после рефакторинга интерфейсов драйвера и потребителя для внутриядерного шифрования. |1300088 |link:https://svnweb.freebsd.org/changeset/base/359530[359530] |1 апреля 2020 |13.0-CURRENT после удаления поддержки отладки процессов через procfs. |1300089 |link:https://svnweb.freebsd.org/changeset/base/359727[359727] |8 апреля 2020 |13.0-CURRENT после разделения интерфейса RCU на части с возможностью ожидания и без неё в LinuxKPI. |1300090 |link:https://svnweb.freebsd.org/changeset/base/359747[359747] |9 апреля 2020 |13.0-CURRENT после удаления старого драйвера устройства блокировки NFS, использующего Giant. |1300091 |link:https://svnweb.freebsd.org/changeset/base/359839[359839] |12 апреля 2020 |13.0-CURRENT после реализации системного вызова man:close_range[2]. |1300092 |link:https://svnweb.freebsd.org/changeset/base/359920[359920] |14 апреля 2020 |13.0-CURRENT после переработки немэппированных mbuf в KTLS для хранения `ext_pgs` в самом mbuf. |1300093 |link:https://svnweb.freebsd.org/changeset/base/360418[360418] |27 апреля 2020 |13.0-CURRENT после добавления поддержки выгрузки приема TLS в ядре. |1300094 |link:https://svnweb.freebsd.org/changeset/base/360796[360796] |7 мая 2020 |13.0-CURRENT после изменений в linuxkpi. |1300095 |link:https://svnweb.freebsd.org/changeset/base/361275[361275] |20 мая 2020 |13.0-CURRENT после добавления поддержки сокетов HyperV для гостевых систем FreeBSD. |1300096 |link:https://svnweb.freebsd.org/changeset/base/361410[361410] |23 мая 2020 |13.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.1 rc1 f79cd71e145. |1300097 |link:https://svnweb.freebsd.org/changeset/base/361724[361724] |2 июня 2020 |13.0-CURRENT после реализации макроса функции `__is_constexpr()` в LinuxKPI. |1300098 |link:https://svnweb.freebsd.org/changeset/base/362159[362159] |14 июня 2020 |13.0-CURRENT после изменения поля `export_args ex_flags`, чтобы оно было 64-битным. |1300099 |link:https://svnweb.freebsd.org/changeset/base/362453[362453] |20 июня 2020 |13.0-CURRENT после перевода liblzma на использование реализации SHA256 из libmd. |1300100 |link:https://svnweb.freebsd.org/changeset/base/362640[362640] |June 26, 2020 |13.0-CURRENT после изменения внутреннего API между модулями ядра NFS. |1300101 |link:https://svnweb.freebsd.org/changeset/base/363077[363077] |10 июля 2020 |13.0-CURRENT после реализации функции `array_size()` в LinuxKPI. |1300102 |link:https://svnweb.freebsd.org/changeset/base/363562[363562] |26 июля 2020 |13.0-CURRENT после реализации бесблокировочного поиска в слое VFS. |1300103 |link:https://svnweb.freebsd.org/changeset/base/363757[363757] |1 августа 2020 |13.0-CURRENT после того, как права для NDINIT_ALL стали обязательными. |1300104 |link:https://svnweb.freebsd.org/changeset/base/363783[363783] |2 августа 2020 |13.0-CURRENT после изменений в структуре vnode. |1300105 |link:https://svnweb.freebsd.org/changeset/base/363894[363894] |5 августа 2020 |13.0-CURRENT после изменения `vaccess()`. |1300106 |link:https://svnweb.freebsd.org/changeset/base/364092[364092] |11 августа 2020 |13.0-CURRENT после добавления аргумента в `newnfs_connect()`, указывающего на использование TLS для соединения. |1300107 |link:https://svnweb.freebsd.org/changeset/base/364109[364109] |11 августа 2020 |13.0-CURRENT после изменения для клонирования полей структуры задачи, связанных с RCU. |1300108 |link:https://svnweb.freebsd.org/changeset/base/364233[364233] |14 августа 2020 |13.0-CURRENT после добавления нескольких функций `wait_bit` в linuxkpi, которые необходимы для DRM из Linux v5.4. |1300109 |link:https://svnweb.freebsd.org/changeset/base/364274[364274] |16 августа 2020 |13.0-CURRENT после удаления аргумента `vget()` и перенумерации флагов `namei`. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/364284[364284] |16 августа 2020 |13.0-CURRENT после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии release/11.x llvmorg-11.0.0-rc1-47-gff47911ddfc. |1300110 |link:https://svnweb.freebsd.org/changeset/base/364331[364331] |18 августа 2020 |13.0-CURRENT после удаления неиспользуемого аргумента `use_ext` в `nfscl_reqstart()`. |1300111 |link:https://svnweb.freebsd.org/changeset/base/364476[364476] |22 августа 2020 |13.0-CURRENT после добавления поддержки TLS в RPC ядра. |1300112 |link:https://svnweb.freebsd.org/changeset/base/364747[364747] |August 25, 2020 |13.0-CURRENT после объединения поддержки OpenZFS. |1300113 |link:https://svnweb.freebsd.org/changeset/base/364753[364753] |August 25, 2020 |13.0-CURRENT после добавления атомарных функций и функций `bswap` в libcompiler_rt. |1300114 |link:https://svnweb.freebsd.org/changeset/base/365459[365459] |8 сентября 2020 |13.0-CURRENT после изменения определений AT_HWCAP для arm64 в man:elf_aux_info[3]. |1300115 |link:https://svnweb.freebsd.org/changeset/base/365705[365705] |14 сентября 2020 |13.0-CURRENT после исправления сборки приложения man:crunchgen[1] с `WARNS=6`. |1300116 |link:https://svnweb.freebsd.org/changeset/base/366062[366062] |22 сентября 2020 |13.0-CURRENT после введения архитектуры powerpc64le. |1300117 |link:https://svnweb.freebsd.org/changeset/base/366070[366070] |23 сентября 2020 |13.0-CURRENT после перереализации `purgevfs` для итерации по vnodes вместо всего хэша. |1300118 |link:https://svnweb.freebsd.org/changeset/base/366374[366374] |2 октября 2020 |13.0-CURRENT после добавления поддержки подсветки и функций `dmi_*` в linuxkpi. |1300119 |link:https://svnweb.freebsd.org/changeset/base/366432[366432] |6 октября 2020 |13.0-CURRENT после заполнения поля контекста получения `ww_mutex` в LinuxKPI. |1300120 |link:https://svnweb.freebsd.org/changeset/base/366666[366666] |13 октября 2020 |13.0-CURRENT после исправления отображений только для записи на arm64. |1300121 |link:https://svnweb.freebsd.org/changeset/base/366719[366719] |15 октября 2020 |13.0-CURRENT после добавления `VOP_EAGAIN`. |1300122 |link:https://svnweb.freebsd.org/changeset/base/366782[366782] |17 октября 2020 |13.0-CURRENT после добавления `ptsname_r`. |1300123 |link:https://svnweb.freebsd.org/changeset/base/366871[366871] |20 октября 2020 |13.0-CURRENT после изменений `VOP`, `VPTOCNP` и `INACTIVE`. |1300124 |link:https://svnweb.freebsd.org/changeset/base/367162[367162] |30 октября 2020 |13.0-CURRENT после добавления `cache_vop_mkdir` и переименования `cache_rename` в `cache_vop_rename`. |1300125 |link:https://svnweb.freebsd.org/changeset/base/367347[367347] |4 ноября 2020 |13.0-CURRENT после использования блокировки `rms` для обработки демонтажа в `zfs`. |1300126 |link:https://svnweb.freebsd.org/changeset/base/367384[367384] |5 ноября 2020 |13.0-CURRENT после оптимизации зон на каждый процессор. |1300127 |link:https://svnweb.freebsd.org/changeset/base/367432[367432] |6 ноября 2020 |13.0-CURRENT после перемещения `malloc_type_internal` в `malloc_type`. |1300128 |link:https://svnweb.freebsd.org/changeset/base/367522[367522] |9 ноября 2020 |13.0-CURRENT после добавлений LinuxKPI для реализации частей ACPI, необходимых `drm-kmod` в базовой системе. |1300129 |link:https://svnweb.freebsd.org/changeset/base/367627[367627] |12 ноября 2020 |13.0-CURRENT после удаления `malloc_last_fail`. |1300130 |link:https://svnweb.freebsd.org/changeset/base/367777[367777] |17 ноября 2020 |13.0-CURRENT после разделения `p_pd` / `pwddesc` и `p_fd` / filedesc. |1300131 |link:https://svnweb.freebsd.org/changeset/base/368417[368417] |7 декабря 2020 |13.0-CURRENT после удаления криптографических файловых дескрипторов. |1300132 |link:https://svnweb.freebsd.org/changeset/base/368659[368659] |15 декабря 2020 |13.0-CURRENT после улучшения обработки альтернативных настроек в стеке USB. |1300133 |gitref:2ed0c8d801f5f72dbde7a7d30135c1cc361a1e90[repository="src",length=12] |23 декабря 2020 |13.0-CURRENT после изменения внутреннего API между модулями NFS и RPC ядра. |1300134 |gitref:a84b0e94cdbf1a17a798ab7f77375aacb4d400ff[repository="src",length=12] |7 января 2021 |13.0-CURRENT после выделения аппаратно-независимой части поддержки USB HID в новый модуль. |1300135 |gitref:35a39dc5b34962081eeda8dbcf0b99a31585499b[repository="src",length=12] |12 января 2021 |13.0-CURRENT после добавления `kernel_fpu_begin`/`kernel_fpu_end` в LinuxKPI. |1300136 |gitref:72c551930be195b5ea982c1b16767f54388424f2[repository="src",length=12] |17 января 2021 |13.0-CURRENT после переработки очереди `irq_work` в LinuxKPI на основе быстрой `taskqueue`. |1300137 |gitref:010196adcfaf2bb610725394d40691874b4ff2af[repository="src",length=12] |30 января 2021 |13.0-CURRENT после исправления утверждения clang при сборке порта package:devel/onetbb[]. |1300138 |gitref:dcee9964238b12a8e55917f292139f074b1a80b2[repository="src",length=12] |1 февраля 2021 |13.0-ALPHA3 после добавления блокировки при поиске символьных ссылок в кэше VFS. |1300139 |gitref:91a07ed50ffca4dfada3e7f1f050ea746c1bac66[repository="src",length=12] |2 февраля 2021 |13.0-ALPHA3 после добавления различных компонентов LinuxKPI, конфликтующих с drm-kmod. |1300500 |gitref:3c6a89748a01869c18955d5e3bfcdf35f6705d26[repository="src",length=12] |5 февраля 2021 |13.0-STABLE после ветвления releng/13.0. |1300501 |gitref:c3f97dd75a1c294c4f60f42b604ee8bcda17be09[repository="src",length=12] |23 апреля 2021 |13.0-STABLE после исправления `dl_iterate_phdr()` в rtld. |1300501 |gitref:c3f97dd75a1c294c4f60f42b604ee8bcda17be09[repository="src",length=12] |23 апреля 2021 |13.0-STABLE после исправления `dl_iterate_phdr()` в rtld. |1300502 |gitref:da6a8ccfa293c3c831fdde51169754fcb9587657[repository="src",length=12] |23 апреля 2021 |13.0-STABLE после реализации `atomic_dec_and_lock_irqsave()` в LinuxKPI. |1300503 |gitref:d60c6dc8f69b1264c7af5e2479ea94f000fd2c6d[repository="src",length=12] |23 апреля 2021 |13.0-STABLE после изменения внутреннего KAPI между krpc и NFS. |1300504 |gitref:fb34817c686cc130449325499870e36979899801[repository="src",length=12] |30 апреля 2021 |13.0-STABLE после обновления LinuxKPI для поддержки обновления drm-kmod 5.5. |1300505 |gitref:8f81f190a640e211dd814bdde7811982b9491fb0[repository="src",length=12] |10 мая 2021 |13.0-STABLE после изменения внутреннего KAPI между модулями nscl.ko и nfscommon.ko. |1300506 |gitref:e31579b8558db508dfc3f8fc276611a7c3c93aa1[repository="src",length=12] |2 июня 2021 |13.0-STABLE после добавления поддержки TCP LRO для VLAN и VxLAN. |1300507 |gitref:c64d1bd7145b5d30c97d1cd99e584da529d95100[repository="src",length=12] |2 июня 2021 |13.0-STABLE после добавления нового элемента в структуру отслеживания man:EPOCH[9]. |1300508 |gitref:658f5eed38c35f3f7d6695110b7dae8dc94d12c7[repository="src",length=12] |11 июня 2021 |13.0-STABLE после добавления макросов для `might_lock_nested()` и `lockdep_(re/un/)pin_lock()` в LinuxKPI. |1300509 |gitref:210349325af9920d1535ad76fa3b92847684f6e0[repository="src",length=12] |14 июня 2021 |13.0-STABLE после добавления макроса `list_for_each_entry_lockless()` в LinuxKPI. |1300510 |gitref:eb3397588e1b48043e166587ea454f60efea88d0[repository="src",length=12] |26 июня 2021 |13.0-STABLE после изменения внутреннего KAPI между модулями krpc и nfsd. |1300511 |gitref:2622570aeb3d162812d72f7ef192c322cd8b73ef[repository="src",length=12] |7 июля 2021 |13.0-STABLE после изменения `softdep_prelink()` для выполнения синхронизации только в случае, если другой поток изменил метаданные vnode с момента предыдущего `prelink`. |1300512 |gitref:f72db34d2295080f57a283858125aa906c0d409e[repository="src",length=12] |18 июля 2021 |13.0-STABLE после различных слияний LinuxKPI, OFED, net80211 и драйверов. |1300513 |gitref:af732203b8f7f006927528db5497f5cbc4c4742a[repository="src",length=12] |31 июля 2021 |13.0-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-12.0.1-0-gfed41342a82f, также известной как релиз 12.0.1. |1300514 |gitref:53d162819c20e5cf267cb91f7a19940e96e8bec4[repository="src",length=12] |3 августа 2021 |Несовместимые изменения в KBI внутренних интерфейсов между NFS требуют пересборки модулей. |1300515 |gitref:0437d10e359ea1cbefff8d17cd18ca491dbbd5d7[repository="src",length=12] |22 сентября 2021 |13.0-STABLE возвращается к KBI 13.0 для linuxkpi. |1300518 |gitref:a017868e281874261a560ba1e3069b4e14b7483e[repository="src",length=12] |21 октября 2021 |13.0-STABLE после добавления `crypto_cursor_segment()`. |1300519 |gitref:fe2827f1678b8ff0baf62a1529b2cc121a25b090[repository="src",length=12] |21 октября 2021 |13.0-STABLE после расширения шифров AES-CCM и Chacha20-Poly1305 в OCF для поддержки нескольких длин одноразовых номеров. |1300521 |gitref:29745cf91cfc22afa94da0ce43e07a6dc377f631[repository="src",length=12] |19 ноября 2021 |13.0-STABLE после различных слияний с LinuxKPI и net80211. |1300522 |gitref:0c8684ae20019b63c6672cc9fa40e1426708b007[repository="src",length=12] |24 ноября 2021 |13.0-STABLE после изменения внутреннего KAPI между модулями NFS. |(не изменено) |gitref:7224d4125ab57bc1c4c799a6c286be42f8d37a83[repository="src",length=12] |6 декабря 2021 |13.0-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-13.0.0-0-gd7b669b3a303, также известной как релиз 13.0.0. |1300523 |gitref:690bcf605d84283c1f9d254885a3cac69c5e80a6[repository="src",length=12] |18 декабря 2021 |13.0-STABLE после добавления двух аргументов в man:VOP_ALLOCATE[9]. |1300524 |gitref:dc4114875ef10618002d3eeb46f09dc42da56b30[repository="src",length=12] |14 января 2022 |13.0-STABLE после обеспечения совместимости макросов CPU_SET с glibc. |1300525 |gitref:dee0854a009cde7dcdb16ba39754237737022c8a[repository="src",length=12] |22 января 2022 |13.0-STABLE после множества изменений LinuxKPI, необходимых для drm-kmod. |1300526 |gitref:c39ff2415cb965b729fd16f9eae91e712313877b[repository="src",length=12] |20 февраля 2022 |13.0-STABLE после нескольких изменений LinuxKPI, пересекающихся, но не конфликтующих с drm-kmod. |1301000 |gitref:ad329796bdb29c69bce610ad332d08257d7157ac[repository="src",length=12] |10 марта 2022 |Ветка releng/13.1 создана. |1301500 |gitref:08523c8c63bbcdcd3f0d36787a544817cb5b8282[repository="src",length=12] |10 марта 2022 |13.1-STABLE после ветвления releng/13.1. |1301501 |gitref:6663718bb49635deac3f5dc55fa6f0f7cba593ba[repository="src",length=12] |27 марта 2022 |13.1-STABLE после различных слияний с LinuxKPI и net80211. |1301502 |gitref:2278cf4e48e7679b0a60008a83c764fe852174b2[repository="src",length=12] |27 апреля 2022 |13.1-STABLE после различных слияний с LinuxKPI. |1301503 |gitref:b2aa64d05bd8b04a1bdb63f2a5f9de39c600b463[repository="src",length=12] |19 мая 2022 |13.1-STABLE после добавления альтернативных макросов DRIVER_MODULE без аргумента devclass. |1301504 |gitref:a13b6fc61908fd6afa460b88f94e4a67be74bb9a[repository="src",length=12] |4 июня 2022 |13.1-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии llvmorg-14.0.3-0-g1f9140064dfb, также известной как релиз 14.0.3. |1301505 |gitref:6f93a76ffeabf7d4488edc73a0cca01436c2903b[repository="src",length=12] |21 июня 2022 |13.1-STABLE после различных слияний с LinuxKPI. |1301506 |gitref:8e6cfc632cf6f9fc906df9d825649443939b55c6[repository="src",length=12] |13 июля 2022 |13.1-STABLE после добавления и . |1301507 |gitref:9cbba5950123f3afedcc5f24c43956e7a26f22f4[repository="src",length=12] |21 июня 2022 |13.1-STABLE после различных слияний с LinuxKPI. |1301508 |gitref:83ac15a799e348c391951f5877feecd4089bab80[repository="src",length=12] |17 октября 2022 |13.1-STABLE после различных слияний в LinuxKPI и для удаления макросов из pause(). |1301509 |gitref:baa97013121a915057ee54dfcb2cb87e541f7d7f[repository="src",length=12] |19 октября 2022 |13.1-STABLE после введения версии 2 функциональности выбора очереди TX. |1301510 |gitref:6820a0512fa6616ee1da46cb0075da80478776f0[repository="src",length=12] |8 декабря 2022 |13.1-STABLE после исправлений LinuxKPI dmi_matches(). |1301511 |gitref:17333d92643d998d1c6a2dc5f6b1508b6507ad31[repository="src",length=12] |17 декабря 2022 |13.1-STABLE после добавления нового rc: `machine_id` для генерации `/etc/machine-id`. |1302500 |gitref:c243de11cf7c4bb3d67bbc1655b149037e5b04f1[repository="src",length=12] |9 февраля 2023 |13.2-STABLE после ветвления releng/13.2. |1302501 |gitref:e3068d2655e2aea3e0b462a7298a68d344769ec6[repository="src",length=12] |16 февраля 2023 |13.2-STABLE после добавления `totalram_pages()` в LinuxKPI. |1302502 |gitref:5ca371f4f536f9ee9d6c9fb178bf1f7f6de33216[repository="src",length=12] |17 февраля 2023 |13.2-STABLE после различных слияний с LinuxKPI. |1302503 |gitref:aaca677fee21f202db4bb974fc5056f4dcbbb598[repository="src",length=12] |21 февраля 2023 |13.2-STABLE после различных слияний с LinuxKPI. |1302504 |gitref:d6852eed98ed32ad51120a22aa1ebdf0601917b3[repository="src",length=12] |12 марта 2023 |13.2-STABLE после объединения machine-id в `hostid_save`. |1302505 |gitref:85e32e957fcca01d50e29e543584909795c1acef[repository="src",length=12] |9 апреля 2023 |13.2-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-15.0.7-0-g8dfdcc7b7bf6, также известного как релиз 15.0.7. |1302506 |gitref:e982b1cf1fe1dc0b84dc24f03d1c21e3fe6bdef3[repository="src",length=12] |26 июня 2023 |13.2-STABLE после различных слияний с LinuxKPI. |1302507 |gitref:b2acc21dfbd6fab28b1715c775b43d4914b75e0c[repository="src",length=12] |23 июля 2023 |13.2-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-16.0.6-0-g7cbf1a259152, также известного как релиз 16.0.6. |1302508 |gitref:21ccba43f511cc4089899619b5a85e6d83a200dc[repository="src",length=12] |6 сентября 2023 |13.2-STABLE после того, как ptrace начал очищать TDB_BORN во время PT_DETACH. |1302509 |gitref:faedeaf7377ba7253c281cf3315b17e0cb979075[repository="src",length=12] |2 декабря 2023 |13.2-STABLE после добавления новой функции VFS под названием `vfs_exjail_clone()`, которая будет использоваться модулем ZFS. |1302510 |gitref:45758665781dd63dfa38bcb646d4f36b0a6a104f[repository="src",length=12] |7 января 2024 |13.2-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-17.0.6-0-g6009708b4367, также известного как релиз 17.0.6. |1303001 |gitref:a75a3d7afcc88dc0bc9b2797cce983056acadf10[repository="src",length=12] |19 февраля 2024 |13.3-BETA3 после изменения внутренней структуры `struct ieee80211vap` в net80211. |1303501 |gitref:a7e1fc7f620d3341549c1380f550aaafbdb45622[repository="src",length=12] |19 февраля 2024 |13.3-STABLE после изменения внутренней структуры `struct ieee80211vap` в net80211. |1303502 |gitref:07839ae99c06fcbebd5da6ead49c160c32046542[repository="src",length=12] |23 марта 2024 |13.3-STABLE после исправления утверждения или падения clang при сборке последних библиотек boost. |1303503 |gitref:055e875e6077ed1eb2256c3ab5de59a3f6fbce18[repository="src",length=12] |20 апреля 2024 |13.3-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-18.1.3-0-gc13b7485b879, также известного как релиз 18.1.3. |1304500 |gitref:77064cddb94875dc8d9693a93ac25019b7f62c59[repository="src",length=12] |1 августа 2024 |13.4-STABLE после переименования из 13.4-PRERELEASE. |1304501 |gitref:b802ab153dd24f468b9bfe33a96c61408e0d0565[repository="src",length=12] |1 декабря 2024 |13.4-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до llvmorg-19.1.4-0-gaadaa00de76e, также известного как релиз 19.1.4. |=== //// Template: |13XXXXX |gitref:XXXXXXXX[repository="src",length=12] |October 30, 2021 |13.0-STABLE after XXXXXX. //// [[versions-12]] == Версии FreeBSD 12 [[freebsd-versions-table-12]] .FreeBSD 12 Значения `__FreeBSD_version` [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |1200000 |link:https://svnweb.freebsd.org/changeset/base/302409[302409] |7 июля 2016 |12.0-CURRENT. |1200001 |link:https://svnweb.freebsd.org/changeset/base/302628[302628] |12 июля 2016 |12.0-CURRENT после удаления правил сортировки из диапазонов типа `[a-z]`. |1200002 |link:https://svnweb.freebsd.org/changeset/base/304395[304395] |18 августа 2016 |12.0-CURRENT после удаления неиспользуемого и устаревшего системного вызова `openbsd_poll`. |1200003 |link:https://svnweb.freebsd.org/changeset/base/304608[304608] |22 августа 2016 |12.0-CURRENT после добавления поддержки `thread_local` из C++11 в ревизии link:https://svnweb.freebsd.org/changeset/base/303795[303795]. |1200004 |link:https://svnweb.freebsd.org/changeset/base/304752[304752] |24 августа 2016 |12.0-CURRENT после исправления LC*MASK для man:newlocale[3] и man:querylocale[3] (rev link:https://svnweb.freebsd.org/changeset/base/304703[304703]). |1200005 |link:https://svnweb.freebsd.org/changeset/base/304789[304789] |25 августа 2016 |12.0-CURRENT после изменения некоторых интерфейсов ioctl в ревизии link:https://svnweb.freebsd.org/changeset/base/304787[304787] между пользовательскими программами iSCSI и ядром. |1200006 |link:https://svnweb.freebsd.org/changeset/base/305256[305256] |1 сентября 2016 |12.0-CURRENT после исправления META_MODE в man:crunchgen[1] в link:https://svnweb.freebsd.org/changeset/base/305254[305254]. |1200007 |link:https://svnweb.freebsd.org/changeset/base/305421[305421] |5 сентября 2016 |12.0-CURRENT после разрешения взаимоблокировки между `device_detach()` и man:usbd_do_request_flags[9]. |1200008 |link:https://svnweb.freebsd.org/changeset/base/305833[305833] |15 сентября 2016 |12.0-CURRENT после удаления совместимого с 4.3BSD макроса `m_copy()` в link:https://svnweb.freebsd.org/changeset/base/305824[305824]. |1200009 |link:https://svnweb.freebsd.org/changeset/base/306077[306077] |21 сентября 2016 |12.0-CURRENT после удаления `bio_taskqueue()` в link:https://svnweb.freebsd.org/changeset/base/305988[305988]. |1200010 |link:https://svnweb.freebsd.org/changeset/base/306276[306276] |23 сентября 2016 |12.0-CURRENT после монтирования man:msdosfs[5] с поддержкой `longnames` по умолчанию. |1200011 |link:https://svnweb.freebsd.org/changeset/base/306556[306556] |1 октября 2016 |12.0-CURRENT после добавления поля `fb_memattr` в `fb_info` в link:https://svnweb.freebsd.org/changeset/base/306555[306555]. |1200012 |link:https://svnweb.freebsd.org/changeset/base/306592[306592] |2 октября 2016 |12.0-CURRENT после изменений в man:net80211[4] (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] |12 октября 2016 |12.0-CURRENT после установки заголовочных файлов, необходимых для разработки с `libzfs_core`. |1200014 |link:https://svnweb.freebsd.org/changeset/base/307529[307529] |17 октября 2016 |12.0-CURRENT после объединения общего кода в man:rtwn[4] и man:urtwn[4], а также добавления поддержки устройств 802.11ac. |1200015 |link:https://svnweb.freebsd.org/changeset/base/308874[308874] |20 ноября 2016 |12.0-CURRENT после некоторого изменения ABI для исправления powerpc. |1200016 |link:https://svnweb.freebsd.org/changeset/base/309017[309017] |22 ноября 2016 |12.0-CURRENT после удаления полей, связанных с `PG_CACHED`, из `vmmeter`. |1200017 |link:https://svnweb.freebsd.org/changeset/base/309124[309124] |25 ноября 2016 |12.0-CURRENT после обновления копий clang, llvm, lldb, compiler-rt и libc++ до версии 3.9.0 и добавления lld 3.9.0. |1200018 |link:https://svnweb.freebsd.org/changeset/base/309676[309676] |7 декабря 2016 |12.0-CURRENT после добавления члена `ki_moretdname` в структуры `struct kinfo_proc` и `struct kinfo_proc32` для экспорта полного имени потока в пользовательские утилиты. |1200019 |link:https://svnweb.freebsd.org/changeset/base/310149[310149] |16 декабря 2016 |12.0-CURRENT после начала закладки основы для поддержки 11ac. |1200020 |link:https://svnweb.freebsd.org/changeset/base/312087[312087] |13 января 2017 |12.0-CURRENT после удаления `fgetsock` и `fputsock`. |1200021 |link:https://svnweb.freebsd.org/changeset/base/313858[313858] |16 февраля 2017 |12.0-CURRENT после удаления поддержки MCA и EISA. |1200022 |link:https://svnweb.freebsd.org/changeset/base/314040[314040] |21 февраля 2017 |12.0-CURRENT после обеспечения сохранности структуры задач LinuxKPI между системными вызовами. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/314373[314373] |2 марта 2017 |12.0-CURRENT после удаления поддержки бинарной совместимости с System V Release 4. |1200023 |link:https://svnweb.freebsd.org/changeset/base/314564[314564] |2 марта 2017 |12.0-CURRENT после обновления копий clang, llvm, lld, lldb, compiler-rt и libc++ до версии 4.0.0. |1200024 |link:https://svnweb.freebsd.org/changeset/base/314865[314865] |7 марта 2017 |12.0-CURRENT после удаления [.filename]#pcap-int.h# |1200025 |link:https://svnweb.freebsd.org/changeset/base/315430[315430] |16 марта 2017 |12.0-CURRENT после добавления заголовочного файла [.filename]##. |1200026 |link:https://svnweb.freebsd.org/changeset/base/315662[315662] |16 марта 2017 |12.0-CURRENT после скрытия `struct inpcb` и `struct tcpcb` от пользовательского пространства. |1200027 |link:https://svnweb.freebsd.org/changeset/base/315673[315673] |21 марта 2017 |12.0-CURRENT после того, как блокировка CAM SIM стала опциональной. |1200028 |link:https://svnweb.freebsd.org/changeset/base/316683[316683] |10 апреля 2017 |12.0-CURRENT после переименования `smp_no_rendevous_barrier()` в `smp_no_rendezvous_barrier()` в 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 после удаления `struct vmmeter` из `struct pcpu` в link:https://svnweb.freebsd.org/changeset/base/317061[317061]. |1200030 |link:https://svnweb.freebsd.org/changeset/base/317383[317383] |24 апреля 2017 |12.0-CURRENT после удаления поддержки NATM, включая man:en[4], man:fatm[4], man:hatm[4] и man:patm[4]. |1200031 |link:https://svnweb.freebsd.org/changeset/base/318736[318736] |23 мая 2017 |12.0-CURRENT после расширения типов `ino_t`, `dev_t`, `nlink_t` до 64 бит и изменения структуры `struct dirent` (также известное как ino64). |1200032 |link:https://svnweb.freebsd.org/changeset/base/319664[319664] |8 июня 2017 |12.0-CURRENT после удаления `groff`. |1200033 |link:https://svnweb.freebsd.org/changeset/base/320043[320043] |17 июня 2017 |12.0-CURRENT после того, как тип члена `data` структуры `struct event` был увеличен до 64 бит, и добавлены члены расширенной структуры. |1200034 |link:https://svnweb.freebsd.org/changeset/base/320085[320085] |19 июня 2017 |12.0-CURRENT после изменения клиента и сервера NFS для фактического использования 64-битного `ino_t`. |1200035 |link:https://svnweb.freebsd.org/changeset/base/320317[320317] |June 24, 2017 |12.0-CURRENT после добавления флага `MAP_GUARD` в man:mmap[2]. |1200036 |link:https://svnweb.freebsd.org/changeset/base/320347[320347] |26 июня 2017 |12.0-CURRENT после изменения `time_t` на 64 бита на powerpc (32-битная версия). |1200037 |link:https://svnweb.freebsd.org/changeset/base/320545[320545] |1 июля 2017 |12.0-CURRENT после очистки и встраивания функций `bus_dmamap*` (link:https://svnweb.freebsd.org/changeset/base/320528[320528]). |1200038 |link:https://svnweb.freebsd.org/changeset/base/320879[320879] |10 июля 2017 |12.0-CURRENT после коммита MMC CAM (link:https://svnweb.freebsd.org/changeset/base/320844[320844]). |1200039 |link:https://svnweb.freebsd.org/changeset/base/321369[321369] |22 июля 2017 |12.0-CURRENT после обновления копий clang, llvm, lld, lldb, compiler-rt и libc++ до версии 5.0.0 (trunk r308421). |1200040 |link:https://svnweb.freebsd.org/changeset/base/321688[321688] |29 июля 2017 |12.0-CURRENT после добавления поддержки принудительного демонтирования клиента NFS `umount -N`. |1200041 |link:https://svnweb.freebsd.org/changeset/base/322762[322762] |21 августа 2017 |12.0-CURRENT после того, как инструкция WRFSBASE стала работоспособной на amd64. |1200042 |link:https://svnweb.freebsd.org/changeset/base/322900[322900] |25 августа 2017 |12.0-CURRENT после изменения счетчиков PLPMTUD для использования man:counter[9]. |1200043 |link:https://svnweb.freebsd.org/changeset/base/322989[322989] |28 августа 2017 |12.0-CURRENT после уменьшения CACHE_LINE_SIZE для x86 до 64 байт. |1200044 |link:https://svnweb.freebsd.org/changeset/base/323349[323349] |8 сентября 2017 |12.0-CURRENT после реализации `poll_wait()` в LinuxKPI. |1200045 |link:https://svnweb.freebsd.org/changeset/base/323706[323706] |18 сентября 2017 |12.0-CURRENT после добавления поддержки разделяемой памяти в LinuxKPI. (link:https://svnweb.freebsd.org/changeset/base/323703[323703]). |1200046 |link:https://svnweb.freebsd.org/changeset/base/323910[323910] |22 сентября 2017 |12.0-CURRENT после добавления поддержки 32-битных совместимых IOCTL в LinuxKPI. |1200047 |link:https://svnweb.freebsd.org/changeset/base/324053[324053] |26 сентября 2017 |12.0-CURRENT после удаления 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] |2 октября 2017 |12.0-CURRENT после скрытия `struct socket` и `struct unpcb` из пользовательского пространства. |1200049 |link:https://svnweb.freebsd.org/changeset/base/324281[324281] |4 октября 2017 |12.0-CURRENT после добавления поля `value.u16` в структуру `struct diocgattr_arg`. |1200050 |link:https://svnweb.freebsd.org/changeset/base/324342[324342] |5 октября 2017 |12.0-CURRENT после добавления `armv7 MACHINE_ARCH`. (link:https://svnweb.freebsd.org/changeset/base/324340[324340]). |1200051 |link:https://svnweb.freebsd.org/changeset/base/324455[324455] |9 октября 2017 |12.0-CURRENT после удаления [.filename]#libstand.a# как публичного интерфейса. (link:https://svnweb.freebsd.org/changeset/base/324454[324454]). |1200052 |link:https://svnweb.freebsd.org/changeset/base/325028[325028] |26 октября 2017 |12.0-CURRENT после исправления `ptrace()`, чтобы всегда очищать правильное событие потока при возобновлении. |1200053 |link:https://svnweb.freebsd.org/changeset/base/325506[325506] |7 ноября 2017 |12.0-CURRENT после изменения структуры `struct mbuf` для добавления опциональных аппаратных меток времени для принимаемых пакетов. |1200054 |link:https://svnweb.freebsd.org/changeset/base/325852[325852] |15 ноября 2017 |12.0-CURRENT после изменения структуры `struct vmtotal` для поддержки отчёта больших счётчиков памяти. |1200055 |link:https://svnweb.freebsd.org/changeset/base/327740[327740] |9 января 2018 |12.0-CURRENT после добавления поддержки `cpucontrol -e`. |1200056 |link:https://svnweb.freebsd.org/changeset/base/327952[327952] |14 января 2018 |12.0-CURRENT после обновления clang, llvm, lld, lldb, compiler-rt и libc++ до версии 6.0.0 (ветки/release_60 r321788). |1200057 |link:https://svnweb.freebsd.org/changeset/base/329033[329033] |8 февраля 2018 |12.0-CURRENT после применения исправления в clang 6.0.0 для корректной сборки портов wine. |1200058 |link:https://svnweb.freebsd.org/changeset/base/329166[329166] |12 февраля 2018 |12.0-CURRENT после включения загрузчика Lua. |1200059 |link:https://svnweb.freebsd.org/changeset/base/330299[330299] |2 марта 2018 |12.0-CURRENT после удаления объявления `union semun`, если не определено `_WANT_SEMUN`. Также удаление `struct mymsg` и переименование членов `struct semid_ds` и `struct msgid_ds`, предназначенных только для ядра. |1200060 |link:https://svnweb.freebsd.org/changeset/base/330384[330384] |4 марта 2018 |12.0-CURRENT после обновления clang, llvm, lld, lldb, compiler-rt и libc++ до версии 6.0.0. |1200061 |link:https://svnweb.freebsd.org/changeset/base/332100[332100] |6 апреля 2018 |12.0-CURRENT после изменения man:syslog[3] для генерации сообщений в формате RFC 5424. |1200062 |link:https://svnweb.freebsd.org/changeset/base/332423[332423] |12 апреля 2018 |12.0-CURRENT после изменения API Netmap. |1200063 |link:https://svnweb.freebsd.org/changeset/base/333446[333446] |10 мая 2018 |12.0-CURRENT после переработки параметров интерфейса и внутренней части CTL для использования man:nv[3], разрешено создание нескольких портов ioctl интерфейса. |1200064 |link:https://svnweb.freebsd.org/changeset/base/334074[334074] |22 мая 2018 |12.0-CURRENT после изменения ifnet address и multicast address TAILQ на CK_STAILQ. |1200065 |link:https://svnweb.freebsd.org/changeset/base/334290[334290] |28 мая 2018 |12.0-CURRENT после изменения man:dwatch[1] для разрешения использования '-E code' для переопределения EVENT_DETAILS в профиле. |1200066 |link:https://svnweb.freebsd.org/changeset/base/334466[334466] |1 июня 2018 |12.0-CURRENT после удаления внутриядерных таблиц pmc для Intel. |1200067 |link:https://svnweb.freebsd.org/changeset/base/334892[334892] |9 июня 2018 |12.0-CURRENT после добавления констант DW_LANG в libdwarf. |1200068 |link:https://svnweb.freebsd.org/changeset/base/334930[334930] |12 июня 2018 |12.0-CURRENT после изменения интерфейса между модулями NFS. |1200069 |link:https://svnweb.freebsd.org/changeset/base/335237[335237] |15 июня 2018 |12.0-CURRENT после изменения `struct kerneldumpheader` до версии 4 (аналогично версии 2 в 11-STABLE и более ранних). |1200070 |link:https://svnweb.freebsd.org/changeset/base/335873[335873] |2 июля 2018 |12.0-CURRENT после встраивания man:atomic[9] в модули на amd64 и i386, что потребовало пересборки всех модулей потребителей для этих архитектур. |1200071 |link:https://svnweb.freebsd.org/changeset/base/335930[335930] |4 июля 2018 |12.0-CURRENT после изменения ABI и API man:epoch[9] (link:https://svnweb.freebsd.org/changeset/base/335924[335924]), что потребовало пересборки модулей потребителей. |1200072 |link:https://svnweb.freebsd.org/changeset/base/335979[335979] |5 июля 2018 |12.0-CURRENT после изменения ABI и API `struct xinpcb` и связанных структур. |1200073 |link:https://svnweb.freebsd.org/changeset/base/336313[336313] |15 июля 2018 |12.0-CURRENT после изменения ABI и API структур `struct if_shared_ctx` и `struct if_softc_ctx`, что потребовало пересборки модулей потребителей man:iflib[9]. |1200074 |link:https://svnweb.freebsd.org/changeset/base/336360[336360] |16 июля 2018 |12.0-CURRENT после обновления конфигурации libstdc++ для использования функций C99. |1200075 |link:https://svnweb.freebsd.org/changeset/base/336538[336538] |19 июля 2018 |12.0-CURRENT после объединения `zfsloader` в `loader`, после добавления ntpd:ntpd как uid:gid 123:123 и после удаления поддержки big-endian для архитектуры arm (MACHINE_ARCH=armeb). |1200076 |link:https://svnweb.freebsd.org/changeset/base/336914[336914] |30 июля 2018 |12.0-CURRENT после изменений KPI в `timespecadd`. |1200077 |link:https://svnweb.freebsd.org/changeset/base/337576[337576] |10 августа 2018 |12.0-CURRENT после добавления в систему man:timespec_get[3]. |1200078 |link:https://svnweb.freebsd.org/changeset/base/337863[337863] |15 августа 2018 |12.0-CURRENT после выполнения хука exec.created для клеток. |1200079 |link:https://svnweb.freebsd.org/changeset/base/338061[338061] |19 августа 2018 |12.0-CURRENT после перевода `arc4random` на использование алгоритма Chacha20 и устаревания `arc4random_stir` и `arc4random_addrandom`. |1200080 |link:https://svnweb.freebsd.org/changeset/base/338172[338172] |22 августа 2018 |12.0-CURRENT после удаления драйверов drm. |1200081 |link:https://svnweb.freebsd.org/changeset/base/338182[338182] |21 августа 2018 |12.0-CURRENT после изменений KPI для NVMe. |1200082 |link:https://svnweb.freebsd.org/changeset/base/338285[338285] |24 августа 2018 |12.0-CURRENT после отмены удаления драйверов drm. |1200083 |link:https://svnweb.freebsd.org/changeset/base/338331[338331] |26 августа 2018 |12.0-CURRENT после удаления `arc4random_stir` и `arc4random_addrandom`. |1200084 |link:https://svnweb.freebsd.org/changeset/base/338478[338478] |5 сентября 2018 |12.0-CURRENT после обновления man:objcopy[1] для корректной обработки little-endian MIPS64 объектных файлов. |1200085 |link:https://svnweb.freebsd.org/changeset/base/339270[339270] |19 октября 2018 |12.0-STABLE после обновления OpenSSL до версии 1.1.1. |1200086 |link:https://svnweb.freebsd.org/changeset/base/339732[339732] |25 октября 2018 |12.0-STABLE после обновления номеров версий разделяемых библиотек OpenSSL. |1200500 |link:https://svnweb.freebsd.org/changeset/base/340471[340471] |16 ноября 2018 |12-STABLE после ветвления releng/12.0. |1200501 |link:https://svnweb.freebsd.org/changeset/base/342801[342801] |6 января 2019 |12-STABLE после слияния исправления поведения `linux_destroy_dev()`, когда остаются открытые файлы из уничтожаемого cdev. |1200502 |link:https://svnweb.freebsd.org/changeset/base/343126[343126] |January 17, 2019 |12-STABLE после включения #include в C++. |1200503 |link:https://svnweb.freebsd.org/changeset/base/344152[344152] |15 февраля 2019 |12-STABLE после слияния исправления man:renameat[2] для ядер с CAPABILITIES. |1200504 |link:https://svnweb.freebsd.org/changeset/base/345169[345169] |15 марта 2019 |12-STABLE после слияния CCM для работы с портом ZoF. |1200505 |link:https://svnweb.freebsd.org/changeset/base/345327[345327] |20 марта 2019 |12-STABLE после объединения поддержки выборочного отключения ZFS без отключения загрузчика. |1200506 |link:https://svnweb.freebsd.org/changeset/base/346168[346168] |12 апреля 2019 |12-STABLE после слияния llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp 8.0.0 финальный релиз r356365. |1200507 |link:https://svnweb.freebsd.org/changeset/base/346337[346337] |17 апреля 2019 |12-STABLE после слияния изменений iflib из ревизий link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] и частично из link:https://svnweb.freebsd.org/changeset/base/345305[345305]. |1200508 |link:https://svnweb.freebsd.org/changeset/base/346784[346784] |27 апреля 2019 |12-STABLE после появления `ether_gen_addr`. |1200509 |link:https://svnweb.freebsd.org/changeset/base/347790[347790] |16 мая 2019 |12-STABLE после обновления номеров версий драйверов Mellanox (man:mlx4en[4]; man:mlx5en[4]). |1200510 |link:https://svnweb.freebsd.org/changeset/base/348036[348036] |21 мая 2019 |12-STABLE после изменения структуры в linuxkpi из link:https://svnweb.freebsd.org/changeset/base/348035[348035]. |1200511 |link:https://svnweb.freebsd.org/changeset/base/348243[348243] |24 мая 2019 |12-STABLE после MFC изменения link:https://svnweb.freebsd.org/changeset/base/347843[347843]: добавление элемента `group_leader` в структуру `task_struct` для LinuxKPI. |1200512 |link:https://svnweb.freebsd.org/changeset/base/348245[348245] |24 мая 2019 |12-STABLE после добавления элемента контекста к ww_mutex в LinuxKPI. |1200513 |link:https://svnweb.freebsd.org/changeset/base/349763[349763] |5 июля 2019 |12-STABLE после MFC man:epoch[9] изменил: 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] |17 июля 2019 |12-STABLE после добавлений в список rcu LinuxKPI. |1200515 |link:https://svnweb.freebsd.org/changeset/base/350877[350877] |11 августа 2019 |12-STABLE после слияния изменений link:https://svnweb.freebsd.org/changeset/base/349891[349891] (реорганизация списков SRCS в виде одного файла на строку с последующей сортировкой по алфавиту) и link:https://svnweb.freebsd.org/changeset/base/349972[349972] (добавление обёрток системных вызовов `arm_sync_icache()` и `arm_drain_writebuf()` для sysarch). |1200516 |link:https://svnweb.freebsd.org/changeset/base/351276[351276] |20 августа 2019 |12-STABLE после слияния различных изменений в iflib (MFC) link:https://svnweb.freebsd.org/changeset/base/351276[351276]. |1200517 |link:https://svnweb.freebsd.org/changeset/base/352076[352076] |9 сентября 2019 |12-STABLE после добавления функций создания/удаления sysfs, обрабатывающих несколько файлов за один вызов в LinuxKPI. |1200518 |link:https://svnweb.freebsd.org/changeset/base/352114[352114] |10 сентября 2019 |12-STABLE после дополнительных обновлений LinuxKPI в sysfs. |1200519 |link:https://svnweb.freebsd.org/changeset/base/352351[352351] |15 сентября 2019 |12-STABLE после переноса (MFC) нового драйвера fusefs. |1201000 |link:https://svnweb.freebsd.org/changeset/base/352546[352546] |20 сентября 2019 |releng/12.1 ответвился от stable/12@r352480. |1201500 |link:https://svnweb.freebsd.org/changeset/base/352547[352547] |20 сентября 2019 |12-STABLE после ветвления releng/12.1. |1201501 |link:https://svnweb.freebsd.org/changeset/base/354598[354598] |10 ноября 2019 |12-STABLE после исправления потенциальной проблемы безопасности OOB-чтения в libc++. |1201502 |link:https://svnweb.freebsd.org/changeset/base/354613[354613] |11 ноября 2019 |12-STABLE после включения атрибутов группы классов устройств в LinuxKPI. |1201503 |link:https://svnweb.freebsd.org/changeset/base/354928[354928] |21 ноября 2019 |12-STABLE после добавления поддержки `AT_EXECPATH` в man:elf_aux_info[3]. |1201504 |link:https://svnweb.freebsd.org/changeset/base/355658[355658] |10 ноября 2019 |12-STABLE после исправления проверки версии C++ для объявления man:timespec_get[3]. |1201505 |link:https://svnweb.freebsd.org/changeset/base/355899[355899] |19 декабря 2019 |12-STABLE после добавления расширений `sigsetop`, которые часто встречаются в musl libc и glibc. |1201506 |link:https://svnweb.freebsd.org/changeset/base/355968[355968] |21 декабря 2019 |12-STABLE после удвоения значения `ARG_MAX` для 64-битных платформ. |1201507 |link:https://svnweb.freebsd.org/changeset/base/356306[356306] |2 января 2020 |12-STABLE после добавления функций в man:bitstring[3] для поиска непрерывных последовательностей установленных или сброшенных битов. |1201508 |link:https://svnweb.freebsd.org/changeset/base/356394[356394] |6 января 2020 |12-STABLE после изменения статистики USB для каждого устройства вместо каждой шины. |1201509 |link:https://svnweb.freebsd.org/changeset/base/356460[356460] |7 января 2020 |12-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до финального релиза 9.0.0 r372316. |1201510 |link:https://svnweb.freebsd.org/changeset/base/356679[356679] |13 января 2020 |12-STABLE после добавления собственного счётчика для отменённых USB-передач. |1201511 |link:https://svnweb.freebsd.org/changeset/base/357333[357333] |31 января 2020 |12-STABLE после добавления символической ссылки [.filename]#/etc/os-release# на [.filename]#/var/run/os-release#. |1201512 |link:https://svnweb.freebsd.org/changeset/base/357612[357612] |6 февраля 2020 |12-STABLE после недавних изменений в LinuxKPI. |1201513 |link:https://svnweb.freebsd.org/changeset/base/359957[359957] |15 апреля 2020 |12-STABLE после разделения интерфейса RCU на допускающий и не допускающий сон части в LinuxKPI. |1201514 |link:https://svnweb.freebsd.org/changeset/base/360525[360525] |1 мая 2020 |12-STABLE после реализации полной поддержки man:bus_dma[9] в LinuxKPI и включения всех зависимостей. |1201515 |link:https://svnweb.freebsd.org/changeset/base/360545[360545] |1 мая 2020 |12-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.0. |1201516 |link:https://svnweb.freebsd.org/changeset/base/360620[360620] |4 мая 2020 |12-STABLE после перемещения `id_mapped` в конец структуры `bus_dma_impl` для сохранения KPI. |1201517 |link:https://svnweb.freebsd.org/changeset/base/361350[361350] |21 мая 2020 |12-STABLE после переименования `vm.max_wired` в `vm.max_user_wired` и изменения его типа. |1201518 |link:https://svnweb.freebsd.org/changeset/base/362319[362319] |18 июня 2020 |12-STABLE после реализации макроса функции `__is_constexpr()` в LinuxKPI. |1201519 |link:https://svnweb.freebsd.org/changeset/base/362916[362916] |4 июля 2020 |12-STABLE после перевода liblzma на использование реализации SHA256 из libmd. |1201520 |link:https://svnweb.freebsd.org/changeset/base/363494[363494] |24 июля 2020 |12-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.1. |1201521 |link:https://svnweb.freebsd.org/changeset/base/363790[363790] |3 августа 2020 |12-STABLE после реализации функции `array_size()` в LinuxKPI. |1201522 |link:https://svnweb.freebsd.org/changeset/base/363832[363832] |4 августа 2020 |12-STABLE после добавления системного вызова sysctlbyname. |1201523 |link:https://svnweb.freebsd.org/changeset/base/364390[364390] |19 августа 2020 |12-STABLE после изменения для клонирования полей структуры задачи, связанных с RCU. |1201524 |link:https://svnweb.freebsd.org/changeset/base/365356[365356] |5 сентября 2020 |12-STABLE после выделения XDR в отдельный модуль ядра для минимизации зависимостей ZFS. |1201525 |link:https://svnweb.freebsd.org/changeset/base/365471[365471] |8 сентября 2020 |12-STABLE после добавления атомарных функций и функций `bswap` в libcompiler_rt. |1201526 |link:https://svnweb.freebsd.org/changeset/base/365608[365608] |10 сентября 2020 |12-STABLE после обновления net80211 и изменений API проверки привилегий ядра. |1202000 |link:https://svnweb.freebsd.org/changeset/base/365618[365618] |11 сентября 2020 |releng/12.2 ответвился от stable/12@r365618. |1202500 |link:https://svnweb.freebsd.org/changeset/base/365619[365619] |11 сентября 2020 |12-STABLE после ветвления releng/12.2. |1202501 |link:https://svnweb.freebsd.org/changeset/base/365661[365661] |12 сентября 2020 |12-STABLE после последующих коммитов в libcompiler_rt. |1202502 |link:https://svnweb.freebsd.org/changeset/base/365816[365816] |16 сентября 2020 |12-STABLE после исправления сборки приложения man:crunchgen[1] с `WARNS=6`. |1202503 |link:https://svnweb.freebsd.org/changeset/base/366878[366878] |20 октября 2020 |12-STABLE после заполнения поля контекста захвата `ww_mutex` в LinuxKPI. |1202504 |link:https://svnweb.freebsd.org/changeset/base/367511[367511] |9 ноября 2020 |12-STABLE после добавления man:ptsname_r[3]. |1202505 |gitref:f3d75bed5475b15f21edf4052665b1212b548bd0[repository="src",length=12] |28 декабря 2020 |12-STABLE после улучшения обработки альтернативных настроек в стеке USB. |1202506 |gitref:d36cc12ddfe3335ec8306bd4b393f11069551fa0[repository="src",length=12] |30 апреля 2021 |12-STABLE после изменения внутреннего KAPI между krpc и NFS. |1202507 |gitref:1e279fe9deaea1c5e3503117dd3077dcffb1276d[repository="src",length=12] |10 мая 2021 |12-STABLE после изменения внутреннего KAPI между модулями nscl.ko и nfscommon.ko. |1202508 |gitref:489236b0474857b0a7a2df77c302290e12be9e7b[repository="src",length=12] |26 июня 2021 |12-STABLE после изменения внутреннего KAPI между модулями krpc и nfsd. |1203500 |gitref:f2900e784cb024e55ec0f5cd6834af5fadcb9f9a[repository="src",length=12] |20 октября 2021 |12-STABLE после ветвления releng/12.3. |1203501 |gitref:b148c7b87148b653fdbef9c5aa591b9abcd99e26[repository="src",length=12] |22 декабря 2021 |12-STABLE после добавления атомарных функций и функций `bswap` в libcompiler_rt. |1203502 |gitref:4772e4135cb3fe7f25531894f3b02f35ec086bda[repository="src",length=12] |22 декабря 2021 |12-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 11.0.1. |1203503 |gitref:e405b2dc913c99189aa9b923ed686a790253cc7e[repository="src",length=12] |25 декабря 2021 |12-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 12.0.0. |1203504 |gitref:1a398266112e73f91a4f2e2701ceefd3f2948aac[repository="src",length=12] |25 декабря 2021 |12-STABLE после добавления вспомогательных функций LSE атомарных операций вне строки в [.filename]#libcompiler_rt.a# для архитектуры aarch64. |1203505 |gitref:0b7be89b329e0f862c25f34abfb13c75a4d45f2a[repository="src",length=12] |25 декабря 2021 |12-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 13.0.0. |1203506 |gitref:f591279d9c93bc2ea9cd1a447c2df11d437fbc7b[repository="src",length=12] |12 февраля 2022 |12-STABLE после восстановления компромисса доступности random(4). |1203507 |gitref:180d95e04e938328de8f2a24d16fdb5049e15262[repository="src",length=12] |9 апреля 2022 |12-STABLE после объединения zlib. |1203508 |gitref:6c717a28505d3e77a0c3780ca1f65eb85b538eb9[repository="src",length=12] |19 октября 2022 |12-STABLE после iflib: Разрешить драйверам определять, в какую очередь передавать данные. |1204000 |gitref:fce871fe35204527a2ce08e43e1572ae9295cc00[repository="src",length=12] |20 октября 2022 |releng/12.4 — ветка от stable/12. |1204500 |gitref:6a9031c5e2ba5435aa4ea08ee05c351d5bef035d[repository="src",length=12] |20 октября 2022 |12-STABLE после ветвления releng/12.4. |=== //// Template: |12XXXXX |gitref:XXXXXXXX[repository="src",length=12] |October 30, 2021 |12-STABLE after XXXXXX. //// [[versions-11]] == FreeBSD 11 Версии [[freebsd-versions-table-11]] .FreeBSD 11 Значения `__FreeBSD_version` [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |1100000 |link:https://svnweb.freebsd.org/changeset/base/256284[256284] |10 октября 2013 |11.0-CURRENT. |1100001 |link:https://svnweb.freebsd.org/changeset/base/256776[256776] |19 октября 2013 |11.0-CURRENT после добавления поддержки сценариев [.filename]#rc.d# для "первой загрузки", что позволяет портам использовать эту возможность. |1100002 |link:https://svnweb.freebsd.org/changeset/base/257696[257696] |5 ноября 2013 |11.0-CURRENT после прекращения поддержки устаревших ioctl. |1100003 |link:https://svnweb.freebsd.org/changeset/base/258284[258284] |17 ноября 2013 |11.0-CURRENT после изменений в iconv. |1100004 |link:https://svnweb.freebsd.org/changeset/base/259424[259424] |15 декабря 2013 |11.0-CURRENT после изменения поведения `gss_pseudo_random`, внесённого в link:https://svnweb.freebsd.org/changeset/base/259286[259286]. |1100005 |link:https://svnweb.freebsd.org/changeset/base/260010[260010] |28 декабря 2013 |11.0-CURRENT после link:https://svnweb.freebsd.org/changeset/base/259951[259951] - Не объединять записи в man:vm_map_stack[9]. |1100006 |link:https://svnweb.freebsd.org/changeset/base/261246[261246] |28 января 2014 |11.0-CURRENT после обновления libelf и libdwarf. |1100007 |link:https://svnweb.freebsd.org/changeset/base/261283[261283] |30 января 2014 |11.0-CURRENT после обновления libc++ до версии 3.4. |1100008 |link:https://svnweb.freebsd.org/changeset/base/261881[261881] |February 14, 2014 |11.0-CURRENT после исправления совместимости ABI в libc++ 3.4. |1100009 |link:https://svnweb.freebsd.org/changeset/base/261991[261991] |16 февраля 2014 |11.0-CURRENT после обновления llvm/clang до версии 3.4. |1100010 |link:https://svnweb.freebsd.org/changeset/base/262630[262630] |28 февраля 2014 |11.0-CURRENT после обновления ncurses до версии 5.9 (ревизия link:https://svnweb.freebsd.org/changeset/base/262629[262629]). |1100011 |link:https://svnweb.freebsd.org/changeset/base/263102[263102] |13 марта 2014 |11.0-CURRENT после изменения ABI в структуре `if_data`. |1100012 |link:https://svnweb.freebsd.org/changeset/base/263140[263140] |14 марта 2014 |11.0-CURRENT после удаления поддержки протокола Novell IPX. |1100013 |link:https://svnweb.freebsd.org/changeset/base/263152[263152] |14 марта 2014 |11.0-CURRENT после удаления поддержки протокола AppleTalk. |1100014 |link:https://svnweb.freebsd.org/changeset/base/263235[263235] |March 16, 2014 |11.0-CURRENT после переименования [.filename]## в [.filename]## во избежание конфликта с одноименными заголовочными файлами в других операционных системах. Совместимый заголовочный файл оставлен для уменьшения количества проблем при сборке, но в будущем будет устаревшим. |1100015 |link:https://svnweb.freebsd.org/changeset/base/263620[263620] |22 марта 2014 |11.0-CURRENT после переименования `cnt` в `vm_cnt`. |1100016 |link:https://svnweb.freebsd.org/changeset/base/263660[263660] |23 марта 2014 |11.0-CURRENT после добавления `armv6hf TARGET_ARCH`. |1100017 |link:https://svnweb.freebsd.org/changeset/base/264121[264121] |4 апреля 2014 |11.0-CURRENT после удаления поддержки GCC для определения `__block`. |1100018 |link:https://svnweb.freebsd.org/changeset/base/264212[264212] |6 апреля 2014 |11.0-CURRENT после добавления поддержки протокола UDP-Lite (RFC 3828). |1100019 |link:https://svnweb.freebsd.org/changeset/base/264289[264289] |8 апреля 2014 |11.0-CURRENT после FreeBSD-SA-14:06.openssl (ревизия link:https://svnweb.freebsd.org/changeset/base/264265[264265]). |1100020 |link:https://svnweb.freebsd.org/changeset/base/265215[265215] |1 мая 2014 |11.0-CURRENT после удаления `lindev` в пользу наличия /dev/full по умолчанию (rev link:https://svnweb.freebsd.org/changeset/base/265212[265212]). |1100021 |link:https://svnweb.freebsd.org/changeset/base/266151[266151] |6 мая 2014 |11.0-CURRENT после изменений в [.filename]#src.opts.mk#, отделяющих man:make.conf[5] от `buildworld` (rev link:https://svnweb.freebsd.org/changeset/base/265419[265419]). |1100022 |link:https://svnweb.freebsd.org/changeset/base/266904[266904] |30 мая 2014 |11.0-CURRENT после изменений в man:strcasecmp[3], перемещении man:strcasecmp_l[3] и man:strncasecmp_l[3] из [.filename]## в [.filename]## для соответствия POSIX 2008 (rev link:https://svnweb.freebsd.org/changeset/base/266865[266865]). |1100023 |link:https://svnweb.freebsd.org/changeset/base/267440[267440] |13 июня 2014 |11.0-CURRENT после подключения библиотеки CUSE и модуля ядра к сборке по умолчанию. |1100024 |link:https://svnweb.freebsd.org/changeset/base/267992[267992] |27 июня 2014 |11.0-CURRENT после изменения API man:sysctl[3]. |1100025 |link:https://svnweb.freebsd.org/changeset/base/268066[268066] |30 июня 2014 |11.0-CURRENT после обновления библиотеки man:regex[3] для добавления разделителей ">" и "<". |1100026 |link:https://svnweb.freebsd.org/changeset/base/268118[268118] |1 июля 2014 |11.0-CURRENT после изменения внутреннего интерфейса между модулями NFS, включая krpc, в (rev link:https://svnweb.freebsd.org/changeset/base/268115[268115]). |1100027 |link:https://svnweb.freebsd.org/changeset/base/268441[268441] |8 июля 2014 |11.0-CURRENT после FreeBSD-SA-14:17.kmem (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/268431[268431]). |1100028 |link:https://svnweb.freebsd.org/changeset/base/268945[268945] |21 июля 2014 |11.0-CURRENT после исправления соответствия man:hdestroy[3] изменился ABI. |1100029 |link:https://svnweb.freebsd.org/changeset/base/270173[270173] |3 августа 2014 |11.0-CURRENT после исправления ошибки `SOCK_DGRAM` (rev link:https://svnweb.freebsd.org/changeset/base/269489[269489]). |1100030 |link:https://svnweb.freebsd.org/changeset/base/270929[270929] |1 сентября 2014 |11.0-CURRENT после того, как сокеты `SOCK_RAW` были изменены так, чтобы вообще не модифицировать пакеты. |1100031 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |9 сентября 2014 |11.0-CURRENT после FreeBSD-SA-14:18.openssl (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/269686[269686]). |1100032 |link:https://svnweb.freebsd.org/changeset/base/271438[271438] |11 сентября 2014 |11.0-CURRENT после изменений API в `ifa_ifwithbroadaddr`, `ifa_ifwithdstaddr`, `ifa_ifwithnet` и `ifa_ifwithroute`. |1100033 |link:https://svnweb.freebsd.org/changeset/base/271657[271657] |9 сентября 2014 |11.0-CURRENT после изменения `access`, `eaccess` и `faccessat` для проверки аргумента mode. |1100034 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |16 сентября 2014 |11.0-CURRENT после 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] |17 сентября 2014 |11.0-CURRENT после добавления поддержки аппаратного контекста i915. |1100036 |link:https://svnweb.freebsd.org/changeset/base/271724[271724] |17 сентября 2014 |Увеличение версии для различия в ABI-примечании бинарных файлов, готовых к строгой проверке флагов man:mmap[2] (изменение link:https://svnweb.freebsd.org/changeset/base/271724[271724]). |1100037 |link:https://svnweb.freebsd.org/changeset/base/272674[272674] |6 октября 2014 |11.0-CURRENT после добавления man:explicit_bzero[3] (изменение:https://svnweb.freebsd.org/changeset/base/272673[272673]). |1100038 |link:https://svnweb.freebsd.org/changeset/base/272951[272951] |October 11, 2014 |11.0-CURRENT после очистки заголовков TCP wrapper. |1100039 |link:https://svnweb.freebsd.org/changeset/base/273250[273250] |18 октября 2014 |11.0-CURRENT после удаления `MAP_RENAME` и `MAP_NORESERVE`. |1100040 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |21 октября 2014 |11.0-CURRENT после FreeBSD-SA-14:23 (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/273146[273146]). |1100041 |link:https://svnweb.freebsd.org/changeset/base/273875[273875] |30 октября 2014 |11.0-CURRENT после изменений API в `syscall_register`, `syscall32_register`, `syscall_register_helper` и `syscall32_register_helper` (rev link:https://svnweb.freebsd.org/changeset/base/273707[273707]). |1100042 |link:https://svnweb.freebsd.org/changeset/base/274046[274046] |3 ноября 2014 |11.0-CURRENT после изменения `struct tcpcb`. |1100043 |link:https://svnweb.freebsd.org/changeset/base/274085[274085] |4 ноября 2014 |11.0-CURRENT после включения man:vt[4] по умолчанию. |1100044 |link:https://svnweb.freebsd.org/changeset/base/274116[274116] |4 ноября 2014 |11.0-CURRENT после добавления новых библиотек/утилит (`dpv` и `figpar`) для визуализации пропускной способности данных. |1100045 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |4 ноября 2014 |11.0-CURRENT после FreeBSD-SA-14:23, FreeBSD-SA-14:24 и FreeBSD-SA-14:25. |1100046 |link:https://svnweb.freebsd.org/changeset/base/274470[274470] |13 ноября 2014 |11.0-CURRENT после изменения сигнатуры `kern_poll` (rev link:https://svnweb.freebsd.org/changeset/base/274462[274462]). |1100047 |link:https://svnweb.freebsd.org/changeset/base/274476[274476] |13 ноября 2014 |11.0-CURRENT после удаления no-at версий вспомогательных системных вызовов VFS, таких как `kern_open`. |1100048 |link:https://svnweb.freebsd.org/changeset/base/275358[275358] |1 декабря 2014 |11.0-CURRENT после начала процесса удаления использования устаревшего флага "M_FLOWID" из сетевого кода. |1100049 |link:https://svnweb.freebsd.org/changeset/base/275633[275633] |9 декабря 2014 |11.0-CURRENT после импорта важного исправления в векторизатор LLVM, которое в некоторых случаях могло приводить к переполнению буфера. |1100050 |link:https://svnweb.freebsd.org/changeset/base/275732[275732] |12 декабря 2014 |11.0-CURRENT после добавления AES-ICM и AES-GCM в OpenCrypto. |1100051 |link:https://svnweb.freebsd.org/changeset/base/276096[276096] |December 23, 2014 |11.0-CURRENT после удаления старого кода клиента и сервера NFS из ядра. |1100052 |link:https://svnweb.freebsd.org/changeset/base/276479[276479] |31 декабря 2014 |11.0-CURRENT после обновления clang, llvm и lldb до версии 3.5.0. |1100053 |link:https://svnweb.freebsd.org/changeset/base/276781[276781] |7 января 2015 |11.0-CURRENT после того, как man:MCLGET[9] получил возвращаемое значение (rev link:https://svnweb.freebsd.org/changeset/base/276750[276750]). |1100054 |link:https://svnweb.freebsd.org/changeset/base/277213[277213] |15 января 2015 |11.0-CURRENT после переработки подсистемы вызовов. |1100055 |link:https://svnweb.freebsd.org/changeset/base/277528[277528] |22 января 2015 |11.0-CURRENT после отмены изменений callout в link:https://svnweb.freebsd.org/changeset/base/277213[277213]. |1100056 |link:https://svnweb.freebsd.org/changeset/base/277610[277610] |23 января 2015 |11.0-CURRENT после добавления системных вызовов `futimens` и `utimensat`. |1100057 |link:https://svnweb.freebsd.org/changeset/base/277897[277897] |29 января 2015 |11.0-CURRENT после удаления `d_thread_t`. |1100058 |link:https://svnweb.freebsd.org/changeset/base/278228[278228] |5 февраля 2015 |11.0-CURRENT после добавления поддержки запроса страницы расширенного запроса SCSI VPD (0x86). |1100059 |link:https://svnweb.freebsd.org/changeset/base/278442[278442] |9 февраля 2015 |11.0-CURRENT после импорта xz 5.2.0, который добавил многопоточное сжатие, и lzma получила зависимость от libthr (rev link:https://svnweb.freebsd.org/changeset/base/278433[278433]). |1100060 |link:https://svnweb.freebsd.org/changeset/base/278846[278846] |16 февраля 2015 |11.0-CURRENT после пересылки `FBIO_BLANK` клиентам фреймбуфера. |1100061 |link:https://svnweb.freebsd.org/changeset/base/278964[278964] |18 февраля 2015 |11.0-CURRENT после добавления `CDAI_FLAG_NONE`. |1100062 |link:https://svnweb.freebsd.org/changeset/base/279221[279221] |23 февраля 2015 |11.0-CURRENT после добавлений API man:mtio[4] и man:sa[4], а также man:ioctl[2]. |1100063 |link:https://svnweb.freebsd.org/changeset/base/279728[279728] |7 марта 2015 |11.0-CURRENT после добавления поддержки мьютексов в API `pps_ioctl()` в ядре. |1100064 |link:https://svnweb.freebsd.org/changeset/base/279729[279729] |7 марта 2015 |11.0-CURRENT после добавления поддержки PPS в драйверы USB-последовательных портов. |1100065 |link:https://svnweb.freebsd.org/changeset/base/280031[280031] |15 марта 2015 |11.0-CURRENT после обновления clang, llvm и lldb до версии 3.6.0. |1100066 |link:https://svnweb.freebsd.org/changeset/base/280306[280306] |20 марта 2015 |11.0-CURRENT после удаления поддержки SSLv2 из OpenSSL. |1100067 |link:https://svnweb.freebsd.org/changeset/base/280630[280630] |25 марта 2015 |11.0-CURRENT после удаления поддержки SSLv2 из man:fetch[1] и man:fetch[3]. |1100068 |link:https://svnweb.freebsd.org/changeset/base/281172[281172] |6 апреля 2015 |11.0-CURRENT после изменения системной настройки net.inet6.ip6.mif6table. |1100069 |link:https://svnweb.freebsd.org/changeset/base/281550[281550] |15 апреля 2015 |11.0-CURRENT после удаления квалификатора const из man:iconv[3]. |1100070 |link:https://svnweb.freebsd.org/changeset/base/281613[281613] |16 апреля 2015 |11.0-CURRENT после перемещения ALTQ из [.filename]#contrib# в [.filename]#net/altq#. |1100071 |link:https://svnweb.freebsd.org/changeset/base/282256[282256] |29 апреля 2015 |11.0-CURRENT после изменения API/ABI в man:smb[4] (rev link:https://svnweb.freebsd.org/changeset/base/281985[281985]). |1100072 |link:https://svnweb.freebsd.org/changeset/base/282319[282319] |1 мая 2015 |11.0-CURRENT после добавления man:reallocarray[3] в libc (изменение link:https://svnweb.freebsd.org/changeset/base/282314[282314]). |1100073 |link:https://svnweb.freebsd.org/changeset/base/282650[282650] |8 мая 2015 |11.0-CURRENT после увеличения максимального количества разрешённых PCM-каналов в PCM-потоке до 127 и уменьшения максимального количества подканалов до 1. |1100074 |link:https://svnweb.freebsd.org/changeset/base/283526[283526] |25 мая 2015 |11.0-CURRENT после добавления предварительной поддержки бинарных файлов Linux для x86-64 (rev link:https://svnweb.freebsd.org/changeset/base/283424[283424]) и обновления clang и llvm до версии 3.6.1. |1100075 |link:https://svnweb.freebsd.org/changeset/base/283623[283623] |27 мая 2015 |11.0-CURRENT после `dounmount()`, требующей ссылки на переданную структуру mount (изменение rev link:https://svnweb.freebsd.org/changeset/base/283602[283602]). |1100076 |link:https://svnweb.freebsd.org/changeset/base/283983[283983] |4 июня 2015 |11.0-CURRENT после отключения генерации записей в устаревших форматах баз данных паролей по умолчанию. |1100077 |link:https://svnweb.freebsd.org/changeset/base/284233[284233] |10 июня 2015 |11.0-CURRENT после изменений API в `lim_cur`, `lim_max` и `lim_rlimit` (rev link:https://svnweb.freebsd.org/changeset/base/284215[284215]). |1100078 |link:https://svnweb.freebsd.org/changeset/base/286672[286672] |12 августа 2015 |11.0-CURRENT после изменений man:crunchgen[1] в ревизиях link:https://svnweb.freebsd.org/changeset/base/284356[284356] до link:https://svnweb.freebsd.org/changeset/base/285986[285986]. |1100079 |link:https://svnweb.freebsd.org/changeset/base/286874[286874] |18 августа 2015 |11.0-CURRENT после импорта jemalloc 4.0.0 (ревизия link:https://svnweb.freebsd.org/changeset/base/286866[286866]). |1100080 |link:https://svnweb.freebsd.org/changeset/base/288943[288943] |5 октября 2015 |11.0-CURRENT после обновления clang, llvm, lldb, compiler-rt и libc++ до версии 3.7.0. |1100081 |link:https://svnweb.freebsd.org/changeset/base/289415[289415] |16 октября 2015 |11.0-CURRENT после `обновления` ZFS для поддержки возобновляемой отправки/приёмки (rev link:https://svnweb.freebsd.org/changeset/base/289362[289362]). |1100082 |link:https://svnweb.freebsd.org/changeset/base/289594[289594] |19 октября 2015 |11.0-CURRENT после обновлений Linux KPI. |1100083 |link:https://svnweb.freebsd.org/changeset/base/289749[289749] |October 22, 2015 |11.0-CURRENT после переименования [.filename]#linuxapi.ko# в [.filename]#linuxkpi.ko#. |1100084 |link:https://svnweb.freebsd.org/changeset/base/290135[290135] |29 октября 2015 |11.0-CURRENT после перемещения модуля LinuxKPI в стандартную сборку ядра. |1100085 |link:https://svnweb.freebsd.org/changeset/base/290207[290207] |30 октября 2015 |11.0-CURRENT после импорта OpenSSL 1.0.2d. |1100086 |link:https://svnweb.freebsd.org/changeset/base/290275[290275] |2 ноября 2015 |11.0-CURRENT после изменения макросов man:figpar[3] для большей уникальности. |1100087 |link:https://svnweb.freebsd.org/changeset/base/290479[290479] |7 ноября 2015 |11.0-CURRENT после изменения ABI man:sysctl_add_oid[9]. |1100088 |link:https://svnweb.freebsd.org/changeset/base/290495[290495] |7 ноября 2015 |11.0-CURRENT после переработки сортировки строк и локалей. |1100089 |link:https://svnweb.freebsd.org/changeset/base/290505[290505] |7 ноября 2015 |11.0-CURRENT после изменения API в 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] |10 ноября 2015 |11.0-CURRENT после изменения API для макроса callout_stop; (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/290664[290664]). |1100091 |link:https://svnweb.freebsd.org/changeset/base/291537[291537] |30 ноября 2015 |11.0-CURRENT после изменения интерфейса между модулями [.filename]#nfsd.ko# и [.filename]#nfscommon.ko# в link:https://svnweb.freebsd.org/changeset/base/291527[291527]. |1100092 |link:https://svnweb.freebsd.org/changeset/base/292499[292499] |19 декабря 2015 |11.0-CURRENT после удаления `vm_pageout_grow_cache` (изменение:https://svnweb.freebsd.org/changeset/base/292469[292469]). |1100093 |link:https://svnweb.freebsd.org/changeset/base/292966[292966] |30 декабря 2015 |11.0-CURRENT после удаления sys/crypto/sha2.h (изменение link:https://svnweb.freebsd.org/changeset/base/292782[292782]). |1100094 |link:https://svnweb.freebsd.org/changeset/base/294086[294086] |15 января 2016 |11.0-CURRENT после изменений LinuxKPI PCI (rev link:https://svnweb.freebsd.org/changeset/base/294086[294086]). |1100095 |link:https://svnweb.freebsd.org/changeset/base/294327[294327] |19 января 2016 |11.0-CURRENT после оптимизаций LRO. |1100096 |link:https://svnweb.freebsd.org/changeset/base/294505[294505] |21 января 2016 |11.0-CURRENT после добавления LinuxKPI idr_*. |1100097 |link:https://svnweb.freebsd.org/changeset/base/294860[294860] |26 января 2016 |11.0-CURRENT после изменения API в man:dpv[3]. |1100098 |link:https://svnweb.freebsd.org/changeset/base/295682[295682] |16 февраля 2016 |11.0-CURRENT после изменения API в `rman` (rev link:https://svnweb.freebsd.org/changeset/base/294883[294883]). |1100099 |link:https://svnweb.freebsd.org/changeset/base/295739[295739] |18 февраля 2016 |11.0-CURRENT после разрешения драйверам устанавливать лимит агрегации сегментов TCP ACK/данных. |1100100 |link:https://svnweb.freebsd.org/changeset/base/296136[296136] |26 февраля 2016 |11.0-CURRENT после добавления API man:bus_alloc_resource_any[9]. |1100101 |link:https://svnweb.freebsd.org/changeset/base/296417[296417] |5 марта 2016 |11.0-CURRENT после обновления копий clang, llvm, lldb и compiler-rt до релиза 3.8.0. |1100102 |link:https://svnweb.freebsd.org/changeset/base/296749[296749] |12 марта 2016 |11.0-CURRENT после исправления кросс-эндианности libelf в ревизии link:https://svnweb.freebsd.org/changeset/base/296685[296685]. |1100103 |link:https://svnweb.freebsd.org/changeset/base/297000[297000] |18 марта 2016 |11.0-CURRENT после использования `uintmax_t` для диапазонов `rman`. |1100104 |link:https://svnweb.freebsd.org/changeset/base/297156[297156] |21 марта 2016 |11.0-CURRENT после отслеживания использования `filemon` через указатель proc.p_filemon вместо собственных списков. |1100105 |link:https://svnweb.freebsd.org/changeset/base/297602[297602] |6 апреля 2016 |11.0-CURRENT после исправления функций `i` и `a` в sed, которые отбрасывали начальные пробелы. |1100106 |link:https://svnweb.freebsd.org/changeset/base/298486[298486] |22 апреля 2016 |11.0-CURRENT после исправлений для использования IPv6-адресов с RDMA. |1100107 |link:https://svnweb.freebsd.org/changeset/base/299090[299090] |4 мая 2016 |11.0-CURRENT после улучшения производительности и функциональности API man:bitstring[3]. |1100108 |link:https://svnweb.freebsd.org/changeset/base/299530[299530] |12 мая 2016 |11.0-CURRENT после исправления обработки IOCTL в LinuxKPI. |1100109 |link:https://svnweb.freebsd.org/changeset/base/299933[299933] |16 мая 2016 |11.0-CURRENT после реализации дополнительных функций, связанных с устройствами Linux, в LinuxKPI. |1100110 |link:https://svnweb.freebsd.org/changeset/base/300207[300207] |19 мая 2016 |11.0-CURRENT после добавления поддержки управления дисками с черепичной магнитной записью (Shingled Magnetic Recording, SMR). |1100111 |link:https://svnweb.freebsd.org/changeset/base/300303[300303] |20 мая 2016 |11.0-CURRENT после удаления `brk` и `sbrk` из arm64. |1100112 |link:https://svnweb.freebsd.org/changeset/base/300539[300539] |23 мая 2016 |11.0-CURRENT после добавления `bit_count` в man:bitstring[3] API. |1100113 |link:https://svnweb.freebsd.org/changeset/base/300701[300701] |26 мая 2016 |11.0-CURRENT после отключения ошибок выравнивания на armv6. |1100114 |link:https://svnweb.freebsd.org/changeset/base/300806[300806] |26 мая 2016 |11.0-CURRENT после исправления использования man:crunchgen[1] с `MAKEOBJDIRPREFIX`. |1100115 |link:https://svnweb.freebsd.org/changeset/base/300982[300982] |30 мая 2016 |11.0-CURRENT после добавления флага mbuf для `M_HASHTYPE_`. |1100116 |link:https://svnweb.freebsd.org/changeset/base/301011[301011] |31 мая 2016 |11.0-CURRENT после добавления SHA-512t256 (ревизия link:https://svnweb.freebsd.org/changeset/base/300903[300903]) и Skein (ревизия link:https://svnweb.freebsd.org/changeset/base/300966[300966]) в libmd, libcrypt, ядро и ZFS (ревизия link:https://svnweb.freebsd.org/changeset/base/301010[301010]). |1100117 |link:https://svnweb.freebsd.org/changeset/base/301892[301892] |6 июня 2016 |11.0-CURRENT после синхронизации libpam с основной версией link:https://svnweb.freebsd.org/changeset/base/301602[301602], что привело к увеличению версии библиотеки. |1100118 |link:https://svnweb.freebsd.org/changeset/base/302071[302071] |21 июня 2016 |11.0-CURRENT после нарушения бинарной совместимости структуры disk link:https://svnweb.freebsd.org/changeset/base/302069[302069]. |1100119 |link:https://svnweb.freebsd.org/changeset/base/302150[302150] |23 июня 2016 |11.0-CURRENT после перевода `geom_disk` на использование мьютекса пула. |1100120 |link:https://svnweb.freebsd.org/changeset/base/302153[302153] |23 июня 2016 |11.0-CURRENT после добавления запасных элементов в struct ifnet. |1100121 |link:https://svnweb.freebsd.org/changeset/base/303979[303979] |12 августа 2015 |11-STABLE после того, как ветка `releng/11.0` отделилась от 11-STABLE (изменение:https://svnweb.freebsd.org/changeset/base/303975[303975]). |1100500 |link:https://svnweb.freebsd.org/changeset/base/303979[303979] |12 августа 2016 |11.0-STABLE добавлена ветвленная link: https://svnweb.freebsd.org/changeset/base/303976[303976]. |1100501 |link:https://svnweb.freebsd.org/changeset/base/304609[304609] |22 августа 2016 |11.0-STABLE после добавления поддержки `thread_local` в C++11. |1100502 |link:https://svnweb.freebsd.org/changeset/base/304865[304865] |26 августа 2016 |11.0-STABLE после исправления `LC_*_MASK`. |1100503 |link:https://svnweb.freebsd.org/changeset/base/305733[305733] |12 сентября 2016 |11.0-STABLE после устранения взаимоблокировки между `device_detach()` и man:usbd_do_request_flags[9]. |1100504 |link:https://svnweb.freebsd.org/changeset/base/307330[307330] |14 октября 2016 |11.0-STABLE после объединения ZFS. |1100505 |link:https://svnweb.freebsd.org/changeset/base/307590[307590] |19 октября 2016 |11.0-STABLE после изменения `struct fb_info`. |1100506 |link:https://svnweb.freebsd.org/changeset/base/308048[308048] |28 октября 2016 |11.0-STABLE после установки заголовочных файлов, необходимых для разработки с `libzfs_core`. |1100507 |link:https://svnweb.freebsd.org/changeset/base/310120[310120] |15 декабря 2016 |11.0-STABLE после добавления члена `ki_moretdname` в структуры `struct kinfo_proc` и `struct kinfo_proc32` для экспорта полного имени потока в пользовательские утилиты. |1100508 |link:https://svnweb.freebsd.org/changeset/base/310618[310618] |26 декабря 2016 |11.0-STABLE после обновления копий clang, llvm, lldb, compiler-rt и libc++ до версии 3.9.1, а также добавления lld 3.9.1. |1100509 |link:https://svnweb.freebsd.org/changeset/base/311186[311186] |3 января 2017 |11.0-STABLE после исправления META_MODE в man:crunchgen[1] (изменение link:https://svnweb.freebsd.org/changeset/base/311185[311185]). |1100510 |link:https://svnweb.freebsd.org/changeset/base/315312[315312] |15 марта 2017 |11.0-STABLE после MFC изменений, связанных с `fget_cap`, `getsock_cap` и другими. |1100511 |link:https://svnweb.freebsd.org/changeset/base/316423[316423] |2 апреля 2017 |11.0-STABLE после нескольких MFC, обновляющих clang, llvm, lld, lldb, compiler-rt и libc++ до версии 4.0.0. |1100512 |link:https://svnweb.freebsd.org/changeset/base/316498[316498] |4 апреля 2017 |11.0-STABLE после того, как блокировка CAM SIM стала опциональной (ревизии 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] |11 мая 2017 |11.0-STABLE после объединения добавления заголовочного файла [.filename]##. |1100514 |link:https://svnweb.freebsd.org/changeset/base/319279[319279] |31 мая 2017 |11.0-STABLE после нескольких MFC для `libpcap`, `WITHOUT_INET6` и нескольких других незначительных изменений. |1101000 |link:https://svnweb.freebsd.org/changeset/base/320486[320486] |June 30, 2017 |`releng/11.1` отделился от `stable/11`. |1101001 |link:https://svnweb.freebsd.org/changeset/base/320763[320763] |June 30, 2017 |11.1-RC1 После объединения добавления флага `MAP_GUARD` в man:mmap[2]. |1101500 |link:https://svnweb.freebsd.org/changeset/base/320487[320487] |June 30, 2017 |11-STABLE после ветвления `releng/11.1`. |1101501 |link:https://svnweb.freebsd.org/changeset/base/320666[320666] |5 июля 2017 |11-STABLE после объединения добавления флага `MAP_GUARD` в man:mmap[2]. |1101502 |link:https://svnweb.freebsd.org/changeset/base/321688[321688] |29 июля 2017 |11-STABLE после объединения поддержки принудительного демонтирования клиента NFS с добавлением `umount -N`. |1101503 |link:https://svnweb.freebsd.org/changeset/base/323431[323431] |11 сентября 2017 |11-STABLE после объединения изменений, сделавших инструкцию WRFSBASE работоспособной на amd64. |1101504 |link:https://svnweb.freebsd.org/changeset/base/324006[324006] |26 сентября 2017 |11-STABLE после слияния libm из head, что добавляет man:cacoshl[3], man:cacosl[3], man:casinhl[3], man:casinl[3], man:catanl[3], man:catanhl[3], man:sincos[3], man:sincosf[3] и man:sincosl[3]. |1101505 |link:https://svnweb.freebsd.org/changeset/base/324023[324023] |26 сентября 2017 |11-STABLE после объединения clang, llvm, lld, lldb, compiler-rt и libc++ версии 5.0.0. |1101506 |link:https://svnweb.freebsd.org/changeset/base/325003[325003] |25 октября 2017 |11-STABLE после слияния link:https://svnweb.freebsd.org/changeset/base/324281[324281], добавления поля `value.u16` в структуру `struct diocgattr_arg`. |1101507 |link:https://svnweb.freebsd.org/changeset/base/328379[328379] |24 января 2018 |11-STABLE после слияния с link:https://svnweb.freebsd.org/changeset/base/325028[325028], исправление `ptrace()` для корректной очистки события нужного потока при возобновлении. |1101508 |link:https://svnweb.freebsd.org/changeset/base/328386[328386] |24 января 2018 |11-STABLE после объединения изменений link:https://svnweb.freebsd.org/changeset/base/316648[316648], переименование `smp_no_rendevous_barrier()` в `smp_no_rendezvous_barrier()`. |1101509 |link:https://svnweb.freebsd.org/changeset/base/328653[328653] |1 февраля 2018 |11-STABLE после обратного переноса (overwrite merge) LinuxKPI из FreeBSD-head. |1101510 |link:https://svnweb.freebsd.org/changeset/base/329450[329450] |17 февраля 2018 |11-STABLE после того, как макрос `cmpxchg()` стал полностью функциональным в LinuxKPI. |1101511 |link:https://svnweb.freebsd.org/changeset/base/329981[329981] |25 февраля 2018 |11-STABLE после завершения недавних обновлений, связанных с LinuxKPI. |1101512 |link:https://svnweb.freebsd.org/changeset/base/331219[331219] |19 марта 2018 |11-STABLE после объединения поддержки `retpoline` из вышестоящих веток llvm, clang и lld 5.0. |1101513 |link:https://svnweb.freebsd.org/changeset/base/331838[331838] |31 марта 2018 |11-STABLE после объединения clang, llvm, lld, lldb, compiler-rt и libc++ версии 6.0.0, а также нескольких последующих исправлений. |1101514 |link:https://svnweb.freebsd.org/changeset/base/332089[332089] |5 апреля 2018 |11-STABLE после объединения изменений link:https://svnweb.freebsd.org/changeset/base/328331[328331], добавляющего новую и несовместимую интерпретацию `${name}_limits` в rc-скриптах. |1101515 |link:https://svnweb.freebsd.org/changeset/base/332363[332363] |10 апреля 2018 |11-STABLE после отмены изменений из link:https://svnweb.freebsd.org/changeset/base/331880[331880], удаляющих новую и несовместимую интерпретацию `${name}_limits` в rc-скриптах. |1101516 |link:https://svnweb.freebsd.org/changeset/base/334392[334392] |30 мая 2018 |11-STABLE после доработок man:dwatch[1]. |1102000 |link:https://svnweb.freebsd.org/changeset/base/334459[334459] |1 июня 2018 |`releng/11.2` отделился от `stable/11`. |1102500 |link:https://svnweb.freebsd.org/changeset/base/334461[334461] |1 июня 2018 |11-STABLE после ветвления releng/11.2. |1102501 |link:https://svnweb.freebsd.org/changeset/base/335436[335436] |June 20, 2018 |11-STABLE после обновлений LinuxKPI, требующих перекомпиляции внешних модулей ядра. |1102502 |link:https://svnweb.freebsd.org/changeset/base/338617[338617] |12 сентября 2018 |11-STABLE после добавления сокет-опции SO_TS_CLOCK и исправления системного вызова `recvmsg32()` для корректного преобразования структуры 64-битных данных в формат, ожидаемый 32-битными приложениями. |1102503 |link:https://svnweb.freebsd.org/changeset/base/338931[338931] |25 сентября 2018 |11-STABLE после объединения исправления контрольной суммы TCP в man:iflib[9] и добавления новых типов носителей в if_media.h |1102504 |link:https://svnweb.freebsd.org/changeset/base/340309[340309] |9 ноября 2018 |11-STABLE после нескольких MFC: обновление man:objcopy[1] для корректной обработки little-endian MIPS64 объектов; исправление теста mips64el для использования заголовка ELF; добавление теста для 64-битного ELF в _libelf_is_mips64el. |1102505 |link:https://svnweb.freebsd.org/changeset/base/342804[342804] |6 января 2019 |11-STABLE после слияния исправления поведения `linux_destroy_dev()`, когда остаются открытые файлы из уничтожаемого cdev. |1102506 |link:https://svnweb.freebsd.org/changeset/base/344220[344220] |17 февраля 2019 |11-STABLE после объединения нескольких коммитов в lualoader. |1102507 |link:https://svnweb.freebsd.org/changeset/base/346296[346296] |16 апреля 2019 |11-STABLE после объединения llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp 8.0.0 финальный релиз r356365. |1102508 |link:https://svnweb.freebsd.org/changeset/base/346784[346784] |27 апреля 2019 |11-STABLE после появления `ether_gen_addr`. |1102509 |link:https://svnweb.freebsd.org/changeset/base/347212[347212] |6 мая 2019 |11-STABLE после слияния изменений link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] и частично link:https://svnweb.freebsd.org/changeset/base/345305[345305]. |1102510 |link:https://svnweb.freebsd.org/changeset/base/347883[347883] |16 мая 2019 |11-STABLE после увеличения номеров версий драйверов Mellanox (man:mlx4en[4]; man:mlx5en[4]). |1103000 |link:https://svnweb.freebsd.org/changeset/base/349026[349026] |14 июня 2019 |`releng/11.3` отделился от `stable/11`. |1103500 |link:https://svnweb.freebsd.org/changeset/base/349027[349027] |14 июня 2019 |11-STABLE после ветвления releng/11.3. |1103501 |link:https://svnweb.freebsd.org/changeset/base/354598[354598] |10 ноября 2019 |11-STABLE после исправления потенциальной проблемы безопасности OOB-чтения в libc++. |1103502 |link:https://svnweb.freebsd.org/changeset/base/354614[354614] |11 ноября 2019 |11-STABLE после добавления функций создания/удаления sysfs, обрабатывающих несколько файлов за один вызов в LinuxKPI. |1103503 |link:https://svnweb.freebsd.org/changeset/base/354615[354615] |11 ноября 2019 |11-STABLE после улучшений LinuxKPI sysfs. |1103504 |link:https://svnweb.freebsd.org/changeset/base/354616[354616] |11 ноября 2019 |11-STABLE после включения атрибутов группы классов устройств в LinuxKPI. |1103505 |link:https://svnweb.freebsd.org/changeset/base/355899[355899] |19 декабря 2019 |11-STABLE после добавления расширений `sigsetop`, которые часто встречаются в musl libc и glibc. |1103506 |link:https://svnweb.freebsd.org/changeset/base/356395[356395] |6 января 2020 |11-STABLE после изменения статистики USB для каждого устройства вместо каждой шины. |1103507 |link:https://svnweb.freebsd.org/changeset/base/356680[356680] |13 января 2020 |11-STABLE после добавления собственного счетчика для отмененных USB-передач. |1103508 |link:https://svnweb.freebsd.org/changeset/base/357613[357613] |6 февраля 2020 |11-STABLE после недавних изменений в LinuxKPI. |1103509 |link:https://svnweb.freebsd.org/changeset/base/359958[359958] |15 апреля 2020 |11-STABLE после перемещения `id_mapped` в конец структуры `bus_dma_impl` для сохранения KPI. |1103510 |link:https://svnweb.freebsd.org/changeset/base/360658[360658] |5 мая 2020 |11-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до финального релиза 9.0.0 r372316. |1103511 |link:https://svnweb.freebsd.org/changeset/base/360784[360784] |7 мая 2020 |11-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.0. |1104000 |link:https://svnweb.freebsd.org/changeset/base/360804[360804] |8 мая 2020 |`releng/11.4` ответвился от `stable/11`. |1104001 |link:https://svnweb.freebsd.org/changeset/base/360822[360822] |8 мая 2020 |11.4-BETA1 после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.0. |1104500 |link:https://svnweb.freebsd.org/changeset/base/360805[360805] |8 мая 2020 |11-STABLE после ветвления releng/11.4. |1104501 |link:https://svnweb.freebsd.org/changeset/base/362320[362320] |18 июня 2020 |11-STABLE после реализации макроса функции `__is_constexpr()` в LinuxKPI. |1104502 |link:https://svnweb.freebsd.org/changeset/base/362919[362919] |4 июля 2020 |11-STABLE после перевода liblzma на использование реализации SHA256 из libmd. |1104503 |link:https://svnweb.freebsd.org/changeset/base/363496[363496] |24 июля 2020 |11-STABLE после обновления llvm, clang, compiler-rt, libc++, libunwind, lld, lldb и openmp до версии 10.0.1. |1104504 |link:https://svnweb.freebsd.org/changeset/base/363792[363792] |3 августа 2020 |11-STABLE после реализации функции `array_size()` в LinuxKPI. |1104505 |link:https://svnweb.freebsd.org/changeset/base/364391[364391] |19 августа 2020 |11-STABLE после изменения для клонирования полей структуры задачи, связанных с RCU. |1104506 |link:https://svnweb.freebsd.org/changeset/base/365471[365471] |8 сентября 2020 |11-STABLE после добавления атомарных функций и функций `bswap` в libcompiler_rt. |1104507 |link:https://svnweb.freebsd.org/changeset/base/365661[365661] |12 сентября 2020 |11-STABLE после последующих коммитов в libcompiler_rt. |1104508 |link:https://svnweb.freebsd.org/changeset/base/366879[366879] |20 октября 2020 |11-STABLE после заполнения поля контекста получения в `ww_mutex` в LinuxKPI. |1104509 |link:https://svnweb.freebsd.org/changeset/base/366889[366889] |20 октября 2020 |11-STABLE после добавлений в список `RCU` LinuxKPI. |1104510 |link:https://svnweb.freebsd.org/changeset/base/367513[367513] |9 ноября 2020 |11-STABLE после добавления `ptsname_r`. |=== [[versions-10]] == Версии FreeBSD 10 [[freebsd-versions-table-10]] .Значения `__FreeBSD_version` в FreeBSD 10 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |1000000 |link:https://svnweb.freebsd.org/changeset/base/225757[225757] |26 сентября 2011 |10.0-CURRENT. |1000001 |link:https://svnweb.freebsd.org/changeset/base/227070[227070] |4 ноября 2011 |10-CURRENT после добавления системного вызова man:posix_fadvise[2]. |1000002 |link:https://svnweb.freebsd.org/changeset/base/228444[228444] |12 декабря 2011 |10-CURRENT после определения булевых значений true/false в sys/types.h, размер sizeof(bool) мог измениться (ревизия link:https://svnweb.freebsd.org/changeset/base/228444[228444]). 10-CURRENT после введения xlocale.h (ревизия link:https://svnweb.freebsd.org/changeset/base/227753[227753]). |1000003 |link:https://svnweb.freebsd.org/changeset/base/228571[228571] |16 декабря 2011 |10-CURRENT после значительных изменений в man:carp[4], изменения размера структур `in_aliasreq`, `in6_aliasreq` (rev link:https://svnweb.freebsd.org/changeset/base/228571[228571]) и упрощения проверки аргументов SIOCAIFADDR (rev link:https://svnweb.freebsd.org/changeset/base/228574[228574]). |1000004 |link:https://svnweb.freebsd.org/changeset/base/229204[229204] |1 января 2012 |10-CURRENT после удаления `skpc()` и добавления man:memcchr[9] (изменение:https://svnweb.freebsd.org/changeset/base/229200[229200]). |1000005 |link:https://svnweb.freebsd.org/changeset/base/230207[230207] |16 января 2012 |10-CURRENT после удаления поддержки ioctls SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFDSTADDR. |1000006 |link:https://svnweb.freebsd.org/changeset/base/230590[230590] |26 января 2012 |10-CURRENT после внедрения асинхронного уведомления о данных пропускной способности чтения в слое man:cam[4]. |1000007 |link:https://svnweb.freebsd.org/changeset/base/231025[231025] |5 февраля 2012 |10-CURRENT после введения новых параметров сокета man:tcp[4]: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL и TCP_KEEPCNT. |1000008 |link:https://svnweb.freebsd.org/changeset/base/231505[231505] |11 февраля 2012 |10-CURRENT после введения нового расширяемого интерфейса man:sysctl[3] NET_RT_IFLISTL для запроса списков адресов. |1000009 |link:https://svnweb.freebsd.org/changeset/base/232154[232154] |25 февраля 2012 |10-CURRENT после импорта libarchive 3.0.3 (rev link:https://svnweb.freebsd.org/changeset/base/232153[232153]). |1000010 |link:https://svnweb.freebsd.org/changeset/base/233757[233757] |31 марта 2012 |10-CURRENT после очистки `xlocale`. |1000011 |link:https://svnweb.freebsd.org/changeset/base/234355[234355] |16 апреля 2012 |Импорт LLVM/Clang 3.1 из 10-CURRENT, ссылка на ревизию: link:https://svnweb.freebsd.org/changeset/base/154661[154661] (ревизия link:https://svnweb.freebsd.org/changeset/base/234353[234353]). |1000012 |link:https://svnweb.freebsd.org/changeset/base/234924[234924] |2 мая 2012 |10-CURRENT импорт jemalloc. |1000013 |link:https://svnweb.freebsd.org/changeset/base/235788[235788] |22 мая 2012 |10-CURRENT после импорта `byacc`. |1000014 |link:https://svnweb.freebsd.org/changeset/base/237631[237631] |27 июня 2012 |10-CURRENT после того, как BSD sort стал сортировкой по умолчанию (rev link:https://svnweb.freebsd.org/changeset/base/237629[237629]). |1000015 |link:https://svnweb.freebsd.org/changeset/base/238405[238405] |12 июля 2012 |10-CURRENT после импорта OpenSSL 1.0.1c. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/238429[238429] |July 13, 2012 |10-CURRENT после исправления регрессии в LLVM/Clang 3.1. |1000016 |link:https://svnweb.freebsd.org/changeset/base/239179[239179] |8 августа 2012 |10-CURRENT после изменения KBI в man:ucom[4]. |1000017 |link:https://svnweb.freebsd.org/changeset/base/239214[239214] |8 августа 2012 |10-CURRENT после добавления функции потоков в стек USB. |1000018 |link:https://svnweb.freebsd.org/changeset/base/240233[240233] |8 сентября 2012 |10-CURRENT после значительной переработки man:pf[4]. |1000019 |link:https://svnweb.freebsd.org/changeset/base/241245[241245] |6 октября 2012 |10-CURRENT после изменения KBI/KPI в man:pfil[9] для передачи пакетов в порядке байтов сети к хукам фильтрации AF_INET. |1000020 |link:https://svnweb.freebsd.org/changeset/base/241610[241610] |16 октября 2012 |10-CURRENT после изменения KPI клонирования сетевых интерфейсов и структура `if_clone` стала непрозрачной. |1000021 |link:https://svnweb.freebsd.org/changeset/base/241897[241897] |22 октября 2012 |10-CURRENT после удаления поддержки не-MPSAFE файловых систем и добавления поддержки FUSEFS (rev link:https://svnweb.freebsd.org/changeset/base/241519[241519]). |1000022 |link:https://svnweb.freebsd.org/changeset/base/241913[241913] |22 октября 2012 |10-CURRENT после перевода всего стека IPv4 на сетевой порядок байтов для хранения заголовков IP-пакетов. |1000023 |link:https://svnweb.freebsd.org/changeset/base/242619[242619] |5 ноября 2012 |10-CURRENT после буфера джиттера в общем коде драйвера USB-последовательного порта, для временного хранения символов, если буфер TTY заполнен. Добавлены сигналы остановки и возобновления потока при возникновении такой ситуации. |1000024 |link:https://svnweb.freebsd.org/changeset/base/242624[242624] |5 ноября 2012 |10-CURRENT после того, как clang стал компилятором по умолчанию для i386 и amd64. |1000025 |link:https://svnweb.freebsd.org/changeset/base/243443[243443] |17 ноября 2012 |10-CURRENT после того, как переменная-член sin6_scope_id в структуре sockaddr_in6 была изменена таким образом, что ядро заполняет её перед передачей структуры в пользовательское пространство через sysctl или сокет маршрутизации. Это означает, что специфичный для KAME встроенный идентификатор области в sin6_addr.s6_addr[2] всегда очищается в пользовательских приложениях. |1000026 |link:https://svnweb.freebsd.org/changeset/base/245313[245313] |11 января 2013 |10-CURRENT после установки получил флаг -N. Также может использоваться для указания наличия nmtree. |1000027 |link:https://svnweb.freebsd.org/changeset/base/246084[246084] |29 января 2013 |10-CURRENT после того, как команда `cat` получила флаг `-l` (rev link:https://svnweb.freebsd.org/changeset/base/246083[246083]). |1000028 |link:https://svnweb.freebsd.org/changeset/base/246759[246759] |13 февраля 2013 |10-CURRENT после перемещения USB в структуру драйверов, требующую пересборки всех модулей USB. |1000029 |link:https://svnweb.freebsd.org/changeset/base/247821[247821] |4 марта 2013 |10-CURRENT после внедрения бестиковой системы отложенных вызовов, которая также изменила структуру struct callout (rev link:https://svnweb.freebsd.org/changeset/base/247777[247777]). |1000030 |link:https://svnweb.freebsd.org/changeset/base/248210[248210] |12 марта 2013 |10-CURRENT после нарушения KPI, внесённого в подсистему VM для поддержки блокировок чтения/записи (rev link:https://svnweb.freebsd.org/changeset/base/248084[248084]). |1000031 |link:https://svnweb.freebsd.org/changeset/base/249943[249943] |26 апреля 2013 |10-CURRENT после изменения параметра `dst` метода `if_output` в ifnet, чтобы он принимал квалификатор const (ревизия link:https://svnweb.freebsd.org/changeset/base/249925[249925]). |1000032 |link:https://svnweb.freebsd.org/changeset/base/250163[250163] |1 мая 2013 |10-CURRENT после введения системных вызовов man:accept4[2] (rev link:https://svnweb.freebsd.org/changeset/base/250154[250154]) и man:pipe2[2] (rev link:https://svnweb.freebsd.org/changeset/base/250159[250159]). |1000033 |link:https://svnweb.freebsd.org/changeset/base/250881[250881] |21 мая 2013 |10-CURRENT после импорта flex 2.5.37. |1000034 |link:https://svnweb.freebsd.org/changeset/base/251294[251294] |3 июня 2013 |10-CURRENT после добавления следующих функций в 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] |8 июня 2013 |10-CURRENT после введения системного вызова man:aio_mlock[2] (изменение link:https://svnweb.freebsd.org/changeset/base/251526[251526]). |1000036 |link:https://svnweb.freebsd.org/changeset/base/253049[253049] |9 июля 2013 |10-CURRENT после добавления новой функции в интерфейс вызовов функций модуля ядра GSSAPI. |1000037 |link:https://svnweb.freebsd.org/changeset/base/253089[253089] |9 июля 2013 |10-CURRENT после миграции структур статистики на PCPU-счетчики. Измененные структуры включают: `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] |16 июля 2013 |10-CURRENT после установки `ARM EABI` в качестве ABI по умолчанию для архитектур arm, armeb, armv6 и armv6eb. |1000039 |link:https://svnweb.freebsd.org/changeset/base/253549[253549] |22 июля 2013 |10-CURRENT после изменений в сканировании драйверов `CAM` и man:mps[4]. |1000040 |link:https://svnweb.freebsd.org/changeset/base/253638[253638] |24 июля 2013 |10-CURRENT после добавления файлов `pkgconf` для libusb. |1000041 |link:https://svnweb.freebsd.org/changeset/base/253970[253970] |5 августа 2013 |10-CURRENT после изменения с `time_second` на `time_uptime` в `PF_INET6`. |1000042 |link:https://svnweb.freebsd.org/changeset/base/254138[254138] |9 августа 2013 |10-CURRENT после изменения подсистемы VM для объединения механизмов мягкой и жесткой занятости. |1000043 |link:https://svnweb.freebsd.org/changeset/base/254273[254273] |13 августа 2013 |10-CURRENT после того, как `WITH_ICONV` включён по умолчанию. Новая опция man:src.conf[5], `WITH_LIBICONV_COMPAT` (выключена по умолчанию), добавляет `libiconv_open` для обеспечения совместимости с портом package:converters/libiconv[]. |1000044 |link:https://svnweb.freebsd.org/changeset/base/254358[254358] |15 августа 2013 |10-CURRENT после преобразования [.filename]#libc.so# в скрипт man:ld[1] (изменение rev link:https://svnweb.freebsd.org/changeset/base/251668[251668]). |1000045 |link:https://svnweb.freebsd.org/changeset/base/254389[254389] |15 августа 2013 |10-CURRENT после изменения программного интерфейса devfs путем замены флага `D_UNMAPPED_IO` в cdevsw на флаг `SI_UNMAPPED` в структуре cdev. |1000046 |link:https://svnweb.freebsd.org/changeset/base/254537[254537] |19 августа 2013 -|10-CURRENT после добавления `M_PROTO[9-12]` и удаления `M_FRAG`|M_FIRSTFRAG\|M_LASTFRAG` флаги mbuf (версии link:https://svnweb.freebsd.org/changeset/base/254524[254524], link:https://svnweb.freebsd.org/changeset/base/254526[254526]). +|10-CURRENT после добавления `M_PROTO[9-12]` и удаления `M_FRAG`\|M_FIRSTFRAG\|M_LASTFRAG` флаги mbuf (версии 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] |21 августа 2013 |10-CURRENT после обновления man:stat[2], позволяющего сохранять некоторые атрибуты файлов Windows/DOS и CIFS в виде флагов man:stat[2]. |1000048 |link:https://svnweb.freebsd.org/changeset/base/254672[254672] |August 22, 2013 |10-CURRENT после изменения структуры `xsctp_inpcb`. |1000049 |link:https://svnweb.freebsd.org/changeset/base/254760[254760] |24 августа 2013 |10-CURRENT после поддержки man:physio[9] для устройств, которые работают некорректно с разделённым вводом-выводом, таких как man:sa[4]. |1000050 |link:https://svnweb.freebsd.org/changeset/base/254844[254844] |24 августа 2013 |10-CURRENT после изменений структуры `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] |25 августа 2013 |10-CURRENT после импорта драйвера Radeon KMS (ревизия link:https://svnweb.freebsd.org/changeset/base/254885[254885]). |1000052 |link:https://svnweb.freebsd.org/changeset/base/255180[255180] |3 сентября 2013 |10-CURRENT после импорта NetBSD `libexecinfo` подключен к сборке. |1000053 |link:https://svnweb.freebsd.org/changeset/base/255305[255305] |6 сентября 2013 |10-CURRENT после изменений API и ABI в рамках Capsicum. |1000054 |link:https://svnweb.freebsd.org/changeset/base/255321[255321] |6 сентября 2013 |10-CURRENT после того, как `gcc` и `libstdc++` больше не собираются по умолчанию. |1000055 |link:https://svnweb.freebsd.org/changeset/base/255449[255449] |6 сентября 2013 |10-CURRENT после добавления флага `MMAP_32BIT` в man:mmap[2] (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` ответвился от `stable/10`. |1000500 |link:https://svnweb.freebsd.org/changeset/base/256283[256283] |10 октября 2013 |10-STABLE после ветвления от `head/`. |1000501 |link:https://svnweb.freebsd.org/changeset/base/256916[256916] |22 октября 2013 |10-STABLE после добавления поддержки man:rc[8] при первой загрузке. |1000502 |link:https://svnweb.freebsd.org/changeset/base/258398[258398] |20 ноября 2013 |10-STABLE после удаления символов iconv из `libc.so.7`. |1000510 |link:https://svnweb.freebsd.org/changeset/base/259067[259067] |December 7, 2013 |`releng/10.0` __FreeBSD_version обновлён, чтобы предотвратить уменьшение значения. |1000700 |link:https://svnweb.freebsd.org/changeset/base/259069[259069] |December 7, 2013 |10-STABLE после ветки `releng/10.0`. |1000701 |link:https://svnweb.freebsd.org/changeset/base/259447[259447] |15 декабря 2013 |10.0-STABLE после исправления кодирования Heimdal. |1000702 |link:https://svnweb.freebsd.org/changeset/base/260135[260135] |31 декабря 2013 |10-STABLE после исправлений MAP_STACK. |1000703 |link:https://svnweb.freebsd.org/changeset/base/262801[262801] |5 марта 2014 |10-STABLE после обновления libc++ до версии 3.4. |1000704 |link:https://svnweb.freebsd.org/changeset/base/262889[262889] |7 марта 2014 |10-STABLE после слияния из ветки man:vt[4] драйвера (ревизия link:https://svnweb.freebsd.org/changeset/base/262861[262861]). |1000705 |link:https://svnweb.freebsd.org/changeset/base/263508[263508] |21 марта 2014 |10-STABLE после обновления llvm/clang до версии 3.4. |1000706 |link:https://svnweb.freebsd.org/changeset/base/264214[264214] |6 апреля 2014 |10-STABLE после удаления поддержки GCC для определения `__block`. |1000707 |link:https://svnweb.freebsd.org/changeset/base/264289[264289] |8 апреля 2014 |10-STABLE после FreeBSD-SA-14:06.openssl. |1000708 |link:https://svnweb.freebsd.org/changeset/base/265122[265122] |30 апреля 2014 |10-STABLE после FreeBSD-SA-14:07.devfs, FreeBSD-SA-14:08.tcp и FreeBSD-SA-14:09.openssl. |1000709 |link:https://svnweb.freebsd.org/changeset/base/265946[265946] |13 мая 2014 |10-STABLE после добавления поддержки протокола UDP-Lite (RFC 3828). |1000710 |link:https://svnweb.freebsd.org/changeset/base/267465[267465] |13 июня 2014 |10-STABLE после изменений в man:strcasecmp[3], переноса man:strcasecmp_l[3] и man:strncasecmp_l[3] из [.filename]## в [.filename]## для соответствия POSIX 2008. |1000711 |link:https://svnweb.freebsd.org/changeset/base/268442[268442] |8 июля 2014 |10-STABLE после FreeBSD-SA-14:17.kmem (ревизия:https://svnweb.freebsd.org/changeset/base/268432[268432]). |1000712 |link:https://svnweb.freebsd.org/changeset/base/269400[269400] |1 августа 2014 |10-STABLE после слияния man:nfsd[8] 4.1 (rev link:https://svnweb.freebsd.org/changeset/base/269398[269398]). |1000713 |link:https://svnweb.freebsd.org/changeset/base/269484[269484] |3 августа 2014 |10-STABLE после обновления библиотеки man:regex[3] для добавления разделителей ">" и "<". |1000714 |link:https://svnweb.freebsd.org/changeset/base/270174[270174] |3 августа 2014 |10-STABLE после исправления ошибки `SOCK_DGRAM` (rev link:https://svnweb.freebsd.org/changeset/base/269490[269490]). |1000715 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |9 сентября 2014 |10-STABLE после FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686]). |1000716 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |16 сентября 2014 |10-STABLE после FreeBSD-SA-14:19 (ревизия link:https://svnweb.freebsd.org/changeset/base/271667[271667]). |1000717 |link:https://svnweb.freebsd.org/changeset/base/271816[271816] |18 сентября 2014 |10-STABLE после добавления поддержки аппаратного контекста i915. |1001000 |link:https://svnweb.freebsd.org/changeset/base/272463[272463] |2 октября 2014 |10.1-RC1 после ветки releng/10.1. |1001500 |link:https://svnweb.freebsd.org/changeset/base/272464[272464] |2 октября 2014 |10-STABLE после ветки releng/10.1. |1001501 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |21 октября 2014 |10-STABLE после исправлений уязвимостей FreeBSD-SA-14:20, FreeBSD-SA-14:22 и FreeBSD-SA-14:23 (ссылка на ревизию: https://svnweb.freebsd.org/changeset/base/273411[273411]). |1001502 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |4 ноября 2014 |10-STABLE после FreeBSD-SA-14:23, FreeBSD-SA-14:24 и FreeBSD-SA-14:25. |1001503 |link:https://svnweb.freebsd.org/changeset/base/275040[275040] |25 ноября 2014 |10-STABLE после объединения новых библиотек/утилит (man:dpv[1], man:dpv[3] и man:figpar[3]) для визуализации пропускной способности данных. |1001504 |link:https://svnweb.freebsd.org/changeset/base/275742[275742] |13 декабря 2014 |10-STABLE после объединения важного исправления в векторизатор LLVM, которое в некоторых случаях могло приводить к переполнению буфера. |1001505 |link:https://svnweb.freebsd.org/changeset/base/276633[276633] |3 января 2015 |10-STABLE после объединения некоторых констант ARM в link:https://svnweb.freebsd.org/changeset/base/276312[276312]. |1001506 |link:https://svnweb.freebsd.org/changeset/base/277087[277087] |12 января 2015 |10-STABLE после объединения обновления максимального размера таблицы для yacc. |1001507 |link:https://svnweb.freebsd.org/changeset/base/277790[277790] |27 января 2015 |10-STABLE после изменений в обратном вызове туннелирования UDP для предоставления указателя контекста и исходного `sockaddr`. |1001508 |link:https://svnweb.freebsd.org/changeset/base/278974[278974] |18 февраля 2015 |10-STABLE после добавления типа запроса `CDAI_TYPE_EXT_INQ`. |1001509 |link:https://svnweb.freebsd.org/changeset/base/279287[279287] |25 февраля 2015 |10-STABLE после FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp и FreeBSD-SA-15:05.bind. |1001510 |link:https://svnweb.freebsd.org/changeset/base/279329[279329] |26 февраля 2015 |10-STABLE после MFC ревизии link:https://svnweb.freebsd.org/changeset/base/278964[278964]. |1001511 |link:https://svnweb.freebsd.org/changeset/base/280246[280246] |19 марта 2015 |10-STABLE после переименования [.filename]#sys/capability.h# в [.filename]#sys/capsicum.h# (изменение:https://svnweb.freebsd.org/changeset/base/280224/[280224/]). |1001512 |link:https://svnweb.freebsd.org/changeset/base/280438[280438] |24 марта 2015 |10-STABLE после добавления новых ioctl в man:mtio[4] и man:sa[4]. |1001513 |link:https://svnweb.freebsd.org/changeset/base/281955[281955] |24 апреля 2015 |10-STABLE после начала процесса удаления использования устаревшего флага "M_FLOWID" из сетевого кода. |1001514 |link:https://svnweb.freebsd.org/changeset/base/282275[282275] |30 апреля 2015 |10-STABLE после MFC исправлений man:iconv[3]. |1001515 |link:https://svnweb.freebsd.org/changeset/base/282781[282781] |11 мая 2015 |10-STABLE после возврата `M_FLOWID`. |1001516 |link:https://svnweb.freebsd.org/changeset/base/283341[283341] |24 мая 2015 |10-STABLE после переноса (MFC) множества изменений, связанных с USB. |1001517 |link:https://svnweb.freebsd.org/changeset/base/283950[283950] |3 июня 2015 |10-STABLE после слияния изменений, связанных со звуком. |1001518 |link:https://svnweb.freebsd.org/changeset/base/284204[284204] |10 июня 2015 |10-STABLE после MFC исправлений vfs для zfs (rev link:https://svnweb.freebsd.org/changeset/base/284203[284203]). |1001519 |link:https://svnweb.freebsd.org/changeset/base/284720[284720] |23 июня 2015 |10-STABLE после отмены увеличения `MAXCPU` на amd64. |1002000 |link:https://svnweb.freebsd.org/changeset/base/285830[285830] |24 июля 2015 |`releng/10.2` отделился от 10-STABLE. |1002500 |link:https://svnweb.freebsd.org/changeset/base/285831[285831] |24 июля 2015 |10-STABLE после того, как ветка `releng/10.2` отделилась от 10-STABLE. |1002501 |link:https://svnweb.freebsd.org/changeset/base/289005[289005] |8 октября 2015 |10-STABLE после объединения изменений ZFS, затронувших внутренний интерфейс структуры `zfeature_info` (rev link:https://svnweb.freebsd.org/changeset/base/288572[288572]). |1002502 |link:https://svnweb.freebsd.org/changeset/base/291243[291243] |24 ноября 2015 |10-STABLE после объединения изменений устройств дампа, которые затронули аргументы `g_dev_setdumpdev()`(rev link:https://svnweb.freebsd.org/changeset/base/291215[291215]). |1002503 |link:https://svnweb.freebsd.org/changeset/base/292224[292224] |14 декабря 2015 |10-STABLE после объединения изменений во внутренний интерфейс между модулями nfsd.ko и nfscommon.ko, что требует их совместного обновления (rev link:https://svnweb.freebsd.org/changeset/base/292223[292223]). |1002504 |link:https://svnweb.freebsd.org/changeset/base/292589[292589] |22 декабря 2015 |10-STABLE после слияния xz 5.2.2 (поддержка многопоточности) (rev link:https://svnweb.freebsd.org/changeset/base/292588[292588]). |1002505 |link:https://svnweb.freebsd.org/changeset/base/292908[292908] |30 декабря 2015 |10-STABLE после объединения изменений в man:pci[4] (rev link:https://svnweb.freebsd.org/changeset/base/292907[292907]). |1002506 |link:https://svnweb.freebsd.org/changeset/base/293476[293476] |9 января 2016 |10-STABLE после объединения man:utimensat[2] (изменение link:https://svnweb.freebsd.org/changeset/base/293473[293473]). |1002507 |link:https://svnweb.freebsd.org/changeset/base/293610[293610] |9 января 2016 |10-STABLE после объединения изменений в man:linux[4] (rev link:https://svnweb.freebsd.org/changeset/base/293477[293477] через link:https://svnweb.freebsd.org/changeset/base/293609[293609]). |1002508 |link:https://svnweb.freebsd.org/changeset/base/293619[293619] |9 января 2016 |10-STABLE после объединения изменений в типы/макросы man:figpar[3] (rev link:https://svnweb.freebsd.org/changeset/base/290275[290275]). |1002509 |link:https://svnweb.freebsd.org/changeset/base/295107[295107] |1 февраля 2016 |10-STABLE после объединения изменения API в man:dpv[3]. |1003000 |link:https://svnweb.freebsd.org/changeset/base/296373[296373] |4 марта 2016 |`releng/10.3` ответвился от 10-STABLE. |1003500 |link:https://svnweb.freebsd.org/changeset/base/296374[296374] |4 марта 2016 |10-STABLE после того, как ветка `releng/10.3` отделилась от 10-STABLE. |1003501 |link:https://svnweb.freebsd.org/changeset/base/298299[298299] |19 июня 2016 |10-STABLE после добавления опции -P для `kdbcontrol` (rev link:https://svnweb.freebsd.org/changeset/base/298297[298297]). |1003502 |link:https://svnweb.freebsd.org/changeset/base/299966[299966] |19 июня 2016 |10-STABLE после того, как libcrypto.so стала позиционно-независимой. |1003503 |link:https://svnweb.freebsd.org/changeset/base/300235[300235] |19 июня 2016 |10-STABLE после разрешения переопределений `MK_` (изменение link:https://svnweb.freebsd.org/changeset/base/300233[300233]). |1003504 |link:https://svnweb.freebsd.org/changeset/base/302066[302066] |21 июня 2016 |10-STABLE после переноса изменений `filemon` из 11-CURRENT. |1003505 |link:https://svnweb.freebsd.org/changeset/base/302228[302228] |27 июня 2016 |10-STABLE после замены в sed на использование REG_STARTEND, с исправлением проблемы в Mesa. |1003506 |link:https://svnweb.freebsd.org/changeset/base/304611[304611] |22 августа 2016 |10-STABLE после добавления поддержки `thread_local` в C++11. |1003507 |link:https://svnweb.freebsd.org/changeset/base/304864[304864] |26 августа 2016 |10-STABLE после исправления `LC_*_MASK`. |1003508 |link:https://svnweb.freebsd.org/changeset/base/305734[305734] |12 сентября 2016 |10-STABLE после устранения взаимоблокировки между `device_detach()` и man:usbd_do_request_flags[9]. |1003509 |link:https://svnweb.freebsd.org/changeset/base/307331[307331] |14 октября 2016 |10-STABLE после слияния с ZFS. |1003510 |link:https://svnweb.freebsd.org/changeset/base/308047[308047] |28 октября 2016 |10-STABLE после установки заголовочных файлов, необходимых для разработки с libzfs_core. |1003511 |link:https://svnweb.freebsd.org/changeset/base/310121[310121] |15 декабря 2016 |10-STABLE после экспорта полного имени потока в `kinfo_proc` (rev link:https://svnweb.freebsd.org/changeset/base/309676[309676]). |1003512 |link:https://svnweb.freebsd.org/changeset/base/315730[315730] |22 марта 2017 |10-STABLE после изменений в libmd (rev link:https://svnweb.freebsd.org/changeset/base/314143[314143]). |1003513 |link:https://svnweb.freebsd.org/changeset/base/316499[316499] |4 апреля 2017 |10-STABLE после того, как блокировка CAM SIM стала опциональной (ревизии 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] |11 мая 2017 |10-STABLE после объединения добавления заголовочного файла [.filename]##. |1003515 |link:https://svnweb.freebsd.org/changeset/base/321222[321222] |19 июля 2017 |10-STABLE после добавления функций освобождения памяти с указанием размера из C++14 в libc++. |1003516 |link:https://svnweb.freebsd.org/changeset/base/321717[321717] |30 июля 2017 |10-STABLE после объединения добавления флага `MAP_GUARD` в man:mmap[2]. |1004000 |link:https://svnweb.freebsd.org/changeset/base/323604[323604] |15 сентября 2017 |`releng/10.4` ответвился от 10-STABLE. |1004500 |link:https://svnweb.freebsd.org/changeset/base/323605[323605] |15 сентября 2017 |10-STABLE после того, как ветка `releng/10.4` отделилась от 10-STABLE. |1004501 |link:https://svnweb.freebsd.org/changeset/base/328379[328379] |24 января 2018 |10-STABLE после слияния изменений link:https://svnweb.freebsd.org/changeset/base/325028[325028], исправляющего `ptrace()`, чтобы всегда очищать правильное событие потока при возобновлении. |1004502 |link:https://svnweb.freebsd.org/changeset/base/356396[356396] |6 января 2020 |10-STABLE после изменения статистики USB для каждого устройства вместо каждой шины. |1004503 |link:https://svnweb.freebsd.org/changeset/base/356681[356681] |13 января 2020 |10-STABLE после добавления собственного счетчика для отмененных USB-передач. |=== [[versions-9]] == Версии FreeBSD 9 [[freebsd-versions-table-9]] .Значения `__FreeBSD_version` в FreeBSD 9 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |900000 |link:https://svnweb.freebsd.org/changeset/base/196432[196432] |22 августа 2009 |9.0-CURRENT. |900001 |link:https://svnweb.freebsd.org/changeset/base/197019[197019] |8 сентября 2009 |9.0-CURRENT после импорта x86emu, программного эмулятора процессора x86 в реальном режиме из OpenBSD. |900002 |link:https://svnweb.freebsd.org/changeset/base/197430[197430] |23 сентября 2009 |9.0-CURRENT после реализации функциональности фильтра `kevent` `EVFILT_USER`. |900003 |link:https://svnweb.freebsd.org/changeset/base/200039[200039] |2 декабря 2009 |9.0-CURRENT после добавления man:sigpause[2] и поддержки PIE в `csu`. |900004 |link:https://svnweb.freebsd.org/changeset/base/200185[200185] |6 декабря 2009 |9.0-CURRENT после добавления libulog и его совместимого интерфейса libutempter. |900005 |link:https://svnweb.freebsd.org/changeset/base/200447[200447] |December 12, 2009 |9.0-CURRENT после добавления man:sleepq_sleepcnt[9], который может использоваться для запроса количества ожидающих в конкретной очереди ожидания. |900006 |link:https://svnweb.freebsd.org/changeset/base/201513[201513] |4 января 2010 |9.0-CURRENT после изменения прототипов man:scandir[3] и man:alphasort[3] для соответствия SUSv4. |900007 |link:https://svnweb.freebsd.org/changeset/base/202219[202219] |13 января 2010 |9.0-CURRENT после удаления man:utmp[5] и добавления `utmpx` (см. man:getutxent[3]) для улучшенного логирования входов пользователей и системных событий. |900008 |link:https://svnweb.freebsd.org/changeset/base/202722[202722] |20 января 2010 |9.0-CURRENT после импорта BSDL bc/dc и устаревания GNU bc/dc. |900009 |link:https://svnweb.freebsd.org/changeset/base/203052[203052] |26 января 2010 |9.0-CURRENT после добавления ioctl SIOCGIFDESCR и SIOCSIFDESCR к сетевым интерфейсам. Эти ioctl могут использоваться для управления описанием интерфейса, по аналогии с OpenBSD. |900010 |link:https://svnweb.freebsd.org/changeset/base/205471[205471] |22 марта 2010 |9.0-CURRENT после импорта zlib 1.2.4. |900011 |link:https://svnweb.freebsd.org/changeset/base/207410[207410] |April 24, 2010 |9.0-CURRENT после добавления журналирования soft-updates. |900012 |link:https://svnweb.freebsd.org/changeset/base/207842[207842] |10 мая 2010 |9.0-CURRENT после добавления liblzma, xz, xzdec и lzmainfo. |900013 |link:https://svnweb.freebsd.org/changeset/base/208486[208486] |24 мая 2010 |9.0-CURRENT после внесения исправлений для USB в man:linux[4]. |900014 |link:https://svnweb.freebsd.org/changeset/base/208973[208973] |10 июня 2010 |9.0-CURRENT после добавления Clang. |900015 |link:https://svnweb.freebsd.org/changeset/base/210390[210390] |22 июля 2010 |9.0-CURRENT после импорта BSD grep. |900016 |link:https://svnweb.freebsd.org/changeset/base/210565[210565] |28 июля 2010 |9.0-CURRENT после добавления `mti_zone` в структуру `malloc_type_internal`. |900017 |link:https://svnweb.freebsd.org/changeset/base/211701[211701] |23 августа 2010 |9.0-CURRENT после возврата к GNU grep по умолчанию и добавления параметра WITH_BSD_GREP. |900018 |link:https://svnweb.freebsd.org/changeset/base/211735[211735] |24 августа 2010 |9.0-CURRENT после того, как сигнал, сгенерированный через man:pthread_kill[3], идентифицируется как SI_LWP в `si_code`. Ранее `si_code` имел значение SI_USER. |900019 |link:https://svnweb.freebsd.org/changeset/base/211937[211937] |28 августа 2010 |9.0-CURRENT после добавления флага MAP_PREFAULT_READ в man:mmap[2]. |900020 |link:https://svnweb.freebsd.org/changeset/base/212381[212381] |9 сентября 2010 |9.0-CURRENT после добавления функциональности drain в `sbufs`, что также изменило структуру struct `sbuf`. |900021 |link:https://svnweb.freebsd.org/changeset/base/212568[212568] |13 сентября 2010 |9.0-CURRENT после того, как DTrace обзавелся поддержкой трассировки в пользовательском пространстве. |900022 |link:https://svnweb.freebsd.org/changeset/base/213395[213395] |2 октября 2010 |9.0-CURRENT после добавления утилит man под лицензией BSDL и удаления утилит man под лицензией GNU/GPL. |900023 |link:https://svnweb.freebsd.org/changeset/base/213700[213700] |11 октября 2010 |9.0-CURRENT после обновления xz до снимка git 20101010. |900024 |link:https://svnweb.freebsd.org/changeset/base/215127[215127] |11 ноября 2010 |9.0-CURRENT после замены libgcc.a на libcompiler_rt.a. |900025 |link:https://svnweb.freebsd.org/changeset/base/215166[215166] |12 ноября 2010 |9.0-CURRENT после внедрения модульной системы управления перегрузкой. |900026 |link:https://svnweb.freebsd.org/changeset/base/216088[216088] |30 ноября 2010 |9.0-CURRENT после введения сквозной передачи Serial Management Protocol (SMP) и CAM `CCBs` XPT_SMP_IO и XPT_GDEV_ADVINFO. |900027 |link:https://svnweb.freebsd.org/changeset/base/216212[216212] |5 декабря 2010 |9.0-CURRENT после добавления log2 в libm. |900028 |link:https://svnweb.freebsd.org/changeset/base/216615[216615] |21 декабря 2010 |9.0-CURRENT после добавления Hhook (Helper Hook), Khelp (Kernel Helpers) и KPI Object Specific Data (OSD). |900029 |link:https://svnweb.freebsd.org/changeset/base/216758[216758] |28 декабря 2010 |9.0-CURRENT после модификации стека TCP для разрешения модулям Khelp взаимодействовать с ним через точки подключения вспомогательных функций и хранить данные для каждого соединения в блоке управления TCP. |900030 |link:https://svnweb.freebsd.org/changeset/base/217309[217309] |12 января 2011 |9.0-CURRENT после обновления libdialog до версии 20100428. |900031 |link:https://svnweb.freebsd.org/changeset/base/218414[218414] |7 февраля 2011 |9.0-CURRENT после добавления man:pthread_getthreadid_np[3]. |900032 |link:https://svnweb.freebsd.org/changeset/base/218425[218425] |8 февраля 2011 |9.0-CURRENT после удаления прототипа и символа `uio_yield`. |900033 |link:https://svnweb.freebsd.org/changeset/base/218822[218822] |18 февраля 2011 |9.0-CURRENT после обновления binutils до версии 2.17.50. |900034 |link:https://svnweb.freebsd.org/changeset/base/219406[219406] |8 марта 2011 |9.0-CURRENT после изменений в структуре `sysvec` (`sv_schedtail`). |900035 |link:https://svnweb.freebsd.org/changeset/base/220150[220150] |29 марта 2011 |9.0-CURRENT после обновления базового gcc и libstdc++ до последней ревизии, лицензированной под GPLv2. |900036 |link:https://svnweb.freebsd.org/changeset/base/220770[220770] |18 апреля 2011 |9.0-CURRENT после удаления libobjc и поддержки Objective-C из базовой системы. |900037 |link:https://svnweb.freebsd.org/changeset/base/221862[221862] |13 мая 2011 |9.0-CURRENT после импорта библиотеки man:libprocstat[3] и утилиты man:fuser[1] в базовую систему. |900038 |link:https://svnweb.freebsd.org/changeset/base/222167[222167] |22 мая 2011 |9.0-CURRENT после добавления аргумента флага блокировки к man:VFS_FHTOVP[9]. |900039 |link:https://svnweb.freebsd.org/changeset/base/223637[223637] |28 июня 2011 |9.0-CURRENT после импорта pf из OpenBSD 4.5. |900040 |link:https://svnweb.freebsd.org/changeset/base/224217[224217] |19 июля 2011 |Увеличить значение MAXCPU по умолчанию для FreeBSD до 64 на amd64 и ia64 и до 128 для XLP (mips). |900041 |link:https://svnweb.freebsd.org/changeset/base/224834[224834] |13 августа 2011 |Версия 9.0-CURRENT после реализации возможностей Capsicum; man:fget[9] получает аргумент rights. |900042 |link:https://svnweb.freebsd.org/changeset/base/225350[225350] |28 августа 2011 |Увеличьте номера версий общих библиотек для библиотек, чей ABI изменился в рамках подготовки к 9.0. |900043 |link:https://svnweb.freebsd.org/changeset/base/225350[225350] |2 сентября 2011 |Добавить автоматическое обнаружение USB-накопителей, которые не поддерживают команду SCSI "no synchronize cache". |900044 |link:https://svnweb.freebsd.org/changeset/base/225469[225469] |10 сентября 2011 |Переработка автоматического определения особенностей оборудования (auto-quirk). 9.0-RELEASE. |900045 |link:https://svnweb.freebsd.org/changeset/base/229285[229285] |2 января 2012 |9-STABLE после MFC значения true/false из 1000002. |900500 |link:https://svnweb.freebsd.org/changeset/base/229318[229318] |2 января 2012 |9.0-STABLE. |900501 |link:https://svnweb.freebsd.org/changeset/base/229723[229723] |6 января 2012 |9.0-STABLE после объединения добавления системного вызова man:posix_fadvise[2]. |900502 |link:https://svnweb.freebsd.org/changeset/base/230237[230237] |16 января 2012 |9.0-STABLE после слияния gperf 3.0.3 |900503 |link:https://svnweb.freebsd.org/changeset/base/231768[231768] |15 февраля 2012 |9.0-STABLE после введения нового расширяемого интерфейса man:sysctl[3] NET_RT_IFLISTL для запроса списков адресов. |900504 |link:https://svnweb.freebsd.org/changeset/base/232728[232728] |3 марта 2012 |9.0-STABLE после изменений, связанных с монтированием файловой системы внутри клетки. |900505 |link:https://svnweb.freebsd.org/changeset/base/232945[232945] |13 марта 2012 |9.0-STABLE после введения новых параметров сокета man:tcp[4]: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL и TCP_KEEPCNT. |900506 |link:https://svnweb.freebsd.org/changeset/base/235786[235786] |22 мая 2012 |9.0-STABLE после введения функции `quick_exit` и связанных изменений, необходимых для C++11. |901000 |link:https://svnweb.freebsd.org/changeset/base/239082[239082] |5 августа 2012 |9.1-RELEASE. |901500 |link:https://svnweb.freebsd.org/changeset/base/239081[239081] |6 августа 2012 |9.1-STABLE после ветвления releng/9.1 (RELENG_9_1). |901501 |link:https://svnweb.freebsd.org/changeset/base/240659[240659] |11 ноября 2012 |9.1-STABLE после man:LIST_PREV[3] добавлен в queue.h (изменение rev link:https://svnweb.freebsd.org/changeset/base/242893[242893]) и изменения KBI в USB последовательных устройствах. |901502 |link:https://svnweb.freebsd.org/changeset/base/243656[243656] |28 ноября 2012 |9.1-STABLE после того, как буфер дрожания USB serial требует пересборки модулей устройств USB serial. |901503 |link:https://svnweb.freebsd.org/changeset/base/247090[247090] |21 февраля 2013 |9.1-STABLE после перемещения USB в структуру драйверов, что потребовало пересборки всех модулей USB. Также указывает на наличие nmtree. |901504 |link:https://svnweb.freebsd.org/changeset/base/248338[248338] |15 марта 2013 |9.1-STABLE после установки получил флаги -l, -M, -N и связанные с ними, а cat получил опцию -l. |901505 |link:https://svnweb.freebsd.org/changeset/base/251687[251687] |13 июня 2013 |9.1-STABLE после исправлений в начальной загрузке `ctfmerge` (rev link:https://svnweb.freebsd.org/changeset/base/249243[249243]). |902001 |link:https://svnweb.freebsd.org/changeset/base/253912[253912] |3 августа 2013 |`releng/9.2` ответвился от `stable/9`. |902501 |link:https://svnweb.freebsd.org/changeset/base/253913[253913] |2 августа 2013 |9.2-STABLE после создания ветки `releng/9.2`. |902502 |link:https://svnweb.freebsd.org/changeset/base/254938[254938] |26 августа 2013 |9.2-STABLE после включения флага запроса пути CAM `PIM_RESCAN`. |902503 |link:https://svnweb.freebsd.org/changeset/base/254979[254979] |27 августа 2013 |9.2-STABLE после включения флага `SI_UNMAPPED` для cdev. |902504 |link:https://svnweb.freebsd.org/changeset/base/256917[256917] |22 октября 2013 |9.2-STABLE после добавления поддержки скриптов "первой загрузки" man:rc[8]. |902505 |link:https://svnweb.freebsd.org/changeset/base/259448[259448] |12 декабря 2013 |9.2-STABLE после исправления кодировки Heimdal. |902506 |link:https://svnweb.freebsd.org/changeset/base/260136[260136] |31 декабря 2013 |9-STABLE после исправлений MAP_STACK (rev link:https://svnweb.freebsd.org/changeset/base/260082[260082]). |902507 |link:https://svnweb.freebsd.org/changeset/base/262801[262801] |5 марта 2014 |9-STABLE после обновления libc++ до версии 3.4. |902508 |link:https://svnweb.freebsd.org/changeset/base/263171[263171] |14 марта 2014 |9-STABLE после объединения драйвера Radeon KMS (rev link:https://svnweb.freebsd.org/changeset/base/263170[263170]). |902509 |link:https://svnweb.freebsd.org/changeset/base/263509[263509] |21 марта 2014 |9-STABLE после обновления llvm/clang до версии 3.4. |902510 |link:https://svnweb.freebsd.org/changeset/base/263818[263818] |27 марта 2014 |9-STABLE после слияния драйвера man:vt[4]. |902511 |link:https://svnweb.freebsd.org/changeset/base/264289[264289] |27 марта 2014 |9-STABLE после FreeBSD-SA-14:06.openssl. |902512 |link:https://svnweb.freebsd.org/changeset/base/265123[265123] |30 апреля 2014 |9-STABLE после FreeBSD-SA-14:08.tcp. |903000 |link:https://svnweb.freebsd.org/changeset/base/267656[267656] |20 июня 2014 |9-RC1 ветка `releng/9.3`. |903500 |link:https://svnweb.freebsd.org/changeset/base/267657[267657] |20 июня 2014 |9.3-STABLE ветка `releng/9.3`. |903501 |link:https://svnweb.freebsd.org/changeset/base/268443[268443] |8 июля 2014 |9-STABLE после FreeBSD-SA-14:17.kmem (изменение:https://svnweb.freebsd.org/changeset/base/268433[268433]). |903502 |link:https://svnweb.freebsd.org/changeset/base/270175[270175] |19 августа 2014 |9-STABLE после исправления ошибки `SOCK_DGRAM` (rev link:https://svnweb.freebsd.org/changeset/base/269789[269789]). |903503 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |9 сентября 2014 |9-STABLE после FreeBSD-SA-14:18 (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/269687[269687]). |903504 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |16 сентября 2014 |9-STABLE после FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668]). |903505 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |21 октября 2014 |9-STABLE после исправлений FreeBSD-SA-14:20, FreeBSD-SA-14:21 и FreeBSD-SA-14:22 (rev link:https://svnweb.freebsd.org/changeset/base/273412[273412]). |903506 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |4 ноября 2014 |9-STABLE после FreeBSD-SA-14:23, FreeBSD-SA-14:24 и FreeBSD-SA-14:25. |903507 |link:https://svnweb.freebsd.org/changeset/base/275742[275742] |13 декабря 2014 |9-STABLE после объединения важного исправления в векторизатор LLVM, которое в некоторых случаях могло приводить к переполнению буфера. |903508 |link:https://svnweb.freebsd.org/changeset/base/279287[279287] |25 февраля 2015 |9-STABLE после FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp и FreeBSD-SA-15:05.bind. |903509 |link:https://svnweb.freebsd.org/changeset/base/296219[296219] |29 февраля 2016 |9-STABLE после увеличения значения по умолчанию `compat.linux.osrelease` до `2.6.18` для поддержки портов linux-c6-* без дополнительной настройки. |903510 |link:https://svnweb.freebsd.org/changeset/base/300236[300236] |19 мая 2016 |9-STABLE после того, как страница System Binary Interface (SBI) была перемещена в последней версии Berkeley Boot Loader (BBL) из-за увеличения размера кода в link:https://svnweb.freebsd.org/changeset/base/300234[300234]. |903511 |link:https://svnweb.freebsd.org/changeset/base/305735[305735] |12 сентября 2016 |9-STABLE после разрешения взаимоблокировки между `device_detach()` и man:usbd_do_request_flags[9]. |=== [[versions-8]] == Версии FreeBSD 8 [[freebsd-versions-table-8]] .Значения `__FreeBSD_version` в FreeBSD 8 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |800000 |link:https://svnweb.freebsd.org/changeset/base/172531[172531] |11 октября 2007 |8.0-CURRENT. Разделение `ctype` на широкие и однобайтовые символы. |800001 |link:https://svnweb.freebsd.org/changeset/base/172688[172688] |16 октября 2007 |8.0-CURRENT после импорта libpcap 0.9.8 и tcpdump 3.9.8. |800002 |link:https://svnweb.freebsd.org/changeset/base/172841[172841] |21 октября 2007 |8.0-CURRENT после переименования man:kthread_create[9] и связанных функций в man:kproc_create[9] и т.д. |800003 |link:https://svnweb.freebsd.org/changeset/base/172932[172932] |24 октября 2007 |8.0-CURRENT после того, как была добавлена обратная совместимость ABI с версиями FreeBSD 4/5/6 для IOCTL PCIOCGETCONF, PCIOCREAD и PCIOCWRITE, что потребовало снова нарушить ABI IOCTL PCIOCGETCONF |800004 |link:https://svnweb.freebsd.org/changeset/base/173573[173573] |12 ноября 2007 |8.0-CURRENT после перемещения драйвера man:agp[4] из src/sys/pci в src/sys/dev/agp |800005 |link:https://svnweb.freebsd.org/changeset/base/174261[174261] |4 декабря 2007 |8.0-CURRENT после изменений в аллокаторе джамбо-фреймов (rev link:https://svnweb.freebsd.org/changeset/base/174247[174247]). |800006 |link:https://svnweb.freebsd.org/changeset/base/174399[174399] |7 декабря 2007 |8.0-CURRENT после добавления функциональности захвата `callgraph` в man:hwpmc[4]. |800007 |link:https://svnweb.freebsd.org/changeset/base/174901[174901] |25 декабря 2007 |8.0-CURRENT после `kdb_enter()` получает аргумент "why". |800008 |link:https://svnweb.freebsd.org/changeset/base/174951[174951] |28 декабря 2007 |8.0-CURRENT после удаления опции LK_EXCLUPGRADE. |800009 |link:https://svnweb.freebsd.org/changeset/base/175168[175168] |9 января 2008 |8.0-CURRENT после введения man:lockmgr_disown[9] |800010 |link:https://svnweb.freebsd.org/changeset/base/175204[175204] |10 января 2008 |8.0-CURRENT после изменения прототипа man:vn_lock[9]. |800011 |link:https://svnweb.freebsd.org/changeset/base/175295[175295] |13 января 2008 |8.0-CURRENT после изменений прототипов man:VOP_LOCK[9] и man:VOP_UNLOCK[9]. |800012 |link:https://svnweb.freebsd.org/changeset/base/175487[175487] |19 января 2008 |8.0-CURRENT после введения man:lockmgr_recursed[9], man:BUF_RECURSED[9] и man:BUF_ISLOCKED[9], а также удаления `BUF_REFCNT()`. |800013 |link:https://svnweb.freebsd.org/changeset/base/175581[175581] |23 января 2008 |8.0-CURRENT после введения кодировки "ASCII". |800014 |link:https://svnweb.freebsd.org/changeset/base/175636[175636] |24 января 2008 |8.0-CURRENT после изменения прототипа man:lockmgr[9] и удаления `lockcount()` и `LOCKMGR_ASSERT()`. |800015 |link:https://svnweb.freebsd.org/changeset/base/175688[175688] |26 января 2008 |8.0-CURRENT после расширения типов структур man:fts[3]. |800016 |link:https://svnweb.freebsd.org/changeset/base/175872[175872] |1 февраля 2008 |8.0-CURRENT после добавления аргумента в man:MEXTADD[9] |800017 |link:https://svnweb.freebsd.org/changeset/base/176015[176015] |6 февраля 2008 |8.0-CURRENT после введения опций LK_NODUP и LK_NOWITNESS в пространстве man:lockmgr[9]. |800018 |link:https://svnweb.freebsd.org/changeset/base/176112[176112] |8 февраля 2008 |8.0-CURRENT после добавления `m_collapse`. |800019 |link:https://svnweb.freebsd.org/changeset/base/176124[176124] |9 февраля 2008 |8.0-CURRENT после добавления поддержки текущего рабочего каталога, корневого каталога и каталога клетки в sysctl kern.proc.filedesc. |800020 |link:https://svnweb.freebsd.org/changeset/base/176251[176251] |13 февраля 2008 |8.0-CURRENT после добавления man:lockmgr_assert[9] и функций `BUF_ASSERT`. |800021 |link:https://svnweb.freebsd.org/changeset/base/176321[176321] |15 февраля 2008 |8.0-CURRENT после введения man:lockmgr_args[9] и удаления флага LK_INTERNAL. |800022 |link:https://svnweb.freebsd.org/changeset/base/176556[176556] |(отменено) |8.0-CURRENT после изменения стандартной системной ar на BSD man:ar[1]. |800023 |link:https://svnweb.freebsd.org/changeset/base/176560[176560] |25 февраля 2008 |8.0-CURRENT после изменения прототипов man:lockstatus[9] и man:VOP_ISLOCKED[9];, а именно удаления аргумента `struct thread`. |800024 |link:https://svnweb.freebsd.org/changeset/base/176709[176709] |1 марта 2008 |8.0-CURRENT после удаления функций `lockwaiters` и `BUF_LOCKWAITERS`, изменения возвращаемого значения `brelvp` с void на int и добавления новых флагов для man:lockinit[9]. |800025 |link:https://svnweb.freebsd.org/changeset/base/176958[176958] |8 марта 2008 |8.0-CURRENT после добавления команды F_DUP2FD в man:fcntl[2]. |800026 |link:https://svnweb.freebsd.org/changeset/base/177086[177086] |12 марта 2008 |8.0-CURRENT после изменения параметра приоритета на `cv_broadcastpri`, где 0 означает отсутствие приоритета. |800027 |link:https://svnweb.freebsd.org/changeset/base/177551[177551] |24 марта 2008 |8.0-CURRENT после изменения ABI мониторинга bpf при добавлении буферов bpf с `zerocopy`. |800028 |link:https://svnweb.freebsd.org/changeset/base/177637[177637] |26 марта 2008 |8.0-CURRENT после добавления `l_sysid` в структуру flock. |800029 |link:https://svnweb.freebsd.org/changeset/base/177688[177688] |March 28, 2008 |8.0-CURRENT после повторного включения функции `BUF_LOCKWAITERS` и добавления man:lockmgr_waiters[9]. |800030 |link:https://svnweb.freebsd.org/changeset/base/177844[177844] |1 апреля 2008 |8.0-CURRENT после введения функций man:rw_try_rlock[9] и man:rw_try_wlock[9]. |800031 |link:https://svnweb.freebsd.org/changeset/base/177958[177958] |6 апреля 2008 |8.0-CURRENT после введения функций `lockmgr_rw` и `lockmgr_args_rw`. |800032 |link:https://svnweb.freebsd.org/changeset/base/178006[178006] |8 апреля 2008 |8.0-CURRENT после реализации системных вызовов `openat` и связанных с ними, введения флага O_EXEC для man:open[2] и предоставления соответствующих системных вызовов совместимости с Linux. |800033 |link:https://svnweb.freebsd.org/changeset/base/178017[178017] |8 апреля 2008 |8.0-CURRENT после добавления поддержки man:write[2] для man:psm[4] на уровне нативной работы. Теперь произвольные команды можно записывать в [.filename]#/dev/psm%d#, а статус — считывать из него. |800034 |link:https://svnweb.freebsd.org/changeset/base/178051[178051] |10 апреля 2008 |8.0-CURRENT после введения функции `memrchr`. |800035 |link:https://svnweb.freebsd.org/changeset/base/178256[178256] |16 апреля 2008 |8.0-CURRENT после введения функции `fdopendir`. |800036 |link:https://svnweb.freebsd.org/changeset/base/178362[178362] |20 апреля 2008 |8.0-CURRENT после перехода на поддержку multi-bss в беспроводных сетях 802.11 (также известную как `vaps`). |800037 |link:https://svnweb.freebsd.org/changeset/base/178892[178892] |9 мая 2008 |8.0-CURRENT после добавления поддержки нескольких таблиц маршрутизации (также известных как man:setfib[1], man:setfib[2]). |800038 |link:https://svnweb.freebsd.org/changeset/base/179316[179316] |26 мая 2008 |8.0-CURRENT после удаления `netatm` и ISDN4BSD. Также добавлены инструменты Compact C Type (CTF). |800039 |link:https://svnweb.freebsd.org/changeset/base/179784[179784] |14 июня 2008 |8.0-CURRENT после удаления `sgtty`. |800040 |link:https://svnweb.freebsd.org/changeset/base/180025[180025] |26 июня 2008 |8.0-CURRENT с клиентом `lockd` для NFS в ядре. |800041 |link:https://svnweb.freebsd.org/changeset/base/180691[180691] |22 июля 2008 |8.0-CURRENT после добавления man:arc4random_buf[3] и man:arc4random_uniform[3]. |800042 |link:https://svnweb.freebsd.org/changeset/base/181439[181439] |8 августа 2008 |8.0-CURRENT после добавления man:cpuctl[4]. |800043 |link:https://svnweb.freebsd.org/changeset/base/181694[181694] |13 августа 2008 |8.0-CURRENT после изменения man:bpf[4] для использования единого узла устройства вместо клонирования устройств. |800044 |link:https://svnweb.freebsd.org/changeset/base/181803[181803] |17 августа 2008 |8.0-CURRENT после внесения изменений, связанных с первым этапом проекта VIMAGE, переименованы глобальные переменные, подлежащие виртуализации, с добавлением префикса `V_` и макросов для их обратного отображения на глобальные имена. |800045 |link:https://svnweb.freebsd.org/changeset/base/181905[181905] |20 августа 2008 |8.0-CURRENT после интеграции MPSAFE TTY слоя, включая изменения в различных драйверах и утилитах, взаимодействующих с ним. |800046 |link:https://svnweb.freebsd.org/changeset/base/182869[182869] |8 сентября 2008 |8.0-CURRENT после разделения GDT для каждого процессора на архитектуре amd64. |800047 |link:https://svnweb.freebsd.org/changeset/base/182905[182905] |10 сентября 2008 |8.0-CURRENT после удаления VSVTX, VSGID и VSUID. |800048 |link:https://svnweb.freebsd.org/changeset/base/183091[183091] |16 сентября 2008 |8.0-CURRENT после преобразования кода монтирования ядра NFS для поддержки отдельных опций монтирования в `iovec` man:nmount[2], а не только одной большой структуры nfs_args. |800049 |link:https://svnweb.freebsd.org/changeset/base/183114[183114] |17 сентября 2008 |8.0-CURRENT после удаления man:suser[9] и man:suser_cred[9]. |800050 |link:https://svnweb.freebsd.org/changeset/base/184099[184099] |20 октября 2008 |8.0-CURRENT после изменения API кэша буфера. |800051 |link:https://svnweb.freebsd.org/changeset/base/184205[184205] |23 октября 2008 |8.0-CURRENT после удаления макросов man:MALLOC[9] и man:FREE[9]. |800052 |link:https://svnweb.freebsd.org/changeset/base/184419[184419] |28 октября 2008 |8.0-CURRENT после введения `accmode_t` и переименования аргумента `a_mode` в `a_accmode` в VOP_ACCESS. |800053 |link:https://svnweb.freebsd.org/changeset/base/184555[184555] |2 ноября 2008 |8.0-CURRENT после изменения прототипа man:vfs_busy[9] и введения флагов MBF_NOWAIT и MBF_MNTLSTLOCK. |800054 |link:https://svnweb.freebsd.org/changeset/base/185162[185162] |22 ноября 2008 |8.0-CURRENT после добавления `buf_ring`, барьеров памяти и функций ifnet для поддержки нескольких аппаратных очередей передачи для карт, которые их поддерживают, а также реализации кольцевого буфера без блокировок, чтобы позволить драйверам более эффективно управлять очередями пакетов. |800055 |link:https://svnweb.freebsd.org/changeset/base/185363[185363] |27 ноября 2008 |8.0-CURRENT после добавления поддержки Intel(TM) Core, Core2 и Atom в man:hwpmc[4]. |800056 |link:https://svnweb.freebsd.org/changeset/base/185435[185435] |29 ноября 2008 |8.0-CURRENT после введения многопользовательских/без IPv4/v6 клеток. |800057 |link:https://svnweb.freebsd.org/changeset/base/185522[185522] |1 декабря 2008 |8.0-CURRENT после перехода на исходный код `hal` для ath. |800058 |link:https://svnweb.freebsd.org/changeset/base/185968[185968] |12 декабря 2008 |8.0-CURRENT после введения операции VOP_VPTOCNP. |800059 |link:https://svnweb.freebsd.org/changeset/base/186119[186119] |15 декабря 2008 |8.0-CURRENT включает новую переработанную версию arp-v2. |800060 |link:https://svnweb.freebsd.org/changeset/base/186344[186344] |19 декабря 2008 |8.0-CURRENT после добавления makefs. |800061 |link:https://svnweb.freebsd.org/changeset/base/187289[187289] |15 января 2009 |8.0-CURRENT после TCP Appropriate Byte Counting. |800062 |link:https://svnweb.freebsd.org/changeset/base/187830[187830] |28 января 2009 |8.0-CURRENT после удаления `minor()`, `minor2unit()`, `unit2minor()` и т.д. |800063 |link:https://svnweb.freebsd.org/changeset/base/188745[188745] |18 февраля 2009 |8.0-CURRENT после изменения конфигурации GENERIC для использования стека USB2, а также добавления man:fdevname[3]. |800064 |link:https://svnweb.freebsd.org/changeset/base/188946[188946] |23 февраля 2009 |8.0-CURRENT после переноса стека USB2 и замены dev/usb. |800065 |link:https://svnweb.freebsd.org/changeset/base/189092[189092] |26 февраля 2009 |8.0-CURRENT после переименования всех функций в man:libmp[3]. |800066 |link:https://svnweb.freebsd.org/changeset/base/189110[189110] |27 февраля 2009 |8.0-CURRENT после изменения обработки и структуры USB devfs. |800067 |link:https://svnweb.freebsd.org/changeset/base/189136[189136] |28 февраля 2009 |8.0-CURRENT после добавления `getdelim()`, `getline()`, `stpncpy()`, `strnlen()`, `wcsnlen()`, `wcscasecmp()`, and `wcsncasecmp()`. |800068 |link:https://svnweb.freebsd.org/changeset/base/189276[189276] |2 марта 2009 |8.0-CURRENT после переименования класса устройств `ushub` в `uhub`. |800069 |link:https://svnweb.freebsd.org/changeset/base/189585[189585] |9 марта 2009 |8.0-CURRENT после переименования libusb20.so.1 в libusb.so.1. |800070 |link:https://svnweb.freebsd.org/changeset/base/189592[189592] |9 марта 2009 |8.0-CURRENT после объединения IGMPv3 и Source-Specific Multicast (SSM) в стек IPv4. |800071 |link:https://svnweb.freebsd.org/changeset/base/189825[189825] |14 марта 2009 |8.0-CURRENT после того, как gcc был исправлен для использования семантики встраивания C99 в режимах c99 и gnu99. |800072 |link:https://svnweb.freebsd.org/changeset/base/189853[189853] |March 15, 2009 |8.0-CURRENT после удаления флага IFF_NEEDSGIANT; неподдерживаемые MPSAFE драйверы сетевых устройств больше не поддерживаются. |800073 |link:https://svnweb.freebsd.org/changeset/base/190265[190265] |18 марта 2009 |8.0-CURRENT после реализации подстановки динамических строковых токенов для rpath и необходимых путей. |800074 |link:https://svnweb.freebsd.org/changeset/base/190373[190373] |24 марта 2009 |8.0-CURRENT после импорта tcpdump 4.0.0 и libpcap 1.0.0. |800075 |link:https://svnweb.freebsd.org/changeset/base/190787[190787] |6 апреля 2009 |8.0-CURRENT после изменения структуры структур vnet_net, vnet_inet и vnet_ipfw. |800076 |link:https://svnweb.freebsd.org/changeset/base/190866[190866] |9 апреля 2009 |8.0-CURRENT после добавления профилей задержки в dummynet. |800077 |link:https://svnweb.freebsd.org/changeset/base/190914[190914] |14 апреля 2009 |8.0-CURRENT после удаления `VOP_LEASE()` и vop_vector.vop_lease. |800078 |link:https://svnweb.freebsd.org/changeset/base/191080[191080] |15 апреля 2009 |8.0-CURRENT после добавления полей `rt_weight` в структуры `rt_metrics` и `rt_metrics_lite`, что изменило расположение полей в структуре `rt_metrics_lite`. Версия RTM_VERSION была увеличена, но затем отменена. |800079 |link:https://svnweb.freebsd.org/changeset/base/191117[191117] |15 апреля 2009 |8.0-CURRENT после добавления указателей на структуру `llentry` в структуры `route` и `route_in6`. |800080 |link:https://svnweb.freebsd.org/changeset/base/191126[191126] |15 апреля 2009 |8.0-CURRENT после изменения структуры inpcb. |800081 |link:https://svnweb.freebsd.org/changeset/base/191267[191267] |19 апреля 2009 |8.0-CURRENT после изменения структуры `malloc_type`. |800082 |link:https://svnweb.freebsd.org/changeset/base/191368[191368] |21 апреля 2009 |8.0-CURRENT после изменения структуры struct ifnet и с `if_ref()` и `if_rele()` для подсчета ссылок (`refcounting`) ifnet. |800083 |link:https://svnweb.freebsd.org/changeset/base/191389[191389] |22 апреля 2009 |8.0-CURRENT после реализации низкоуровневого API HCI Bluetooth. |800084 |link:https://svnweb.freebsd.org/changeset/base/191672[191672] |29 апреля 2009 |8.0-CURRENT после изменений в IPv6 SSM и MLDv2. |800085 |link:https://svnweb.freebsd.org/changeset/base/191688[191688] |30 апреля 2009 |8.0-CURRENT после включения поддержки сборки ядра с VIMAGE с одним активным образом. |800086 |link:https://svnweb.freebsd.org/changeset/base/191910[191910] |8 мая 2009 |8.0-CURRENT после добавления поддержки строк ввода произвольной длины в man:patch[1]. |800087 |link:https://svnweb.freebsd.org/changeset/base/191990[191990] |11 мая 2009 |8.0-CURRENT после некоторых изменений в VFS KPI. Аргумент потока был удален из частей FSD в VFS. Функциям `VFS_*` больше не нужен контекст, так как он всегда относится к `curthread`. В некоторых особых случаях старое поведение сохранено. |800088 |link:https://svnweb.freebsd.org/changeset/base/192470[192470] |20 мая 2009 |8.0-CURRENT после изменений режима монитора в net80211. |800089 |link:https://svnweb.freebsd.org/changeset/base/192649[192649] |23 мая 2009 |8.0-CURRENT после добавления поддержки блока управления UDP. |800090 |link:https://svnweb.freebsd.org/changeset/base/192669[192669] |23 мая 2009 |8.0-CURRENT после виртуализации клонирования интерфейсов. |800091 |link:https://svnweb.freebsd.org/changeset/base/192895[192895] |27 мая 2009 |8.0-CURRENT после добавления иерархических клеток и удаления глобального securelevel. |800092 |link:https://svnweb.freebsd.org/changeset/base/193011[193011] |29 мая 2009 |8.0-CURRENT после изменения KPI `sx_init_flags()`. `SX_ADAPTIVESPIN` упразднён, и введён новый флаг `SX_NOADAPTIVE` для обработки обратной логики. |800093 |link:https://svnweb.freebsd.org/changeset/base/193047[193047] |29 мая 2009 |8.0-CURRENT после добавления `mnt_xflag` в структуру mount. |800094 |link:https://svnweb.freebsd.org/changeset/base/193093[193093] |30 мая 2009 |8.0-CURRENT после добавления man:VOP_ACCESSX[9]. |800095 |link:https://svnweb.freebsd.org/changeset/base/193096[193096] |30 мая 2009 |8.0-CURRENT после изменения KPI для polling. Обработчики polling теперь возвращают количество обработанных пакетов. Также введена новая возможность `IFCAP_POLLING_NOCOUNT`, которая указывает, что возвращаемое значение не является значимым и подсчёт следует пропустить. |800096 |link:https://svnweb.freebsd.org/changeset/base/193219[193219] |1 июня 2009 |8.0-CURRENT после обновления до новой реализации netisr и после изменения способа хранения и доступа к FIB. |800097 |link:https://svnweb.freebsd.org/changeset/base/193731[193731] |8 июня 2009 |8.0-CURRENT после введения хуков и инфраструктуры деструктора vnet. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/194012[194012] |11 июня 2009 |8.0-CURRENT после введения в netgraph обнаружения вызовов пути из исходящего во входящий и организации очередей, что также изменило структуру struct thread. |800098 |link:https://svnweb.freebsd.org/changeset/base/194210[194210] |14 июня 2009 |8.0-CURRENT после импорта OpenSSL 0.9.8k. |800099 |link:https://svnweb.freebsd.org/changeset/base/194675[194675] |22 июня 2009 |8.0-CURRENT после обновления NGROUPS и переноса виртуализации маршрутов в собственный модуль VImage. |800100 |link:https://svnweb.freebsd.org/changeset/base/194920[194920] |24 июня 2009 |8.0-CURRENT после изменения ABI SYSVIPC. |800101 |link:https://svnweb.freebsd.org/changeset/base/195175[195175] |29 июня 2009 |8.0-CURRENT после удаления символьных устройств /dev/net/* для каждого интерфейса. |800102 |link:https://svnweb.freebsd.org/changeset/base/195634[195634] |12 июля 2009 |8.0-CURRENT после добавления заполнения к структурам `sackhint`, `tcpcb` и `tcpstat`. |800103 |link:https://svnweb.freebsd.org/changeset/base/195654[195654] |13 июля 2009 |8.0-CURRENT после замены структуры `tcpopt` на структуру `toeopt` в интерфейсе драйвера TOE к `syncache` TCP. |800104 |link:https://svnweb.freebsd.org/changeset/base/195699[195699] |14 июля 2009 |8.0-CURRENT после добавления распределителя на основе наборов компоновщика для каждого vnet. |800105 |link:https://svnweb.freebsd.org/changeset/base/195767[195767] |19 июля 2009 |8.0-CURRENT после увеличения версии для всех разделяемых библиотек, у которых не включено управление версиями символов. |800106 |link:https://svnweb.freebsd.org/changeset/base/195852[195852] |24 июля 2009 |8.0-CURRENT после введения типа объекта VM OBJT_SG. |800107 |link:https://svnweb.freebsd.org/changeset/base/196037[196037] |2 августа 2009 |8.0-CURRENT после освобождения подсистемы newbus от Giant путем добавления `sxlock` в newbus и 8.0-RELEASE. |800108 |link:https://svnweb.freebsd.org/changeset/base/199627[199627] |21 ноября 2009 |8.0-STABLE после реализации фильтра `kevent` `EVFILT_USER`. |800500 |link:https://svnweb.freebsd.org/changeset/base/201749[201749] |7 января 2010 |8.0-STABLE после увеличения `__FreeBSD_version`, чтобы `pkg_add -r` использовал пакеты-8-stable. |800501 |link:https://svnweb.freebsd.org/changeset/base/202922[202922] |24 января 2010 |8.0-STABLE после изменения прототипов man:scandir[3] и man:alphasort[3] для соответствия SUSv4. |800502 |link:https://svnweb.freebsd.org/changeset/base/203299[203299] |31 января 2010 |8.0-STABLE после добавления man:sigpause[2]. |800503 |link:https://svnweb.freebsd.org/changeset/base/204344[204344] |25 февраля 2010 |8.0-STABLE после добавления ioctl SIOCGIFDESCR и SIOCSIFDESCR к сетевым интерфейсам. Эти ioctl могут использоваться для управления описанием интерфейса, по аналогии с OpenBSD. |800504 |link:https://svnweb.freebsd.org/changeset/base/204546[204546] |1 марта 2010 |8.0-STABLE после MFC импорта x86emu, программного эмулятора реального режима x86 CPU из OpenBSD. |800505 |link:https://svnweb.freebsd.org/changeset/base/208259[208259] |18 мая 2010 |8.0-STABLE после MFC добавления liblzma, xz, xzdec и lzmainfo. |801000 |link:https://svnweb.freebsd.org/changeset/base/209150[209150] |14 июня 2010 |8.1-RELEASE |801500 |link:https://svnweb.freebsd.org/changeset/base/209146[209146] |14 июня 2010 |8.1-STABLE после 8.1-RELEASE. |801501 |link:https://svnweb.freebsd.org/changeset/base/214762[214762] |3 ноября 2010 |8.1-STABLE после изменения KBI в структуре `sysentvec`, а также реализации PL_FLAG_SCE/SCX/EXEC/SI и `pl_siginfo` для ptrace(PT_LWPINFO). |802000 |link:https://svnweb.freebsd.org/changeset/base/216639[216639] |22 декабря 2010 |8.2-RELEASE |802500 |link:https://svnweb.freebsd.org/changeset/base/216654[216654] |22 декабря 2010 |8.2-STABLE после 8.2-RELEASE. |802501 |link:https://svnweb.freebsd.org/changeset/base/219107[219107] |28 февраля 2011 |8.2-STABLE после объединения изменений DTrace, включая поддержку трассировки пользовательского пространства. |802502 |link:https://svnweb.freebsd.org/changeset/base/219324[219324] |6 марта 2011 |8.2-STABLE после объединения log2 и log2f в libm. |802503 |link:https://svnweb.freebsd.org/changeset/base/221275[221275] |1 мая 2011 |8.2-STABLE после обновления gcc до последней версии GPLv2 из ветки FSF gcc-4_2-branch. |802504 |link:https://svnweb.freebsd.org/changeset/base/222401[222401] |28 мая 2011 |8.2-STABLE после введения KPI и поддерживающей инфраструктуры для модульного управления перегрузкой. |802505 |link:https://svnweb.freebsd.org/changeset/base/222406[222406] |28 мая 2011 |8.2-STABLE после введения KPIs Hhook и Khelp. |802506 |link:https://svnweb.freebsd.org/changeset/base/222408[222408] |28 мая 2011 |8.2-STABLE после добавления OSD в структуру tcpcb. |802507 |link:https://svnweb.freebsd.org/changeset/base/222741[222741] |6 июня 2011 |8.2-STABLE после импорта ZFS v28. |802508 |link:https://svnweb.freebsd.org/changeset/base/222846[222846] |8 июня 2011 |8.2-STABLE после удаления обработчика событий `schedtail` и добавления метода `sv_schedtail` в структуру `sysvec`. |802509 |link:https://svnweb.freebsd.org/changeset/base/224017[224017] |14 июля 2011 |8.2-STABLE после объединения поддержки SSSE3 в binutils. |802510 |link:https://svnweb.freebsd.org/changeset/base/224214[224214] |19 июля 2011 |8.2-STABLE после добавления флага RFTSIGZMB для man:rfork[2]. |802511 |link:https://svnweb.freebsd.org/changeset/base/225458[225458] |9 сентября 2011 |8.2-STABLE после добавления автоматического обнаружения USB-накопителей, которые не поддерживают команду SCSI "no synchronize cache". |802512 |link:https://svnweb.freebsd.org/changeset/base/225470[225470] |10 сентября 2011 |8.2-STABLE после объединения рефакторинга auto-quirk. |802513 |link:https://svnweb.freebsd.org/changeset/base/226763[226763] |25 октября 2011 |8.2-STABLE после объединения флага MAP_PREFAULT_READ в man:mmap[2]. |802514 |link:https://svnweb.freebsd.org/changeset/base/227573[227573] |16 ноября 2011 |8.2-STABLE после объединения добавления системного вызова man:posix_fallocate[2]. |802515 |link:https://svnweb.freebsd.org/changeset/base/229725[229725] |6 января 2012 |8.2-STABLE после объединения добавления системного вызова man:posix_fadvise[2]. |802516 |link:https://svnweb.freebsd.org/changeset/base/230239[230239] |16 января 2012 |8.2-STABLE после объединения gperf 3.0.3 |802517 |link:https://svnweb.freebsd.org/changeset/base/231769[231769] |15 февраля 2012 |8.2-STABLE после введения нового расширяемого интерфейса man:sysctl[3] NET_RT_IFLISTL для запроса списков адресов. |803000 |link:https://svnweb.freebsd.org/changeset/base/232446[232446] |3 марта 2012 |8.3-RELEASE. |803500 |link:https://svnweb.freebsd.org/changeset/base/232439[232439] |3 марта 2012 |8.3-STABLE после ветвления releng/8.3 (RELENG_8_3). |803501 |link:https://svnweb.freebsd.org/changeset/base/247091[247091] |21 февраля 2013 |8.3-STABLE после слияния двух исправлений для USB (ссылки на ревизии: link:https://svnweb.freebsd.org/changeset/base/246616[246616] и link:https://svnweb.freebsd.org/changeset/base/246759[246759]). |804000 |link:https://svnweb.freebsd.org/changeset/base/248850[248850] |28 марта 2013 |8.4-RELEASE. |804500 |link:https://svnweb.freebsd.org/changeset/base/248819[248819] |28 марта 2013 |8.4-STABLE после 8.4-RELEASE. |804501 |link:https://svnweb.freebsd.org/changeset/base/259449[259449] |16 декабря 2013 |8.4-STABLE после MFC исправления кодировки из вышестоящего Heimdal. |804502 |link:https://svnweb.freebsd.org/changeset/base/265123[265123] |30 апреля 2014 |8.4-STABLE после FreeBSD-SA-14:08.tcp. |804503 |link:https://svnweb.freebsd.org/changeset/base/268444[268444] |9 июля 2014 |8.4-STABLE после FreeBSD-SA-14:17.kmem. |804504 |link:https://svnweb.freebsd.org/changeset/base/271341[271341] |9 сентября 2014 |8.4-STABLE после FreeBSD-SA-14:18 (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/271305[271305]). |804505 |link:https://svnweb.freebsd.org/changeset/base/271686[271686] |16 сентября 2014 |8.4-STABLE после FreeBSD-SA-14:19 (ревизия link:https://svnweb.freebsd.org/changeset/base/271668[271668]). |804506 |link:https://svnweb.freebsd.org/changeset/base/273432[273432] |21 октября 2014 |8.4-STABLE после FreeBSD-SA-14:21 (ссылка на ревизию:https://svnweb.freebsd.org/changeset/base/273413[273413]). |804507 |link:https://svnweb.freebsd.org/changeset/base/274162[274162] |4 ноября 2014 |8.4-STABLE после FreeBSD-SA-14:23, FreeBSD-SA-14:24 и FreeBSD-SA-14:25. |804508 |link:https://svnweb.freebsd.org/changeset/base/279287[279287] |25 февраля 2015 |8-STABLE после FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp и FreeBSD-SA-15:05.bind. |804509 |link:https://svnweb.freebsd.org/changeset/base/305736[305736] |12 сентября 2016 |8-STABLE после устранения взаимоблокировки между `device_detach()` и man:usbd_do_request_flags[9]. |=== [[versions-7]] == Версии FreeBSD 7 [[freebsd-versions-table-7]] .Значения `__FreeBSD_version` для FreeBSD 7 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |700000 |link:https://svnweb.freebsd.org/changeset/base/147925[147925] |11 июля 2005 |7.0-CURRENT. |700001 |link:https://svnweb.freebsd.org/changeset/base/148341[148341] |23 июля 2005 |7.0-CURRENT после увеличения версий всех общих библиотек, которые не изменялись с RELENG_5. |700002 |link:https://svnweb.freebsd.org/changeset/base/149039[149039] |13 августа 2005 |7.0-CURRENT после добавления аргумента учетных данных в обработчик события `dev_clone`. |700003 |link:https://svnweb.freebsd.org/changeset/base/149470[149470] |25 августа 2005 |7.0-CURRENT после добавления man:memmem[3] в libc. |700004 |link:https://svnweb.freebsd.org/changeset/base/151888[151888] |30 октября 2005 |7.0-CURRENT после изменения аргументов ядра man:solisten[9] для принятия параметра backlog. |700005 |link:https://svnweb.freebsd.org/changeset/base/152296[152296] |11 ноября 2005 |7.0-CURRENT после изменения `IFP2ENADDR()` для возврата указателя на `IF_LLADDR()`. |700006 |link:https://svnweb.freebsd.org/changeset/base/152315[152315] |11 ноября 2005 |7.0-CURRENT после добавления члена `if_addr` в `struct ifnet` и удаления `IFP2ENADDR()`. |700007 |link:https://svnweb.freebsd.org/changeset/base/153027[153027] |2 декабря 2005 |7.0-CURRENT после включения скриптов из каталогов `local_startup` в базовый man:rcorder[8]. |700008 |link:https://svnweb.freebsd.org/changeset/base/153107[153107] |5 декабря 2005 |7.0-CURRENT после удаления опции монтирования MNT_NODEV. |700009 |link:https://svnweb.freebsd.org/changeset/base/153519[153519] |19 декабря 2005 |7.0-CURRENT после изменений типа ELF-64 и версионирования символов. |700010 |link:https://svnweb.freebsd.org/changeset/base/153579[153579] |20 декабря 2005 |7.0-CURRENT после добавления драйверов `hostb` и `vgapci`, добавления `pci_find_extcap()` и изменения драйверов AGP, чтобы они больше не отображали апертуру. |700011 |link:https://svnweb.freebsd.org/changeset/base/153936[153936] |31 декабря 2005 |7.0-CURRENT после того, как `tv_sec` был изменён на `time_t` на всех платформах, кроме Alpha. |700012 |link:https://svnweb.freebsd.org/changeset/base/154114[154114] |8 января 2006 |7.0-CURRENT после изменения ldconfig_local_dirs. |700013 |link:https://svnweb.freebsd.org/changeset/base/154269[154269] |12 января 2006 |7.0-CURRENT после изменений в [.filename]#/etc/rc.d/abi# для поддержки [.filename]#/compat/linux/etc/ld.so.cache# в виде символьной ссылки в файловой системе только для чтения. |700014 |link:https://svnweb.freebsd.org/changeset/base/154863[154863] |26 января 2006 |7.0-CURRENT после импорта pts. |700015 |link:https://svnweb.freebsd.org/changeset/base/157144[157144] |26 марта 2006 |7.0-CURRENT после введения версии 2 ABI man:hwpmc[4]. |700016 |link:https://svnweb.freebsd.org/changeset/base/157962[157962] |22 апреля 2006 |7.0-CURRENT после добавления man:fcloseall[3] в libc. |700017 |link:https://svnweb.freebsd.org/changeset/base/158513[158513] |13 мая 2006 |7.0-CURRENT после удаления ip6fw. |700018 |link:https://svnweb.freebsd.org/changeset/base/160386[160386] |15 июля 2006 |7.0-CURRENT после импорта snd_emu10kx. |700019 |link:https://svnweb.freebsd.org/changeset/base/160821[160821] |29 июля 2006 |7.0-CURRENT после импорта OpenSSL 0.9.8b. |700020 |link:https://svnweb.freebsd.org/changeset/base/161931[161931] |3 сентября 2006 |7.0-CURRENT после добавления функции `bus_dma_get_tag` |700021 |link:https://svnweb.freebsd.org/changeset/base/162023[162023] |4 сентября 2006 |7.0-CURRENT после импорта libpcap 0.9.4 и tcpdump 3.9.4. |700022 |link:https://svnweb.freebsd.org/changeset/base/162170[162170] |9 сентября 2006 |7.0-CURRENT после изменения `dlsym`, чтобы искать запрошенный символ как в указанном DSO, так и в его неявных зависимостях. |700023 |link:https://svnweb.freebsd.org/changeset/base/162588[162588] |23 сентября 2006 |7.0-CURRENT после добавления новых звуковых IOCTL для API микшера OSSv4. |700024 |link:https://svnweb.freebsd.org/changeset/base/162919[162919] |28 сентября 2006 |7.0-CURRENT после импорта OpenSSL 0.9.8d. |700025 |link:https://svnweb.freebsd.org/changeset/base/164190[164190] |11 ноября 2006 |7.0-CURRENT после добавления libelf. |700026 |link:https://svnweb.freebsd.org/changeset/base/164614[164614] |26 ноября 2006 |7.0-CURRENT после значительных изменений в звуковых sysctls. |700027 |link:https://svnweb.freebsd.org/changeset/base/164770[164770] |30 ноября 2006 |7.0-CURRENT после добавления особенности Wi-Spy. |700028 |link:https://svnweb.freebsd.org/changeset/base/165242[165242] |15 декабря 2006 |7.0-CURRENT после добавления вызовов `sctp` в libc |700029 |link:https://svnweb.freebsd.org/changeset/base/166259[166259] |26 января 2007 |7.0-CURRENT после того, как реализация GNU man:gzip[1] была заменена на версию с лицензией BSD, портированную из NetBSD. |700030 |link:https://svnweb.freebsd.org/changeset/base/166549[166549] |7 февраля 2007 |7.0-CURRENT после удаления инкапсуляции туннеля IPIP (VIFF_TUNNEL) из кода переадресации IPv4 multicast. |700031 |link:https://svnweb.freebsd.org/changeset/base/166907[166907] |23 февраля 2007 |7.0-CURRENT после изменения `bus_setup_intr()` (newbus). |700032 |link:https://svnweb.freebsd.org/changeset/base/167165[167165] |2 марта 2007 |7.0-CURRENT после включения firmware для man:ipw[4] и man:iwi[4]. |700033 |link:https://svnweb.freebsd.org/changeset/base/167360[167360] |9 марта 2007 |7.0-CURRENT после включения поддержки широких символов ncurses. |700034 |link:https://svnweb.freebsd.org/changeset/base/167684[167684] |19 марта 2007 |7.0-CURRENT после изменений в работе `insmntque()`, `getnewvnode()` и `vfs_hash_insert()`. |700035 |link:https://svnweb.freebsd.org/changeset/base/167906[167906] |26 марта 2007 |7.0-CURRENT после добавления механизма уведомлений об изменениях частоты CPU. |700036 |link:https://svnweb.freebsd.org/changeset/base/168413[168413] |6 апреля 2007 |7.0-CURRENT после импорта файловой системы ZFS. |700037 |link:https://svnweb.freebsd.org/changeset/base/168504[168504] |8 апреля 2007 |7.0-CURRENT после добавления периферийного устройства CAM 'SG', реализующего подмножество API сквозного устройства SCSI SG в Linux. |700038 |link:https://svnweb.freebsd.org/changeset/base/169151[169151] |30 апреля 2007 |7.0-CURRENT после изменения man:getenv[3], man:putenv[3], man:setenv[3] и man:unsetenv[3] для соответствия стандарту POSIX. |700039 |link:https://svnweb.freebsd.org/changeset/base/169190[169190] |1 мая 2007 |7.0-CURRENT после отмены изменений в 700038. |700040 |link:https://svnweb.freebsd.org/changeset/base/169453[169453] |10 мая 2007 |7.0-CURRENT после добавления man:flopen[3] в libutil. |700041 |link:https://svnweb.freebsd.org/changeset/base/169526[169526] |13 мая 2007 |7.0-CURRENT после включения версионирования символов и изменения библиотеки потоков по умолчанию на libthr. |700042 |link:https://svnweb.freebsd.org/changeset/base/169758[169758] |19 мая 2007 |7.0-CURRENT после импорта gcc 4.2.0. |700043 |link:https://svnweb.freebsd.org/changeset/base/169830[169830] |21 мая 2007 |7.0-CURRENT после увеличения версий всех общих библиотек, которые не изменялись с RELENG_6. |700044 |link:https://svnweb.freebsd.org/changeset/base/170395[170395] |7 июня 2007 |7.0-CURRENT после изменения аргумента для `vn_open()`/`VOP_OPEN()` с индекса файлового дескриптора на указатель на структуру file *. |700045 |link:https://svnweb.freebsd.org/changeset/base/170510[170510] |10 июня 2007 |7.0-CURRENT после изменения man:pam_nologin[8] для предоставления функции управления учетными записями вместо функции аутентификации в рамках PAM. |700046 |link:https://svnweb.freebsd.org/changeset/base/170530[170530] |11 июня 2007 |7.0-CURRENT после обновления поддержки беспроводных сетей 802.11. |700047 |link:https://svnweb.freebsd.org/changeset/base/170579[170579] |11 июня 2007 |7.0-CURRENT после добавления возможностей интерфейса TCP LRO. |700048 |link:https://svnweb.freebsd.org/changeset/base/170613[170613] |12 июня 2007 |7.0-CURRENT после добавления поддержки API RFC 3678 в стек IPv4. Устаревшее поведение RFC 1724 для ioctl IP_MULTICAST_IF теперь удалено; 0.0.0.0/8 больше нельзя использовать для указания индекса интерфейса. Вместо этого используйте структуру `ipmreqn`. |700049 |link:https://svnweb.freebsd.org/changeset/base/171175[171175] |3 июля 2007 |7.0-CURRENT после импорта pf из OpenBSD 4.1 |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/171167[171167] | |7.0-CURRENT после добавления поддержки IPv6 для FAST_IPSEC, удаления KAME IPSEC и переименования FAST_IPSEC в IPSEC. |700050 |link:https://svnweb.freebsd.org/changeset/base/171195[171195] |4 июля 2007 |7.0-CURRENT после преобразования вызовов setenv/putenv/etc. из традиционного BSD в POSIX. |700051 |link:https://svnweb.freebsd.org/changeset/base/171211[171211] |4 июля 2007 |7.0-CURRENT после добавления новых системных вызовов mmap/lseek и др. |700052 |link:https://svnweb.freebsd.org/changeset/base/171275[171275] |6 июля 2007 |7.0-CURRENT после перемещения заголовков I4B в include/i4b. |700053 |link:https://svnweb.freebsd.org/changeset/base/172394[172394] |30 сентября 2007 |7.0-CURRENT после добавления поддержки доменов PCI |700054 |link:https://svnweb.freebsd.org/changeset/base/172988[172988] |25 октября 2007 |7.0-STABLE после переноса изменений (MFC) разделения широких и однобайтовых ctype. |700055 |link:https://svnweb.freebsd.org/changeset/base/173104[173104] |28 октября 2007 |7.0-RELEASE и 7.0-CURRENT после того, как обратная совместимость ABI с версиями FreeBSD 4/5/6 для IOCTL PCIOCGETCONF, PCIOCREAD и PCIOCWRITE была перенесена в стабильную ветку (MFC), что потребовало снова нарушить ABI IOCTL PCIOCGETCONF |700100 |link:https://svnweb.freebsd.org/changeset/base/174864[174864] |22 декабря 2007 |7.0-STABLE после 7.0-RELEASE |700101 |link:https://svnweb.freebsd.org/changeset/base/176111[176111] |8 февраля 2008 |7.0-STABLE после MFC `m_collapse()`. |700102 |link:https://svnweb.freebsd.org/changeset/base/177735[177735] |30 марта 2008 |7.0-STABLE после MFC `kdb_enter_why()`. |700103 |link:https://svnweb.freebsd.org/changeset/base/178061[178061] |10 апреля 2008 |7.0-STABLE после добавления `l_sysid` в структуру flock. |700104 |link:https://svnweb.freebsd.org/changeset/base/178108[178108] |11 апреля 2008 |7.0-STABLE после MFC man:procstat[1]. |700105 |link:https://svnweb.freebsd.org/changeset/base/178120[178120] |11 апреля 2008 |7.0-STABLE после MFC функций `umtx`. |700106 |link:https://svnweb.freebsd.org/changeset/base/178225[178225] |15 апреля 2008 |7.0-STABLE после MFC поддержки man:write[2] в man:psm[4]. |700107 |link:https://svnweb.freebsd.org/changeset/base/178353[178353] |20 апреля 2008 |7.0-STABLE после MFC команды F_DUP2FD в man:fcntl[2]. |700108 |link:https://svnweb.freebsd.org/changeset/base/178783[178783] |5 мая 2008 |7.0-STABLE после некоторых изменений в man:lockmgr[9], что делает необходимым включение [.filename]#sys/lock.h# для использования man:lockmgr[9]. |700109 |link:https://svnweb.freebsd.org/changeset/base/179367[179367] |27 мая 2008 |7.0-STABLE после MFC функции man:memrchr[3]. |700110 |link:https://svnweb.freebsd.org/changeset/base/181328[181328] |5 августа 2008 |7.0-STABLE после MFC клиента `lockd` ядра NFS. |700111 |link:https://svnweb.freebsd.org/changeset/base/181940[181940] |20 августа 2008 |7.0-STABLE после добавления поддержки физически непрерывных больших кадров (jumbo frame). |700112 |link:https://svnweb.freebsd.org/changeset/base/182294[182294] |27 августа 2008 |7.0-STABLE после переноса изменений (MFC) поддержки DTrace в ядре. |701000 |link:https://svnweb.freebsd.org/changeset/base/185315[185315] |25 ноября 2008 |7.1-RELEASE |701100 |link:https://svnweb.freebsd.org/changeset/base/185302[185302] |25 ноября 2008 |7.1-STABLE после 7.1-RELEASE. |701101 |link:https://svnweb.freebsd.org/changeset/base/187023[187023] |10 января 2009 |7.1-STABLE после слияния man:strndup[3]. |701102 |link:https://svnweb.freebsd.org/changeset/base/187370[187370] |17 января 2009 |7.1-STABLE после добавления поддержки man:cpuctl[4]. |701103 |link:https://svnweb.freebsd.org/changeset/base/188281[188281] |7 февраля 2009 |7.1-STABLE после объединения клеток с поддержкой multi-/no-IPv4/v6. |701104 |link:https://svnweb.freebsd.org/changeset/base/188625[188625] |14 февраля 2009 |7.1-STABLE после сохранения владельца приостановки в структуре mount и добавления метода vfs_susp_clean в структуру vfsops. |701105 |link:https://svnweb.freebsd.org/changeset/base/189740[189740] |12 марта 2009 |7.1-STABLE после несовместимого изменения sysctl kern.ipc.shmsegs для выделения больших сегментов разделяемой памяти SysV на 64-битных архитектурах. |701106 |link:https://svnweb.freebsd.org/changeset/base/189786[189786] |14 марта 2009 |7.1-STABLE после объединения исправления для операций ожидания семафоров POSIX. |702000 |link:https://svnweb.freebsd.org/changeset/base/191099[191099] |15 апреля 2009 |7.2-RELEASE |702100 |link:https://svnweb.freebsd.org/changeset/base/191091[191091] |15 апреля 2009 |7.2-STABLE после 7.2-RELEASE. |702101 |link:https://svnweb.freebsd.org/changeset/base/192149[192149] |15 мая 2009 |7.2-STABLE после изменения man:ichsmb[4] для использования выравнивания по левому краю вторичной адресации, чтобы соответствовать другим драйверам контроллеров SMBus. |702102 |link:https://svnweb.freebsd.org/changeset/base/193020[193020] |28 мая 2009 |7.2-STABLE после слияния из ветки man функции fdopendir[3]. |702103 |link:https://svnweb.freebsd.org/changeset/base/193638[193638] |6 июня 2009 |7.2-STABLE после MFC PmcTools. |702104 |link:https://svnweb.freebsd.org/changeset/base/195694[195694] |14 июля 2009 |7.2-STABLE после MFC системного вызова man:closefrom[2]. |702105 |link:https://svnweb.freebsd.org/changeset/base/196006[196006] |31 июля 2009 |7.2-STABLE после слияния изменения ABI SYSVIPC. |702106 |link:https://svnweb.freebsd.org/changeset/base/197198[197198] |14 сентября 2009 |7.2-STABLE после слияния изменений (MFC) улучшений PAT для x86 и добавления `d_mmap_single()` и типа объекта VM со списком scatter/gather. |703000 |link:https://svnweb.freebsd.org/changeset/base/203740[203740] |9 февраля 2010 |7.3-RELEASE |703100 |link:https://svnweb.freebsd.org/changeset/base/203742[203742] |9 февраля 2010 |7.3-STABLE после 7.3-RELEASE. |704000 |link:https://svnweb.freebsd.org/changeset/base/216647[216647] |22 декабря 2010 |7.4-RELEASE |704100 |link:https://svnweb.freebsd.org/changeset/base/216658[216658] |22 декабря 2010 |7.4-STABLE после 7.4-RELEASE. |704101 |link:https://svnweb.freebsd.org/changeset/base/221318[221318] |2 мая 2011 |7.4-STABLE после MFC gcc в ревизии link:https://svnweb.freebsd.org/changeset/base/221317[221317]. |=== [[versions-6]] == Версии FreeBSD 6 [[freebsd-versions-table-6]] .Значения `__FreeBSD_version` в FreeBSD 6 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |600000 |link:https://svnweb.freebsd.org/changeset/base/133921[133921] |18 августа 2004 |6.0-CURRENT |600001 |link:https://svnweb.freebsd.org/changeset/base/134396[134396] |27 августа 2004 |6.0-CURRENT после постоянного включения PFIL_HOOKS в ядре. |600002 |link:https://svnweb.freebsd.org/changeset/base/134514[134514] |30 августа 2004 |6.0-CURRENT после первоначального добавления `ifi_epoch` в структуру `if_data`. Отменено через несколько дней. Не используйте это значение. |600003 |link:https://svnweb.freebsd.org/changeset/base/134933[134933] |8 сентября 2004 |6.0-CURRENT после повторного добавления члена `ifi_epoch` в структуру `if_data`. |600004 |link:https://svnweb.freebsd.org/changeset/base/135920[135920] |29 сентября 2004 |6.0-CURRENT после добавления аргумента struct inpcb в API pfil. |600005 |link:https://svnweb.freebsd.org/changeset/base/136172[136172] |5 октября 2004 |6.0-CURRENT после добавления аргумента "-d DESTDIR" в newsyslog. |600006 |link:https://svnweb.freebsd.org/changeset/base/137192[137192] |4 ноября 2004 |6.0-CURRENT после добавления опций заполнения в стиле glibc для man:strftime[3]. |600007 |link:https://svnweb.freebsd.org/changeset/base/138760[138760] |12 декабря 2004 |6.0-CURRENT после добавления обновлений для фреймворка 802.11. |600008 |link:https://svnweb.freebsd.org/changeset/base/140809[140809] |25 января 2005 |6.0-CURRENT после изменений в функциях `VOP_*VOBJECT()` и введения флага `MNTK_MPSAFE` для файловых систем, работающих без Giant. |600009 |link:https://svnweb.freebsd.org/changeset/base/141250[141250] |4 февраля 2005 |6.0-CURRENT после добавления фреймворка cpufreq и драйверов. |600010 |link:https://svnweb.freebsd.org/changeset/base/141394[141394] |6 февраля 2005 |6.0-CURRENT после импорта man:nc[1] из OpenBSD. |600011 |link:https://svnweb.freebsd.org/changeset/base/141727[141727] |12 февраля 2005 |6.0-CURRENT после удаления подобия поддержки `matherr()` из SVID2. |600012 |link:https://svnweb.freebsd.org/changeset/base/141940[141940] |15 февраля 2005 |6.0-CURRENT после увеличения размера стеков потоков по умолчанию. |600013 |link:https://svnweb.freebsd.org/changeset/base/142089[142089] |19 февраля 2005 |6.0-CURRENT после исправлений в [.filename]## и [.filename]## для обеспечения совместимости с GCC компилятора Intel C/C++. |600014 |link:https://svnweb.freebsd.org/changeset/base/142184[142184] |21 февраля 2005 |6.0-CURRENT после исправления проверок EOVERFLOW в man:vswprintf[3]. |600015 |link:https://svnweb.freebsd.org/changeset/base/142501[142501] |25 февраля 2005 |6.0-CURRENT после изменения члена структуры `if_data`, `ifi_epoch`, с времени настенных часов на время работы системы. |600016 |link:https://svnweb.freebsd.org/changeset/base/142582[142582] |26 февраля 2005 |6.0-CURRENT после изменения формата диска LC_CTYPE. |600017 |link:https://svnweb.freebsd.org/changeset/base/142683[142683] |27 февраля 2005 |6.0-CURRENT после изменения формата диска каталогов NLS. |600018 |link:https://svnweb.freebsd.org/changeset/base/142686[142686] |27 февраля 2005 |6.0-CURRENT после изменения формата диска LC_COLLATE. |600019 |link:https://svnweb.freebsd.org/changeset/base/142752[142752] |28 февраля 2005 |Установка `acpica` включает файлы в /usr/include. |600020 |link:https://svnweb.freebsd.org/changeset/base/143308[143308] |9 марта 2005 |Добавление флага MSG_NOSIGNAL в API man:send[2]. |600021 |link:https://svnweb.freebsd.org/changeset/base/143746[143746] |17 марта 2005 |Добавление полей в cdevsw |600022 |link:https://svnweb.freebsd.org/changeset/base/143901[143901] |21 марта 2005 |Удален gtar из базовой системы. |600023 |link:https://svnweb.freebsd.org/changeset/base/144980[144980] |13 апреля 2005 |Добавлены параметры сокета LOCAL_CREDS, LOCAL_CONNWAIT в man:unix[4]. |600024 |link:https://svnweb.freebsd.org/changeset/base/145565[145565] |19 апреля 2005 |man:hwpmc[4] и связанные инструменты добавлены в 6.0-CURRENT. |600025 |link:https://svnweb.freebsd.org/changeset/base/145565[145565] |26 апреля 2005 |Структура `icmphdr` добавлена в 6.0-CURRENT. |600026 |link:https://svnweb.freebsd.org/changeset/base/145843[145843] |3 мая 2005 |pf обновлен до версии 3.7. |600027 |link:https://svnweb.freebsd.org/changeset/base/145966[145966] |6 мая 2005 |Добавлены libalias в ядре и `ng_nat`. |600028 |link:https://svnweb.freebsd.org/changeset/base/146191[146191] |13 мая 2005 |POSIX man:ttyname_r[3], доступный через unistd.h и libc. |600029 |link:https://svnweb.freebsd.org/changeset/base/146780[146780] |29 мая 2005 |6.0-CURRENT после обновления libpcap до v0.9.1 alpha 096. |600030 |link:https://svnweb.freebsd.org/changeset/base/146988[146988] |5 июня 2005 |6.0-CURRENT после импорта man:if_bridge[4] из NetBSD. |600031 |link:https://svnweb.freebsd.org/changeset/base/147256[147256] |10 июня 2005 |6.0-CURRENT после того, как структура ifnet была вынесена из `softcs` драйвера. |600032 |link:https://svnweb.freebsd.org/changeset/base/147898[147898] |11 июля 2005 |6.0-CURRENT после импорта libpcap v0.9.1. |600033 |link:https://svnweb.freebsd.org/changeset/base/148388[148388] |25 июля 2005 |6.0-STABLE после увеличения версий всех общих библиотек, которые не изменялись с RELENG_5. |600034 |link:https://svnweb.freebsd.org/changeset/base/149040[149040] |13 августа 2005 |6.0-STABLE после добавления аргумента credential в обработчик события `dev_clone`. 6.0-RELEASE. |600100 |link:https://svnweb.freebsd.org/changeset/base/151958[151958] |1 ноября 2005 |6.0-STABLE после 6.0-RELEASE |600101 |link:https://svnweb.freebsd.org/changeset/base/153601[153601] |21 декабря 2005 |6.0-STABLE после включения скриптов из каталогов `local_startup` в базовый man:rcorder[8]. |600102 |link:https://svnweb.freebsd.org/changeset/base/153912[153912] |30 декабря 2005 |6.0-STABLE после обновления типов и констант ELF. |600103 |link:https://svnweb.freebsd.org/changeset/base/154396[154396] |15 января 2006 |6.0-STABLE после переноса изменений (MFC) API man:pidfile[3]. |600104 |link:https://svnweb.freebsd.org/changeset/base/154453[154453] |17 января 2006 |6.0-STABLE после MFC изменений ldconfig_local_dirs. |600105 |link:https://svnweb.freebsd.org/changeset/base/156019[156019] |26 февраля 2006 |6.0-STABLE после поддержки каталога NLS в man:csh[1]. |601000 |link:https://svnweb.freebsd.org/changeset/base/158330[158330] |6 мая 2006 |6.1-RELEASE |601100 |link:https://svnweb.freebsd.org/changeset/base/158331[158331] |6 мая 2006 |6.1-STABLE после 6.1-RELEASE. |601101 |link:https://svnweb.freebsd.org/changeset/base/159861[159861] |22 июня 2006 |6.1-STABLE после импорта `csup`. |601102 |link:https://svnweb.freebsd.org/changeset/base/160253[160253] |11 июля 2006 |6.1-STABLE после обновления man:iwi[4]. |601103 |link:https://svnweb.freebsd.org/changeset/base/160429[160429] |17 июля 2006 |6.1-STABLE после обновления резолвера до BIND9 и добавления реентерабельной версии функций `netdb`. |601104 |link:https://svnweb.freebsd.org/changeset/base/161098[161098] |8 августа 2006 |6.1-STABLE после включения поддержки DSO (динамически разделяемых объектов) в OpenSSL. |601105 |link:https://svnweb.freebsd.org/changeset/base/161900[161900] |2 сентября 2006 |6.1-STABLE после исправлений 802.11 изменил API для ioctl IEEE80211_IOC_STA_INFO. |602000 |link:https://svnweb.freebsd.org/changeset/base/164312[164312] |15 ноября 2006 |6.2-RELEASE |602100 |link:https://svnweb.freebsd.org/changeset/base/162329[162329] |15 сентября 2006 |6.2-STABLE после 6.2-RELEASE. |602101 |link:https://svnweb.freebsd.org/changeset/base/165122[165122] |12 декабря 2006 |6.2-STABLE после добавления особенности Wi-Spy. |602102 |link:https://svnweb.freebsd.org/changeset/base/165596[165596] |28 декабря 2006 |6.2-STABLE после добавления `pci_find_extcap()`. |602103 |link:https://svnweb.freebsd.org/changeset/base/166039[166039] |16 января 2007 |6.2-STABLE после MFC изменения `dlsym` для поиска запрошенного символа как в указанном DSO, так и в его неявных зависимостях. |602104 |link:https://svnweb.freebsd.org/changeset/base/166314[166314] |28 января 2007 |6.2-STABLE после слияния изменений (MFC) узлов netgraph man:ng_deflate[4] и man:ng_pred1[4], а также новых режимов сжатия и шифрования для узла man:ng_ppp[4]. |602105 |link:https://svnweb.freebsd.org/changeset/base/166840[166840] |20 февраля 2007 |6.2-STABLE после переноса (MFC) версии man:gzip[1] под лицензией BSD из NetBSD. |602106 |link:https://svnweb.freebsd.org/changeset/base/168133[168133] |31 марта 2007 |6.2-STABLE после слияния изменений (MFC) поддержки PCI MSI и MSI-X. |602107 |link:https://svnweb.freebsd.org/changeset/base/168438[168438] |6 апреля 2007 |6.2-STABLE после слияния изменений (MFC) ncurses 5.6 с поддержкой широких символов. |602108 |link:https://svnweb.freebsd.org/changeset/base/168611[168611] |11 апреля 2007 |6.2-STABLE после слияния изменений (MFC) для периферийного устройства CAM 'SG', реализующего подмножество API сквозного устройства SCSI SG в Linux. |602109 |link:https://svnweb.freebsd.org/changeset/base/168805[168805] |17 апреля 2007 |6.2-STABLE после MFC набора исправлений readline 5.2 patch-set 002. |602110 |link:https://svnweb.freebsd.org/changeset/base/169222[169222] |2 мая 2007 |6.2-STABLE после слияния изменений (MFC) функций `pmap_invalidate_cache()`, `pmap_change_attr()`, `pmap_mapbios()`, `pmap_mapdev_attr()` и `pmap_unmapbios()` для архитектур amd64 и i386. |602111 |link:https://svnweb.freebsd.org/changeset/base/170556[170556] |11 июня 2007 |6.2-STABLE после слияния изменений BOP_BDFLUSH, что привело к нарушению KBI модулей файловой системы. |602112 |link:https://svnweb.freebsd.org/changeset/base/172284[172284] |21 сентября 2007 |6.2-STABLE после man:libutil[3] MFC's. |602113 |link:https://svnweb.freebsd.org/changeset/base/172986[172986] |25 октября 2007 |6.2-STABLE после слияния изменений (MFC) разделения широких и однобайтовых символов ctype. Вновь скомпилированные двоичные файлы, ссылающиеся на ctype.h, могут требовать новый символ `__mb_sb_limit`, который недоступен в старых системах. |602114 |link:https://svnweb.freebsd.org/changeset/base/173170[173170] |30 октября 2007 |6.2-STABLE после восстановления прямой совместимости ABI ctype. |602115 |link:https://svnweb.freebsd.org/changeset/base/173794[173794] |21 ноября 2007 |6.2-STABLE после отмены разделения широких и однобайтовых символов ctype. |603000 |link:https://svnweb.freebsd.org/changeset/base/173897[173897] |25 ноября 2007 |6.3-RELEASE |603100 |link:https://svnweb.freebsd.org/changeset/base/173891[173891] |25 ноября 2007 |6.3-STABLE после 6.3-RELEASE. |(не изменено) |link:https://svnweb.freebsd.org/changeset/base/174434[174434] |7 декабря 2007 |6.3-STABLE после исправления поддержки многобайтовых типов в макросе bit. |603102 |link:https://svnweb.freebsd.org/changeset/base/178459[178459] |24 апреля 2008 |6.3-STABLE после добавления `l_sysid` в структуру flock. |603103 |link:https://svnweb.freebsd.org/changeset/base/179367[179367] |27 мая 2008 |6.3-STABLE после MFC функции man:memrchr[3]. |603104 |link:https://svnweb.freebsd.org/changeset/base/179810[179810] |15 июня 2008 |6.3-STABLE после MFC поддержки модификатора переменной `:u` в man:make[1]. |604000 |link:https://svnweb.freebsd.org/changeset/base/183583[183583] |4 октября 2008 |6.4-RELEASE |604100 |link:https://svnweb.freebsd.org/changeset/base/183584[183584] |4 октября 2008 |6.4-STABLE после 6.4-RELEASE. |=== [[versions-5]] == Версии FreeBSD 5 [[freebsd-versions-table-5]] .Значения `__FreeBSD_version` в FreeBSD 5 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |500000 |link:https://svnweb.freebsd.org/changeset/base/58009[58009] |13 марта 2000 |5.0-CURRENT |500001 |link:https://svnweb.freebsd.org/changeset/base/59348[59348] |18 апреля 2000 |5.0-CURRENT после добавления дополнительных полей заголовка ELF и изменения метода маркировки ELF-бинарников. |500002 |link:https://svnweb.freebsd.org/changeset/base/59906[59906] |2 мая 2000 |5.0-CURRENT после изменений метаданных kld. |500003 |link:https://svnweb.freebsd.org/changeset/base/60688[60688] |18 мая 2000 |5.0-CURRENT после изменений в buf/bio. |500004 |link:https://svnweb.freebsd.org/changeset/base/60936[60936] |26 мая 2000 |5.0-CURRENT после обновления binutils. |500005 |link:https://svnweb.freebsd.org/changeset/base/61221[61221] |3 июня 2000 |5.0-CURRENT после объединения кода libxpg4 с libc и после введения интерфейса TASKQ. |500006 |link:https://svnweb.freebsd.org/changeset/base/61500[61500] |10 июня 2000 |5.0-CURRENT после добавления интерфейсов AGP. |500007 |link:https://svnweb.freebsd.org/changeset/base/62235[62235] |29 июня 2000 |5.0-CURRENT после обновления Perl до версии 5.6.0 |500008 |link:https://svnweb.freebsd.org/changeset/base/62764[62764] |7 июля 2000 |5.0-CURRENT после обновления кода KAME до исходников от 2000/07. |500009 |link:https://svnweb.freebsd.org/changeset/base/63154[63154] |14 июля 2000 |5.0-CURRENT после изменений в `ether_ifattach()` и `ether_ifdetach()`. |500010 |link:https://svnweb.freebsd.org/changeset/base/63265[63265] |16 июля 2000 |5.0-CURRENT после изменения настроек mtree обратно на исходный вариант, с добавлением -L для следования по символьным ссылкам. |500011 |link:https://svnweb.freebsd.org/changeset/base/63459[63459] |18 июля 2000 |5.0-CURRENT после изменения API kqueue. |500012 |link:https://svnweb.freebsd.org/changeset/base/65353[65353] |2 сентября 2000 |5.0-CURRENT после переноса man:setproctitle[3] из libutil в libc. |500013 |link:https://svnweb.freebsd.org/changeset/base/65671[65671] |10 сентября 2000 |5.0-CURRENT после первого коммита SMPng. |500014 |link:https://svnweb.freebsd.org/changeset/base/70650[70650] |4 января 2001 |5.0-CURRENT после перемещения в . |500015 |link:https://svnweb.freebsd.org/changeset/base/70894[70894] |10 января 2001 |5.0-CURRENT после объединения libgcc.a и libgcc_r.a, а также связанных изменений в компоновке GCC. |500016 |link:https://svnweb.freebsd.org/changeset/base/71583[71583] |24 января 2001 |5.0-CURRENT после изменения, разрешающего совместную линковку libc и libc_r, с объявлением устаревшим параметра -pthread. |500017 |link:https://svnweb.freebsd.org/changeset/base/72650[72650] |18 февраля 2001 |5.0-CURRENT после перехода со структуры `ucred` на структуру `xucred` для стабилизации API, экспортируемого ядром, для mountd и других. |500018 |link:https://svnweb.freebsd.org/changeset/base/72975[72975] |24 февраля 2001 |5.0-CURRENT после добавления переменной сборки CPUTYPE для управления оптимизациями под конкретный процессор. |500019 |link:https://svnweb.freebsd.org/changeset/base/77937[77937] |9 июня 2001 |5.0-CURRENT после перемещения machine/ioctl_fd.h в sys/fdcio.h |500020 |link:https://svnweb.freebsd.org/changeset/base/78304[78304] |15 июня 2001 |5.0-CURRENT после переименования названий локалей. |500021 |link:https://svnweb.freebsd.org/changeset/base/78632[78632] |22 июня 2001 |5.0-CURRENT после импорта Bzip2. Также означает удаление S/Key. |500022 |link:https://svnweb.freebsd.org/changeset/base/83435[83435] |12 июля 2001 |5.0-CURRENT после поддержки SSE. |500023 |link:https://svnweb.freebsd.org/changeset/base/83435[83435] |14 сентября 2001 |5.0-CURRENT после второго этапа KSE. |500024 |link:https://svnweb.freebsd.org/changeset/base/84324[84324] |1 октября 2001 |5.0-CURRENT после `d_thread_t` и перемещение UUCP в порты. |500025 |link:https://svnweb.freebsd.org/changeset/base/84481[84481] |4 октября 2001 |5.0-CURRENT после изменения ABI для передачи дескрипторов и `creds` на 64-битных платформах. |500026 |link:https://svnweb.freebsd.org/changeset/base/84710[84710] |9 октября 2001 |5.0-CURRENT после перехода на XFree86 4 по умолчанию для сборки пакетов и после добавления новой функции `strnstr()` в библиотеку libc. |500027 |link:https://svnweb.freebsd.org/changeset/base/84743[84743] |10 октября 2001 |5.0-CURRENT после добавления новой функции `strcasestr()` в библиотеку libc. |500028 |link:https://svnweb.freebsd.org/changeset/base/87879[87879] |14 декабря 2001 |5.0-CURRENT после импорта компонентов пользовательского пространства smbfs. |(не изменено) | | |5.0-CURRENT после добавления новых целочисленных типов фиксированной ширины C99. |500029 |link:https://svnweb.freebsd.org/changeset/base/89938[89938] |29 января 2002 |5.0-CURRENT после изменения возвращаемого значения man:sendfile[2]. |500030 |link:https://svnweb.freebsd.org/changeset/base/90711[90711] |15 февраля 2002 |5.0-CURRENT после введения типа `fflags_t`, который имеет подходящий размер для флагов файлов. |500031 |link:https://svnweb.freebsd.org/changeset/base/91203[91203] |24 февраля 2002 |5.0-CURRENT после переименования элемента структуры usb. |500032 |link:https://svnweb.freebsd.org/changeset/base/92453[92453] |16 марта 2002 |5.0-CURRENT после внедрения Perl 5.6.1. |500033 |link:https://svnweb.freebsd.org/changeset/base/93722[93722] |3 апреля 2002 |5.0-CURRENT после того, как переменная `sendmail_enable` из man:rc.conf[5] стала принимать значение `NONE`. |500034 |link:https://svnweb.freebsd.org/changeset/base/95831[95831] |30 апреля 2002 |5.0-CURRENT после того, как `mtx_init()` получил третий аргумент. |500035 |link:https://svnweb.freebsd.org/changeset/base/96498[96498] |13 мая 2002 |5.0-CURRENT с Gcc 3.1. |500036 |link:https://svnweb.freebsd.org/changeset/base/96781[96781] |17 мая 2002 |5.0-CURRENT без Perl в /usr/src |500037 |link:https://svnweb.freebsd.org/changeset/base/97516[97516] |29 мая 2002 |5.0-CURRENT после добавления man:dlfunc[3] |500038 |link:https://svnweb.freebsd.org/changeset/base/100591[100591] |24 июля 2002 |5.0-CURRENT после изменения типов некоторых членов структуры `sockbuf` и её переупорядочивания. |500039 |link:https://svnweb.freebsd.org/changeset/base/102757[102757] |1 сентября 2002 |5.0-CURRENT после импорта GCC 3.2.1. Также после того, как заголовки перестали использовать _BSD_FOO_T_ и начали использовать _FOO_T_DECLARED. Это значение также можно использовать как консервативную оценку начала поддержки пакета man:bzip2[1]. |500040 |link:https://svnweb.freebsd.org/changeset/base/103675[103675] |20 сентября 2002 |5.0-CURRENT после внесения различных изменений в функции работы с дисками, направленных на устранение зависимости от внутренней структуры disklabel. |500041 |link:https://svnweb.freebsd.org/changeset/base/104250[104250] |1 октября 2002 |5.0-CURRENT после добавления man:getopt_long[3] в libc. |500042 |link:https://svnweb.freebsd.org/changeset/base/105178[105178] |15 октября 2002 |5.0-CURRENT после обновления Binutils 2.13, которое включило новую эмуляцию FreeBSD, `vec` и формат вывода. |500043 |link:https://svnweb.freebsd.org/changeset/base/106289[106289] |1 ноября 2002 |5.0-CURRENT после добавления слабых заглушек pthread_XXX в libc, что сделало устаревшей libXThrStub.so. 5.0-RELEASE. |500100 |link:https://svnweb.freebsd.org/changeset/base/109405[109405] |17 января 2003 |5.0-CURRENT после ветвления для RELENG_5_0 |500101 |link:https://svnweb.freebsd.org/changeset/base/111120[111120] |19 февраля 2003 | пустой. Не включайте его. |500102 |link:https://svnweb.freebsd.org/changeset/base/111482[111482] |25 февраля 2003 |5.0-CURRENT после изменения интерфейса d_mmap_t. |500103 |link:https://svnweb.freebsd.org/changeset/base/111540[111540] |26 февраля 2003 |5.0-CURRENT после изменения `taskqueue_swi` для работы без Giant и добавления `taskqueue_swi_giant` для работы с Giant. |500104 |link:https://svnweb.freebsd.org/changeset/base/111600[111600] |27 февраля 2003 |`cdevsw_add()` и `cdevsw_remove()` больше не существуют. Появление средства выделения `MAJOR_AUTO`. |500105 |link:https://svnweb.freebsd.org/changeset/base/111864[111864] |4 марта 2003 |5.0-CURRENT после новой инициализации метода cdevsw. |500106 |link:https://svnweb.freebsd.org/changeset/base/112007[112007] |8 марта 2003 |`devstat_add_entry()` был заменён на `devstat_new_entry()` |500107 |link:https://svnweb.freebsd.org/changeset/base/112288[112288] |15 марта 2003 |Изменение интерфейса `devstat`; см. sys/sys/param.h 1.149 |500108 |link:https://svnweb.freebsd.org/changeset/base/112300[112300] |15 марта 2003 |Изменения в интерфейсе Token-Ring. |500109 |link:https://svnweb.freebsd.org/changeset/base/112571[112571] |25 марта 2003 |Добавление `vm_paddr_t`. |500110 |link:https://svnweb.freebsd.org/changeset/base/112741[112741] |28 марта 2003 |5.0-CURRENT после того, как man:realpath[3] стал потокобезопасным |500111 |link:https://svnweb.freebsd.org/changeset/base/113273[113273] |9 апреля 2003 |5.0-CURRENT после синхронизации man:usbhid[3] с NetBSD |500112 |link:https://svnweb.freebsd.org/changeset/base/113597[113597] |17 апреля 2003 |5.0-CURRENT после новой реализации NSS и добавления функций POSIX.1 getpw*_r, getgr*_r |500113 |link:https://svnweb.freebsd.org/changeset/base/114492[114492] |2 мая 2003 |5.0-CURRENT после удаления старой системы rc. |501000 |link:https://svnweb.freebsd.org/changeset/base/115816[115816] |4 июня 2003 |5.1-RELEASE. |501100 |link:https://svnweb.freebsd.org/changeset/base/115710[115710] |2 июня 2003 |5.1-CURRENT после ветвления для RELENG_5_1. |501101 |link:https://svnweb.freebsd.org/changeset/base/117025[117025] |29 июня 2003 |5.1-CURRENT после исправления семантики man:sigtimedwait[2] и man:sigwaitinfo[2]. |501102 |link:https://svnweb.freebsd.org/changeset/base/117191[117191] |3 июля 2003 |5.1-CURRENT после добавления полей `lockfunc` и `lockfuncarg` в man:bus_dma_tag_create[9]. |501103 |link:https://svnweb.freebsd.org/changeset/base/118241[118241] |31 июля 2003 |5.1-CURRENT после интеграции снимка GCC 3.3.1-pre 20030711. |501104 |link:https://svnweb.freebsd.org/changeset/base/118511[118511] |5 августа 2003 |5.1-CURRENT Изменения API 3ware в twe. |501105 |link:https://svnweb.freebsd.org/changeset/base/119021[119021] |17 августа 2003 |5.1-CURRENT динамически связанные /bin и /sbin поддержка и перемещение библиотек в /lib. |501106 |link:https://svnweb.freebsd.org/changeset/base/119881[119881] |8 сентября 2003 |5.1-CURRENT после добавления поддержки ядра для Coda 6.x. |501107 |link:https://svnweb.freebsd.org/changeset/base/120180[120180] |17 сентября 2003 |5.1-CURRENT после того, как константы UART 16550 были перемещены из [.filename]## в [.filename]##. Также когда функциональность libmap стала безусловно поддерживаться rtld. |501108 |link:https://svnweb.freebsd.org/changeset/base/120386[120386] |23 сентября 2003 |5.1-CURRENT после обновления API PFIL_HOOKS |501109 |link:https://svnweb.freebsd.org/changeset/base/120503[120503] |27 сентября 2003 |5.1-CURRENT после добавления man:kiconv[3] |501110 |link:https://svnweb.freebsd.org/changeset/base/120556[120556] |28 сентября 2003 |5.1-CURRENT после изменения операций по умолчанию для open и close в cdevsw |501111 |link:https://svnweb.freebsd.org/changeset/base/121125[121125] |16 октября 2003 |5.1-CURRENT после изменения структуры cdevsw |501112 |link:https://svnweb.freebsd.org/changeset/base/121129[121129] |16 октября 2003 | 5.1-CURRENT после добавления множественного наследования kobj |501113 |link:https://svnweb.freebsd.org/changeset/base/121816[121816] |31 октября 2003 | 5.1-CURRENT после изменения `if_xname` в структуре ifnet |501114 |link:https://svnweb.freebsd.org/changeset/base/122779[122779] |16 ноября 2003 | 5.1-CURRENT после изменения /bin и /sbin на динамически линкуемые |502000 |link:https://svnweb.freebsd.org/changeset/base/123198[123198] |7 декабря 2003 |5.2-RELEASE |502010 |link:https://svnweb.freebsd.org/changeset/base/126150[126150] |23 февраля 2004 |5.2.1-RELEASE |502100 |link:https://svnweb.freebsd.org/changeset/base/123196[123196] |7 декабря 2003 |5.2-CURRENT после ветвления для RELENG_5_2 |502101 |link:https://svnweb.freebsd.org/changeset/base/123677[123677] |19 декабря 2003 |5.2-CURRENT после добавления функций `__cxa_atexit`/`__cxa_finalize` в libc. |502102 |link:https://svnweb.freebsd.org/changeset/base/125236[125236] |30 января 2004 |5.2-CURRENT после изменения стандартной библиотеки потоков с libc_r на libpthread. |502103 |link:https://svnweb.freebsd.org/changeset/base/126083[126083] |21 февраля 2004 |5.2-CURRENT после масштабного патча API драйверов устройств. |502104 |link:https://svnweb.freebsd.org/changeset/base/126208[126208] |25 февраля 2004 |5.2-CURRENT после добавления `getopt_long_only()`. |502105 |link:https://svnweb.freebsd.org/changeset/base/126644[126644] |5 марта 2004 |5.2-CURRENT после того, как NULL заменён на ((void *)0) для C, что вызывает больше предупреждений. |502106 |link:https://svnweb.freebsd.org/changeset/base/126757[126757] |8 марта 2004 |5.2-CURRENT после подключения pf к сборке и установке. |502107 |link:https://svnweb.freebsd.org/changeset/base/126819[126819] |10 марта 2004 |5.2-CURRENT после изменения `time_t` на 64-битное значение на sparc64. |502108 |link:https://svnweb.freebsd.org/changeset/base/126891[126891] |12 марта 2004 |5.2-CURRENT после поддержки компилятора Intel C/C++ в некоторых заголовочных файлах и изменений в man:execve[2] для более строгого соответствия POSIX. |502109 |link:https://svnweb.freebsd.org/changeset/base/127312[127312] |22 марта 2004 |5.2-CURRENT после введения API `bus_alloc_resource_any` |502110 |link:https://svnweb.freebsd.org/changeset/base/127475[127475] |27 марта 2004 |5.2-CURRENT после добавления локалей UTF-8 |502111 |link:https://svnweb.freebsd.org/changeset/base/128144[128144] |11 апреля 2004 |5.2-CURRENT после удаления API man:getvfsent[3] |502112 |link:https://svnweb.freebsd.org/changeset/base/128182[128182] |13 апреля 2004 |5.2-CURRENT после добавления директивы .warning для make. |502113 |link:https://svnweb.freebsd.org/changeset/base/130057[130057] |4 июня 2004 |5.2-CURRENT после того, как `ttyioctl()` стал обязательным для драйверов последовательных портов. |502114 |link:https://svnweb.freebsd.org/changeset/base/130418[130418] |13 июня 2004 |5.2-CURRENT после импорта инфраструктуры ALTQ. |502115 |link:https://svnweb.freebsd.org/changeset/base/130481[130481] |14 июня 2004 |5.2-CURRENT после изменения man:sema_timedwait[9] для возврата 0 при успехе и ненулевого кода ошибки при сбое. |502116 |link:https://svnweb.freebsd.org/changeset/base/130585[130585] |16 июня 2004 |5.2-CURRENT после изменения типа `dev_t` в ядре на указатель на структуру cdev *. |502117 |link:https://svnweb.freebsd.org/changeset/base/130640[130640] |17 июня 2004 |5.2-CURRENT после изменения ядра `udev_t` на `dev_t`. |502118 |link:https://svnweb.freebsd.org/changeset/base/130656[130656] |17 июня 2004 |5.2-CURRENT после добавления поддержки CLOCK_VIRTUAL и CLOCK_PROF в man:clock_gettime[2] и man:clock_getres[2]. |502119 |link:https://svnweb.freebsd.org/changeset/base/130934[130934] |22 июня 2004 |5.2-CURRENT после изменения переработки клонирования сетевых интерфейсов. |502120 |link:https://svnweb.freebsd.org/changeset/base/131429[131429] |2 июля 2004 |5.2-CURRENT после обновления инструментов пакетов до ревизии 20040629. |502121 |link:https://svnweb.freebsd.org/changeset/base/131883[131883] |9 июля 2004 |5.2-CURRENT после пометки кода Bluetooth как не специфичного для i386. |502122 |link:https://svnweb.freebsd.org/changeset/base/131971[131971] |11 июля 2004 |5.2-CURRENT после внедрения фреймворка отладчика KDB, преобразования DDB в бэкенд и добавления бэкенда GDB. |502123 |link:https://svnweb.freebsd.org/changeset/base/132025[132025] |12 июля 2004 |5.2-CURRENT после изменения, чтобы VFS_ROOT принимал аргумент struct thread, как и vflush. Структура `kinfo_proc` теперь содержит указатель на пользовательские данные. Переключение реализации X по умолчанию на `xorg` также произошло в это время. |502124 |link:https://svnweb.freebsd.org/changeset/base/132597[132597] |24 июля 2004 |5.2-CURRENT после изменения, разделяющего способ запуска rc.d портов и устаревших скриптов. |502125 |link:https://svnweb.freebsd.org/changeset/base/132726[132726] |28 июля 2004 |5.2-CURRENT после отмены предыдущего изменения. |502126 |link:https://svnweb.freebsd.org/changeset/base/132914[132914] |31 июля 2004 |5.2-CURRENT после удаления `kmem_alloc_pageable()` и импорта gcc 3.4.2. |502127 |link:https://svnweb.freebsd.org/changeset/base/132991[132991] |2 августа 2004 |5.2-CURRENT после изменения UMA API ядра для разрешения ошибок в ctors/inits. |502128 |link:https://svnweb.freebsd.org/changeset/base/133306[133306] |8 августа 2004 |5.2-CURRENT после изменения сигнатуры vfs_mount, а также глобальной замены PRISON_ROOT на SUSER_ALLOWJAIL для API man:suser[9]. |503000 |link:https://svnweb.freebsd.org/changeset/base/134189[134189] |23 августа 2004 |5.3-BETA/RC до изменения API pfil |503001 |link:https://svnweb.freebsd.org/changeset/base/135580[135580] |22 сентября 2004 |5.3-RELEASE |503100 |link:https://svnweb.freebsd.org/changeset/base/136595[136595] |16 октября 2004 |5.3-STABLE после ветвления для RELENG_5_3 |503101 |link:https://svnweb.freebsd.org/changeset/base/138459[138459] |3 декабря 2004 |5.3-STABLE после добавления опций заполнения man:strftime[3] в стиле glibc. |503102 |link:https://svnweb.freebsd.org/changeset/base/141788[141788] |13 февраля 2005 |5.3-STABLE после импорта man:nc[1] из OpenBSD MFC. |503103 |link:https://svnweb.freebsd.org/changeset/base/142639[142639] |27 февраля 2005 |5.4-PRERELEASE после MFC исправлений в [.filename]## и [.filename]## для обеспечения совместимости с GCC компилятора Intel C/C++. |503104 |link:https://svnweb.freebsd.org/changeset/base/142835[142835] |28 февраля 2005 |5.4-PRERELEASE после MFC изменения `ifi_epoch` с времени реального мира на время работы системы. |503105 |link:https://svnweb.freebsd.org/changeset/base/143029[143029] |2 марта 2005 |5.4-PRERELEASE после переноса исправления проверки EOVERFLOW в man:vswprintf[3]. |504000 |link:https://svnweb.freebsd.org/changeset/base/144575[144575] |3 апреля 2005 |5.4-RELEASE. |504100 |link:https://svnweb.freebsd.org/changeset/base/144581[144581] |3 апреля 2005 |5.4-STABLE после ветвления для RELENG_5_4 |504101 |link:https://svnweb.freebsd.org/changeset/base/146105[146105] |11 мая 2005 |5.4-STABLE после увеличения размеров стеков потоков по умолчанию |504102 |link:https://svnweb.freebsd.org/changeset/base/504101[504101] |24 июня 2005 |5.4-STABLE после добавления sha256 |504103 |link:https://svnweb.freebsd.org/changeset/base/150892[150892] |3 октября 2005 |5.4-STABLE после слияния изменений (MFC) if_bridge |504104 |link:https://svnweb.freebsd.org/changeset/base/152370[152370] |13 ноября 2005 |5.4-STABLE после слияния изменений (MFC) bsdiff и portsnap |504105 |link:https://svnweb.freebsd.org/changeset/base/154464[154464] |17 января 2006 |5.4-STABLE после MFC изменений ldconfig_local_dirs. |505000 |link:https://svnweb.freebsd.org/changeset/base/158481[158481] |12 мая 2006 |5.5-RELEASE. |505100 |link:https://svnweb.freebsd.org/changeset/base/158482[158482] |12 мая 2006 |5.5-STABLE после ветвления для RELENG_5_5 |=== [[versions-4]] == Версии FreeBSD 4 [[freebsd-versions-table-4]] .Значения `__FreeBSD_version` в FreeBSD 4 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |400000 |link:https://svnweb.freebsd.org/changeset/base/43041[43041] |22 января 1999 |4.0-CURRENT после ветки 3.4 |400001 |link:https://svnweb.freebsd.org/changeset/base/44177[44177] |20 февраля 1999 |4.0-CURRENT после изменения в обработке динамического компоновщика |400002 |link:https://svnweb.freebsd.org/changeset/base/44699[44699] |13 марта 1999 |4.0-CURRENT после изменения порядка конструкторов/деструкторов C++ |400003 |link:https://svnweb.freebsd.org/changeset/base/45059[45059] |27 марта 1999 |4.0-CURRENT после функционирования man:dladdr[3] |400004 |link:https://svnweb.freebsd.org/changeset/base/45321[45321] |5 апреля 1999 |4.0-CURRENT после исправления ошибки динамического компоновщика `__deregister_frame_info` (также 4.0-CURRENT после интеграции EGCS 1.1.2) |400005 |link:https://svnweb.freebsd.org/changeset/base/46113[46113] |27 апреля 1999 |4.0-CURRENT после изменения API man:suser[9] (также 4.0-CURRENT после newbus) |400006 |link:https://svnweb.freebsd.org/changeset/base/47640[47640] |31 мая 1999 |4.0-CURRENT после изменения регистрации cdevsw |400007 |link:https://svnweb.freebsd.org/changeset/base/47992[47992] |17 июня 1999 |4.0-CURRENT после добавления `so_cred` для учётных данных на уровне сокета |400008 |link:https://svnweb.freebsd.org/changeset/base/48048[48048] |20 июня 1999 |4.0-CURRENT после добавления обёртки системного вызова poll в libc_r |400009 |link:https://svnweb.freebsd.org/changeset/base/48936[48936] |20 июля 1999 |4.0-CURRENT после изменения типа `dev_t` ядра на указатель `struct specinfo` |400010 |link:https://svnweb.freebsd.org/changeset/base/51649[51649] |25 сентября 1999 |4.0-CURRENT после исправления уязвимости в man:jail[2] |400011 |link:https://svnweb.freebsd.org/changeset/base/51791[51791] |29 сентября 1999 |4.0-CURRENT после изменения типа данных `sigset_t` |400012 |link:https://svnweb.freebsd.org/changeset/base/53164[53164] |15 ноября 1999 |4.0-CURRENT после перехода на компилятор GCC 2.95.2 |400013 |link:https://svnweb.freebsd.org/changeset/base/54123[54123] |4 декабря 1999 |4.0-CURRENT после добавления подключаемых обработчиков ioctl в режиме linux |400014 |link:https://svnweb.freebsd.org/changeset/base/56216[56216] |18 января 2000 |4.0-CURRENT после импорта OpenSSL |400015 |link:https://svnweb.freebsd.org/changeset/base/56700[56700] |27 января 2000 |4.0-CURRENT после изменения ABI C++ в GCC 2.95.2 с -fvtable-thunks на -fno-vtable-thunks по умолчанию |400016 |link:https://svnweb.freebsd.org/changeset/base/57529[57529] |27 февраля 2000 |4.0-CURRENT после импорта OpenSSH |400017 |link:https://svnweb.freebsd.org/changeset/base/58005[58005] |13 марта 2000 |4.0-RELEASE |400018 |link:https://svnweb.freebsd.org/changeset/base/58170[58170] |17 марта 2000 |4.0-STABLE после 4.0-RELEASE |400019 |link:https://svnweb.freebsd.org/changeset/base/60047[60047] |5 мая 2000 |4.0-STABLE после введения отложенных контрольных сумм. |400020 |link:https://svnweb.freebsd.org/changeset/base/61262[61262] |4 июня 2000 |4.0-STABLE после объединения кода libxpg4 в libc. |400021 |link:https://svnweb.freebsd.org/changeset/base/62820[62820] |8 июля 2000 |4.0-STABLE после обновления Binutils до 2.10.0, изменения маркировки ELF и tcsh в базовой системе. |410000 |link:https://svnweb.freebsd.org/changeset/base/63095[63095] |14 июля 2000 |4.1-RELEASE |410001 |link:https://svnweb.freebsd.org/changeset/base/64012[64012] |29 июля 2000 |4.1-STABLE после 4.1-RELEASE |410002 |link:https://svnweb.freebsd.org/changeset/base/65962[65962] |16 сентября 2000 |4.1-STABLE после перемещения man:setproctitle[3] из libutil в libc. |411000 |link:https://svnweb.freebsd.org/changeset/base/66336[66336] |25 сентября 2000 |4.1.1-RELEASE |411001 | | |4.1.1-STABLE после 4.1.1-RELEASE |420000 |link:https://svnweb.freebsd.org/changeset/base/68066[68066] |31 октября 2000 |4.2-RELEASE |420001 |link:https://svnweb.freebsd.org/changeset/base/70895[70895] |10 января 2001 |4.2-STABLE после объединения libgcc.a и libgcc_r.a, а также связанных изменений в компоновке GCC. |430000 |link:https://svnweb.freebsd.org/changeset/base/73800[73800] |6 марта 2001 |4.3-RELEASE |430001 |link:https://svnweb.freebsd.org/changeset/base/76779[76779] |18 мая 2001 |4.3-STABLE после введения `wint_t`. |430002 |link:https://svnweb.freebsd.org/changeset/base/80157[80157] |22 июля 2001 |4.3-STABLE после объединения API управления состоянием питания PCI. |440000 |link:https://svnweb.freebsd.org/changeset/base/80923[80923] |1 августа 2001 |4.4-RELEASE |440001 |link:https://svnweb.freebsd.org/changeset/base/85341[85341] |23 октября 2001 |4.4-STABLE после введения `d_thread_t`. |440002 |link:https://svnweb.freebsd.org/changeset/base/86038[86038] |4 ноября 2001 |4.4-STABLE после изменений в структуре монтирования (затрагивает модули файловых систем klds). |440003 |link:https://svnweb.freebsd.org/changeset/base/88130[88130] |18 декабря 2001 |4.4-STABLE после импорта компонентов пользовательского пространства smbfs. |450000 |link:https://svnweb.freebsd.org/changeset/base/88271[88271] |20 декабря 2001 |4.5-RELEASE |450001 |link:https://svnweb.freebsd.org/changeset/base/91203[91203] |24 февраля 2002 |4.5-STABLE после переименования элемента структуры usb. |450002 |link:https://svnweb.freebsd.org/changeset/base/92151[92151] |12 марта 2002 |4.5-STABLE после изменений локали. |450003 | | |(Никогда не создавался) |450004 |link:https://svnweb.freebsd.org/changeset/base/94840[94840] |16 апреля 2002 |4.5-STABLE после того, как переменная `sendmail_enable` из man:rc.conf[5] стала принимать значение `NONE`. |450005 |link:https://svnweb.freebsd.org/changeset/base/95555[95555] |27 апреля 2002 |4.5-STABLE после перехода на XFree86 4 по умолчанию для сборки пакетов. |450006 |link:https://svnweb.freebsd.org/changeset/base/95846[95846] |1 мая 2002 |4.5-STABLE после исправления фильтрации accept, чтобы он больше не был подвержен простой DoS-атаке. |460000 |link:https://svnweb.freebsd.org/changeset/base/97923[97923] |21 июня 2002 |4.6-RELEASE |460001 |link:https://svnweb.freebsd.org/changeset/base/98730[98730] |21 июня 2002 |4.6-STABLE man:sendfile[2] исправлен для соответствия документации, чтобы не учитывать отправленные заголовки в объеме данных, отправляемых из файла. |460002 |link:https://svnweb.freebsd.org/changeset/base/100366[100366] |19 июля 2002 |4.6.2-RELEASE |460100 |link:https://svnweb.freebsd.org/changeset/base/98857[98857] |26 июня 2002 |4.6-STABLE |460101 |link:https://svnweb.freebsd.org/changeset/base/98880[98880] |26 июня 2002 |4.6-STABLE после MFC `sed -i`. |460102 |link:https://svnweb.freebsd.org/changeset/base/102759[102759] |1 сентября 2002 |4.6-STABLE после MFC множества новых функций pkg_install из HEAD. |470000 |link:https://svnweb.freebsd.org/changeset/base/104655[104655] |8 октября 2002 |4.7-RELEASE |470100 |link:https://svnweb.freebsd.org/changeset/base/104717[104717] |9 октября 2002 |4.7-STABLE |470101 |link:https://svnweb.freebsd.org/changeset/base/106732[106732] |10 ноября 2002 |Начинать генерировать ссылки `__std{in,out,err}p` вместо `__sF`. Это изменяет `std{in,out,err}` с выражения времени компиляции на выражение времени выполнения. |470102 |link:https://svnweb.freebsd.org/changeset/base/109753[109753] |23 января 2003 |4.7-STABLE после MFC изменений mbuf для замены `m_aux` mbuf на `m_tag` |470103 |link:https://svnweb.freebsd.org/changeset/base/110887[110887] |14 февраля 2003 |4.7-STABLE получает OpenSSL 0.9.7 |480000 |link:https://svnweb.freebsd.org/changeset/base/112852[112852] |30 марта 2003 |4.8-RELEASE |480100 |link:https://svnweb.freebsd.org/changeset/base/113107[113107] |5 апреля 2003 |4.8-STABLE |480101 |link:https://svnweb.freebsd.org/changeset/base/115232[115232] |22 мая 2003 |4.8-STABLE после того, как man:realpath[3] стал потокобезопасным |480102 |link:https://svnweb.freebsd.org/changeset/base/118737[118737] |10 августа 2003 |4.8-STABLE Изменения API 3ware в twe. |490000 |link:https://svnweb.freebsd.org/changeset/base/121592[121592] |27 октября 2003 |4.9-RELEASE |490100 |link:https://svnweb.freebsd.org/changeset/base/121593[121593] |27 октября 2003 |4.9-STABLE |490101 |link:https://svnweb.freebsd.org/changeset/base/124264[124264] |8 января 2004 |4.9-STABLE после добавления `e_sid` в структуру `kinfo_eproc`. |490102 |link:https://svnweb.freebsd.org/changeset/base/125417[125417] |4 февраля 2004 |4.9-STABLE после MFC функциональности libmap для rtld. |491000 |link:https://svnweb.freebsd.org/changeset/base/129700[129700] |25 мая 2004 |4.10-RELEASE |491100 |link:https://svnweb.freebsd.org/changeset/base/129918[129918] |1 июня 2004 |4.10-STABLE |491101 |link:https://svnweb.freebsd.org/changeset/base/133506[133506] |11 августа 2004 |4.10-STABLE после слияния изменения из ревизии 20040629 пакета tools |491102 |link:https://svnweb.freebsd.org/changeset/base/137786[137786] |16 ноября 2004 |4.10-STABLE после исправления VM, связанного с обработкой размонтирования фиктивных страниц |492000 |link:https://svnweb.freebsd.org/changeset/base/138960[138960] |17 декабря 2004 |4.11-RELEASE |492100 |link:https://svnweb.freebsd.org/changeset/base/138959[138959] |17 декабря 2004 |4.11-STABLE |492101 |link:https://svnweb.freebsd.org/changeset/base/157843[157843] |18 апреля 2006 |4.11-STABLE после добавления каталогов libdata/ldconfig в файлы mtree. |=== [[versions-3]] == Версии FreeBSD 3 [[freebsd-versions-table-3]] .Значения `__FreeBSD_version` для FreeBSD 3 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |300000 |link:https://svnweb.freebsd.org/changeset/base/22917[22917] |19 февраля 1996 |3.0-CURRENT до изменения man:mount[2] |300001 |link:https://svnweb.freebsd.org/changeset/base/36283[36283] |24 сентября 1997 |3.0-CURRENT после изменения man:mount[2] |300002 |link:https://svnweb.freebsd.org/changeset/base/36592[36592] |2 июня 1998 |3.0-CURRENT после изменения man:semctl[2] |300003 |link:https://svnweb.freebsd.org/changeset/base/36735[36735] |7 июня 1998 |3.0-CURRENT после изменений аргументов ioctl |300004 |link:https://svnweb.freebsd.org/changeset/base/38768[38768] |3 сентября 1998 |3.0-CURRENT после преобразования в ELF |300005 |link:https://svnweb.freebsd.org/changeset/base/40438[40438] |16 октября 1998 |3.0-RELEASE |300006 |link:https://svnweb.freebsd.org/changeset/base/40445[40445] |16 октября 1998 |3.0-CURRENT после 3.0-RELEASE |300007 |link:https://svnweb.freebsd.org/changeset/base/43042[43042] |22 января 1999 |3.0-STABLE после ветвления 3/4 |310000 |link:https://svnweb.freebsd.org/changeset/base/43807[43807] |9 февраля 1999 |3.1-RELEASE |310001 |link:https://svnweb.freebsd.org/changeset/base/45060[45060] |27 марта 1999 |3.1-STABLE после 3.1-RELEASE |310002 |link:https://svnweb.freebsd.org/changeset/base/45689[45689] |14 апреля 1999 |3.1-STABLE после изменения порядка конструкторов/деструкторов C++ |320000 | | |3.2-RELEASE |320001 |link:https://svnweb.freebsd.org/changeset/base/46742[46742] |8 мая 1999 |3.2-STABLE |320002 |link:https://svnweb.freebsd.org/changeset/base/50563[50563] |29 августа 1999 |3.2-STABLE после бинарно-несовместимых изменений в IPFW и сокетах |330000 |link:https://svnweb.freebsd.org/changeset/base/50813[50813] |2 сентября 1999 |3.3-RELEASE |330001 |link:https://svnweb.freebsd.org/changeset/base/51328[51328] |16 сентября 1999 |3.3-STABLE |330002 |link:https://svnweb.freebsd.org/changeset/base/53671[53671] |24 ноября 1999 |3.3-STABLE после добавления man:mkstemp[3] в libc |340000 |link:https://svnweb.freebsd.org/changeset/base/54166[54166] |5 декабря 1999 |3.4-RELEASE |340001 |link:https://svnweb.freebsd.org/changeset/base/54730[54730] |17 декабря 1999 |3.4-STABLE |350000 |link:https://svnweb.freebsd.org/changeset/base/61876[61876] |20 июня 2000 |3.5-RELEASE |350001 |link:https://svnweb.freebsd.org/changeset/base/63043[63043] |12 июля 2000 |3.5-STABLE |=== [[versions-2.2]] == Версии FreeBSD 2.2 [[freebsd-versions-table-2.2]] .Значения `__FreeBSD_version` в FreeBSD 2.2 [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |220000 |link:https://svnweb.freebsd.org/changeset/base/22918[22918] |19 февраля 1997 |2.2-RELEASE |(не изменено) | | |2.2.1-RELEASE |(не изменено) | | |2.2-STABLE после 2.2.1-RELEASE |221001 |link:https://svnweb.freebsd.org/changeset/base/24941[24941] |15 апреля 1997 |2.2-STABLE после texinfo-3.9 |221002 |link:https://svnweb.freebsd.org/changeset/base/25325[25325] |30 апреля 1997 |2.2-STABLE после обновления |222000 |link:https://svnweb.freebsd.org/changeset/base/25851[25851] |16 мая 1997 |2.2.2-RELEASE |222001 |link:https://svnweb.freebsd.org/changeset/base/25921[25921] |19 мая 1997 |2.2-STABLE после 2.2.2-RELEASE |225000 |link:https://svnweb.freebsd.org/changeset/base/30053[30053] |2 октября 1997 |2.2.5-RELEASE |225001 |link:https://svnweb.freebsd.org/changeset/base/31300[31300] |20 ноября 1997 |2.2-STABLE после 2.2.5-RELEASE |225002 |link:https://svnweb.freebsd.org/changeset/base/32019[32019] |27 декабря 1997 |2.2-STABLE после слияния ldconfig -R |226000 |link:https://svnweb.freebsd.org/changeset/base/34445[34445] |24 марта 1998 |2.2.6-RELEASE |227000 |link:https://svnweb.freebsd.org/changeset/base/37803[37803] |21 июля 1998 |2.2.7-RELEASE |227001 |link:https://svnweb.freebsd.org/changeset/base/37809[37809] |21 июля 1998 |2.2-STABLE после 2.2.7-RELEASE |227002 |link:https://svnweb.freebsd.org/changeset/base/39489[39489] |19 сентября 1998 |2.2-STABLE после изменения man:semctl[2] |228000 |link:https://svnweb.freebsd.org/changeset/base/41403[41403] |29 ноября 1998 |2.2.8-RELEASE |228001 |link:https://svnweb.freebsd.org/changeset/base/41418[41418] |29 ноября 1998 |2.2-STABLE после 2.2.8-RELEASE |=== [NOTE] ==== Обратите внимание, что 2.2-STABLE иногда идентифицирует себя как "2.2.5-STABLE" после выпуска 2.2.5-RELEASE. Ранее использовался шаблон "год-месяц", но сообщество решило изменить его на более простую систему "основной/второстепенный", начиная с версии 2.2. Это связано с тем, что параллельная разработка нескольких веток сделала невозможным классифицировать выпуски только по датам их фактического выхода. Не беспокойтесь о старых версиях -CURRENT; они приведены здесь только для справки. ==== [[versions-2]] == FreeBSD 2 Версии до 2.2-RELEASE [[freebsd-versions-table-2]] .FreeBSD 2 До версии 2.2-RELEASE Значения `__FreeBSD_version` [cols="1,1,1,1", frame="none", options="header"] |=== | Значение | Версия | Дата | Релиз |119411 | | |2.0-RELEASE |199501 |link:https://svnweb.freebsd.org/changeset/base/7153[7153] |19 марта 1995 |2.1-CURRENT |199503 |link:https://svnweb.freebsd.org/changeset/base/7310[7310] |24 марта 1995 |2.1-CURRENT |199504 |link:https://svnweb.freebsd.org/changeset/base/7704[7704] |9 апреля 1995 |2.0.5-RELEASE |199508 |link:https://svnweb.freebsd.org/changeset/base/10297[10297] |26 августа 1995 |2.2-CURRENT до 2.1 |199511 |link:https://svnweb.freebsd.org/changeset/base/12189[12189] |10 ноября 1995 |2.1.0-RELEASE |199512 |link:https://svnweb.freebsd.org/changeset/base/12196[12196] |10 ноября 1995 |2.2-CURRENT до 2.1.5 |199607 |link:https://svnweb.freebsd.org/changeset/base/17067[17067] |10 июля 1996 |2.1.5-RELEASE |199608 |link:https://svnweb.freebsd.org/changeset/base/17127[17127] |12 июля 1996 |2.2-CURRENT до 2.1.6 |199612 |link:https://svnweb.freebsd.org/changeset/base/19358[19358] |15 ноября 1996 |2.1.6-RELEASE |199612 | | |2.1.7-RELEASE |===