Bug 1386782 - Add toolchain tasks to build gn in automation. r=ted

MozReview-Commit-ID: 7dDwsQJnzRL

--HG--
extra : rebase_source : be14a5af5648ae0cc0e571ca098307a4d84a7c14
This commit is contained in:
Chris Manchester 2017-07-25 15:33:44 -07:00
Родитель 48d2ce9436
Коммит 696a8e5320
9 изменённых файлов: 304 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,26 @@
[
{
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
"size": 326656969,
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
"algorithm": "sha512",
"filename": "vs2015u3.zip",
"unpack": true
},
{
"version": "Ninja 1.7.1",
"size": 184821,
"digest": "e4f9a1ae624a2630e75264ba37d396d9c7407d6e6aea3763056210ba6e1387908bd31cf4037a6a3661a418e86c4d2761e0c333e6a3bd0d66549d2b0d72d3f43b",
"algorithm": "sha512",
"filename": "ninja171.zip",
"unpack": true
},
{
"version": "MinGit-2.13.3-64-bit",
"size": 21482885,
"digest": "929bb3c07be8487ee519422a312bdbfeec8f4db4b62c49d02f9aad9fd2a66c0ee5fad63d2b06c8744c336dc9d50446fa4457897333ad17ffd783ecabd1e2ddbb",
"algorithm": "sha512",
"filename": "git.zip",
"unpack": true
}
]

Просмотреть файл

@ -206,3 +206,25 @@ linux64-sccache:
toolchain-artifact: public/build/sccache2.tar.xz
toolchains:
- linux64-clang-3.9
linux64-gn:
description: "gn toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TL(gn)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-linux
worker:
docker-image: {in-tree: desktop-build}
max-run-time: 36000
run:
using: toolchain-script
script: build-gn-linux.sh
tooltool-downloads: public
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
- 'taskcluster/scripts/misc/build-gn-common.sh'
toolchain-artifact: public/build/gn.tar.xz
toolchains:
- linux64-gcc-4.9

Просмотреть файл

@ -83,3 +83,28 @@ macosx64-cctools-port:
toolchains:
- linux64-cctools-port
- linux64-clang-3.9
macosx64-gn:
description: "gn toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TM(gn)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
worker:
docker-image: {in-tree: desktop-build}
max-run-time: 36000
env:
TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/macosx64/cross-clang.manifest"
run:
using: toolchain-script
script: build-gn-macosx.sh
tooltool-downloads: internal
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
- 'taskcluster/scripts/misc/build-gn-common.sh'
toolchain-artifact: public/build/gn.tar.xz
toolchains:
- linux64-cctools-port
- linux64-clang-3.9

Просмотреть файл

@ -112,3 +112,23 @@ win64-sccache:
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
toolchain-artifact: public/build/sccache2.tar.bz2
win32-gn:
description: "gn toolchain build"
treeherder:
kind: build
platform: toolchains/opt
symbol: TW32(gn)
tier: 1
worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
worker:
max-run-time: 36000
env:
TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/gn-build.manifest"
run:
using: toolchain-script
script: build-gn-win32.sh
resources:
- 'taskcluster/scripts/misc/tooltool-download.sh'
- 'taskcluster/scripts/misc/build-gn-common.sh'
toolchain-artifact: public/build/gn.tar.bz2

Просмотреть файл

@ -0,0 +1,48 @@
#!/bin/bash
set -e -v
# This is shared code for building GN.
# Each is a recent commit from chromium's master branch.
: CHROMIUM_REV ${CHROMIUM_REV:=e6ba81e00ae835946e069e5bd80bd533b11d8442}
: GTEST_REV ${GTEST_REV:=6c5116014ce51ef3273d800cbf75fcef99e798c6}
: CHROMIUM_SRC_REV ${CHROMIUM_SRC_REV:=c338d43f49c0d72e69cd6e40eeaf4c0597dbdda1}
git clone --no-checkout https://chromium.googlesource.com/chromium/src $WORKSPACE/gn-standalone
cd $WORKSPACE/gn-standalone
git checkout $CHROMIUM_SRC_REV
git clone --no-checkout https://chromium.googlesource.com/chromium/chromium chromium_checkout
cd chromium_checkout
git checkout $CHROMIUM_REV
mkdir -p ../third_party
mv third_party/libevent ../third_party
cd ..
rm -rf testing
mkdir testing
cd testing
git clone https://chromium.googlesource.com/chromium/testing/gtest
cd gtest
git checkout $GTEST_REV
cd ../..
cd tools/gn
patch -p1 < $WORKSPACE/build/src/taskcluster/scripts/misc/gn.patch
./bootstrap/bootstrap.py -s
cd ../..
STAGE=gn
mkdir -p $UPLOAD_DIR $STAGE
# At this point, the resulting binary is at:
# $WORKSPACE/out/Release/gn
if test "$MAC_CROSS" = "" -a "$(uname)" = "Linux"; then
strip out/Release/gn
fi
cp out/Release/gn $STAGE
tar -acf gn.tar.$COMPRESS_EXT $STAGE
cp gn.tar.$COMPRESS_EXT $UPLOAD_DIR

