PKGPATH(7) | Miscellaneous Information Manual | PKGPATH(7) |
pkgpath
— ports
tree location for a package build
Each location in the ports tree is uniquely identified through a
pkgpath
, which encodes the directory, flavor and
subpackage information that allows the build of a package. This is not to be
confused with PKG_PATH
, the list of URLs from which
pkg_add(1) retrieves binary
packages.
Every pkgpath
conforms to the pattern
some/directory[,-sub][,flavor...].
The some/directory part refers to the directory part, to find under the portstree, usually in /usr/ports (or /usr/ports/mystuff for port developers).
The ,-sub optional part refers to a specific subpackage from a multi-package port. It can be left blank for non multi-package ports, or to get the default subpackage (usually -main).
The ,flavor... optional part refers to the flavors or pseudo-flavors to use when building the package. If left blank, it refers to the default flavor. An explicit empty flavor can also be specified to make sure to get an empty flavor, even if it does not correspond to the default flavor.
Note that -sub and flavor parts can be specified in any order, as all subpackages start with a dash. It is an error to ask for several subs at once, e.g. some/path,-sub1,-sub2, though it won't always be flagged as a problem.
For instance:
The ports tree can iterate over lists of
pkgpath
through
SUBDIR="pkgpath1 pkgpath2..."
or through a
full list through SUBDIRLIST=file
.
dpb(1) also handles
pkgpath
lists for many options.
When the ports tree handles dependencies, it passes
pkgpath
from BUILD_DEPENDS
,
LIB_DEPENDS
, RUN_DEPENDS
,
and TEST_DEPENDS
to the dependent port for
normalisation purposes. That way, the pkgpath
that
gets recorded in the package doesn't have any "default" flavor or
"default" subpackage left: those are always resolved to the
correct value.
Likewise, pseudo-flavors vanish from the
pkgpath
, since they only participate in the build
process, but do not intervene in the built package.
As a result, such pkgpath
are slightly
different from the description above, as a flavor left blank is the empty
flavor (and not the default flavor). This is the "fullpath
convention".
Tools such as dpb(1) display fullpath pkgpaths, and binary packages store full pkgpaths.
SUBDIR
and
SUBDIRLIST
can be forced to follow the fullpath
convention by explicitly passing FULLPATH=Yes
to the
corresponding make(1)
invocations.
Most tools that process binary packages do so.
dpb(1), bsd.port.mk(5), library-specs(7), packages(7), packages-specs(7), ports(7)
March 27, 2017 | OpenBSD-6.9 |