+++ /dev/null
-#!/bin/sh
-# Filename: cleanup.sh
-# Purpose: clean up daily builds directory - remove old files
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-set -e
-
-dir="$(dirname $0)"
-
-if [ -r /etc/grml/grml-buildd.conf ] ; then
- . /etc/grml/grml-buildd.conf
-elif [ -r "${dir}/grml-buildd.conf" ] ; then
- . "${dir}/grml-buildd.conf"
-fi
-
-# directory where daily ISOs are stored locally
-if [ -z "$MIRROR_DIRECTORY" ] ; then
- echo "Error: \$MIRROR_DIRECTORY is not set. Exiting." >&2
- exit 1
-fi
-
-if [ -z "$FLAVOURS" ] ; then
- echo "Error: \$FLAVOURS is not set. Exiting." >&2
- exit 2
-fi
-
-if ! cd "$MIRROR_DIRECTORY" ; then
- echo "Error: could not change directory to $MIRROR_DIRECTORY" >&2
- exit 3
-fi
-
-# we want to always keep a few images, no matter how old they are
-# but get rid of the oldest ones first of course :)
-# so: how many images do we want to keep? DAYS=3 usually means 'keep 4 images'
-DAYS=3
-
-REMOVE_ME=""
-for flavour in $FLAVOURS; do
- FILE_COUNT=$(ls -1 $flavour/$flavour*.iso | wc -l)
- if [ "$FILE_COUNT" -gt "$DAYS" ] ; then
- FILES=$(ls -1 $flavour/$flavour*.iso | tail -"$DAYS")
- OLD_FILES=$(ls $flavour/$flavour*.iso | grep -v "$FILES")
- for file in $OLD_FILES ; do
- REMOVE_ME="$REMOVE_ME $(find $file -mtime +$DAYS)"
- done
- fi
-done
-
-[ -d .archive ] || mkdir .archive
-
-for file in $REMOVE_ME ; do
- test -f ${file} && rm -f $file
- # ... but keep their md5sum / sha1sum:
- test -f ${file}.md5 && mv ${file}.md5 .archive
- test -f ${file}.sha1 && mv ${file}.sha1 .archive
-done
-
-# inform on successful removal:
-if [ "$(echo "$REMOVE_ME" | tr -d ' ' )" != "" ] ; then
- echo "Removed previous files $REMOVE_ME" | logger -t grml-buildd
-fi
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/bin/sh
-# Filename: cronjob.sh
-# Purpose: example for a grml-live buildd cronjob setup
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-# Add something like that to the crontab to execute grml-live buildd
-# every day at a specific time:
-# 50 0 * * * /usr/share/grml-live/buildd/cronjob.sh
-#
-# On the mirror (where you're hosting the ISOs) you might want to
-# install something like that in your crontab:
-# 02 * * * * /home/mika/cronjobs/link_latest.sh
-# 03 03 * * * /home/mika/cronjobs/cleanup.sh
-################################################################################
-
-die() {
- [ -n "$1" ] && echo "$1">&2
- exit 1
-}
-
-. /etc/grml/grml-buildd.conf || die "Could not source /etc/grml/grml-buildd.conf. Exiting."
-
-[ -n "$FLAVOURS" ] || die "\$FLAVOURS is not set. Exiting."
-
-if [ -r /usr/share/grml-live/buildd/buildd_running ] ; then
- echo "already running instance of grml-live buildd found, exiting.">&2
- echo "if you think this is not true: rm /usr/share/grml-live/buildd/buildd_running">&2
- exit 1
-fi
-
-echo $$ > /usr/share/grml-live/buildd/buildd_running
-
-for flavour in $FLAVOURS; do
- /usr/share/grml-live/buildd/grml-live_autobuild_${flavour}.sh
- /usr/share/grml-live/buildd/upload_isos.sh && \
- /usr/share/grml-live/buildd/remove_isos.sh
-done
-
-rm -f /usr/share/grml-live/buildd/buildd_running
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/bin/sh
-# Filename: /usr/share/grml-live/buildd/execute.sh
-# Purpose: main execution file for grml-live buildd
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-. /usr/share/grml-live/buildd/functions.sh || exit 1
-
-# execute main grml-live
-grml_live_run
-
-# store logs on remote server
-upload_logs
-
-# store information about ISO size
-iso_details
-
-# send report
-send_mail
-
-# move the ISO to final destination
-store_iso
-
-# clean exit
-bailout
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/bin/sh
-# Filename: /usr/share/grml-live/buildd/functions.sh
-# Purpose: main function file for grml-live buildd
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-die() {
- [ -n "$1" ] && echo "$1">&2
- exit 1
-}
-
-. /etc/grml/grml-buildd.conf || die "Could not source /etc/grml/grml-buildd.conf. Exiting."
-
-which mutt >/dev/null 2>&1 || die "mutt binary not found. Exiting."
-
-# exit if important variables aren't set:
-[ -n "$STORAGE" ] || die "\$STORAGE is not set. Exiting."
-[ -n "$SUITE" ] || die "\$SUITE is not set. Exiting."
-[ -n "$CLASSES" ] || die "\$CLASSES is not set. Exiting."
-[ -n "$NAME" ] || die "\$NAME is not set. Exiting."
-[ -n "$PRODUCT_NAME" ] || die "\$PRODUCT_NAME is not set. Exiting."
-
-# some defaults:
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
-DATE=$(date +'%Y%m%d_%H%M%S')
-TMP_DIR="$(mktemp -d)"
-[ -n "$TMP_DIR" ] || die "Could not create \$TMP_DIR. Exiting."
-ISO_NAME="${PRODUCT_NAME}.iso"
-
-# make sure we have same safe defaults:
-[ -n "$OUTPUT_DIR" ] || OUTPUT_DIR="${STORAGE}/grml-live_${DATE}.$$"
-[ -n "$ISO_DIR" ] || ISO_DIR=$STORAGE/grml-isos
-[ -n "$RECIPIENT" ] || RECIPIENT=root@localhost
-[ -n "$FROM" ] || FROM=root@localhost
-[ -n "$ARCH" ] || ARCH="$(dpkg --print-architecture)"
-MIRROR_LOG_PATH="logs/${PRODUCT_NAME}_${DATE}"
-
-if [ -n "$LOGFILE" ] ; then
- GRML_LOGFILE="$LOGFILE"
-else
- [ -n "$GRML_LOGFILE" ] || GRML_LOGFILE=/var/log/grml-live.log
-fi
-
-[ -n "$FAI_LOGFILES" ] || FAI_LOGFILES=/var/log/fai/grml/last
-
-# execute grml-live:
-grml_live_run() {
- if ! [ "$FORCE_REBUILD" = "1" ] ; then
- if [ -f "$ISO_DIR/$ISO_NAME" ] ; then
- echo "$ISO_DIR/$ISO_NAME exists already. Nothing to be done, exiting."
- exit 0
- fi
- fi
-
- # workaround the 32 chars limit of mkisofs -V ....
- # 'grml64-small-daily-squeeze 090223' is too long
- case $SUITE in
- sid) CODENAME=sid ;;
- squeeze) CODENAME=squ ;;
- wheezy) CODENAME=wheez ;;
- lenny) CODENAME=lenny ;;
- etch) CODENAME=etch ;;
- esac
-
- grml_name="$NAME-daily-$CODENAME"
- shortdate="$(date +%y%m%d)"
-
- TIME_START=$(date +%s)
- grml-live -F $* -a $ARCH -s $SUITE -c $CLASSES -o $OUTPUT_DIR \
- -g "$grml_name" -v "$shortdate" -r grml-live-autobuild -i $ISO_NAME \
- >/var/log/grml-buildd.log 2>&1 ; RC=$?
- TIME_END=$(date +%s)
- WALLTIME=$(($TIME_END-$TIME_START))
-
- if [ "$RC" = "0" ] ; then
- RC_INFO=success
- else
- RC_INFO=error
- return 1
- fi
-}
-
-# store logs on remote server:
-upload_logs() {
- [ -n "$RSYNC_MIRROR" ] || return 1
- rsync --exclude dmesg.log --times --partial --copy-links -rltDz --quiet /var/log/grml-buildd.log \
- $FAI_LOGFILES/* $GRML_LOGFILE $RSYNC_MIRROR/$MIRROR_LOG_PATH/
-}
-
-# store information of ISO size:
-iso_details() {
- if ! [ -f "$OUTPUT_DIR/grml_isos/$ISO_NAME" ] ; then
- ISO_DETAILS="There was an error creating $ISO_NAME"
- else
- ISO_DETAILS=$(ls -lh $OUTPUT_DIR/grml_isos/$ISO_NAME)
- fi
-}
-
-# send status mail:
-send_mail() {
- echo "$ISO_DETAILS
-
-Return code of grml-live was: $RC
-Time: $WALLTIME
-
-Full logs at: $MIRROR_URL/$MIRROR_LOG_PATH/
-
-$(grep -A2 'Executed grml-live' $GRML_LOGFILE || echo "* executed grml-live command line not available")
-
-$(grep -A2 'Executed FAI' $GRML_LOGFILE || echo "* executed FAI command line not available")
-
-The following errors have been noticed (several might be warnings only):
-
-$(grep -i error $FAI_LOGFILES/*.log /var/log/grml-buildd.log | grep -ve liberror -ve libgpg-error -ve libcomerr -ve 'no errors found' || echo "* nothing")
-
-The following errors have been noticed in FAI scripts:
-
-$(grep -B2 "FAILED with exit code" $FAI_LOGFILES/* | echo "* nothing")
-
-The following warnings have been noticed:
-
-$(grep -i warn $FAI_LOGFILES/* /var/log/grml-buildd.log || echo "* nothing")
-
-There following dependency problems have been noticed:
-
-$(grep -i "Not Installed" $FAI_LOGFILES/software.log || echo "* nothing")
-
-The following packages could not be installed:
-
-$(grep -i "Couldn't find.*package" $FAI_LOGFILES/software.log | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/' | sort -u || echo "* nothing")
-
-See full logs for further details.
-
---" "
-Automatically generated mail by $SCRIPTNAME
-" | \
- mutt -e "my_hdr From: grml-live autobuild daemon <$FROM>" -s "$PRODUCT_NAME - $RC_INFO" \
- -a /var/log/grml-buildd.log -- "$RECIPIENT"
-}
-
-# make sure we store the final iso:
-store_iso() {
- if [ "$RC" = "0" ] ; then
- [ -d "$ISO_DIR" ] || mkdir "$ISO_DIR"
- mv "${OUTPUT_DIR}/grml_isos/${ISO_NAME}" "$ISO_DIR"
- if [ -r "${OUTPUT_DIR}/grml_isos/${ISO_NAME}.md5" ] ; then
- mv "${OUTPUT_DIR}/grml_isos/${ISO_NAME}.md5" "${ISO_DIR}"
- fi
- if [ -r "${OUTPUT_DIR}/grml_isos/${ISO_NAME}.sha1" ] ; then
- mv "${OUTPUT_DIR}/grml_isos/${ISO_NAME}.sha1" "${ISO_DIR}"
- fi
- fi
-}
-
-# allow clean exit:
-bailout() {
- if [ "$RC" = "0" ] ; then
- rm -rf "$TMP_DIR" "$OUTPUT_DIR"
- else
- echo "building ISO failed, keeping build files [${OUTPUT_DIR} / ${TMP_DIR}]">&2
- fi
-
-}
-
-trap bailout 1 2 3 15
-
-## END OF FILE #################################################################
+++ /dev/null
-# Filename: /etc/grml/grml-buildd.conf
-# Purpose: configuration file for grml-live buildd
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-# where do you want to store chroot/ISOs/...? Must be set!
-#STORAGE=/grml-live/
-
-# build server (not necessarily daily-ISO storage server!),
-# who should get notification mails?
-# default: root@localhost
-#RECIPIENT=root@example.org
-
-# daily-ISO storage server (not necessarily build server!),
-# where should mails be reported to of daily
-# default: root@localhost
-#STORAGE_ADMIN=buildd@example.org
-
-# do you want to force rebuild of already present ISOs?
-# Set it to '1' to force rebuild, otherwise use '0'.
-#FORCE_REBUILD=1
-
-# what do you want to use for "From:" in notification mails?
-# default: root@localhost
-#FROM=root@localhost
-
-# where do you want to place your collected grml ISOs?
-#ISO_DIR=/grml-live/grml-isos/
-
-# where do you want to upload ISOs to?
-# see /usr/share/grml-live/buildd/upload_isos.sh
-#RSYNC_MIRROR=grml-build@localhost:/path/to/grml/isos/daily/
-
-# which directory should be cleaned up?
-# used for example inside /usr/share/grml-live/buildd/cleanup.sh
-#MIRROR_DIRECTORY=/srv/mirror/www.grml.org/daily
-
-# URL which exposes MIRROR_DIRECTORY
-#MIRROR_URL=http://daily.grml.org
-
-# which flavours are built
-#FLAVOURS=" \
-# grml-small_wheezy grml-small_sid \
-# grml-medium_wheezy grml-medium_sid \
-# grml_wheezy grml_sid \
-# grml64-small_wheezy grml64-small_sid \
-# grml64-medium_wheezy grml64-medium_sid \
-# grml64_wheezy grml64_sid \
-# "
-
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml-medium_sid_$SHORTDATE
-SUITE=sid
-CLASSES='GRMLBASE,GRML_MEDIUM,RELEASE,I386,IGNORE'
-NAME=grml-medium
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml-medium_squeeze_$SHORTDATE
-SUITE=squeeze
-CLASSES='GRMLBASE,GRML_MEDIUM,RELEASE,I386,IGNORE'
-NAME=grml-medium
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml-medium_wheezy_$SHORTDATE
-SUITE=wheezy
-CLASSES='GRMLBASE,GRML_MEDIUM,RELEASE,I386,IGNORE'
-NAME=grml-medium
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml-small_sid_$SHORTDATE
-SUITE=sid
-CLASSES='GRMLBASE,GRML_SMALL,RELEASE,I386,IGNORE'
-NAME=grml-small
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml-small_squeeze_$SHORTDATE
-SUITE=squeeze
-CLASSES='GRMLBASE,GRML_SMALL,RELEASE,I386,IGNORE'
-NAME=grml-small
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml-small_wheezy_$SHORTDATE
-SUITE=wheezy
-CLASSES='GRMLBASE,GRML_SMALL,RELEASE,I386,IGNORE'
-NAME=grml-small
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64-medium_sid_$SHORTDATE
-SUITE=sid
-CLASSES='GRMLBASE,GRML_MEDIUM,RELEASE,AMD64,IGNORE'
-NAME=grml64-medium
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64-medium_squeeze_$SHORTDATE
-SUITE=squeeze
-CLASSES='GRMLBASE,GRML_MEDIUM,RELEASE,AMD64,IGNORE'
-NAME=grml64-medium
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64-medium_wheezy_$SHORTDATE
-SUITE=wheezy
-CLASSES='GRMLBASE,GRML_MEDIUM,RELEASE,AMD64,IGNORE'
-NAME=grml64-medium
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64-small_sid_$SHORTDATE
-SUITE=sid
-CLASSES='GRMLBASE,GRML_SMALL,RELEASE,AMD64,IGNORE'
-NAME=grml64-small
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64-small_squeeze_$SHORTDATE
-SUITE=squeeze
-CLASSES='GRMLBASE,GRML_SMALL,RELEASE,AMD64,IGNORE'
-NAME=grml64-small
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64-small_wheezy_$SHORTDATE
-SUITE=wheezy
-CLASSES='GRMLBASE,GRML_SMALL,RELEASE,AMD64,IGNORE'
-NAME=grml64-small
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64_sid_$SHORTDATE
-SUITE=sid
-CLASSES='GRMLBASE,GRML_FULL,LATEX_CLEANUP,RELEASE,AMD64,IGNORE'
-NAME=grml64
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64_squeeze_$SHORTDATE
-SUITE=squeeze
-CLASSES='GRMLBASE,GRML_FULL,LATEX_CLEANUP,RELEASE,AMD64,IGNORE'
-NAME=grml64
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml64_wheezy_$SHORTDATE
-SUITE=wheezy
-CLASSES='GRMLBASE,GRML_FULL,LATEX_CLEANUP,RELEASE,AMD64,IGNORE'
-NAME=grml64
-SCRIPTNAME="$(basename $0)"
-ARCH=amd64
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml_sid_$SHORTDATE
-SUITE=sid
-CLASSES='GRMLBASE,GRML_FULL,LATEX_CLEANUP,RELEASE,I386,IGNORE'
-NAME=grml
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml_squeeze_$SHORTDATE
-SUITE=squeeze
-CLASSES='GRMLBASE,GRML_FULL,LATEX_CLEANUP,RELEASE,I386,IGNORE'
-NAME=grml
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/sh
-
-# settings for grml_live_run:
-SHORTDATE=$(date +%Y%m%d)
-PRODUCT_NAME=grml_wheezy_$SHORTDATE
-SUITE=wheezy
-CLASSES='GRMLBASE,GRML_FULL,LATEX_CLEANUP,RELEASE,I386,IGNORE'
-NAME=grml
-SCRIPTNAME="$(basename $0)"
-ARCH=i386
-
-# finally just source main file
-. /usr/share/grml-live/buildd/execute.sh || exit 1
+++ /dev/null
-#!/bin/bash
-
-MIRROR_DIRECTORY=$1
-if [ -z "$MIRROR_DIRECTORY" ] ; then
- echo "Usage: jenkins-link_latest.sh path_to_public_directory flavour1 ... flavourN" >&2
- exit 1
-fi
-shift
-
-FLAVOURS=$*
-
-JOBS=/var/lib/jenkins/jobs
-
-cd $MIRROR_DIRECTORY || exit 1
-for f in $FLAVOURS; do
- [ -d $JOBS/$f/builds ] || continue
- [ -d ./$f ] && rm -r ./$f
- mkdir $f
- for buildpath in $JOBS/$f/builds/*_*; do
- build=$(basename $buildpath)
- mkdir $f/$build
- for isofile in $buildpath/archive/grml_isos/*; do
- [ -e $isofile ] && ln -s $isofile $f/$build/
- done
- [ -d $buildpath/archive/grml_logs ] && ln -s $buildpath/archive/grml_logs $f/$build/logs
- done
- latest=$(basename $(readlink $JOBS/$f/lastSuccessful))
- mkdir ${f}/latest
- if [ -e $f/$latest/*.iso ]; then
- latestname=$(basename ${f}/$latest/*.iso)
- ln -s ../$latest/${latestname} ${f}/latest/${f}_latest.iso
- ln -s ../$latest/${latestname}.md5 ${f}/latest/${f}_latest.iso.md5
- ln -s ../$latest/${latestname}.sha1 ${f}/latest/${f}_latest.iso.sha1
- fi
-done
+++ /dev/null
-#!/bin/sh
-# Filename: /usr/share/grml-live/buildd/link_latest.sh
-# Purpose: create symlinks to the most recent snapshot ISOs
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-set -e
-
-dir="$(dirname $0)"
-
-if [ -r /etc/grml/grml-buildd.conf ] ; then
- . /etc/grml/grml-buildd.conf
-elif [ -r "${dir}/grml-buildd.conf" ] ; then
- . "${dir}/grml-buildd.conf"
-fi
-
-# directory where daily ISOs are stored locally
-if [ -z "$MIRROR_DIRECTORY" ] ; then
- echo "Error: \$MIRROR_DIRECTORY is not set. Exiting." >&2
- exit 1
-fi
-
-if [ -z "$FLAVOURS" ] ; then
- echo "Error: \$FLAVOURS is not set. Exiting." >&2
- exit 2
-fi
-
-if ! cd "$MIRROR_DIRECTORY" ; then
- echo "Error: could not change directory to $MIRROR_DIRECTORY" >&2
- exit 1
-fi
-
-echo "---------------------------" >> "$MIRROR_DIRECTORY"/.timestamp_link
-for flavour in $FLAVOURS; do
- ISO="$(ls -1 $flavour/*.iso | tail -1)"
- if [ -n "$ISO" ] ; then
- latest="$(basename ${ISO%%_[0-9]*})_latest.iso"
- ln -sf $ISO ${latest}
- # ln -sf ${ISO}.md5 ${latest}.md5
- # http://bts.grml.org/grml/issue814
- name=$(awk '{print $2}' "${ISO}".md5)
- sed "s/$name/$latest/" "${ISO}".md5 > "${latest}".md5
- name=$(awk '{print $2}' "${ISO}".sha1)
- sed "s/$name/$latest/" "${ISO}".sha1 > "${latest}".sha1
- echo "$ISO" >> "$MIRROR_DIRECTORY"/.timestamp_link
- fi
-done
-echo "---------------------------" >> "$MIRROR_DIRECTORY"/.timestamp_link
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/bin/sh
-# Filename: /usr/share/grml-live/buildd/remove_isos.sh
-# Purpose: upload grml ISOs to a rsync server
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-. /etc/grml/grml-buildd.conf || exit 1
-[ -n "$ISO_DIR" ] || exit 2
-
-cd $ISO_DIR || exit 3
-
-for file in *.iso ; do
- rm -f "$file" "${file}".md5 "${file}".sha1
-done
-
-## END OF FILE #################################################################
+++ /dev/null
-#!/bin/sh
-# Filename: /usr/share/grml-live/buildd/upload_isos.sh
-# Purpose: upload grml ISOs to a rsync server
-# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
-# Bug-Reports: see http://grml.org/bugs/
-# License: This file is licensed under the GPL v2 or any later version.
-################################################################################
-
-. /etc/grml/grml-buildd.conf || exit 1
-[ -n "$RSYNC_MIRROR" ] || exit 2
-[ -n "$ISO_DIR" ] || exit 3
-[ -n "$FLAVOURS" ] || exit 5
-
-cd $ISO_DIR || exit 4
-
-umask 002
-for file in *.iso ; do
- [ -f "${file}.md5" ] || md5sum "$file" > "${file}".md5
- [ -f "${file}.sha1" ] || sha1sum "$file" > "${file}".sha1
- chmod 664 "${file}" "${file}".md5 "${file}".sha1
-done
-
-for flavour in $FLAVOURS; do
- if ls $flavour* 1>/dev/null 2>&1 ; then
- rsync --times --partial -az --quiet $flavour* $RSYNC_MIRROR/$flavour/
- fi
-done
-
-## END OF FILE #################################################################
information about grml-live builds in a sqlite3 database.
More details are available in the provided grml-live-db manpage
and /usr/share/doc/grml-live-db/grml-live-db.html
-
-Package: grml-live-buildd
-Architecture: all
-Depends: ${misc:Depends}, grml-live, mutt (>= 1.5.20), sudo
-Description: autobuild daemon for grml-live
- This package provides example scripts for a simple autobuild
- daemon for the grml-live framework. Those scripts are used
- for creating the official daily grml ISOs provided through
- http://daily.grml.org/
+++ /dev/null
-usr/share/grml-live/buildd
+++ /dev/null
-buildd/grml-buildd.conf etc/grml/
-buildd/*.sh usr/share/grml-live/buildd/
+++ /dev/null
-grml-live-buildd: unknown-section grml
dh_md5sums -p$@ -P$(b)/$@
dh_builddeb -p$@ -P$(b)/$@
-grml-live-buildd: install
- @echo "--- Building: $@"
- dh_installdirs -p$@ -P$(b)/$@
- dh_link -p$@ -P$(b)/$@
- dh_installdocs -p$@ -P$(b)/$@
- dh_installchangelogs -p$@ -P$(b)/$@
- dh_install -p$@ -P$(b)/$@
- dh_strip -p$@ -P$(b)/$@
- dh_compress -p$@ -P$(b)/$@
- mkdir -p $(b)/$(@)/usr/share/lintian/overrides/
- cp -av debian/overrides.$(@) $(b)/$(@)/usr/share/lintian/overrides/$(@)
- dh_fixperms -p$@ -P$(b)/$@
- dh_makeshlibs -p$@ -P$(b)/$@ -V
- dh_installdeb -p$@ -P$(b)/$@
- dh_shlibdeps -p$@ -P$(b)/$@
- dh_installdebconf -p$@ -P$(b)/$@
- dh_gencontrol -p$@ -P$(b)/$@
- dh_md5sums -p$@ -P$(b)/$@
- dh_builddeb -p$@ -P$(b)/$@
-
# Build architecture-dependent files here.
binary-all: build install
# Build architecture-independent files here.
-binary-indep: build install grml-live grml-live-db grml-live-buildd
+binary-indep: build install grml-live grml-live-db
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
that it needs to be uppercase letters matching the class names, so: AMD64.tar.gz
for amd64 and I386.tar.gz for i386).
-[[autobuild]]
-How do I set up an autobuild environment?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you want to set up a system like link:http://daily.grml.org/[daily.grml.org]
-the Debian package grml-live-buildd provides all you need to start. Start with
-figuring out the cron job script /usr/share/grml-live/buildd/cronjob.sh.
-
-If you want to automatically update the grml-live Debian package on your build
-system based on the git tree of grml-live (so you get bleeding edge of
-development which might is interesting for services like daily.grml.org) the
-provided release_helper.sh script provides everything you need. Execute as root:
-
- echo "deb file:/home/grml-live-git/grml-live.build-area/ ./" >> /etc/apt/sources.list.d/grml-live.list
- adduser --disabled-login --disabled-password grml-live-git
-
-Execute 'visudo' to update sudo configuration and add the following line:
-
- grml-live-git ALL=NOPASSWD: /usr/bin/apt-get
-
-Switch to user grml-live-git and configure the rest:
-
- su - grml-live-git
- mkdir grml-live.build-area
- git clone git://git.grml.org/grml-live.git
- git config --global user.name "Grml-Live Git Autobuild"
- git config --global user.email "grml-live-git@$(hostname)"
-
-Finally install a cron job (as user grml-live-git) like:
-
- 30 00 * * * cd /home/grml-live-git/grml-live.git/ && env AUTOBUILD=1 scripts/release_helper.sh >/home/grml-live-git/grml-live-build.log
-
-Tip: To find out the build date of the installed grml-live package just execute:
-
- % apt-cache policy grml-live | grep 'Installed.*autobuild'
- Installed: 0.13.1~autobuild1300450381
-
-and run "date -ud @$STRING" where $STRING is the number behind the "autobuild",
-like:
-
- % date -ud @1300450081
- Fri Mar 18 12:08:01 UTC 2011
-
[[download]]
Download / install grml-live as a Debian package
------------------------------------------------