Просмотреть файл

@ -0,0 +1,22 @@
#!/bin/bash
set -e -v
# This script is for building GN on Linux.
WORKSPACE=$HOME/workspace
UPLOAD_DIR=$HOME/artifacts
COMPRESS_EXT=xz
export CC=$WORKSPACE/build/src/gcc/bin/gcc
export CXX=$WORKSPACE/build/src/gcc/bin/g++
# Gn build scripts use #!/usr/bin/env python, which will be python 2.6 on
# the worker and cause failures. Work around this by putting python2.7
# ahead of it in PATH.
mkdir -p $WORKSPACE/python_bin
ln -s /usr/bin/python2.7 $WORKSPACE/python_bin/python
export PATH=$WORKSPACE/python_bin:$PATH
cd $WORKSPACE/build/src
. taskcluster/scripts/misc/tooltool-download.sh
. taskcluster/scripts/misc/build-gn-common.sh

Просмотреть файл

@ -0,0 +1,40 @@
#!/bin/bash
set -e -v
# This script is for building GN.
WORKSPACE=$HOME/workspace
UPLOAD_DIR=$HOME/artifacts
COMPRESS_EXT=xz
CROSS_CCTOOLS_PATH=$WORKSPACE/build/src/cctools
CROSS_SYSROOT=$WORKSPACE/build/src/MacOSX10.10.sdk
export LD_LIBRARY_PATH=$WORKSPACE/build/src/clang/lib
export CC=$WORKSPACE/build/src/clang/bin/clang
export CXX=$WORKSPACE/build/src/clang/bin/clang++
export AR=$WORKSPACE/build/src/clang/bin/clang
export CFLAGS="-target x86_64-apple-darwin11 -mlinker-version=137 -B ${CROSS_CCTOOLS_PATH}/bin -isysroot ${CROSS_SYSROOT} -I${CROSS_SYSROOT}/usr/include -iframework ${CROSS_SYSROOT}/System/Library/Frameworks"
export CXXFLAGS="-stdlib=libc++ ${CFLAGS}"
export LDFLAGS="${CXXFLAGS} -Wl,-syslibroot,${CROSS_SYSROOT} -Wl,-dead_strip"
# We patch tools/gn/bootstrap/bootstrap.py to detect this.
export MAC_CROSS=1
# Gn build scripts use #!/usr/bin/env python, which will be python 2.6 on
# the worker and cause failures. Work around this by putting python2.7
# ahead of it in PATH.
mkdir -p $WORKSPACE/python_bin
ln -s /usr/bin/python2.7 $WORKSPACE/python_bin/python
export PATH=$WORKSPACE/python_bin:$PATH
cd $WORKSPACE/build/src
. taskcluster/scripts/misc/tooltool-download.sh
# The ninja templates used to bootstrap gn have hard-coded references to
# 'libtool', make sure we find the right one.
ln -s $CROSS_CCTOOLS_PATH/bin/x86_64-apple-darwin11-libtool $CROSS_CCTOOLS_PATH/bin/libtool
export PATH=$CROSS_CCTOOLS_PATH/bin:$PATH
. taskcluster/scripts/misc/build-gn-common.sh

Просмотреть файл

