summaryrefslogtreecommitdiff
path: root/INSTALL
blob: 56e71037aac162efd353ca08d60aa391d9a44ff7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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