build both tsan and msan libc++

std::call_once() will trigger false positive races without
a libc++ (specifically __call_once()) built with TSAN itself.

Interestingly, there's a built-in interceptor for this
use case, only on Mac: https://reviews.llvm.org/D24188.

Fixes: skia:9884
Change-Id: I7b2c031c15b78ec7302c42b4e4ac365d596c2c33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265567
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
This commit is contained in:
Mike Klein 2020-01-21 13:37:17 -06:00 committed by Skia Commit-Bot
parent b2031d4255
commit dfec731dbf
10 changed files with 413 additions and 88 deletions

View File

@ -1 +1 @@
16
19

View File

@ -59,16 +59,18 @@ def create_asset(target_dir):
"-print-file-name=libstdc++.so.6"])
subprocess.check_call(["cp", libstdcpp.strip(), target_dir + "/lib"])
# Finally, build libc++ for MSAN bots using the Clang we just built.
os.mkdir("../msan_out")
os.chdir("../msan_out")
subprocess.check_call(["cmake", "..", "-G", "Ninja",
"-DCMAKE_BUILD_TYPE=MinSizeRel",
"-DCMAKE_C_COMPILER=" + target_dir + "/bin/clang",
"-DCMAKE_CXX_COMPILER=" + target_dir + "/bin/clang++",
"-DLLVM_USE_SANITIZER=MemoryWithOrigins"])
subprocess.check_call(["ninja", "cxx"])
subprocess.check_call(["cp", "-r", "lib", target_dir + "/msan"])
# Finally, build libc++ for TSAN and MSAN bots using the Clang we just built.
for (short,full) in [('tsan','Thread'), ('msan','MemoryWithOrigins')]:
os.mkdir("../{}_out".format(short))
os.chdir("../{}_out".format(short))
subprocess.check_call(
["cmake", "..", "-G", "Ninja",
"-DCMAKE_BUILD_TYPE=MinSizeRel",
"-DCMAKE_C_COMPILER=" + target_dir + "/bin/clang",
"-DCMAKE_CXX_COMPILER=" + target_dir + "/bin/clang++",
"-DLLVM_USE_SANITIZER={}".format(full)])
subprocess.check_call(["ninja", "cxx"])
subprocess.check_call(["cp", "-r", "lib", target_dir + "/" + short])
def main():

View File

