summaryrefslogtreecommitdiffstats
path: root/git-amb/git-amb.man.in
blob: 0d77a9c24b25e3721c087bc619cbc0251ea62413 (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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
.TH GIT-AMB 1 "@PACKAGE_TARNAME@ @PACKAGE_VERSION@" "2007\-11\-02" "@PACKAGE_NAME@ @PACKAGE_VERSION@"
.SH NAME
git\-amb \- git automake build utitilty
.SH SYNOPSIS
.B "git\-amb"
.RB "command"
.RI [ params ]
.SH DESCRIPTION
Build automake based git checkout in branch specific build and install trees.
That makes it easy to compare build results from different branches.
.PP
This requires an automake based source tree which can build in a
separate build directory.
.SH "COMMANDS"
.SS "Build Commands"
.TP
.B "git\-amb autoreconf [params...]"
Run autoreconf on ${top_srcdir}.
Optional params will be passed on to autoreconf.
.TP
.B "git\-amb configure [params...]"
Run configure in ${top_builddir} with
.I "\-\-enable\-maintainer\-mode"
and
.I "\-\-prefix"
set appropriately.
Optional params will be passed on to configure.
If necessary, runs
.I "git\-amb autoreconf"
first.
.TP
.B "git\-amb make [params...]"
Run make in ${top_builddir}.
Optional params will be passed on to make.
If necessary, runs
.I "git\-amb configure"
first.
.SS "Cleanup Commands"
.TP
.B "git\-amb clean [branch]"
Run 'make clean' in ${top_builddir}.
The optional branch is the branch to clean up.
.TP
.B "git\-amb distclean [branch]"
Run 'make distclean' in ${top_builddir}.
The optional branch is the branch to clean up.
.TP
.B "git\-amb purge [branch]"
Remove both build and install tree.
The optional branch is the branch to purge.
.TP
.B "git\-amb uninstall [branch]"
Remove ${installdir}.
The optional branch is the branch to uninstall.
.TP
.B "git\-amb purge\-all"
Remove build and install trees for
.I all
branches.
.SS "Interactive and Scripting Commands"
.TP
.B "git\-amb sh [params...]"
Start shell in ${top_builddir}.
Optional params will be passed on to the shell.
.TP
.B "git\-amb builddir [branch]"
Print ${builddir}.
The optional branch is the branch to print the builddir for.
.TP
.B "git\-amb installdir [branch]"
Print ${installdir}.
The optional branch is the branch to print the installdir for.
.SH CONFIGURATION
Use
.B git\-config
to get and set the config values.
If a config value is not set,
.B git\-amb
uses a built\-in default, which is not documented. Always run the
.B git\-amb
commands
.I builddir
and
.I installdir
to determine the respective directory.
.SS amb.builddir
Location of build tree, relative to top checkout (source) dir, or absolute.
The branch name will be appended to it.
.SS amb.installdir
Location of installation, relative to top checkout (source) dir, or absolute.
The branch name will be appended to it.
.SH EXAMPLES
Define local build dirs, relative to top source tree dir.
.nf
  $ git config amb.builddir _builds
  $ git config amb.installdir _installs
.fi
.PP
In the following example, we build two branches and compare their
resulting installation trees. Please note that
.I "git\-amb make"
automatically runs the necessary precursor steps.
.nf
  $ git checkout master
  $ git\-amb make install
  $ git checkout foo/bar
  $ git\-amb make dist install
  $ diff \-ru $(git\-amb installdir) $(git\-amb installdir master)
.fi
.PP
The following example builds a dist tarball with all the checks and we
then examine the files in the dist tarball.
.nf
  $ git\-amb make distcheck
  $ git\-amb sh
  <\-\-\-\-> [...] $ ls *.tar.gz
  <\-\-\-\-> [...] $ tar tvfz moo-1.2.3.tar.gz
  <\-\-\-\-> [...] $ exit
  $
.fi
.SH "BUGS"
.TP
.B "Access to build results"
Could be better.
.TP
.B "User Interface"
Should be more consistent, smaller.
.TP
.B "Concurrent Usage"
Exhibits problems, e.g. starting
.B "git\-amb sh"
and then running
.B "git checkout other\-branch"
from another terminal.
.TP
.B "Why just git?"
The idea behind
.B "git\-amb"
would work equally well for many other SCMs.
.TP
.B "Why just automake?"
Any build system which works in similar stages should work:
Create BS (autoreconf), configure BS (configure), execute BS (make).
cmake(1) could be one.
.TP
.B "Arch-independent build/install dirs"
Yupp, they should be arch-dependent (e.g. i386 vs x86_64). But how to
determine that?
.SH "NON-BUGS"
.TP
.B "No support for autogen.sh scripts"
Not supporting
.I "autogen.sh"
scripts is a
.B "git\-amb"
feature, not a bug.
.I "autogen.sh"
scripts are almost always broken in at least one way: They
unnecessarily duplicate the functionality of autoreconf(1), they join
two independent steps into one (running both automake &
Co. and ./configure), they do not allow srcdir != builddir builds, and
there is no real standard about what exactly they do, and how.
.SH AUTHORS
.B "git\-amb"
was written by Hans Ulrich Niedermann.
.SH "SEE ALSO"
autoreconf(1), git\-branch(1), git\-checkout(1), git\-config(1).