The Hackerlab at `regexps.com`

## System Requirements

up: arch prev: Introducing arch

In order to use `arch` , there are some software tools that you must already have available. These don't necessarily need to be on your `PATH` -- `arch` can use a separate `PATH` if you need it to.

GNU Make You will need `GNU Make` in order to build `arch` .

GNU Tar You must have `GNU tar` . More specificially, you must have a version of tar that has options:

            -zcf F          to create a gzip-compressed tar file called
                            F, where F may be `-', meaning to write
                            the tar file to the standard-output stream

            -zxf F          to extract files from a gzip-compressed tar
                            file called F, where F may be `-', meaning
                            to read the tar file from the standard-input
                            stream.

            -T -            This option reads a list of files from
                            standard input.  Only those files are
                            read or written to the archive -- others
                            are ignored.

            -m              When extracting files, don't restore
                            modification times.

GNU diff and GNU patch After much deliberation, I've decided to go ahead and rely on the GNU versions of `diff` and `patch` . Specifically, you need a version of `diff` that can generate "unified format" output (option `-u` ) and a version of `patch` that understands that format and that understand `--posix` . (It would be trivial to use "context diffs" and, thus, standard `diff` and `patch` , however, unified diffs are much easier to read, and I'm hoping that picking specific implementations of these critical sub-components will help contribute to the long-term stability of `arch` .)

Standard Posix Shell Tools The package framework assumes that some standard Posix shell tools are available on your system. At the moment, `sh` must be installed as `/bin/sh` , but this will be corrected in a future release:

            awk
            cat
            chmod
            date
            echo
            find
            fold
            grep
            head
            ls
            mkdir
            printf
            pwd
            rm
            sed
            sh
            tee
            test
            touch
            tsort
            wc
            xargs

ordinary -exec extension to find Your version of `find` must be able to expand `{}` even in the context of a larger string. For example:

            find . -exec echo ">>>{}<<<" ";"

should print a list of all files and directories, surrounded by '>>>' and '<<<'. `GNU find` has this property as do, I believe, most implementations. (Posix explicitly requires only that `{}` be expanded in isolation, leaving undefined the meaning of `{}` when embedded in a longer string.)

The null Device Your system must have `/dev/null` . Output directed to `/dev/null` should simply disappear from the universe, in the usual way.

The BSD column program -- maybe If the program `column` is on your `PATH` (or the path being used by `arch` ), it should be a program which formats its input into columns and, with the option `-x` , fills columns before rows. If this program isn't found, it won't be used.

arch: The arch Revision Control System
The Hackerlab at `regexps.com`