@ -0,0 +1,23 @@
#!/bin/bash
set -e -v
# This script is for building GN on Windows.
WORKSPACE=$PWD
UPLOAD_DIR=$WORKSPACE/public/build
COMPRESS_EXT=bz2
VSPATH="$WORKSPACE/build/src/vs2015u3"
export INCLUDE="${VSPATH}/VC/include:${VSPATH}/VC/atlmfc/include:${VSPATH}/SDK/Include/10.0.14393.0/ucrt:${VSPATH}/SDK/Include/10.0.14393.0/shared:${VSPATH}/SDK/Include/10.0.14393.0/um:${VSPATH}/SDK/Include/10.0.14393.0/winrt:${VSPATH}/DIA SDK/include"
export LIB="${VSPATH}/VC/lib:${VSPATH}/VC/atlmfc/lib:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x86:${VSPATH}/SDK/lib/10.0.14393.0/um/x86:${VSPATH}/DIA SDK/lib"
export PATH="$WORKSPACE/build/src/ninja/bin:$PATH"
export PATH="$WORKSPACE/build/src/mingw64/bin:$PATH"
export PATH="${VSPATH}/VC/bin/amd64_x86:${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x86:${VSPATH}/SDK/bin/x64:${VSPATH}/DIA SDK/bin:${PATH}"
export PATH="${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x86:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}"
cd $WORKSPACE/build/src
. taskcluster/scripts/misc/tooltool-download.sh
. taskcluster/scripts/misc/build-gn-common.sh

Просмотреть файл

@ -0,0 +1,78 @@
diff --git a/bootstrap/bootstrap.py b/bootstrap/bootstrap.py
index ff2ae57..7e12436 100755
--- a/bootstrap/bootstrap.py
+++ b/bootstrap/bootstrap.py
@@ -29,9 +29,10 @@ BOOTSTRAP_DIR = os.path.dirname(os.path.abspath(__file__))
GN_ROOT = os.path.dirname(BOOTSTRAP_DIR)
SRC_ROOT = os.path.dirname(os.path.dirname(GN_ROOT))
+is_mac_cross = os.environ.get('MAC_CROSS', False)
is_win = sys.platform.startswith('win')
-is_linux = sys.platform.startswith('linux')
-is_mac = sys.platform.startswith('darwin')
+is_linux = sys.platform.startswith('linux') and not is_mac_cross
+is_mac = sys.platform.startswith('darwin') or is_mac_cross
is_aix = sys.platform.startswith('aix')
is_posix = is_linux or is_mac or is_aix
@@ -595,7 +596,6 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/synchronization/condition_variable_posix.cc',
'base/synchronization/lock_impl_posix.cc',
'base/synchronization/read_write_lock_posix.cc',
- 'base/synchronization/waitable_event_posix.cc',
'base/sys_info_posix.cc',
'base/task_scheduler/task_tracker_posix.cc',
'base/threading/platform_thread_internal_posix.cc',
@@ -603,10 +603,19 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/threading/thread_local_storage_posix.cc',
'base/threading/worker_pool_posix.cc',
'base/time/time_conversion_posix.cc',
+ ])
+
+ if not is_mac:
+ static_libraries['base']['sources'].extend([
+ 'base/synchronization/waitable_event_posix.cc',
'base/time/time_exploded_posix.cc',
'base/time/time_now_posix.cc',
- 'base/trace_event/heap_profiler_allocation_register_posix.cc',
+ ])
+
+ static_libraries['base']['sources'].extend([
+ 'base/trace_event/heap_profiler_allocation_register_posix.cc',
])
+
static_libraries['libevent'] = {
'sources': [
'base/third_party/libevent/buffer.c',
@@ -685,6 +694,7 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/mac/call_with_eh_frame.cc',
'base/mac/call_with_eh_frame_asm.S',
'base/mac/foundation_util.mm',
+ 'base/mac/mac_util.mm',
'base/mac/mach_logging.cc',
'base/mac/scoped_mach_port.cc',
'base/mac/scoped_mach_vm.cc',
@@ -697,6 +707,7 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/process/process_iterator_mac.cc',
'base/process/process_metrics_mac.cc',
'base/strings/sys_string_conversions_mac.mm',
+ 'base/synchronization/waitable_event_mac.cc',
'base/sys_info_mac.mm',
'base/time/time_mac.cc',
'base/threading/platform_thread_mac.mm',
@@ -735,6 +746,7 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/memory/memory_pressure_monitor_win.cc',
'base/memory/shared_memory_handle_win.cc',
'base/memory/shared_memory_win.cc',
+ 'base/memory/shared_memory_tracker.cc',
'base/message_loop/message_pump_win.cc',
'base/native_library_win.cc',
'base/power_monitor/power_monitor_device_source_win.cc',
@@ -799,6 +811,7 @@ def write_gn_ninja(path, root_gen_dir, options):
'version.lib',
'winmm.lib',
'ws2_32.lib',
+ 'shlwapi.lib',
])
# we just build static libraries that GN needs