diff options
| author | Lexi Winter <ivy@FreeBSD.org> | 2025-09-12 20:59:25 +0000 |
|---|---|---|
| committer | Lexi Winter <ivy@FreeBSD.org> | 2025-09-12 20:59:25 +0000 |
| commit | 66f36c3686762d9a6e48b0453fc7221be36a0eb8 (patch) | |
| tree | 104ade6c44551301d12f04f27201520ef9365b9d | |
| parent | 163f8625c4df3ccdfab0717cf8b8d13a163e22eb (diff) | |
packages: Add meta-package sets
Add several metapackages which contain no files themselves, but depend
on other packages. This allows the user to install a system by using
a set like "FreeBSD-set-minimal" instead of having to know which
specific packages are required, and it means if we add more package
in the future, existing installations will get them automatically as
long as they were installed using a set.
The defined sets are significantly less granular than the actual
packages; the assumption is that users who want a very specific set of
packages installed can do that manually, while sets are intended more
for typical users who just want to install FreeBSD.
The following sets are defined:
* minimal: the set of packages required to boot the system and bring
up a multi-user UNIX system. This includes hardware support,
networking (wireless, DHCP), basic functionality like syslogd, cron
and periodic. It does not include a kernel, because the kernels are
quite large and the user might want to use a custom kernel.
sendmail and DMA are not included in minimal. Since we provide two
MTAs, the user should select which one they want, or install one from
ports. sshd is not included because it's not required for the base
system, and the user might want to install it from ports.
Some other significant subsystems (e.g. NFS, Kerberos) are also not
included.
The minimal set does not include any libraries itself, since we rely
on dependencies to pull these in. This implies it doesn't include
library manpages, which is fine, since users won't want manpages for
libraries unless they've also installed the development packages.
* devel: the compiler toolchain for building software, along with all
"-dev" packages which include header files and static libraries.
* lib32: 32-bit compatibility packages. This includes both runtime
and development packages.
* kernels: the kernel packages. For freebsd.org builds, this will be
GENERIC, GENERIC-DEBUG, etc., for custom builds it will be whatever
was set in $KERNCONF.
* base: everything else; this includes the entire base system.
For each set, also generate a <setname>-dbg set containing the debug
packages for the set.
The sets are built along with the rest of the packages using a new
script called create-sets.sh, which examines the "set" annotation in
each package and puts it in the appropriate set. This is in
anticipation of the later "groups" feature appearing in pkg itself, at
which point we can simply replace the set annotation with the group.
MFC after: 3 days
Reviewed by: imp, bapt
Differential Revision: https://reviews.freebsd.org/D52412
61 files changed, 619 insertions, 40 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1 index 98059640daab..97a0b00cc517 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -2097,6 +2097,14 @@ create-packages-world: _pkgbootstrap _repodir .PHONY DESTDIR=${WSTAGEDIR} \ PKG_VERSION=${PKG_VERSION} create-world-packages +.ORDER: create-packages-world create-packages-sets +.ORDER: create-packages-kernel create-packages-sets +create-packages-sets: _pkgbootstrap _repodir .PHONY + ${_+_}@cd ${.CURDIR}; \ + ${MAKE} -f Makefile.inc1 \ + DESTDIR=${WSTAGEDIR} \ + PKG_VERSION=${PKG_VERSION} create-sets-packages + create-packages-kernel: _pkgbootstrap _repodir .PHONY ${_+_}@cd ${.CURDIR}; \ ${MAKE} -f Makefile.inc1 \ @@ -2109,6 +2117,8 @@ create-packages-kernel-repo: .PHONY create-packages-kernel sign-packages create-packages-world-repo: .PHONY create-packages-world sign-packages +create-packages-sets-repo: .PHONY create-packages-sets sign-packages + create-packages-source: _pkgbootstrap _repodir .PHONY ${_+_}@cd ${.CURDIR}; \ ${MAKE} -f Makefile.inc1 \ @@ -2117,7 +2127,7 @@ create-packages-source: _pkgbootstrap _repodir .PHONY SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \ create-source-packages -create-packages: .PHONY create-packages-world create-packages-kernel create-packages-source +create-packages: .PHONY create-packages-world create-packages-kernel create-packages-source create-packages-sets create-source-src-package: _pkgbootstrap .PHONY rm -f ${SSTAGEDIR}/src.plist 2>/dev/null || : @@ -2214,6 +2224,24 @@ create-world-package-${pkgname}: .PHONY -o ${REPODIR}/${PKG_ABI}/${PKG_OUTPUT_DIR} .endfor +create-sets-packages-jobs: .PHONY create-sets-packages +create-sets-packages: .PHONY + @echo "==> Creating set metapackages." + sh "${SRCDIR}/release/packages/create-sets.sh" "${SRCDIR}" \ + "${WSTAGEDIR}" "${REPODIR}/${PKG_ABI}/${PKG_OUTPUT_DIR}" \ + VERSION "${PKG_VERSION}" \ + PKG_NAME_PREFIX "${PKG_NAME_PREFIX}" \ + PKG_MAINTAINER "${PKG_MAINTAINER}" \ + PKG_WWW "${PKG_WWW}" + @for manifest in ${WSTAGEDIR}/set-*.ucl; do \ + echo "--> Processing manifest: $$manifest"; \ + ${PKG_CMD} -o ABI=${PKG_ABI} -o OSVERSION="${SRCRELDATE}" \ + create -f ${PKG_FORMAT} ${PKG_CLEVEL} \ + -M $$manifest \ + -o "${REPODIR}/${PKG_ABI}/${PKG_OUTPUT_DIR}" \ + || exit 1; \ + done + _default_flavor= -default .if make(*package*) && exists(${KSTAGEDIR}/kernel.meta) . if ${MK_DEBUG_FILES} != "no" diff --git a/release/packages/create-sets.sh b/release/packages/create-sets.sh new file mode 100755 index 000000000000..6c034834672e --- /dev/null +++ b/release/packages/create-sets.sh @@ -0,0 +1,45 @@ +#! /bin/sh + +# Generate metapackage sets. We do this by examining the annotations field +# of the packages we previously built. + +set -e + +if [ $# -lt 3 ]; then + printf >&2 'usage: %s <srcdir> <wstagedir> <repodir>\n' "$0" + exit 1 +fi + +srcdir="$1"; shift +wstagedir="$1"; shift +repodir="$1"; shift +# Everything after the first three arguments is UCL variables we pass to +# generate-set-ucl.lua. +UCL_VARS="$@" + +for pkg in "$repodir"/*.pkg; do + # If the package name doesn't containing a '-', then it's + # probably data.pkg or packagesite.pkg, which are not real + # packages. + { echo "$pkg" | grep -q '-'; } || continue + + set -- $(pkg query -F "$pkg" '%At %n %Av' | grep '^set ') + pkgname="$2" + set="$3" + SETS="$SETS $set" + setvar="$(echo "$set" | tr - _)" + eval PKGS_${setvar}=\"\$PKGS_${setvar} $pkgname\" +done + +for set in $(echo $SETS | tr ' ' '\n' | sort | uniq); do + setvar="$(echo "$set" | tr - _)" + eval deps=\"\$PKGS_${setvar}\" + + "${srcdir}/release/packages/generate-set-ucl.lua" \ + "${srcdir}/release/packages/set-template.ucl" \ + PKGNAME "$set" \ + SET_DEPENDS "$deps" \ + UCLFILES "${srcdir}/release/packages/sets" \ + $UCL_VARS \ + > "${wstagedir}/set-${set}.ucl" +done diff --git a/release/packages/generate-set-ucl.lua b/release/packages/generate-set-ucl.lua new file mode 100755 index 000000000000..b1b70053b02a --- /dev/null +++ b/release/packages/generate-set-ucl.lua @@ -0,0 +1,96 @@ +#!/usr/libexec/flua + +--[[ usage: +generare-set-ucl.lua <template> [<variablename> <variablevalue>] + +Generate the UCL for a set metapackage. The variables provided will be +substituted as UCL variables. +]]-- + +local ucl = require("ucl") + +-- This parser is the output UCL we want to build. +local parser = ucl.parser() + +if #arg < 1 then + io.stderr:write(arg[0] .. ": missing template filename\n") + os.exit(1) +end + +local template = table.remove(arg, 1) + +-- Set any $VARIABLES from the command line in the parser. This causes ucl to +-- automatically replace them when we load the source ucl. +if #arg % 2 ~= 0 then + io.stderr:write(arg[0] .. ": expected an even number of arguments, " + .. "got " .. #arg .. "\n") + os.exit(1) +end + +local pkgprefix = nil +local pkgversion = nil +local pkgdeps = "" + +for i = 2, #arg, 2 do + local varname = arg[i - 1] + local varvalue = arg[i] + + if varname == "PKG_NAME_PREFIX" and #varvalue > 0 then + pkgprefix = varvalue + elseif varname == "VERSION" and #varvalue > 0 then + pkgversion = varvalue + elseif varname == "SET_DEPENDS" and #varvalue > 0 then + pkgdeps = varvalue + end + + parser:register_variable(varname, varvalue) +end + +-- Load the source template. +local res,err = parser:parse_file(template) +if not res then + io.stderr:write(arg[0] .. ": fail to parse(" .. template .. "): " + .. err .. "\n") + os.exit(1) +end + +local obj = parser:get_object() + +-- Dependency handling. +obj["deps"] = obj["deps"] or {} + +-- If PKG_NAME_PREFIX is provided, rewrite the names of dependency packages. +-- We can't do this in UCL since variable substitution doesn't work in array +-- keys. Note that this only applies to dependencies from the set UCL files, +-- because SET_DEPENDS already have the correct prefix. +if pkgprefix ~= nil then + newdeps = {} + for dep, opts in pairs(obj["deps"]) do + local newdep = pkgprefix .. "-" .. dep + newdeps[newdep] = opts + end + obj["deps"] = newdeps +end + +-- Add dependencies from SET_DEPENDS. +for dep in string.gmatch(pkgdeps, "[^%s]+") do + obj["deps"][dep] = { + ["origin"] = "base" + } +end + +-- Add a version key to all dependencies, otherwise pkg doesn't like it. +for dep, opts in pairs(obj["deps"]) do + if obj["deps"][dep]["version"] == nil then + obj["deps"][dep]["version"] = pkgversion + end +end + +-- If there are no dependencies, remove the deps key, otherwise pkg raises an +-- error trying to read the manifest. +if next(obj["deps"]) == nil then + obj["deps"] = nil +end + +-- Write the output. +io.stdout:write(ucl.to_format(obj, 'ucl', true)) diff --git a/release/packages/generate-ucl.lua b/release/packages/generate-ucl.lua index 5637bbd3ad99..47f0a0e9a6a9 100755 --- a/release/packages/generate-ucl.lua +++ b/release/packages/generate-ucl.lua @@ -165,6 +165,40 @@ if add_gen_dep(pkgname, pkggenname) then } end +-- +-- Handle the 'set' annotation. +-- +-- Ensure we have an annotations table to work with. +obj["annotations"] = obj["annotations"] or {} +-- If no set is provided, use the default set which is "base". +set = obj["annotations"]["set"] or "base" +-- For subpackages, we may need to rewrite the set name. This is done a little +-- differently from the normal pkg suffix processing, because we don't need sets +-- to be as a granular as the base packages. +-- +-- Create a single lib32 set for all lib32 packages. Most users don't need +-- lib32, so this avoids creating a large number of unnecessary lib32 sets. +-- However, lib32 debug symbols still go into their own package since they're +-- quite large. +if pkgname:match("%-dbg%-lib32$") then + set = "lib32-dbg" +elseif pkgname:match("%-lib32$") then + set = "lib32" +-- If this is a -dev package, put it in a single set called "devel" which +-- contains all development files. Also include lib*-man packages, which +-- contain manpages for libraries. Having a separate <set>-dev for every +-- set is not necessary, because generally you either want development +-- support or you don't. +elseif pkgname:match("%-dev$") or pkgname:match("^lib.*%-man$") then + set = "devel" +-- If this is a -dbg package, it goes in <set>-dbg, which means the user can +-- install debug symbols only for the sets they have installed. +elseif pkgname:match("%-dbg$") then + set = set .. "-dbg" +end +-- Put our new set back into the package. +obj["annotations"]["set"] = set + -- If PKG_NAME_PREFIX is provided, rewrite the names of dependency packages. -- We can't do this in UCL since variable substitution doesn't work in array -- keys. diff --git a/release/packages/set-template.ucl b/release/packages/set-template.ucl new file mode 100644 index 000000000000..b7ea2b830168 --- /dev/null +++ b/release/packages/set-template.ucl @@ -0,0 +1,15 @@ +# This is the default set of options applied to the set metapackages. +# The options are the same as template.ucl, but we don't include any +# additional UCL files. + +name = "${PKG_NAME_PREFIX}-set-${PKGNAME}" +prefix = "/" +origin = "base" +categories = [ base ] +version = "${VERSION}" +maintainer = "${PKG_MAINTAINER}" +www = "${PKG_WWW}" +licenselogic = "single" +licenses = [ BSD2CLAUSE ] + +.include(try=false,duplicate=merge) "${UCLFILES}/${PKGNAME}.ucl" diff --git a/release/packages/sets/base-dbg.ucl b/release/packages/sets/base-dbg.ucl new file mode 100644 index 000000000000..c34e8b575834 --- /dev/null +++ b/release/packages/sets/base-dbg.ucl @@ -0,0 +1,16 @@ +comment = "Base system debug symbols (metapackage)" + +desc = <<EOD +This metapackage installs debugging symbols for the complete base system. +EOD + +deps { + "set-minimal-dbg" { + version = "${VERSION}" + origin = "base" + }, + "set-devel-dbg" { + version = "${VERSION}" + origin = "base" + } +} diff --git a/release/packages/sets/base.ucl b/release/packages/sets/base.ucl new file mode 100644 index 000000000000..42dd2095f808 --- /dev/null +++ b/release/packages/sets/base.ucl @@ -0,0 +1,16 @@ +comment = "Base system (metapackage)" + +desc = <<EOD +This metapackage installs all packages which are part of the base system. +EOD + +deps { + "set-minimal" { + version = "${VERSION}" + origin = "base" + }, + "set-devel" { + version = "${VERSION}" + origin = "base" + } +} diff --git a/release/packages/sets/devel-dbg.ucl b/release/packages/sets/devel-dbg.ucl new file mode 100644 index 000000000000..5da492b93750 --- /dev/null +++ b/release/packages/sets/devel-dbg.ucl @@ -0,0 +1,13 @@ +comment = "Developments tools debugging symbols (metapackage)" + +desc = <<EOD +This metapackage installs debugging symbols for the base system compiler and +toolchain. +EOD + +deps { + "set-minimal-dbg" { + version = "${VERSION}" + origin = "base" + }, +} diff --git a/release/packages/sets/devel.ucl b/release/packages/sets/devel.ucl new file mode 100644 index 000000000000..ac6b6bab7ef8 --- /dev/null +++ b/release/packages/sets/devel.ucl @@ -0,0 +1,13 @@ +comment = "Developments tools (metapackage)" + +desc = <<EOD +This metapackage installs development support for the base system, including +compilers, toolchain utilities, header files, and static libraries. +EOD + +deps { + "set-minimal" { + version = "${VERSION}" + origin = "base" + }, +} diff --git a/release/packages/sets/kernels-dbg.ucl b/release/packages/sets/kernels-dbg.ucl new file mode 100644 index 000000000000..cf789c29d35a --- /dev/null +++ b/release/packages/sets/kernels-dbg.ucl @@ -0,0 +1,6 @@ +comment = "Base system kernels debugging symbols (metapackage)" + +desc = <<EOD +This metapackage installs debugging symbols for the operating system kernels +provided with the base system. +EOD diff --git a/release/packages/sets/kernels.ucl b/release/packages/sets/kernels.ucl new file mode 100644 index 000000000000..a57bd5f16905 --- /dev/null +++ b/release/packages/sets/kernels.ucl @@ -0,0 +1,6 @@ +comment = "Base system kernels (metapackage)" + +desc = <<EOD +This metapackage installs the operating system kernels provided with the +base system. +EOD diff --git a/release/packages/sets/lib32-dbg.ucl b/release/packages/sets/lib32-dbg.ucl new file mode 100644 index 000000000000..12722510dc94 --- /dev/null +++ b/release/packages/sets/lib32-dbg.ucl @@ -0,0 +1,6 @@ +comment = "32-bit compatibility library debugging symbols (metapackage)" + +desc = <<EOD +This metapackage installs debugging symbols for the compatibility libraries +required for building and running 32-bit applications on a 64-bit host system. +EOD diff --git a/release/packages/sets/lib32.ucl b/release/packages/sets/lib32.ucl new file mode 100644 index 000000000000..c1b921c30b2e --- /dev/null +++ b/release/packages/sets/lib32.ucl @@ -0,0 +1,6 @@ +comment = "32-bit compatibility libraries (metapackage)" + +desc = <<EOD +This metapackage installs compatibility libraries required for building and +running 32-bit applications on a 64-bit host system. +EOD diff --git a/release/packages/sets/minimal-dbg.ucl b/release/packages/sets/minimal-dbg.ucl new file mode 100644 index 000000000000..606394001696 --- /dev/null +++ b/release/packages/sets/minimal-dbg.ucl @@ -0,0 +1,6 @@ +comment = "Basic multi-user system debugging symbols (metapackage)" + +desc = <<EOD +This metapackage installs debugging symbols for the packages required to bring +up a basic multi-user system. +EOD diff --git a/release/packages/sets/minimal.ucl b/release/packages/sets/minimal.ucl new file mode 100644 index 000000000000..0895f198824e --- /dev/null +++ b/release/packages/sets/minimal.ucl @@ -0,0 +1,6 @@ +comment = "Basic multi-user system (metapackage)" + +desc = <<EOD +This metapackage installs the packages required to bring up a basic multi-user +system. +EOD diff --git a/release/packages/template.ucl b/release/packages/template.ucl index faa48effe1ad..bf4b1b44bbec 100644 --- a/release/packages/template.ucl +++ b/release/packages/template.ucl @@ -1,19 +1,36 @@ -# -# +# This is the default set of options applied to all packages, unless overridden +# in the package-specific manifests. +# The name of the package. $PKG_NAME_PREFIX is "FreeBSD", or might be replaced +# by a downstream packager. name = "${PKG_NAME_PREFIX}-${PKGNAME}" + +# Base packages always install to /. +prefix = "/" + +# For base packages, origin is always "base". origin = "base" -version = "${VERSION}" -comment = "${PKGNAME} package" categories = [ base ] + +# $VERSION is the version of the base system being built. +version = "${VERSION}" + +# Maintainer and WWW point to freebsd.org by default. This should not be +# changed in package-specific manifests even for third-party packages. maintainer = "${PKG_MAINTAINER}" www = "${PKG_WWW}" -prefix = "/" + +# Default the license to BSD2CLAUSE since this is the standard license for +# the base system. licenselogic = "single" licenses = [ BSD2CLAUSE ] -desc = <<EOD -${PKGNAME} package -EOD + +# By default, packages go in the "base" set which includes everything. +annotations { + set = base +} + +# Include the package-specific UCL. .include(try=false,duplicate=rewrite) "${UCLFILES}/${PKGGENNAME}-all.ucl" .include(try=true,duplicate=rewrite) "${UCLFILES}/${PKGNAME}.ucl" .include(try=true,duplicate=rewrite) "${UCLFILES}/${FORCEINCLUDE}.ucl" diff --git a/release/packages/ucl/README b/release/packages/ucl/README new file mode 100644 index 000000000000..85b6130c0488 --- /dev/null +++ b/release/packages/ucl/README @@ -0,0 +1,21 @@ +This directory contains package manifests for the base packages in UCL format. +There are two types of manifest: "<package>.ucl" applies specifically to the +package called "<package>", and "<package>-all.ucl" applies to all of that +package's subpackages. + +For example, if a Makefile sets PACKAGE=foo, then the build might generate the +following packages: + + FreeBSD-foo + FreeBSD-foo-dev + FreeBSD-foo-lib32 + FreeBSD-foo-man + +All of these packages will include "foo-all.ucl", but "foo.ucl" will only be +included by FreeBSD-foo, "foo-dev.ucl" will only be included by FreeBSD-foo-dev, +and so on. + +In general, dependencies and post-install scripts should be added in the +package-specific manifests, while comment and description should be set +in the "-all" manifest. + diff --git a/release/packages/ucl/at-all.ucl b/release/packages/ucl/at-all.ucl index c15642737b36..3e837d781d38 100644 --- a/release/packages/ucl/at-all.ucl +++ b/release/packages/ucl/at-all.ucl @@ -2,3 +2,7 @@ comment = "AT Utilities" desc = <<EOD AT Utilities EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/bmake-all.ucl b/release/packages/ucl/bmake-all.ucl index ee8175d1dd8a..3f5a5d9cd879 100644 --- a/release/packages/ucl/bmake-all.ucl +++ b/release/packages/ucl/bmake-all.ucl @@ -1,5 +1,10 @@ comment = "Program maintenance utility" + desc = <<EOD make(1) allows programs to be built from source files based on a specification of the program's dependencies called a Makefile. EOD + +annotations { + set = devel +} diff --git a/release/packages/ucl/bootloader-all.ucl b/release/packages/ucl/bootloader-all.ucl index c5690e85c7ba..ea5e94919c96 100644 --- a/release/packages/ucl/bootloader-all.ucl +++ b/release/packages/ucl/bootloader-all.ucl @@ -2,3 +2,7 @@ comment = "Bootloader" desc = <<EOD Bootloader and configuration files EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/caroot-all.ucl b/release/packages/ucl/caroot-all.ucl index 151c1f18ae39..f62f4ff2be37 100644 --- a/release/packages/ucl/caroot-all.ucl +++ b/release/packages/ucl/caroot-all.ucl @@ -2,3 +2,7 @@ comment = "SSL Certificates" desc = <<EOD SSL Certificates EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/certctl-all.ucl b/release/packages/ucl/certctl-all.ucl index b4bc5ae261c5..0e3dd49d7b00 100644 --- a/release/packages/ucl/certctl-all.ucl +++ b/release/packages/ucl/certctl-all.ucl @@ -2,3 +2,7 @@ comment = "SSL Certificate Utility" desc = <<EOD SSL Certificate Utility EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/clang-all.ucl b/release/packages/ucl/clang-all.ucl index 3f79f0acb229..e0fe8f35f40e 100644 --- a/release/packages/ucl/clang-all.ucl +++ b/release/packages/ucl/clang-all.ucl @@ -3,3 +3,7 @@ desc = <<EOD Clang Utilities EOD licenses = [ NCSA ] + +annotations { + set = devel +} diff --git a/release/packages/ucl/clibs-all.ucl b/release/packages/ucl/clibs-all.ucl index 69ae018d4d1f..65353d515403 100644 --- a/release/packages/ucl/clibs-all.ucl +++ b/release/packages/ucl/clibs-all.ucl @@ -1,4 +1,9 @@ comment = "Core C Libraries" + desc = <<EOD Core C Libraries EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/cron-all.ucl b/release/packages/ucl/cron-all.ucl index d9edf6bfde52..39bd69b0ba4b 100644 --- a/release/packages/ucl/cron-all.ucl +++ b/release/packages/ucl/cron-all.ucl @@ -2,3 +2,7 @@ comment = "cron(8) and crontab(1)" desc = <<EOD cron(8) and crontab(1) EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/ctf-tools-all.ucl b/release/packages/ucl/ctf-tools-all.ucl index 38ca769f6109..ba092792dea4 100644 --- a/release/packages/ucl/ctf-tools-all.ucl +++ b/release/packages/ucl/ctf-tools-all.ucl @@ -1,4 +1,9 @@ comment = "CTF Utilities" + desc = <<EOD CTF Utilities EOD + +annotations { + set = devel +} diff --git a/release/packages/ucl/devd-all.ucl b/release/packages/ucl/devd-all.ucl index dc7d162a1930..a78718955f24 100644 --- a/release/packages/ucl/devd-all.ucl +++ b/release/packages/ucl/devd-all.ucl @@ -1,4 +1,9 @@ comment = "Devd Utility and scripts" + desc = <<EOD Devd Utility and scripts EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/devmatch-all.ucl b/release/packages/ucl/devmatch-all.ucl index 02dc903fd422..56e37461a747 100644 --- a/release/packages/ucl/devmatch-all.ucl +++ b/release/packages/ucl/devmatch-all.ucl @@ -1,4 +1,11 @@ -comment = "Devmatch Utility" +comment = "Automatically load kernel drivers for attached hardware" + desc = <<EOD -Devmatch Utility +The devmatch(8) utility is used to load kernel drivers for hardware attached to +the running system. devmatch(8) is started at boot by rc(8), and during system +operation by devd(8) when new hardware is attached to the system. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/dhclient-all.ucl b/release/packages/ucl/dhclient-all.ucl index 6785366aea5e..a5035075bf23 100644 --- a/release/packages/ucl/dhclient-all.ucl +++ b/release/packages/ucl/dhclient-all.ucl @@ -1,4 +1,9 @@ comment = "DHCP Client" + desc = <<EOD DHCP Client EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/dtb-all.ucl b/release/packages/ucl/dtb-all.ucl index cc5c1c60f062..5de470796adc 100644 --- a/release/packages/ucl/dtb-all.ucl +++ b/release/packages/ucl/dtb-all.ucl @@ -1,4 +1,9 @@ comment = "FreeBSD Devicetree Blobs" + desc = <<EOD FreeBSD Devicetree Blobs EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/fetch-all.ucl b/release/packages/ucl/fetch-all.ucl index f9a3e03e6fa4..5c488cc1d865 100644 --- a/release/packages/ucl/fetch-all.ucl +++ b/release/packages/ucl/fetch-all.ucl @@ -1,4 +1,10 @@ -comment = "Fetch Utility" +comment = "Retrieve a file from a remote URL" + desc = <<EOD -Fetch Utility +The fetch(1) utility can be used to retieve files from a remote URL via +HTTP or FTP. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/firmware-iwm-all.ucl b/release/packages/ucl/firmware-iwm-all.ucl index 6fec27c15351..e9952c5f7f56 100644 --- a/release/packages/ucl/firmware-iwm-all.ucl +++ b/release/packages/ucl/firmware-iwm-all.ucl @@ -1,4 +1,10 @@ -comment = "iwm(4) firmwares" +comment = "Firmware for iwm(4) Intel 802.11ac network interfaces" + desc = <<EOD -iwm(4) firmwares +This firmware is required for Intel 802.11ac wireless network cards supported +by the iwm(4) driver. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/fwget-all.ucl b/release/packages/ucl/fwget-all.ucl index 7a6f9dff5cc9..9ef27df625c3 100644 --- a/release/packages/ucl/fwget-all.ucl +++ b/release/packages/ucl/fwget-all.ucl @@ -1,4 +1,10 @@ -comment = "FWGET Utility" +comment = "Install firmware packages for the running system" + desc = <<EOD -FWGET Utility +The fwget(8) utility can be used to detect and install firmware packages for +hardware devices present on a running system. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/geom-all.ucl b/release/packages/ucl/geom-all.ucl index 6d80b4458f64..a7b335236048 100644 --- a/release/packages/ucl/geom-all.ucl +++ b/release/packages/ucl/geom-all.ucl @@ -1,4 +1,11 @@ -comment = "GEOM Utilitites" +comment = "GEOM configuration utilities" + desc = <<EOD -GEOM Utilitites +The geom(4) subsystem provides a modular, generic interface to manage disk +devices, including disk partitioning, basic RAID, and block-level encryption. +This package provides the command-line utilities used to manage GEOM. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/hyperv-tools-all.ucl b/release/packages/ucl/hyperv-tools-all.ucl index e16fd5b4b053..95c7b6dc0b49 100644 --- a/release/packages/ucl/hyperv-tools-all.ucl +++ b/release/packages/ucl/hyperv-tools-all.ucl @@ -1,4 +1,10 @@ -comment = "Microsoft HyperV Utilities" +comment = "Microsoft Hyper-V utilities" + desc = <<EOD -Microsoft HyperV Utilities +This package provides utilities used when running on the Microsoft Hyper-V +virtualisation platform. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/inetd-all.ucl b/release/packages/ucl/inetd-all.ucl index 731769bdc399..5a6bb05f1675 100644 --- a/release/packages/ucl/inetd-all.ucl +++ b/release/packages/ucl/inetd-all.ucl @@ -1,4 +1,11 @@ comment = "Internet super-server" + desc = <<EOD -Internet super-server +The inetd(8) server listens for incoming network connections and spawns a +process to handle the connection based on its configuration file. Some +built-in servers for basic services are also provided. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/kernel-all.ucl b/release/packages/ucl/kernel-all.ucl index 31671602a947..be55373397eb 100644 --- a/release/packages/ucl/kernel-all.ucl +++ b/release/packages/ucl/kernel-all.ucl @@ -1,4 +1,9 @@ comment = "FreeBSD ${KERNEL_NAME} Kernel ${KERNEL_FLAVOR}" + desc = <<EOD FreeBSD ${KERNEL_NAME} Kernel ${KERNEL_FLAVOR} EOD + +annotations { + set = kernels +} diff --git a/release/packages/ucl/lld-all.ucl b/release/packages/ucl/lld-all.ucl index 03daf1b235e6..4c96d8d7b313 100644 --- a/release/packages/ucl/lld-all.ucl +++ b/release/packages/ucl/lld-all.ucl @@ -4,3 +4,7 @@ ld.lld is the ELF linker provided by LLVM. EOD licenses = [ NCSA ] + +annotations { + set = devel +} diff --git a/release/packages/ucl/lldb-all.ucl b/release/packages/ucl/lldb-all.ucl index da481c026981..d6ff16421724 100644 --- a/release/packages/ucl/lldb-all.ucl +++ b/release/packages/ucl/lldb-all.ucl @@ -4,3 +4,7 @@ lldb is a source-level debugger from the LLVM project. EOD licenses = [ NCSA ] + +annotations { + set = devel +} diff --git a/release/packages/ucl/locales-all.ucl b/release/packages/ucl/locales-all.ucl index 6fc53ab10fca..78a15501d493 100644 --- a/release/packages/ucl/locales-all.ucl +++ b/release/packages/ucl/locales-all.ucl @@ -1,4 +1,9 @@ comment = "Locale definitions" + desc = <<EOD Provides the locale definitions (LC_*) for supported locales. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/mtree-all.ucl b/release/packages/ucl/mtree-all.ucl index b921c51a6afb..f7c12f9def88 100644 --- a/release/packages/ucl/mtree-all.ucl +++ b/release/packages/ucl/mtree-all.ucl @@ -1,4 +1,9 @@ comment = "MTREE Files" + desc = <<EOD MTREE Files EOD + +annotations { + set = devel +} diff --git a/release/packages/ucl/newsyslog-all.ucl b/release/packages/ucl/newsyslog-all.ucl index e52b34dbdcba..824a5d62f587 100644 --- a/release/packages/ucl/newsyslog-all.ucl +++ b/release/packages/ucl/newsyslog-all.ucl @@ -1,4 +1,10 @@ -comment = "Newsyslog Utility" +comment = "Create and rotate system log files" + desc = <<EOD -Newsyslog Utility +The newsyslog(8) utility, usually run automatically from cron(8), is used to +create log files in /var/log and periodically rotate existing log files. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/nuageinit-all.ucl b/release/packages/ucl/nuageinit-all.ucl index 4d510b799fa7..c3862c52b8ff 100644 --- a/release/packages/ucl/nuageinit-all.ucl +++ b/release/packages/ucl/nuageinit-all.ucl @@ -1,4 +1,9 @@ comment = "CloudInit support scripts" + desc = <<EOD CloudInit support scripts EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/periodic-all.ucl b/release/packages/ucl/periodic-all.ucl index 569bf8d829c4..b1b3e47ec10a 100644 --- a/release/packages/ucl/periodic-all.ucl +++ b/release/packages/ucl/periodic-all.ucl @@ -1,4 +1,11 @@ -comment = "Periodic Utility" +comment = "Run periodic system functions" + desc = <<EOD -Periodic Utility +The periodic(8) utility, usually run from cron(8), provides a system for +scheduling regular system maintenance tasks. This package also provides +the base periodic tasks for the base system. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/pkg-bootstrap-all.ucl b/release/packages/ucl/pkg-bootstrap-all.ucl index 9ca6ccd2af58..47b28ba1d374 100644 --- a/release/packages/ucl/pkg-bootstrap-all.ucl +++ b/release/packages/ucl/pkg-bootstrap-all.ucl @@ -1,4 +1,11 @@ -comment = "pkg bootstrap Utility" +comment = "pkg(7) bootstrap utility" + desc = <<EOD -pkg bootstrap Utility +/usr/sbin/pkg is a minimal bootstrap tool used to install the full pkg(8) +package management system. This package also contains the PGP keys for +the FreeBSD.org package repository. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/ppp-all.ucl b/release/packages/ucl/ppp-all.ucl index 454e54b7b872..f3206da7cd45 100644 --- a/release/packages/ucl/ppp-all.ucl +++ b/release/packages/ucl/ppp-all.ucl @@ -1,5 +1,10 @@ comment = "Userland PPP implementation" + desc = <<EOD ppp(8) is a userland implementations of the Point to Point Protocol for serial lines and Ethernet (PPPoE). EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/rc-all.ucl b/release/packages/ucl/rc-all.ucl index 04ed0dafacf0..1d5a1b9b728d 100644 --- a/release/packages/ucl/rc-all.ucl +++ b/release/packages/ucl/rc-all.ucl @@ -1,4 +1,11 @@ -comment = "RC Scripts" +comment = "rc(8) subsystem" + desc = <<EOD -RC Scripts +The rc(8) subsystem provides a method to start services at system startup and +stop them at shutdown. This package provides the rc(8) subsystem itself and +the service scripts for the base system. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/rdma-all.ucl b/release/packages/ucl/rdma-all.ucl index 313c2b7d17e0..eb9e39210143 100644 --- a/release/packages/ucl/rdma-all.ucl +++ b/release/packages/ucl/rdma-all.ucl @@ -1 +1,4 @@ comment = "RDMA Utilities" +desc = <<EOD +RDMA Utilities +EOD diff --git a/release/packages/ucl/rescue-all.ucl b/release/packages/ucl/rescue-all.ucl index da870079bbb7..417ced079a6a 100644 --- a/release/packages/ucl/rescue-all.ucl +++ b/release/packages/ucl/rescue-all.ucl @@ -1,4 +1,11 @@ -comment = "Rescue Utilities" +comment = "Rescue system" + desc = <<EOD -Rescue Utilities +The rescue system, installed in /rescue, provides a basic set of tools that +may be used to recover from a system failure which prevents the standard +utilities from working. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/resolvconf-all.ucl b/release/packages/ucl/resolvconf-all.ucl index a2d2e0debfa1..47d7d8232972 100644 --- a/release/packages/ucl/resolvconf-all.ucl +++ b/release/packages/ucl/resolvconf-all.ucl @@ -1,4 +1,11 @@ -comment = "Resolvconf Utility and scripts" +comment = "A framework for managing multiple DNS configurations" + desc = <<EOD -Resolvconf Utility and scripts +resolvconf(8) is used to manage /etc/resolv.conf for systems which move between +different networks, such as laptops. It is typically invoked by dhclient(8) to +provide new nameservers when connecting to a network. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/runtime-all.ucl b/release/packages/ucl/runtime-all.ucl index f614a3ef3d43..7635248dd76e 100644 --- a/release/packages/ucl/runtime-all.ucl +++ b/release/packages/ucl/runtime-all.ucl @@ -1,4 +1,10 @@ -comment = "FreeBSD Base System" +comment = "Core system" + desc = <<EOD -FreeBSD Base System +This is the core system, including utilities, libraries and configuration files +required for basic multi-user operation. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/runtime.ucl b/release/packages/ucl/runtime.ucl index b04bc32f33cc..5f90a1181334 100644 --- a/release/packages/ucl/runtime.ucl +++ b/release/packages/ucl/runtime.ucl @@ -1,4 +1,5 @@ vital: true + scripts: { post-install = <<EOD pwd_mkdb -i -p -d ${PKG_ROOTDIR}/etc ${PKG_ROOTDIR}/etc/master.passwd diff --git a/release/packages/ucl/syslogd-all.ucl b/release/packages/ucl/syslogd-all.ucl index 0f82c31fdf0f..0f174ef7401d 100644 --- a/release/packages/ucl/syslogd-all.ucl +++ b/release/packages/ucl/syslogd-all.ucl @@ -1,4 +1,10 @@ -comment = "Syslog Daemon" +comment = "System logging daemon" + desc = <<EOD -Syslog Daemon +The syslogd(8) daemon receives log messages from local and remote processes and +writes them to an appropriate log file. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/toolchain-all.ucl b/release/packages/ucl/toolchain-all.ucl index dd6517745722..5e89691c6380 100644 --- a/release/packages/ucl/toolchain-all.ucl +++ b/release/packages/ucl/toolchain-all.ucl @@ -1,4 +1,9 @@ comment = "Utilities for program development" + desc = <<EOD Utilities for program development. EOD + +annotations { + set = devel +} diff --git a/release/packages/ucl/ufs-all.ucl b/release/packages/ucl/ufs-all.ucl index 48f9975e0dbd..87aaf428bae7 100644 --- a/release/packages/ucl/ufs-all.ucl +++ b/release/packages/ucl/ufs-all.ucl @@ -1,4 +1,9 @@ comment = "UFS Libraries and Utilities" + desc = <<EOD UFS Libraries and Utilities EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/utilities-all.ucl b/release/packages/ucl/utilities-all.ucl index aeb82b0cfed5..6e83b6584c02 100644 --- a/release/packages/ucl/utilities-all.ucl +++ b/release/packages/ucl/utilities-all.ucl @@ -1,4 +1,9 @@ comment = "Non-vital programs and libraries" + desc = <<EOD Non-vital programs and libraries EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/vi-all.ucl b/release/packages/ucl/vi-all.ucl index c2ad2f8e95eb..4504281e0549 100644 --- a/release/packages/ucl/vi-all.ucl +++ b/release/packages/ucl/vi-all.ucl @@ -1,4 +1,10 @@ -comment = "Vi Editor" +comment = "Text editor" + desc = <<EOD -Vi Editor +This package provides ex(1), an extended version of the ed(1) line-oriented +text editor, and vi(1), a user-friendly full-screen text editor based on ex. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/vt-data-all.ucl b/release/packages/ucl/vt-data-all.ucl index 4142b2eeae70..d5e1a36e5b1c 100644 --- a/release/packages/ucl/vt-data-all.ucl +++ b/release/packages/ucl/vt-data-all.ucl @@ -1,4 +1,9 @@ comment = "vt(4) fonts and keymaps" + desc = <<EOD Fonts and keymaps for use with the vt(4) video console driver. EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/wpa-all.ucl b/release/packages/ucl/wpa-all.ucl index e5ad7f36db95..dd2ca13fd4c1 100644 --- a/release/packages/ucl/wpa-all.ucl +++ b/release/packages/ucl/wpa-all.ucl @@ -1,4 +1,9 @@ comment = "802.11 Supplicant" + desc = <<EOD 802.11 Supplicant EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/zfs-all.ucl b/release/packages/ucl/zfs-all.ucl index f4178acc481c..51d5a1d8c602 100644 --- a/release/packages/ucl/zfs-all.ucl +++ b/release/packages/ucl/zfs-all.ucl @@ -1,4 +1,9 @@ comment = "ZFS Libraries and Utilities" + desc = <<EOD ZFS Libraries and Utilities EOD + +annotations { + set = minimal +} diff --git a/release/packages/ucl/zoneinfo-all.ucl b/release/packages/ucl/zoneinfo-all.ucl index ed737c740bee..3fc90fc3f88a 100644 --- a/release/packages/ucl/zoneinfo-all.ucl +++ b/release/packages/ucl/zoneinfo-all.ucl @@ -6,3 +6,7 @@ UTC and local timezones. EOD licenses = [ "PD" ] + +annotations { + set = minimal +} |
