The ports tree is now staged by default. With pkgng the sequence hasn't
changed, the main difference is that creating package is now independent
from installing it. With pkg_install, the package is now created first
and make install, do install the package.
New macros:
- STAGEDIR: PATH to the directory where the port will be staged.
- NO_STAGE: Keep the old behaviour of the ports tree (aka no staging area)
Unsupported macro if NO_STAGE is not set:
- MAN* with staging man page compression and handling of hardlinks and
symlinks is automatically done in the stage. the manpages becomes then a
"normal" plist files and should be tracked in pkg-plist.
- MANCOMPRESSED the compress-man target is able to only compress when it
needed.
New target:
- stage: this installs everything into the stage directory
- makeplist: this will create a pkg-plist and print it to stdout. This is
a sample plist and it should always be _reviewed_ not directly used.
NOTE: with staging only what is in the plist will be installed, nothing more,
meaning a port staged cannot have leftovers exect directories left. It is
really important to double check the pkg-plist to make sure all the files
the maintainer want to package are in! make makeplist can help in that area.
The goal is to handle as quickly as possible a full removal of the NO_STAGE
support.
More features can be added once the full ports tree is converted to using the
staging area
Conversion notes:
- Remove NO_STAGE
- in {pre,do,post}-install
* Before any usage of ${PREFIX}, ${ETCDIR}, ${PORTSDIR}, ${PORTEXAMPLES}
prepend ${STAGEDIR}
* Remove any thing that is done by @exec or +INSTALL script it will be
done automatically when syncing packages
* Remove any code to show PKG-MESSAGE it will be done automatically when
syncing packages
* Directory creation should remain in post-install (in particular because
pkgng doesn't work like pkg_install in that area and pkgng ignores the
@exec mkdir but directly pack the directory even if empty)
- PORTDOCS/PORTEXAMPELS
To support PORTDOCS, PORTEXAMPLES most of the time there is no more need
for hacks. just add the right %%PORTDOCS%% or %%PORTEXAMPLES%% in your
plist then the given files from the stagedir will or will not sync
according to NOPORTDOCS and NOPORTEXAMPLES.
With hat: portmgr
Reviewed by: bdrewery
- Silence some output, set LICENCE_VERBOSE to enable [2]
- Add AGPLv3 as a license
PR: ports/164870 [1] ports/165270 [2] ports/166066 [3]
Submitted by: many
Exp-run by: linimon
the user. See http://people.freebsd.org/~glarkin/logs/pecl-drizzle-0.4.2.log
for an example (e.g. "License PHP301 accepted by the user")
PR: ports/152964
Submitted by: glarkin
Tested on: pointyhat exp-run
Approved by: miwi (portmgr hat)
Approved by: alepulver (maintainer)
not cause collisions for different licenses as well as for _LICENSE_REPORT.
The patch also makes it clear what license file belongs to what license
in an installed package.
PR: 148808
Submitted by: Anonymous <swell.k@gmail.com>
Tested on: pointyhat
- Feel free to populate bsd.licenses.db.mk and adjust the variables:
NO_LICENSES_INSTALL and NO_LICENSES_DIALOGS (default to off).
- For more information see http://wiki.freebsd.org/PortsLicenseInfrastructure
Reviewed by: erwin