diff options
author | elijahtaylor@google.com <elijahtaylor@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-06 19:36:42 +0000 |
---|---|---|
committer | elijahtaylor@google.com <elijahtaylor@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-06 19:36:42 +0000 |
commit | a25886b41534360881e70ec81f1619f00206e356 (patch) | |
tree | 8ea1a92a166f7a1bffaa379e459ce6b2d3365e4d /native_client_sdk | |
parent | b3b7bcd98b927b85015340ebef1dd9ac112006bf (diff) | |
download | chromium_src-a25886b41534360881e70ec81f1619f00206e356.zip chromium_src-a25886b41534360881e70ec81f1619f00206e356.tar.gz chromium_src-a25886b41534360881e70ec81f1619f00206e356.tar.bz2 |
Mono builder cleanup:
- move runtime builder script and interp script into SDK repo
- fix build step label for waterfall
This change only affects the NaCl SDK builders
BUG=115363
TEST=bots
R=noelallen@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9521015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125203 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
3 files changed, 170 insertions, 27 deletions
diff --git a/native_client_sdk/src/build_tools/nacl-mono-builder.py b/native_client_sdk/src/build_tools/nacl-mono-builder.py index 7087afb..f7774e5c 100644 --- a/native_client_sdk/src/build_tools/nacl-mono-builder.py +++ b/native_client_sdk/src/build_tools/nacl-mono-builder.py @@ -10,6 +10,9 @@ import tarfile import buildbot_common +SDK_BUILD_DIR = buildbot_common.SCRIPT_DIR +MONO_BUILD_DIR = os.path.join(SDK_BUILD_DIR, 'mono_build') +MONO_DIR = os.path.join(MONO_BUILD_DIR, 'nacl-mono') def main(args): parser = optparse.OptionParser() @@ -29,9 +32,8 @@ def main(args): buildbot_revision = os.environ.get('BUILDBOT_REVISION', '') buildbot_common.BuildStep('Clean Old SDK') - buildbot_common.MakeDir('mono_build') - os.chdir('mono_build') - buildbot_common.RemoveDir('pepper_*') + buildbot_common.MakeDir(MONO_BUILD_DIR) + buildbot_common.RemoveDir(os.path.join(MONO_BUILD_DIR, 'pepper_*')) buildbot_common.BuildStep('Setup New SDK') sdk_dir = None @@ -41,13 +43,14 @@ def main(args): sdk_revision = buildbot_revision.split(':')[0] url = 'gs://nativeclient-mirror/nacl/nacl_sdk/'\ 'trunk.%s/naclsdk_linux.bz2' % sdk_revision - buildbot_common.Run([buildbot_common.GetGsutil(), 'cp', url, '.']) + buildbot_common.Run([buildbot_common.GetGsutil(), 'cp', url, '.'], + cwd=MONO_BUILD_DIR) tar_file = None try: - tar_file = tarfile.open('naclsdk_linux.bz2') + tar_file = tarfile.open(os.path.join(MONO_BUILD_DIR, 'naclsdk_linux.bz2')) pepper_dir = os.path.commonprefix(tar_file.getnames()) - tar_file.extractall() - sdk_dir = os.path.join(os.getcwd(), pepper_dir) + tar_file.extractall(path=MONO_BUILD_DIR) + sdk_dir = os.path.join(MONO_BUILD_DIR, pepper_dir) finally: if tar_file: tar_file.close() @@ -61,18 +64,16 @@ def main(args): # TODO(elijahtaylor): Get git URL from master/trigger to make this # more flexible for building from upstream and release branches. git_url = 'git://github.com/elijahtaylor/mono.git' - git_dir = 'nacl-mono' git_rev = None if buildbot_revision: git_rev = buildbot_revision.split(':')[1] - if not os.path.exists(git_dir): - buildbot_common.Run(['git', 'clone', git_url, git_dir]) - os.chdir(git_dir) + if not os.path.exists(MONO_DIR): + buildbot_common.MakeDir(MONO_DIR) + buildbot_common.Run(['git', 'clone', git_url, MONO_DIR]) else: - os.chdir(git_dir) - buildbot_common.Run(['git', 'fetch']) + buildbot_common.Run(['git', 'fetch'], cwd=MONO_DIR) if git_rev: - buildbot_common.Run(['git', 'checkout', git_rev]) + buildbot_common.Run(['git', 'checkout', git_rev], cwd=MONO_DIR) arch_to_bitsize = {'x86-32': '32', 'x86-64': '64'} @@ -84,30 +85,32 @@ def main(args): buildbot_common.BuildStep('Configure Mono') os.environ['NACL_SDK_ROOT'] = sdk_dir os.environ['TARGET_BITSIZE'] = arch_to_bitsize[options.arch] - buildbot_common.Run(['./autogen.sh']) - buildbot_common.Run(['make', 'distclean']) + buildbot_common.Run(['./autogen.sh'], cwd=MONO_DIR) + buildbot_common.Run(['make', 'distclean'], cwd=MONO_DIR) - buildbot_common.BuildStep('Build/Install Mono') - # TODO(elijahtaylor): This script only exists in my fork. - # This script should live in the SDK's build_tools/ - os.chdir('nacl') + buildbot_common.BuildStep('Build and Install Mono') buildbot_common.RemoveDir(arch_to_install_folder[options.arch]) - nacl_interp_script = os.path.join(os.getcwd(), 'nacl_interp_loader_sdk.sh') + nacl_interp_script = os.path.join(SDK_BUILD_DIR, 'nacl_interp_loader_mono.sh') os.environ['NACL_INTERP_LOADER'] = nacl_interp_script - buildbot_common.Run(['./nacl-runtime-mono.sh']) + buildbot_common.Run(['./nacl-mono-runtime.sh', + MONO_DIR, # Mono directory with 'configure' + arch_to_output_folder[options.arch], # Build dir + arch_to_install_folder[options.arch]], + cwd=SDK_BUILD_DIR) buildbot_common.BuildStep('Test Mono') - os.chdir(arch_to_output_folder[options.arch]) - buildbot_common.Run(['make', 'check', '-j8']) - os.chdir('..') + buildbot_common.Run(['make', 'check', '-j8'], + cwd=os.path.join(SDK_BUILD_DIR, arch_to_output_folder[options.arch])) buildbot_common.BuildStep('Archive Build') tar_file = None - tar_path = arch_to_install_folder[options.arch] + '.bz2' + tar_path = os.path.join(SDK_BUILD_DIR, + arch_to_install_folder[options.arch] + '.bz2') buildbot_common.RemoveFile(tar_path) try: tar_file = tarfile.open(tar_path, mode='w:bz2') - tar_file.add(arch_to_install_folder[options.arch]) + tar_file.add(os.path.join(SDK_BUILD_DIR, + arch_to_install_folder[options.arch])) finally: if tar_file: tar_file.close() diff --git a/native_client_sdk/src/build_tools/nacl-mono-runtime.sh b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh new file mode 100755 index 0000000..7e156795 --- /dev/null +++ b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +set -o nounset +set -o errexit + +if [[ $# -ne 3 ]]; then + echo "Usage: $0 [path_to_mono] [build_dir] [install_dir]" + exit -1 +fi + +readonly MONO_DIR=$(readlink -f $1) +readonly BUILD_DIR=$(readlink -f $2) +readonly INSTALL_DIR=$(readlink -f $3) +readonly ORIGINAL_CWD=$(pwd) + +set +e +if [ -f ${BUILD_DIR}/Makefile ]; then + cd ${BUILD_DIR} + make distclean +fi +set -e +cd $ORIGINAL_CWD + +if [ $TARGET_BITSIZE == "32" ]; then + readonly NACL_CROSS_PREFIX_DASH=i686-nacl- + readonly CONFIG_OPTS="--host=i686-pc-linux-gnu \ + --build=i686-pc-linux-gnu \ + --target=i686-pc-linux-gnu" +else + readonly NACL_CROSS_PREFIX_DASH=x86_64-nacl- + readonly CONFIG_OPTS="--host=x86_64-pc-linux-gnu \ + --build=x86_64-pc-linux-gnu \ + --target=x86_64-pc-linux-gnu" + fi + +# UGLY hack to allow dynamic linking +sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ + ${MONO_DIR}/configure +sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ + ${MONO_DIR}/libgc/configure +sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ + ${MONO_DIR}/eglib/configure + +rm -rf ${BUILD_DIR} +mkdir -p ${BUILD_DIR} +cd ${BUILD_DIR} + +rm -rf ${INSTALL_DIR} +mkdir -p ${INSTALL_DIR} + +readonly NACL_BIN_PATH=${NACL_SDK_ROOT}/toolchain/linux_x86_glibc/bin +readonly NACLCC=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}gcc +readonly NACLCXX=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}g++ +readonly NACLAR=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ar +readonly NACLRANLIB=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ranlib +readonly NACLLD=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ld + +CC=${NACLCC} CXX=${NACLCXX} AR=${NACLAR} RANLIB=${NACLRANLIB} LD=${NACLLD} \ +PKG_CONFIG_LIBDIR= \ +PATH=${NACL_BIN_PATH}:${PATH} \ +LIBS="-lnacl_dyncode -lc -lg -lnosys -lnacl" \ +CFLAGS="-g -O2 -D_POSIX_PATH_MAX=256 -DPATH_MAX=256" \ +${MONO_DIR}/configure ${CONFIG_OPTS} \ + --exec-prefix=${INSTALL_DIR} \ + --libdir=${INSTALL_DIR}/lib \ + --prefix=${INSTALL_DIR} \ + --program-prefix="" \ + --oldincludedir=${INSTALL_DIR}/include \ + --with-glib=embedded \ + --with-tls=pthread \ + --enable-threads=posix \ + --without-sigaltstack \ + --without-mmap \ + --with-gc=included \ + --enable-nacl-gc \ + --with-sgen=no \ + --enable-nls=no \ + --enable-nacl-codegen \ + --disable-system-aot \ + --enable-shared \ + --disable-parallel-mark \ + --with-static-mono=no + +make +make install diff --git a/native_client_sdk/src/build_tools/nacl_interp_loader_mono.sh b/native_client_sdk/src/build_tools/nacl_interp_loader_mono.sh new file mode 100755 index 0000000..2f0256e --- /dev/null +++ b/native_client_sdk/src/build_tools/nacl_interp_loader_mono.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# Usage: nacl_interp_loader.sh PLATFORM NEXE ARGS... + +case "$1" in +i?86) + arch=x86_32 + libdir=lib32 + ;; +x86_64) + arch=x86_64 + libdir=lib64 + ;; +arm|v7l) + arch=arm + libdir=lib32 + ;; +*) + echo >&2 "$0: Do not recognize architecture \"$1\"" + exit 127 + ;; +esac + +shift + +case "${NACL_SDK_ROOT}" in +*pepper_15* | *pepper_16* | *pepper_17*) + SEL_LDR="$NACL_SDK_ROOT/toolchain/linux_x86/bin/sel_ldr_${arch}" + IRT="$NACL_SDK_ROOT/toolchain/linux_x86/runtime/irt_core_${arch}.nexe" + RTLD="$NACL_SDK_ROOT/toolchain/linux_x86/x86_64-nacl/${libdir}/runnable-ld.so" + LIBDIR="$NACL_SDK_ROOT/toolchain/linux_x86/x86_64-nacl/${libdir}" + ;; +*) + SEL_LDR="$NACL_SDK_ROOT/tools/sel_ldr_${arch}" + IRT="$NACL_SDK_ROOT/tools/irt_core_${arch}.nexe" + RTLD="$NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/${libdir}/runnable-ld.so" + LIBDIR="$NACL_SDK_ROOT/toolchain/linux_x86_glibc/x86_64-nacl/${libdir}" + ;; +esac + +IGNORE_VALIDATOR_ARG="" +if [ x"$NACL_IGNORE_VALIDATOR" == x"1" ]; then + IGNORE_VALIDATOR_ARG="-c" +fi + +exec "$SEL_LDR" -E "NACL_PWD=`pwd`" -E "MONO_PATH=$MONO_PATH" \ + -E "MONO_CFG_DIR=$MONO_CFG_DIR" -E "MONO_SHARED_DIR=$MONO_SHARED_DIR" \ + -a $IGNORE_VALIDATOR_ARG -S -B "$IRT" -l /dev/null -- "$RTLD" \ + --library-path $LIBDIR "$@" |