xref: /freebsd/release/packages/ucl/README (revision 014647a30ff4c76a99962ee6b079db0d9cdf5949)
1This directory contains package manifests for the base packages in UCL format.
2There are two types of manifest: "<package>.ucl" applies specifically to the
3package called "<package>", and "<package>-all.ucl" applies to all of that
4package's subpackages.
5
6For example, if a Makefile sets PACKAGE=foo, then the build might generate the
7following packages:
8
9	FreeBSD-foo
10	FreeBSD-foo-dev
11	FreeBSD-foo-lib32
12	FreeBSD-foo-man
13
14All of these packages will include "foo-all.ucl", but "foo.ucl" will only be
15included by FreeBSD-foo, "foo-dev.ucl" will only be included by FreeBSD-foo-dev,
16and so on.
17
18In general, dependencies and post-install scripts should be added in the
19package-specific manifests, while comment and description should be set
20in the "-all" manifest.
21
22Policies for package dependencies:
23
24* If a package requires a shared library from another package, do not add a
25  dependency, unless pkg(8) doesn't detect the dependency automatically for
26  some reason (which may happen if the library is loaded with dlopen() at
27  runtime).
28
29* If a package contains rc(8) scripts, do not add a dependency on "rc".
30  Installing "rc" is optional.
31
32* If a package contains hooks intended to be invoked from devd, do not add
33  a dependency on "devd".  Like rc, devd is optional.  The exception is if
34  the package doesn't work at all without devd, in which case a dependency
35  is warranted.
36
37* If a package contains cron(8) jobs in /etc/cron.d, do not a dependency
38  on "cron", unless the package doesn't work at all without cron.
39
40* If a package contains periodic(8) reports, do not add a dependency on
41  "periodic", unless the package only contains periodic reports.
42
43* If a package contains shell scripts, and the script is *not* one of the
44  previously mentioned examples (rc, devd, etc.), add a dependency on
45  "runtime" for /bin/sh.
46
47* Otherwise, if one component of a package requires another package to work,
48  add a dependency on the other package even if not everything in the package
49  requires that dependency.  Users expect that all of a package will work
50  after installing it.
51