File: buildbot_mac-glibc-makefile.sh

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (183 lines) | stat: -rwxr-xr-x 6,368 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#!/bin/bash
# Copyright (c) 2012 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Script assumed to be run in native_client/
if [[ ${PWD} != */native_client ]]; then
  echo "ERROR: must be run in native_client!"
  exit 1
fi

set -x
set -e
set -u

# Transitionally, even though our new toolchain location is under
# toolchain/mac_x86/nacl_x86_glibc we have to keep the old format
# inside of the tar (toolchain/mac_x86) so that the untar toolchain script
# is backwards compatible and can untar old tars. Eventually this will be
# unnecessary with the new package_version scheme since how to untar the
# tar file will be embedded inside of the package file so they can differ
# between revisions.
export TOOLCHAINLOC=toolchain
export TOOLCHAINNAME=mac_x86
export INST_GLIBC_PROGRAM="$PWD/tools/glibc_download.sh"

# This is where we want the toolchain when moving to native_client/toolchain.
OUT_TOOLCHAINLOC=toolchain/mac_x86
OUT_TOOLCHAINNAME=nacl_x86_glibc
CORE_SDK=core_sdk
CORE_SDK_WORK=core_sdk_work

TOOL_TOOLCHAIN="$TOOLCHAINLOC/$TOOLCHAINNAME"
OUT_TOOLCHAIN="${OUT_TOOLCHAINLOC}/${OUT_TOOLCHAINNAME}"

echo @@@BUILD_STEP gclient_runhooks@@@
gclient runhooks --force

