summaryrefslogtreecommitdiff
path: root/INSTALL
blob: f25c466d70a0820b311ecb9261607e3d8d9feefe (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
Installation of libretools is pretty straight-forward.  The only
tricky thing is the weird dependence on the devtools-par source code.

The build system will by default look at `$(topdir)/../devtools-par`
for the devtools-par source code.  This can be changed by adjusting
the `devtoolsdir` configuration variable, see "Configuration" below.

Once you have the devtools source taken care of, you can have the
default everything-included install by running:

	$ make
	# make install

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 -- `emacs --batch` is used use Emacs Lisp to process some text.
 - ronn -- A markdown-to-manpage converter

At this time, the build system dos 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
main libretools subpackage:
 - librelib (provided)
 - gitget (provided, only needed for `createworkdir`)
 - arch-install-scripts
 - ssh client (OpenSSH, only needed for `librerelease`
 - rsync
 - subversion
 - tokyocabinet
libretools-mips64el subpackage:
 - libretools (provided)
 - git

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
 - `pot` -- generate gettext portable object template files.

The subpackages you can run these on are:

 - doc -- The non-manpage documentation
 - libretools -- The main libretools package
 - libretools-mips64el -- Programs useful for porting to mips64el
 - librelib -- generic libraries included
 - gitget -- A git downloader