blob: 11385076bb5c9f6930b05b354bdcb5748e46de00 (
plain) (
blame)
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
|
redo(1) -- an elegant and minimal build tool
============================================
## SYNOPSIS
`redo` [<options>...] [<targets>...]
## DESCRIPTION
`redo` is a powerful yet minimalistic tool for rebuilding files and their
dependencies from source, based on rules specified in .do scripts. These
scripts have the unique property of being language independent - they only
require a valid shebang-like line.
`redo` is inherently recursive, it works by executing .do scripts which call
redo-ifchange(1) or other redo subcommands which in turn again execute .do
scripts. This enables `redo` to be clean, modular and extremely fast.
`redo` is also atomic, at no point in the build process exists a state in which
a truncated file is left in place. Any changes to .do files immediately result
in depending targets getting flagged out-of-date. This means the user doesn't
have to care about the state his build is in anymore, it's all handled by `redo`
## FILES
The `redo` command expects to find a suitable .do script for the specified
<targets>. If none is given, 'all' is assumed instead.
Suitable .do script pathnames are determined using the following pattern in
descending order:
* target filename + '.do'
* default.ext.do
* repeat for ../, except if we are already in REDO_ROOT
Where '.ext' is everything following the last dot (.) that could be found in the
target filename. `redo` will return an nonzero exit code should no suitable .do
script exist.
## ARGUMENTS
If a suitable .do script was found then it will be executed with the following
arguments:
* $1 - The filename of the target file.
* $2 - The target filename minus extension
* $3 - A temporary file that will be renamed to the target filename if the .do
script returns an nonzero exit code.
For `redo` to function correctly the target that is being built by the .do
script must be saved as $3.
## SHEBANG
(not documented yet)
## OPTIONS
* `-j`[<maxjobs>], `--jobs`[=<maxjobs>]:
Execute no more than <maxjobs> .do scripts at any point in parallel. If
this option was given without an argument, then `redo` will not limit the
number of jobs. By default this equals the number of threads of the target
machine or 1 if this couldn't be determined.
## EXAMPLES
(none yet)
## ENVIRONMENT
* `REDO_PARENT_TARGET`:
The target that shall be build by the .do script.
* `REDO_ROOT`:
The canonicalized absolute pathname corresponding to the 'root' directory
of `redo`, which contains the _.redo/_ directory.
## SEE ALSO
redo-ifchange(1), redo-ifcreate(1), redo-always(1)
## REDO
Part of the redo(1) suite.
|