echo @@@BUILD_STEP clobber_toolchain@@@
rm -rf scons-out tools/BUILD/* tools/out/* tools/toolchain \
  tools/glibc tools/glibc.tar tools/toolchain.t* "${OUT_TOOLCHAIN}" \
  tools/${CORE_SDK} tools/${CORE_SDK_WORK} .tmp ||
  echo already_clean
mkdir -p "tools/${TOOL_TOOLCHAIN}"

echo @@@BUILD_STEP clean_sources@@@
tools/update_all_repos_to_latest.sh

# glibc_download.sh can return three return codes:
#  0 - glibc is successfully downloaded and installed
#  1 - glibc is not downloaded but another run may help
#  2+ - glibc is not downloaded and can not be downloaded later
#
# If the error result is 2 or more we are stopping the build
echo @@@BUILD_STEP check_glibc_revision_sanity@@@
echo "Try to download glibc revision $(tools/glibc_revision.sh)"
if tools/glibc_download.sh "tools/${TOOL_TOOLCHAIN}" 1; then
  INST_GLIBC_PROGRAM=true
elif (($?>1)); then
  echo @@@STEP_FAILURE@@@
  exit 100
fi

if [[ "${BUILDBOT_SLAVE_TYPE:-Trybot}" == "Trybot" ]]; then
echo @@@BUILD_STEP setup source@@@
(cd tools; ./buildbot_patch-toolchain-tries.sh)
fi

echo @@@BUILD_STEP compile_toolchain@@@
(
  cd tools
  make -j8 buildbot-build-with-glibc
)

echo @@@BUILD_STEP build_core_sdk@@@
# Use scons to generate the SDK headers and libraries.
python scons.py --nacl_glibc MODE=nacl naclsdk_validate=0 \
  nacl_glibc_dir="tools/${TOOL_TOOLCHAIN}" \
  DESTINATION_ROOT="tools/${CORE_SDK_WORK}" \
  includedir="tools/${CORE_SDK}/x86_64-nacl/include" \
  install_headers

python scons.py --nacl_glibc MODE=nacl naclsdk_validate=0 \
  platform=x86-32 \
  nacl_glibc_dir="tools/${TOOL_TOOLCHAIN}" \
  DESTINATION_ROOT="tools/${CORE_SDK_WORK}" \
  libdir="tools/${CORE_SDK}/x86_64-nacl/lib32" \
  install_lib

python scons.py --nacl_glibc MODE=nacl naclsdk_validate=0 \
  platform=x86-64 \
  nacl_glibc_dir="tools/${TOOL_TOOLCHAIN}" \
  DESTINATION_ROOT="tools/${CORE_SDK_WORK}" \
  libdir="tools/${CORE_SDK}/x86_64-nacl/lib" \
  install_lib

if [[ "${BUILDBOT_SLAVE_TYPE:-Trybot}" != "Trybot" ]]; then
  GSD_BUCKET=nativeclient-archive2
  UPLOAD_REV=${BUILDBOT_GOT_REVISION}
  UPLOAD_LOC=x86_toolchain/r${UPLOAD_REV}
else
  GSD_BUCKET=nativeclient-trybot/packages
  UPLOAD_REV=${BUILDBOT_BUILDERNAME}/${BUILDBOT_BUILDNUMBER}
  UPLOAD_LOC=x86_toolchain/${UPLOAD_REV}
fi

(
  cd tools
  echo @@@BUILD_STEP canonicalize timestamps@@@
  ./canonicalize_timestamps.sh "${TOOLCHAINLOC}"
  ./canonicalize_timestamps.sh "${CORE_SDK}"

  echo @@@BUILD_STEP tar_toolchain@@@
  tar Scf toolchain.tar "${TOOLCHAINLOC}"
  bzip2 -k -9 toolchain.tar
  gzip -n -9 toolchain.tar

  echo @@@BUILD_STEP tar_core_sdk@@@
  tar Scf core_sdk.tar "${CORE_SDK}"
  bzip2 -k -9 core_sdk.tar
  gzip -n -9 core_sdk.tar
)

echo @@@BUILD_STEP archive_build@@@
for suffix in gz bz2 ; do
  $GSUTIL cp -a public-read \
    tools/toolchain.tar.$suffix \
    gs://${GSD_BUCKET}/${UPLOAD_LOC}/toolchain_mac_x86.tar.$suffix
  $GSUTIL cp -a public-read \
    tools/core_sdk.tar.$suffix \
    gs://${GSD_BUCKET}/${UPLOAD_LOC}/core_sdk_mac_x86.tar.$suffix
done
echo @@@STEP_LINK@download@http://gsdview.appspot.com/${GSD_BUCKET}/${UPLOAD_LOC}/@@@

echo @@@BUILD_STEP archive_extract_packages@@@
python build/package_version/package_version.py \
  archive --archive-package=${TOOLCHAINNAME}/nacl_x86_glibc --extract \
  --extra-archive gdb_x86_64_apple_darwin.tgz \
  tools/toolchain.tar.bz2,${TOOL_TOOLCHAIN}@https://storage.googleapis.com/${GSD_BUCKET}/${UPLOAD_LOC}/toolchain_mac_x86.tar.bz2 \
  tools/core_sdk.tar.bz2,${CORE_SDK}@https://storage.googleapis.com/${GSD_BUCKET}/${UPLOAD_LOC}/core_sdk_mac_x86.tar.bz2

python build/package_version/package_version.py \
  archive --archive-package=${TOOLCHAINNAME}/nacl_x86_glibc_raw --extract \
  --extra-archive gdb_x86_64_apple_darwin.tgz \
  tools/toolchain.tar.bz2,${TOOL_TOOLCHAIN}@https://storage.googleapis.com/${GSD_BUCKET}/${UPLOAD_LOC}/toolchain_mac_x86.tar.bz2

echo @@@BUILD_STEP upload_package_info@@@
python build/package_version/package_version.py \
  --cloud-bucket ${GSD_BUCKET} --annotate \
  upload --skip-missing \
  --upload-package=${TOOLCHAINNAME}/nacl_x86_glibc --revision=${UPLOAD_REV}

python build/package_version/package_version.py \
  --cloud-bucket ${GSD_BUCKET} --annotate \
  upload --skip-missing \
  --upload-package=${TOOLCHAINNAME}/nacl_x86_glibc_raw --revision=${UPLOAD_REV}

# The script should exit nonzero if any test run fails.
# But that should not short-circuit the script due to the 'set -e' behavior.
exit_status=0
fail() {
  exit_status=1
  return 0
}

# Before we start testing, put in dummy mock archives so gyp can still untar
# the entire package.
python build/package_version/package_version.py fillemptytars \
  --fill-package nacl_x86_glibc

export INSIDE_TOOLCHAIN=1
python buildbot/buildbot_standard.py --scons-args='no_gdb_tests=1' \
  opt 32 glibc || fail


# sync_backports is obsolete and should probably be removed.
# if [[ "${BUILD_COMPATIBLE_TOOLCHAINS:-yes}" != "no" ]]; then
#   echo @@@BUILD_STEP sync backports@@@
#   rm -rf tools/BACKPORTS/ppapi*
#   tools/BACKPORTS/build_backports.sh VERSIONS mac glibc
# fi

exit $exit_status