diff options
author | Vishal Bhoj <vishal.bhoj@linaro.org> | 2014-11-24 12:14:39 +0530 |
---|---|---|
committer | Vishal Bhoj <vishal.bhoj@linaro.org> | 2014-11-24 12:49:00 +0530 |
commit | 3e34bde3e3a6355f53e214f8b1ab0b0c7420cd9b (patch) | |
tree | 818f4531995d436d30ab73bfdb1f649509b93b48 | |
parent | 8d0e2ae7747ad7fcbab35a4b9b3a52ad0bf71f45 (diff) |
Add support to build on VPSfor-upstreaming
Change-Id: I5ee21bb42ccee882de3c852014e7a78d52e424c8
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
-rw-r--r-- | build-scripts/build-android | 1 | ||||
-rw-r--r-- | build-scripts/helpers | 5 | ||||
-rwxr-xr-x | node/build | 95 | ||||
-rwxr-xr-x | node/lava-submit | 6 | ||||
-rwxr-xr-x | node/prepare_build_config.py | 19 |
5 files changed, 92 insertions, 34 deletions
diff --git a/build-scripts/build-android b/build-scripts/build-android index 4f44f73..16ae211 100644 --- a/build-scripts/build-android +++ b/build-scripts/build-android @@ -6,6 +6,7 @@ # http://www.eclipse.org/legal/epl-v10.html ############################################################################### +export PATH=$PATH:~/bin/ set -o errtrace if [ ! -n "$SOURCE_OVERLAY" ]; diff --git a/build-scripts/helpers b/build-scripts/helpers index d421968..b6ef6af 100644 --- a/build-scripts/helpers +++ b/build-scripts/helpers @@ -236,3 +236,8 @@ product2lamc_dev () { echo -n "$1";; esac } + +#Check if we are building on VPS +is_on_ec2() { + [ -e "/etc/cloud/cloud.cfg" ] +} @@ -24,7 +24,11 @@ set -xe # to evaluate build config (== arbitrary code) as such. function get_ramdisk_size () { sudo -E -H -u jenkins-build bash -es <<\EOF - source /var/run/build-tools/build-config + if is_on_ec2;then + source /var/run/build-tools/build-config + else + source /tmp/build-tools/build-config + fi echo $RAMDISK_SIZE EOF } @@ -35,17 +39,30 @@ function update-repo-tool () { mv /tmp/repo /usr/local/bin/repo } -update-repo-tool +if is_on_ec2;then + update-repo-tool +fi BUILD_SCRIPT_ROOT=$(readlink -f "$(dirname "${0}")/../build-scripts") -mkdir -p /var/run/build-tools + +if is_on_ec2; then + mkdir -p /var/run/build-tools +else + mkdir -p /tmp/build-tools +fi + if ! $BUILD_SCRIPT_ROOT/../node/prepare_build_config.py --base64 "$2"; then echo "Early exit due to build environment validation failure" exit 1 fi -# At this point, safely sourceable build config is in /var/run/build-tools/build-config -cat /var/run/build-tools/build-config -source /var/run/build-tools/build-config +# At this point, safely sourceable build config is in /tmp/build-tools/build-config +if is_on_ec2 ;then + cat /var/run/build-tools/build-config + source /var/run/build-tools/build-config +else + cat /tmp/build-tools/build-config + source /tmp/build-tools/build-config +fi if [ -n "$BUILD_CONFIG_REPO" ]; then echo "Fetching build config indirectly from git" @@ -58,7 +75,11 @@ if [ -n "$BUILD_CONFIG_REPO" ]; then git checkout "$BUILD_CONFIG_BRANCH" $BUILD_SCRIPT_ROOT/../node/prepare_build_config.py "$(cat "$BUILD_CONFIG_FILENAME")" cd $save_dir - source /var/run/build-tools/build-config + if is_on_ec2; then + source /var/run/build-tools/build-config + else + source /tmp/build-tools/build-config + fi fi @@ -71,38 +92,56 @@ umount build || true rm -rf build mkdir build -ramdisk_size=$(get_ramdisk_size $2) +if is_on_ec2;then + ramdisk_size=$(get_ramdisk_size $2) -if [ -z "$ramdisk_size" ]; then - ramdisk_size=0 + if [ -z "$ramdisk_size" ]; then + ramdisk_size=0 + fi fi # Put build/* on a ramdisk to speed up build -if [ -z "$ramdisk_size" -o "$ramdisk_size" != "0" ]; then - mem_total=`cat /proc/meminfo | grep MemTotal | sed -s 's/[^0-9]*\([0-9]*\) kB/\1/'` - if [ "$mem_total" -gt 15680064 ]; then - ramdisk_size=${ramdisk_size:-11750M} - echo "Using $ramdisk_size tmpfs for build" - mount -t tmpfs -o size=$ramdisk_size tmpfs build - elif [ "$mem_total" -gt 12485760 ]; then - # XXX mounting build/out/target on a tmpfs is probably a bit android specific... - ramdisk_size=${ramdisk_size:-11G} - echo "Using $ramdisk_size tmpfs for build/out/target" - mkdir -p build/out/target - mount -t tmpfs -o size=$ramdisk_size tmpfs build/out/target - else - mkdir build/out +if is_on_ec2; then + if [ -z "$ramdisk_size" -o "$ramdisk_size" != "0" ]; then + mem_total=`cat /proc/meminfo | grep MemTotal | sed -s 's/[^0-9]*\([0-9]*\) kB/\1/'` + if [ "$mem_total" -gt 15680064 ]; then + ramdisk_size=${ramdisk_size:-11750M} + echo "Using $ramdisk_size tmpfs for build" + mount -t tmpfs -o size=$ramdisk_size tmpfs build + elif [ "$mem_total" -gt 12485760 ]; then + # XXX mounting build/out/target on a tmpfs is probably a bit android specific... + ramdisk_size=${ramdisk_size:-11G} + echo "Using $ramdisk_size tmpfs for build/out/target#" + mkdir -p build/out/target + mount -t tmpfs -o size=$ramdisk_size tmpfs build/out/target + else + mkdir build/out + fi fi +else + mkdir build/out +fi + +if is_on_ec2; then + chown :nogroup -R /mnt/jenkins + chown jenkins-build:nogroup -R build fi -chown :nogroup -R /mnt/jenkins -chown jenkins-build:nogroup -R build cd build -sudo -E -H -u jenkins-build bash -xes "${BUILD_SCRIPT_ROOT}" "$@" <<\EOF +if is_on_ec2; then + exec_cmd="sudo -E -H -u jenkins-build bash" +else + exec_cmd="bash" +fi +$exec_cmd -xes "${BUILD_SCRIPT_ROOT}" "$@" <<\EOF export BUILD_SCRIPT_ROOT="${1}" HOST="${2}" set -a -source /var/run/build-tools/build-config +if is_on_ec2; then + source /var/run/build-tools/build-config +else + source /tmp/build-tools/build-config +fi set +a diff --git a/node/lava-submit b/node/lava-submit index 23a17b3..37d7271 100755 --- a/node/lava-submit +++ b/node/lava-submit @@ -16,7 +16,11 @@ cd build sudo -E -H -u jenkins-build bash -xes "${BUILD_SCRIPT_ROOT}" "$@" <<\EOF export BUILD_SCRIPT_ROOT="${1}" set -a -source /var/run/build-tools/build-config +if is_on_ec2; then + source /var/run/build-tools/build-config +else + source /tmp/build-tools/build-config +fi set +a if [ -z "$LAVA_SUBMIT" -o "$LAVA_SUBMIT" = "0" ]; then diff --git a/node/prepare_build_config.py b/node/prepare_build_config.py index 4ad5de2..e5dcf28 100755 --- a/node/prepare_build_config.py +++ b/node/prepare_build_config.py @@ -6,11 +6,13 @@ import re import pipes import optparse - -SLAVE_TYPE_FILE = "/var/run/build-tools/slave-type" -SLAVE_TYPE_RESTRICTED = "restricted builds" +SLAVE_TYPE_FILE_EC2 = "/var/run/build-tools/slave-type" # sf-safe build config is written to this file -BUILD_CONFIG_FILE = "/var/run/build-tools/build-config" +BUILD_CONFIG_FILE_EC2 = "/var/run/build-tools/build-config" +SLAVE_TYPE_FILE_VPS = "/tmp/build-tools/slave-type" +# sf-safe build config is written to this file +BUILD_CONFIG_FILE_VPS = "/tmp/build-tools/build-config" +SLAVE_TYPE_RESTRICTED = "restricted builds" class BuildConfigMismatchException(Exception): @@ -32,7 +34,10 @@ def shell_unquote(s): def get_slave_type(): slave_type = "" try: - f = open(SLAVE_TYPE_FILE) + if(os.path.exists(SLAVE_TYPE_FILE_EC2): + f = open(SLAVE_TYPE_FILE_EC2) + else + f = open(SLAVE_TYPE_FILE_VPS) slave_type = f.read().rstrip() f.close() except: @@ -101,6 +106,10 @@ def convert_config_to_shell(config_text, out_filename): def main(config_in, is_base64): if is_base64: config_in = base64.b64decode(config_in) + if ( os.path.exists(BUILD_CONFIG_FILE_EC2) + BUILD_CONFIG_FILE=BUILD_CONFIG_FILE_EC2 + else + BUILD_CONFIG_FILE=BUILD_CONFIG_FILE_VPS config = convert_config_to_shell(config_in, BUILD_CONFIG_FILE) try: validate_config(config, get_slave_type()) |