|
- #!/bin/sh
-
- conffile="`mktemp -q /tmp/lol-bitten-XXXXXXXX 2>/dev/null`"
- if [ "${conffile}" = "" ]; then
- conffile="`mktemp 2>/dev/null`"
- fi
- builddir="/tmp/lol-bitten-`whoami`"
- url="http://lol.zoy.org/builds"
-
- append() {
- echo "$*" >> "${conffile}"
- }
-
- cleanup() {
- rm -f "${conffile}"
- rm -rf "${builddir}"
- }
-
- bailout() {
- cleanup
- # Exit gracefully
- exit 0
- }
-
- trap bailout HUP INT QUIT ABRT KILL ALRM TERM
-
- #
- # Check for command line
- #
-
- if [ "$#" != 2 ]; then
- echo "Usage: $0 <username> <password>"
- exit 1
- fi
-
- #
- # Clean up working directory
- #
- cleanup
- if [ -e "${builddir}" ]; then
- echo "Error: cannot get rid of ${builddir}"
- exit 1
- fi
-
- #
- # Operating system information
- #
-
- append "[os]"
- append "name = `uname -srmo 2>/dev/null || uname -srm`"
- append "version = 0"
- family="`uname -s | tr A-Z a-z`"
- case "$family" in
- mingw*) family="windows" ;;
- darwin*) family="osx" ;;
- esac
- append "family = $family"
- # This random token prevents HTTP conflicts when several instances
- # are run from the same machine.
- append "token = $$$RANDOM"
- append ""
-
- #
- # Hardware information
- #
-
- append "[machine]"
- name="`uname -n | tr A-Z a-z | sed 's/[.].*//'`"
- case "$name" in
- d*e*s*o*v*) name="putois" ;;
- esac
- append "name = $name"
- processor="`uname -m`"
- case "$processor" in
- x86_64) processor="amd64" ;;
- i*86) processor="i386" ;;
- esac
- # Windows defines a lot of crazy shit, try to make sense of it
- case "$PROCESSOR_ARCHITECTURE" in
- amd64|AMD64) processor="amd64" ;;
- x86|X86) processor="i386" ;;
- esac
- case "$PROCESSOR_ARCHITEW6432" in
- amd64|AMD64) processor="amd64" ;;
- x86|X86) processor="i386" ;;
- esac
- append "processor = $processor"
- append ""
-
- #
- # Authentication information
- #
-
- append "[authentication]"
- append "username = $1"
- append "password = $2"
- append ""
-
- #
- # Visual Studio configuration
- #
-
- # FIXME: we also need to check for the Visual Studio SDK
- append "[msvc]"
- if [ -n "$VS100COMNTOOLS" ]; then
- append "version = 10"
- elif [ -n "$VS110COMNTOOLS" ]; then
- append "version = 11"
- elif [ -n "$VS90COMNTOOLS" ]; then
- append "version = 9"
- fi
- append ""
-
- #
- # Xbox development kit
- #
-
- append "[xdk]"
- if [ -n "$XEDK" ]; then
- # FIXME: we don't know how to check the version
- append "version = 2.0.20675.0"
- fi
- append ""
-
- #
- # PS3 development kit
- #
-
- append "[ps3sdk]"
- # Try to "detect" the SNC compiler on Windows
- if [ -n "$SN_PS3_PATH" ]; then
- append "version = 410"
- fi
- # The setup is easier to detect on Linux
- if [ -f "$CELLSDK/version-SDK" ]; then
- append "version = $(cat "$CELLSDK/version-SDK")"
- fi
- append ""
-
- #
- # mingw32 / mingw-w64
- #
-
- append "[mingw64]"
- if x86_64-w64-mingw32-g++ --version >/dev/null 2>&1; then
- append "version = $(x86_64-w64-mingw32-g++ --version | sed -ne 's/.*g++ *([^)]*) *//p')"
- fi
- append ""
-
- append "[mingw32]"
- if i686-w64-mingw32-g++ --version >/dev/null 2>&1; then
- append "version = $(i686-w64-mingw32-g++ --version | sed -ne 's/.*g++ *([^)]*) *//p')"
- fi
- append ""
-
- #
- # Android NDK
- #
-
- append "[ndk]"
- if [ "$family" != "windows" ]; then
- if [ -f "$ANDROID_NDK_ROOT/RELEASE.TXT" ]; then
- append "version = $(cat "$ANDROID_NDK_ROOT/RELEASE.TXT")"
- fi
- fi
- append ""
-
- #
- # Google NaCl SDK
- #
-
- append "[pepper]"
- if [ "$family" != "windows" ]; then
- if [ -d "$NACL_SDK_ROOT" ]; then
- pepper_version=0
- for dir in "$NACL_SDK_ROOT/pepper_"*; do
- new_version="$(echo "$dir" | sed 's/.*_//')"
- if [ "$new_version" -gt "$pepper_version" ]; then
- pepper_version="$new_version"
- fi
- done
- if [ "$pepper_version" != 0 ]; then
- append "version = $pepper_version"
- fi
- fi
- fi
- append ""
-
- #
- # Raspberry Pi cross-compiler
- #
-
- append "[raspi]"
- if [ "$family" != "windows" ]; then
- if [ -d "$RASPI_SDK_ROOT/tools" ]; then
- append "version = 0"
- fi
- fi
- append ""
-
- #
- # Show what we just did here
- #
-
- cat "${conffile}"
-
- #
- # Fix system
- #
-
- if [ "$family" = "osx" ]; then
- # The version of Subversion shipped by Apple is antique; try to
- # use the one in /usr/local/bin instead.
- PATH="/usr/local/bin:$PATH"
- export PATH
- fi
-
- #
- # Launch everything
- #
-
- while : ; do
- bitten-slave "$url" \
- -f "${conffile}" \
- --name "$name" \
- --work-dir="${builddir}"
- rm -rf "${builddir}"
- sleep 10
- done
-
- bailout
|