source package is a compressed
This is a self-contained slashpackage-style package. That's a whole subject in itself; and the things that you need to know here are:
It is known to build, run, and work on TrueOS 10, FreeBSD 10, and Debian Linux version 7.
It should similarly build, run, and work on any modern BSD and on any modern Linux flavour.
It makes use of various
…at() system calls from POSIX.1:2008, for security and safety.
It also makes use of the kqueue mechanism (throughout on BSD, on Linux where library bugs don't make it unusable).
It builds and runs on OpenBSD 5.9, and works subject to OpenBSD's several limitations.
(One mirror of my WWW site is served by Bernstein publicfile running from the nosh UCSPI-TCP tools under nosh service management, via OpenBSD 5.9
It might similarly build, run, and work on Hurd (although Debian Hurd has proven to be so broken in even basic things like the Debian installer that it has as yet not been possible to upload it to and compile it on a Hurd system).
It requires redo to build, and builds with the g++ and clang++ compilers. The build system attempts to autodetect the available compiler.
To just build the package from source:
This gives you:
command/, which you can just add to your
PATHenvironment variable or symbolically link to;
The build process updates files in these directories atomically. It doesn't create part-written executables or other files at their final names. So you can run things straight out of these directories whilst rebuilding.
To clean the build run
rm -r build/
To clean the build, packaging, and built files run
rm -r build/ command/ manual/ config/ guide/
To build the binary packages on FreeBSD, TrueOS, or OpenBSD run
package/bsd/prepare && bsd/rules clean build binary
On FreeBSD and TrueOS this requires pkg version 1.2 or later in order to avoid segmentation faults and other bugs. So ensure that pkg is up to that version in your ports tree.
To build the binary packages on Debian Linux run
package/debian/prepare && dpkg-buildpackage -b -uc
Putting things into places outwith the self-contained directory can be bodged with the
package/stage command. You will need to also construct appropriate install/de-install/upgrade scripts, possibly by combining a
*.p file with a
*.funcs file and a
Note that the older
package/export mechanism is no longer available; because there are simply too many optional and potentially conflicting parts for exporting everything as one lump to be feasible.