force enable DO_CUMULATE
[platform/upstream/build.git] / common_functions
old mode 100644 (file)
new mode 100755 (executable)
index 8a67511..da0c093
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+: ${CACHE_DIR:=/var/cache/build}
+
 set_build_arch()
 {
     : ${BUILD_HOST_ARCH:=`uname -m`}
@@ -13,7 +15,14 @@ set_build_arch()
       i686) BUILD_ARCH="i686:i586:i486:i386" ;;
       i586) BUILD_ARCH="i586:i486:i386" ;;
       i486) BUILD_ARCH="i486:i386" ;;
+      i386) BUILD_ARCH="i386" ;;
       x86_64) BUILD_ARCH="x86_64:i686:i586:i486:i386" ;;
+      sparc64v) BUILD_ARCH="sparc64v:sparc64:sparcv9v:sparcv9:sparcv8:sparc" ;;
+      sparc64) BUILD_ARCH="sparc64:sparcv9:sparcv8:sparc" ;;
+      sparcv9v) BUILD_ARCH="sparcv9v:sparcv9:sparcv8:sparc" ;;
+      sparcv9) BUILD_ARCH="sparcv9:sparcv8:sparc" ;;
+      sparcv8) BUILD_ARCH="sparcv8:sparc" ;;
+      sparc) BUILD_ARCH="sparc" ;;
     esac
     if test "$BUILD_ARCH" != "${BUILD_ARCH#i686}" ; then
        cpuflags=`grep ^flags /proc/cpuinfo`
@@ -24,3 +33,73 @@ set_build_arch()
        fi
     fi
 }
+
+check_exit()
+{
+    if test -e $BUILD_ROOT/exit; then
+       echo "exit ..."
+       cleanup_and_exit 1
+    fi
+}
+
+is_emulator_arch()
+{
+    local arch
+    local qarch=":$BUILD_ARCH:"
+    for arch in $EMULATOR_ARCHS; do
+       if test "$qarch" != "${qarch/:$arch:/}" -a "$BUILD_HOST_ARCH" != "$arch"; then
+           return 0
+       fi
+    done
+    return 1
+}
+
+check_use_emulator()
+{
+    is_emulator_arch || return
+
+    if [ -z "$VM_TYPE" ]; then
+       return 0
+    fi
+
+    # to run the qemu initialization in the XEN chroot, we need to
+    # register it with a static program or shell script
+    case "$BUILD_HOST_ARCH" in
+       i?86|x86_64)
+           if test -e $BUILD_DIR/initvm && \
+               test -e $BUILD_DIR/qemu-reg; then
+               return 0        # prefer initvm to handle registration
+           elif test -e /bin/bash-static \
+               -a -e /bin/mount-static \
+               -a -e /usr/sbin/qemu-binfmt-conf.sh; then
+               return 0        # as backup use /usr/sbin/qemu-binfmt.conf.sh
+           else
+               # XXX: error?
+               echo "Warning: cross compile not possible due to missing static binaries"
+           fi
+       ;;
+    esac
+    return 1
+}
+
+# usage:
+# progress_setup LIST
+# for I in $LIST; do
+#    progress_step LIST
+#    action $I 
+# done
+
+# $1 name of a textual list
+progress_setup() {
+    eval "$1__ARRAY__=(\$$1)"
+    eval "$1__INDEX__=1"
+    eval "$1__LENGTH__=\${#$1__ARRAY__[@]}"
+}
+
+# $1 name of a textual list
+# $2 optional, printf format for 2 numeric arguments (current, total)
+progress_step() {
+    local IDX=$1__INDEX__
+    local LEN=$1__LENGTH__
+    printf "${2-[%d/%d] }" $(($IDX++)) ${!LEN}
+}