3 # 2012-01-22, alex@barton.de
6 MYNAME=$(basename "$0")
14 while [ $# -gt 0 ]; do
23 echo "Usage: $MYNAME [--force|-f]" >&2
30 AUTOBUILDER_D_DIR="/usr/local/etc/autobuilder/autobuild.d"
31 CACHE_DIR="/usr/local/var/cache/autobuilder"
36 echo "$MSG_PREFIX[$(date +%H:%M:%S)] $MYNAME: $*"
40 echo "$ERR_PREFIX[$(date +%H:%M:%S)] $MYNAME: $*" >&2
44 cd "$BASE_DIR" || return 1
45 if [ ! -d ".git" ]; then
46 git clone "$REPOSITORY" .
48 git pull --ff-only | grep "Already up-to-date." >/dev/null
49 [ $? -eq 0 ] && return 9
51 git shortlog ORIG_HEAD..
56 msg "Building \"$NAME\" ..."
57 cd "$BASE_DIR" || return 1
58 date >"$BASE_DIR/.$MYNAME.dirty" || return 1
60 if [ -x "./autogen.sh" ]; then
61 eval "make $MAKE_ARGS_MAINTAINERCLEAN $QUIETCMD 2>&1"
62 eval "./autogen.sh $QUIETCMD"
64 if [ -x "./configure" ]; then
65 eval "./configure $QUIETCMD"
67 eval "make $MAKE_ARGS_BUILD $QUIETCMD"
72 msg "Checking \"$NAME\" ..."
73 cd "$BASE_DIR" || return 1
75 eval "make $MAKE_ARGS_CHECK $QUIETCMD"
79 msg "Archiving \"$NAME\" ..."
80 cd "$BASE_DIR" || return 1
82 eval "make $MAKE_ARGS_DIST $QUIETCMD"
86 msg "Publishing \"$NAME\" ..."
87 cd "$BASE_DIR" || return 1
89 archive=$(ls -1rt -- *.tar.gz | tail -n 1)
90 if [ -z "$archive" ]; then
91 err "No distribution archive found!?"
95 mv "$archive" "$DEST_DIR"/ || return 1
96 chmod a+rX "$DEST_DIR/$(basename "$archive")"
97 rm -f "$archive" "$BASE_DIR/.$MYNAME.dirty"
99 msg "New \"$NAME\" archive: \"$(basename "$archive")\""
105 [ -n "$KEEP_ARCHIVES" ] || return 0
106 [ -n "$ARCHIVE_PATTERN" ] || return 0
108 msg "Removing outdated archives, keeping $KEEP_ARCHIVES ..."
109 cd "$DEST_DIR" || return 1
111 eval "ls -1t $ARCHIVE_PATTERN | sed -n '$((KEEP_ARCHIVES + 1)),9999p' | xargs -r rm"
114 # read in configuration
115 [ -r /etc/autobuilder/autobuilder.conf ] \
116 && . /etc/autobuilder/autobuilder.conf
117 [ -r /usr/local/etc/autobuilder/autobuilder.conf ] \
118 && . /usr/local/etc/autobuilder/autobuilder.conf
120 # read in and process projects in autobuild.d directory
121 for file in "$AUTOBUILDER_D_DIR"/*; do
122 file_name="$(basename "$file")"
128 MAKE_ARGS_MAINTAINERCLEAN="maintainer-clean"
130 MAKE_ARGS_CHECK="check"
131 MAKE_ARGS_DIST="dist"
133 if [ ! -r "$file" ]; then
134 err "Can't read \"$file\"! Skipping."
140 if [ -z "$NAME" ]; then
141 err "$file_name: NAME no set! Skipping."
145 if [ -z "$DEST_DIR" ]; then
146 err "$file_name: DEST_DIR no set! Skipping."
154 err "$file_name: TYPE not set or unknown: \"$TYPE\"! Skipping."
158 BASE_DIR="${CACHE_DIR}/${file_name}"
159 if [ ! -d "$BASE_DIR" ]; then
160 msg "Creating base directory \"$BASE_DIR\" ..."
162 if [ $? -ne 0 ]; then
163 err "Failed to create directory \"$BASE_DIR\!"
173 && [ ! -e "$BASE_DIR/.$MYNAME.dirty" ]; then
180 if [ $? -ne 0 ]; then
181 err "Building of \"$NAME\" FAILED!"
185 if [ -n "$MAKE_ARGS_CHECK" ]; then
187 if [ $? -ne 0 ]; then
188 err "Checking of \"$NAME\" FAILED!"
194 if [ $? -ne 0 ]; then
195 err "Archiving of \"$NAME\" FAILED!"
200 if [ $? -ne 0 ]; then
201 err "Can't publish \"$NAME\"!"