Next: , Previous: , Up: Build   [Index]


Requirements

Build system, except for basic commands like cc, (POSIX) make, requires at least:

bsdtar

GNU tar, available by default on GNU OSes, brings many complications in build-related scripts, because it is unable to decompress stdin data on the fly. Many GNU/Linux distributions have libarchive-tools package, containing libarchive-based bsdtar utility, that perfectly deals with any compressed archive transparently.

meta4ra

Utilities for making and checking .meta4 files. They are just a wrapper over XML and external hasher commands interoperation. They also can be used for downloading.

Perl

Shell scripts are hard to write in a portable way. For example there is no way to know file’s size using POSIX-compatible utilities solely, except for feeding through wc -c. There is no way to get file’s mtime, as stat’s options are completely different on BSD and GNU systems. Only small subset of features is common among sed, awk, grep utilities. There is no reliable portable way of using sed -i for example.

That is why the only sane option is Perl in most cases. Its interpreter is minimalistic enough and tend to be included even in OpenWRT distributions. It behaves the same way on all widespread OSes (no zoo of loosely compatible dialects).

redo build system

redo started to be used in the project due to its built-in ability of using locks to prevent concurrent building of the same target. skelbins have to be installed to permanent paths, so concurrent builds will ruin them. redo contains atomic reliable writes of the target’s result. And by definition it has dependency tracking of the targets. All of that greatly reduces the skel’s code size. And as an unexpected feature you get ability to parallelise your builds.

goredo is recommended implementation, being very fast and having largest integration test suite.

Any of setlock, lockf, flock

setlock from daemontools, or lockf from BSD, or flock from GNU.

Go

At least for building supplementary utilities. And, obviously, if you build Go-related software. Actually Go-written utilities can be replaced and no Go dependency will be required at all.

FreeBSD’s fetch, or GNU Wget, or cURL

Although meta4ra can be used instead all of them.


Next: Distfiles, Previous: skelenv, Up: Build   [Index]