The nosh source package is a compressed tar
archive:
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 and later.
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 rc
.)
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, install
, xmlto
, the host operating system's equivalent of Debian's build-essential
tools (whatever thay may be), and a POSIX-conformant operating system (with the standard utilities present) to build; and builds with the g++ and clang++ compilers.
(See the Archnosh documentation for the Arch Linux equivalents, for example.)
The build system attempts to autodetect the available compiler.
To just build the package from source:
package/compile
This gives you:
command/
, which you can just add to your PATH
environment variable or symbolically link to;
manual/
;
guide/
starting at guide/index.html
;
config/
.
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
package/clean
or just rm -r build/
To clean the build, packaging, and built files run
package/distclean
or just 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 *.extras
file.
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.