Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/release/packages/ucl/README
39492 views
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.

Policies for package dependencies:

* If a package requires a shared library from another package, do not add a
  dependency, unless pkg(8) doesn't detect the dependency automatically for
  some reason (which may happen if the library is loaded with dlopen() at
  runtime).

* If a package contains rc(8) scripts, do not add a dependency on "rc".
  Installing "rc" is optional.

* If a package contains hooks intended to be invoked from devd, do not add
  a dependency on "devd".  Like rc, devd is optional.  The exception is if
  the package doesn't work at all without devd, in which case a dependency
  is warranted.

* If a package contains cron(8) jobs in /etc/cron.d, do not a dependency
  on "cron", unless the package doesn't work at all without cron.

* If a package contains periodic(8) reports, do not add a dependency on
  "periodic", unless the package only contains periodic reports.

* If a package contains shell scripts, and the script is *not* one of the
  previously mentioned examples (rc, devd, etc.), add a dependency on
  "runtime" for /bin/sh.

* Otherwise, if one component of a package requires another package to work,
  add a dependency on the other package even if not everything in the package
  requires that dependency.  Users expect that all of a package will work
  after installing it.