@ -50,22 +50,29 @@ def compile_swiftshader(api, extra_tokens, swiftshader_root, cc, cxx, out):
'PATH': '%%(PATH)s:%s' % cmake_bin
}
# Extra flags for MSAN, if necessary.
# Extra flags for MSAN/TSAN, if necessary.
san = None
if 'MSAN' in extra_tokens:
san = ('msan','memory')
elif 'TSAN' in extra_tokens:
san = ('tsan','thread')
if san:
short,full = san
clang_linux = str(api.vars.slave_dir.join('clang_linux'))
libcxx_msan = clang_linux + '/msan'
msan_cflags = ' '.join([
'-fsanitize=memory',
libcxx = clang_linux + '/' + short
cflags = ' '.join([
'-fsanitize=' + full,
'-stdlib=libc++',
'-L%s/lib' % libcxx_msan,
'-L%s/lib' % libcxx,
'-lc++abi',
'-I%s/include' % libcxx_msan,
'-I%s/include/c++/v1' % libcxx_msan,
'-I%s/include' % libcxx,
'-I%s/include/c++/v1' % libcxx,
])
swiftshader_opts.extend([
'-DSWIFTSHADER_MSAN=ON',
'-DCMAKE_C_FLAGS=%s' % msan_cflags,
'-DCMAKE_CXX_FLAGS=%s' % msan_cflags,
'-DSWIFTSHADER_{}=ON'.format(short.upper()),
'-DCMAKE_C_FLAGS=%s' % cflags,
'-DCMAKE_CXX_FLAGS=%s' % cflags,
])
# Build SwiftShader.
@ -195,6 +202,8 @@ def compile_fn(api, checkout_root, out_dir):
if 'MSAN' in extra_tokens:
extra_ldflags.append('-L' + clang_linux + '/msan')
elif 'TSAN' in extra_tokens:
extra_ldflags.append('-L' + clang_linux + '/tsan')
elif api.vars.is_linux:
extra_ldflags.append('-L' + clang_linux + '/lib')

View File

@ -0,0 +1,200 @@
[
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]/cache/work/skia/infra/bots/assets/clang_linux/VERSION",
"/path/to/tmp/"
],
"infra_step": true,
"name": "Get clang_linux VERSION",
"~followup_annotations": [
"@@@STEP_LOG_LINE@VERSION@42@@@",
"@@@STEP_LOG_END@VERSION@@@"
]
},
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug/swiftshader_out"
],
"infra_step": true,
"name": "makedirs swiftshader_out"
},
{
"cmd": [
"cmake",
"-DSWIFTSHADER_BUILD_TESTS=OFF",
"-DSWIFTSHADER_WARNINGS_AS_ERRORS=0",
"-DSWIFTSHADER_TSAN=ON",
"-DCMAKE_C_FLAGS=-fsanitize=thread -stdlib=libc++ -L[START_DIR]/clang_linux/tsan/lib -lc++abi -I[START_DIR]/clang_linux/tsan/include -I[START_DIR]/clang_linux/tsan/include/c++/v1",
"-DCMAKE_CXX_FLAGS=-fsanitize=thread -stdlib=libc++ -L[START_DIR]/clang_linux/tsan/lib -lc++abi -I[START_DIR]/clang_linux/tsan/include -I[START_DIR]/clang_linux/tsan/include/c++/v1",
"[START_DIR]/cache/work/skia/third_party/externals/swiftshader",
"-GNinja"
],
"cwd": "[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug/swiftshader_out",
"env": {
"CC": "[START_DIR]/clang_linux/bin/clang",
"CHROME_HEADLESS": "1",
"CXX": "[START_DIR]/clang_linux/bin/clang++",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/cmake_linux/bin"
},
"name": "swiftshader cmake"
},
{
"cmd": [
"ninja",
"-C",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug/swiftshader_out",
"libEGL.so",
"libGLESv2.so"
],
"cwd": "[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug/swiftshader_out",
"env": {
"CC": "[START_DIR]/clang_linux/bin/clang",
"CHROME_HEADLESS": "1",
"CXX": "[START_DIR]/clang_linux/bin/clang++",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/cmake_linux/bin"
},
"name": "swiftshader ninja"
},
{
"cmd": [
"python",
"-u",
"[START_DIR]/cache/work/skia/bin/fetch-gn"
],
"cwd": "[START_DIR]/cache/work/skia",
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "fetch-gn"
},
{
"cmd": [
"[START_DIR]/cache/work/skia/bin/gn",
"gen",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug",
"--args=cc=\"[START_DIR]/clang_linux/bin/clang\" cc_wrapper=\"[START_DIR]/ccache_linux/bin/ccache\" cxx=\"[START_DIR]/clang_linux/bin/clang++\" extra_cflags=[\"-B[START_DIR]/clang_linux/bin\", \"-DDUMMY_clang_linux_version=42\", \"-O1\", \"-DGR_EGL_TRY_GLES3_THEN_GLES2\", \"-I[START_DIR]/cache/work/skia/third_party/externals/egl-registry/api\", \"-I[START_DIR]/cache/work/skia/third_party/externals/opengl-registry/api\"] extra_ldflags=[\"-B[START_DIR]/clang_linux/bin\", \"-fuse-ld=lld\", \"-L[START_DIR]/clang_linux/tsan\", \"-L[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug/swiftshader_out\"] sanitize=\"TSAN\" skia_use_egl=true target_cpu=\"x86_64\" werror=true"
],
"cwd": "[START_DIR]/cache/work/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "gn gen"
},
{
"cmd": [
"ninja",
"-C",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug"
],
"cwd": "[START_DIR]/cache/work/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "ninja"
},
{
"cmd": [
"python",
"-u",
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug",
"[START_DIR]/[SWARM_OUT_DIR]/out/Debug"
],
"infra_step": true,
"name": "copy build products",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
"@@@STEP_LOG_LINE@python.inline@build_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@try:@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products:@@@",
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"python",
"-u",
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN/Debug/swiftshader_out",
"[START_DIR]/[SWARM_OUT_DIR]/swiftshader_out"
],
"infra_step": true,
"name": "copy build products (2)",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
"@@@STEP_LOG_LINE@python.inline@build_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@try:@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products:@@@",
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"name": "$result"
}
]

