summaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL120
1 files changed, 120 insertions, 0 deletions
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..56e7103
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,120 @@
+Installation of libretools is pretty straight-forward:
+
+ $ make
+ # make install
+
+As a caveat, by default, if the directory `devtools-par` exists in the
+same directory as the `libretools-${version}` directory, and contains
+newer files than the libretools directory, they will be copied into
+the libretools directory. See INSTALL-VCS for more details.
+
+Dependencies
+------------
+
+Unlike a lot of software, run-time dependencies are not required at
+build-time.
+
+Libretools is mostly shell scripts. It very specifically targets
+Parabola GNU/Linux-libre; there are a lot of dependencies, most of
+which are undocumented. Switching away from a GNU user-land is bound
+to cause issues.
+
+## Build dependencies
+
+The "unusual" build-time dependencies are:
+
+ - GNU Make -- other `make`s will not work.
+ - GNU sed -- must support `-r` for ERE; BSD sed uses `-E` for this
+ purpose.
+ - Emacs 24.4+ -- `emacs --batch` is used to use Emacs Lisp to process
+ some text. GNU Emacs 24.4 introduced a new `advice-add` system
+ which we depend on.
+ - ronn -- A markdown-to-manpage converter
+
+At this time, the build system does not support not building the
+documentation; ronn is required.
+
+Additionally, other usual "core utilities" are required:
+
+ cat, chmod, cp, echo, false, find, install, ln, msguniq, rm, tr,
+ xgettext
+
+Also, `/bin/sh` must support `{brace,expansion}`. If it doesn't, find
+a shell that does, and configure `make` to use it. Though, because
+libretools is mostly shell scripts, if you deviate too much from a GNU
+command-line environment, I suspect that you will run into more
+issues. If I were targeting anything other than Parabola, this would
+be a bigger issue.
+
+## Test suite dependencies
+
+If you wish to run the test suite, you will need the "roundup" shell
+unit testing program. On Parabola GNU/Linux-libre it is called
+"sh-roundup". If your operating system doesn't have it, it is
+available at <http://bmizerany.github.io/roundup/>.
+
+## Run-time dependencies
+
+Being mostly shell scripts, many external program are used. Anything
+that is included when installing the `base` package group on Parabola
+GNU/Linux, I consider an implicit dependency. If something isn't used
+now, that doesn't mean it won't be in the future.
+
+On top of that, the following dependencies are also needed:
+
+librelib subpackage:
+ - wget
+gitget subpackage:
+ - librelib (provided)
+ - git
+xbs subpackage:
+ - gitget (provided)
+ - librelib (provided)
+ - subversion (only for the 'abs' module)
+main libretools subpackage:
+ - librelib (provided)
+ - xbs (provided)
+ - pacman 5.0
+ - arch-install-scripts
+ - GNU Make (only needed for `librefetch`)
+ - ssh client (OpenSSH, only needed for `librerelease`)
+ - rsync
+ - systemd-nspawn (for the chroot tools)
+ - tokyocabinet
+
+Configuration
+-------------
+
+This is not a GNU package, there is no `./configure` script.
+
+There are two ways to set configuration variables:
+ 1. Edit config.mk
+ 2. Pass `VARIABLE=VALUE` to `make`
+
+The configuration variables mostly match GNU packages, but default
+values differ; libretools installs to `prefix=/usr` by default instead
+of GNU's `prefix=/usr/local`.
+
+Building and installing subpackages
+-----------------------------------
+
+There are several subpackages you can build and install. This is done
+by running:
+
+ $ make build-${package}
+ # make install-${package}
+
+respectively. In addition to `build` and `install`, the activities
+you can do are:
+
+ - `copy` -- copy necessary files from the devtools-par source code
+ - `build` -- build all programs and files
+ - `install` -- install everything
+ - `clean` -- remove generated files
+
+The subpackages you can run these on are:
+
+ - libretools -- The main libretools package
+ - librelib -- Generic libraries included
+ - gitget -- A git downloader
+ - xbs -- Tools for dealing with differences between ABS/ABSLibre/PBS