]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
Added a new command: ./make.sh batch cron, which is for calling the build system...
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 7 Jan 2009 15:02:50 +0000 (16:02 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 7 Jan 2009 15:02:50 +0000 (16:02 +0100)
.config-default
tools/make-batch
tools/make-cron [new file with mode: 0755]
tools/make-include
tools/make-interactive

index af60b8a44bd189b502a60c0ff8859097777dd433..b9d3d77a56a9ced70a3d0d3e12148181e840add8 100644 (file)
 ###############################################################################
 # Target Architecture                                                         #
 ###############################################################################
-# TARGET is one out of i686|i586|via-c7|via-c3|geodelx.                       #
+# TARGET is one out of i686|i586|i486|atom330|core2duo|via-c7|via-c3|geodelx. #
 # This is the target architecture you specify for the system that is built.   #
 # Default is i686.                                                            #
+# ALLOWED_TARGETS is a setting for cron builds only. By default it includes   #
+# all targets the host can build (./make.sh check targets).                   #
+# So, if you want to build only some of them, define them in ALLOWED_TARGETS. #
 ###############################################################################
 
 #TARGET=i686
+#ALLOWED_TARGETS="i686 i586 atom330" # Just an example
 
 ###############################################################################
 # Embedded Build                                                              #
index 2ae671995195c37d07827d0c79cb0d238118b325..5358751129a69107f834380bdd5f21190c10518d 100644 (file)
@@ -25,22 +25,6 @@ BATCHLOG=$BASEDIR/log_${TARGET}/_build.00-batch.log
 # Starts the batch process in the background                                  #
 ###############################################################################
 batch_start() {
-       if [ -e "$RUNNING" ]; then
-               echo -n "Build is already running..."
-               beautify message FAIL
-               exit 1
-       fi
-
-       git_diff
-       git checkout -f # Remove all local changes !!!
-       git_pull --batch
-
-       if [ -e "$FAILED" ]; then
-               echo -n "Last build failed..."
-               beautify message FAIL
-               exit 1
-       fi
-
        [ "$1" = "--clean" ] && TARGET=$TARGET $0 clean
 
        screen -dmS ipfire $0 batch _run
diff --git a/tools/make-cron b/tools/make-cron
new file mode 100755 (executable)
index 0000000..c0c9ee3
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/bash
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2008, 2009 Michael Tremer & Christian Schmidt                 #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+ALLOWED_TARGETS=${ALLOWED_TARGETS-$(check_supported_targets)}
+
+cron_run() {
+       if [ "$PATH" = "/sbin:/bin" ];
+               export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+       fi
+
+       local RAND=$(( $RANDOM % $(wc -w <<< $ALLOWED_TARGETS) ))
+
+       if [ "$(dirname $0)" != "." ]; then
+               dialogerror "You must change into the basedirectory before you run \"./$(basename $0) $@\""
+               exit 1
+       fi
+
+       if [ -e "$RUNNING" ]; then
+               dialogerror "Build is already running at the moment..." 2>&1
+               exit 0
+       fi
+
+       if [ -e "$FAILED" ]; then
+               dialogerror "Build failed..." 2>&1
+               exit 0
+       fi
+
+       # Pull latest changes
+       git_diff
+       git checkout -f # Remove all local changes !!!
+       git_pull --batch
+
+       local COUNT=0
+       for i in $ALLOWED_TARGETS; do
+               COUNT=$(( $COUNT + 1 ))
+               [ "$COUNT" != "$(( $RAND + 1 ))" ] && continue
+               TARGET=$i $0 batch start --clean
+               break
+       done
+}
index 8a3610e631488b179889b0892a95436cab6f6e39..9259e29cb9dd8190d089287f85130ee578a5950e 100644 (file)
@@ -60,6 +60,7 @@ mkdir $BASEDIR/log_${TARGET}/ 2>/dev/null
 . $BASEDIR/tools/make-git
 . $BASEDIR/tools/make-packages
 . $BASEDIR/tools/make-vm
+. $BASEDIR/tools/make-cron
 
 evaluate() {
        RETVAL=$?
@@ -166,7 +167,8 @@ lfsmakecommoncheck()
        done
 
        # On debug build, we don't strip
-       if [ "$1" == "strip" -a "$BUILD_DEBUG" == "1" ]; then
+       if [ "$STAGE" != "toolchain" -a \
+                       "$1" == "strip" -a "$BUILD_DEBUG" == "1" ]; then
                beautify result SKIP
                return 1
        fi
index cad80771df548d7e62ce18818de12baa06810481..f92c0dcb0991392d39bc3def53e3256c1321e27f 100644 (file)
@@ -46,6 +46,9 @@ shell)
 batch)
        # build the distro in background
        case "$2" in
+               cron)
+                       cron_run
+                       ;;
                start)
                        batch_start $3
                        ;;