View File

@ -0,0 +1,110 @@
[
{
"cmd": [
"vpython",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]/cache/work/skia/infra/bots/assets/clang_linux/VERSION",
"/path/to/tmp/"
],
"infra_step": true,
"name": "Get clang_linux VERSION",
"~followup_annotations": [
"@@@STEP_LOG_LINE@VERSION@42@@@",
"@@@STEP_LOG_END@VERSION@@@"
]
},
{
"cmd": [
"python",
"-u",
"[START_DIR]/cache/work/skia/bin/fetch-gn"
],
"cwd": "[START_DIR]/cache/work/skia",
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "fetch-gn"
},
{
"cmd": [
"[START_DIR]/cache/work/skia/bin/gn",
"gen",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-TSAN/Debug",
"--args=cc=\"[START_DIR]/clang_linux/bin/clang\" cc_wrapper=\"[START_DIR]/ccache_linux/bin/ccache\" cxx=\"[START_DIR]/clang_linux/bin/clang++\" extra_cflags=[\"-B[START_DIR]/clang_linux/bin\", \"-DDUMMY_clang_linux_version=42\", \"-O1\"] extra_ldflags=[\"-B[START_DIR]/clang_linux/bin\", \"-fuse-ld=lld\", \"-L[START_DIR]/clang_linux/tsan\"] sanitize=\"TSAN\" target_cpu=\"x86_64\" werror=true"
],
"cwd": "[START_DIR]/cache/work/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "gn gen"
},
{
"cmd": [
"ninja",
"-C",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-TSAN/Debug"
],
"cwd": "[START_DIR]/cache/work/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "ninja"
},
{
"cmd": [
"python",
"-u",
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print 'Copying build product %s to %s' % (f, dst_path)\n shutil.move(f, dst_path)\n",
"[START_DIR]/cache/work/skia/out/Build-Debian9-Clang-x86_64-Debug-TSAN/Debug",
"[START_DIR]/[SWARM_OUT_DIR]/out/Debug"
],
"infra_step": true,
"name": "copy build products",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
"@@@STEP_LOG_LINE@python.inline@build_products = ['dm', 'dm.exe', 'dm.app', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'hello-opencl', 'hello-opencl.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab', 'skqp-universal-debug.apk', 'whitelist_devices.json']@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@try:@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products:@@@",
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
"@@@STEP_LOG_LINE@python.inline@ print 'Copying build product %s to %s' % (f, dst_path)@@@",
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"name": "$result"
}
]

View File

