3 # This script will setup the build dir based on the current git branch and the
4 # directory auto-build-save/$BRANCH. We don't use a symlink for the build dir
5 # because we want to maximize the ccache reuse, so all builds must happen in
6 # the same real dir. When a dir is moved out of auto-build-save/$BRANCH to the
7 # build dir, it is replaced with a symlink so that it can still be found under
8 # that dir. The build dir also gets a .branch -> $BRANCH symlink so that we
9 # can figure out the current build dir's branch.
11 # To get started, just clone the rsync git repo and create the auto-build-save
12 # dir. If you have an existing git checkout and it is not in a pristine state,
13 # run "make distclean" before creating the auto-build-save dir.
15 auto_top
='auto-build-save'
16 if test -d $auto_top && test -d .git
; then
17 desired_branch
=`git rev-parse --abbrev-ref HEAD | tr / %`
18 if test "$desired_branch" = HEAD
; then
19 echo "ERROR: switch to the right build dir manually when in detached HEAD mode." 1>&2
22 auto_dir
="$auto_top/$desired_branch"
23 if test -d build
; then
24 cur_branch
=`readlink build/.branch`
28 if test "$desired_branch" != "$cur_branch"; then
29 if test "$cur_branch" != /; then
30 rm -f "$auto_top/$cur_branch"
31 mv build
"$auto_top/$cur_branch"
33 test -d "$auto_dir" || mkdir
"$auto_dir"
34 test -h "$auto_dir/.branch" ||
ln -s "$desired_branch" "$auto_dir/.branch"
36 ln -s ..
/build
"$auto_dir"
38 if test ! -h Makefile
; then
40 ln -s packaging
/auto-Makefile Makefile