.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).