@ -41,12 +41,14 @@ TEST_BUILDERS = [
'Build-Debian9-Clang-x86_64-Debug-Chromebook_GLES',
'Build-Debian9-Clang-x86_64-Debug-Coverage',
'Build-Debian9-Clang-x86_64-Debug-MSAN',
'Build-Debian9-Clang-x86_64-Debug-TSAN',
'Build-Debian9-Clang-x86_64-Debug-OpenCL',
'Build-Debian9-Clang-x86_64-Debug-SK_CPU_LIMIT_SSE41',
'Build-Debian9-Clang-x86_64-Debug-SafeStack',
'Build-Debian9-Clang-x86_64-Debug-SkVM',
'Build-Debian9-Clang-x86_64-Debug-SkVM_ASAN',
'Build-Debian9-Clang-x86_64-Debug-SwiftShader_MSAN',
'Build-Debian9-Clang-x86_64-Debug-SwiftShader_TSAN',
'Build-Debian9-Clang-x86_64-Debug-Tidy',
'Build-Debian9-Clang-x86_64-Debug-Wuffs',
'Build-Debian9-Clang-x86_64-Release-ANGLE',

View File

@ -168,9 +168,11 @@ class DefaultFlavor(object):
if 'SwiftShader' in extra_tokens:
ld_library_path.append(self.host_dirs.bin_dir.join('swiftshader_out'))
# Find the MSAN/TSAN-built libc++.
if 'MSAN' in extra_tokens:
# Find the MSAN-built libc++.
ld_library_path.append(clang_linux + '/msan')
elif 'TSAN' in extra_tokens:
ld_library_path.append(clang_linux + '/tsan')
if any('SAN' in t for t in extra_tokens):
# Sanitized binaries may want to run clang_linux/bin/llvm-symbolizer.

View File

@ -205,7 +205,7 @@
"cwd": "[START_DIR]/skia",
"env": {
"CHROME_HEADLESS": "1",
"LD_LIBRARY_PATH": "[START_DIR]/clang_linux/lib",
"LD_LIBRARY_PATH": "[START_DIR]/clang_linux/tsan:[START_DIR]/clang_linux/lib",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/clang_linux/bin",
"TSAN_OPTIONS": "report_signal_unsafe=0"
},

View File

@ -222,7 +222,7 @@
"cwd": "[START_DIR]/skia",
"env": {
"CHROME_HEADLESS": "1",
"LD_LIBRARY_PATH": "[START_DIR]/clang_linux/lib",
"LD_LIBRARY_PATH": "[START_DIR]/clang_linux/tsan:[START_DIR]/clang_linux/lib",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]:[START_DIR]/clang_linux/bin",
"TSAN_OPTIONS": "report_signal_unsafe=0"
},

View File

@ -4309,7 +4309,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/armhf_sysroot",
@ -4674,7 +4674,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/armhf_sysroot",
@ -5735,7 +5735,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6189,7 +6189,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6268,7 +6268,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6347,7 +6347,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6422,7 +6422,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/chromebook_x86_64_gles",
@ -6501,7 +6501,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6580,7 +6580,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/opencl_headers",
@ -6669,7 +6669,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6748,7 +6748,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6827,7 +6827,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6906,7 +6906,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -6985,7 +6985,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7064,7 +7064,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7143,7 +7143,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/cmake_linux",
@ -7227,7 +7227,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/cmake_linux",
@ -7311,7 +7311,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7390,7 +7390,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7469,7 +7469,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7548,7 +7548,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7627,7 +7627,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7706,7 +7706,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7816,7 +7816,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -7891,7 +7891,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/chromebook_x86_64_gles",
@ -7970,7 +7970,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8072,7 +8072,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8150,7 +8150,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8229,7 +8229,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8308,7 +8308,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8387,7 +8387,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8466,7 +8466,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8545,7 +8545,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8624,7 +8624,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/cmake_linux",
@ -8708,7 +8708,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8787,7 +8787,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8866,7 +8866,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -8945,7 +8945,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -14727,7 +14727,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/ccache_linux",
@ -18834,7 +18834,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -18918,7 +18918,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -19730,7 +19730,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/linux_vulkan_sdk",
@ -21700,7 +21700,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -21861,7 +21861,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -32394,7 +32394,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -32478,7 +32478,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -32641,7 +32641,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -32725,7 +32725,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -33125,7 +33125,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -33209,7 +33209,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -34004,7 +34004,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -34088,7 +34088,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -34407,7 +34407,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -35075,7 +35075,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/linux_vulkan_sdk",
@ -35339,7 +35339,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/mesa_intel_driver_linux",
@ -35427,7 +35427,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/linux_vulkan_sdk",
@ -35696,7 +35696,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/mesa_intel_driver_linux",
@ -35784,7 +35784,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/linux_vulkan_sdk",
@ -35877,7 +35877,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/mesa_intel_driver_linux",
@ -39539,7 +39539,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -39783,7 +39783,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -40188,7 +40188,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
}
],
"command": [
@ -40271,7 +40271,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/linux_vulkan_sdk",
@ -40437,7 +40437,7 @@
{
"name": "skia/bots/clang_linux",
"path": "clang_linux",
"version": "version:16"
"version": "version:19"
},
{
"name": "skia/bots/linux_vulkan_sdk",