1. Introduction

any is the system for software build and maintenance inside POSIX distributions. It allows to create binary packages on your own, which are suitable for package manager of your operating system. The troubles of command sudo make install from manual build instructions are foreclosed.

The any system is written in shell and POSIX utilities, so it is portable between environments, requires minimum dependencies and does not need the compilation. An extraction of release archive is enough to begin the work. The build process occurs in local directory entirely with permissions of current user.

any does not manage packages and does not create package formats of its own, as it goes with systems like pkgsrc from NetBSD. any does package building for package management systems which exist already. At the moment the following formats are supported:

deb
for Linux distros Debian, Ubuntu and their derivatives;
txz
for Linux distro Slackware;
plain tgz
binary files in plain compressed tar-archive.
If there is no support for needed package format, the result is packed as a plain tgz archive. Features of building itself are not reduced because of that. New package formats are implemented as independent modules for build system.

The build is performed through shell scripts, called anybuilds (.build). Consider classic build commands:

        ./configure
        make
        make install DESTDIR=/opt/myname

The same actions inside anybuild are looking like that:

    src_config()
    {
        ./configure
    }

    src_compile()
    {
        make
    }

    src_install()
    {
        make install DESTDIR=${D}/opt/myname
    }
Build code with any is mirroring the meaning and structure of manual building of packages from sources. Along with that anybuilds contain functions for typical tasks and flexible setup of your project. The functions are implemented inside libraries of the engine, relying just on basic POSIX utilities from outer filesystem. Using functions from that API provides portability to your project and option to highly customise it for different runtime environments. On the other hand, API functions may be dismissed, and thus build code would be straightforward and common.

any localizes its work inside user defined directory. There is no writing to system-wide directories like /var/ or /tmp/. Likewise git(1) system handles the repositories of sources, and IDE creates the directory, dedicated to a project. The files of a project are stored in each of the created working directories. You may create several working directories at the same time for distinct projects and make independent changes there - they will not interfere with each other.

Besides direct building, any may assist with maintenance: track down dependency trees, implement inner numeration for built packages, check binary archives on correctness.

The build system is expected to be useful for you in case:

-
you are modifying a package in your operating system, while you are not its developer;
-
you are developing your software product and planning to provide it for several platforms on your own;
-
you are developing your own OS distribution.