Revert "[build] Remove legacy isolate configurations"
This reverts commit 712b66da81
.
Reason for revert:
https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20builder/builds/32049
Original change's description:
> [build] Remove legacy isolate configurations
>
> Bug: chromium:669910
> Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
> Change-Id: Iad58563fd4bb35501493f88af83362b1206a186c
> Reviewed-on: https://chromium-review.googlesource.com/982630
> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
> Commit-Queue: Michael Achenbach <machenbach@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#52267}
TBR=machenbach@chromium.org,yangguo@chromium.org,sergiyb@chromium.org,jgruber@chromium.org
Change-Id: I1955325b0b419b38d793ab205131de8de08cb50a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:669910
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/983418
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52268}
This commit is contained in:
parent
712b66da81
commit
77a71f85c1
20
BUILD.gn
20
BUILD.gn
@ -17,6 +17,7 @@ if (is_android) {
|
||||
}
|
||||
|
||||
import("gni/v8.gni")
|
||||
import("gni/isolate.gni")
|
||||
import("snapshot_toolchain.gni")
|
||||
|
||||
declare_args() {
|
||||
@ -3004,6 +3005,10 @@ group("gn_all") {
|
||||
if (want_v8_shell) {
|
||||
deps += [ ":v8_shell" ]
|
||||
}
|
||||
|
||||
if (v8_test_isolation_mode != "noop") {
|
||||
deps += [ ":d8_run" ]
|
||||
}
|
||||
}
|
||||
|
||||
group("v8_clusterfuzz") {
|
||||
@ -3021,6 +3026,13 @@ group("v8_clusterfuzz") {
|
||||
":d8(//build/toolchain/linux:clang_x86_v8_arm)",
|
||||
]
|
||||
}
|
||||
|
||||
if (v8_test_isolation_mode != "noop") {
|
||||
deps += [
|
||||
"test:d8_default_run",
|
||||
"tools:run-num-fuzzer_run",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
group("v8_archive") {
|
||||
@ -3155,6 +3167,14 @@ v8_executable("d8") {
|
||||
}
|
||||
}
|
||||
|
||||
v8_isolate_run("d8") {
|
||||
deps = [
|
||||
":d8",
|
||||
]
|
||||
|
||||
isolate = "//src/d8.isolate"
|
||||
}
|
||||
|
||||
v8_executable("v8_hello_world") {
|
||||
sources = [
|
||||
"samples/hello-world.cc",
|
||||
|
203
gni/isolate.gni
Normal file
203
gni/isolate.gni
Normal file
@ -0,0 +1,203 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//build/config/sanitizers/sanitizers.gni")
|
||||
import("//third_party/icu/config.gni")
|
||||
import("v8.gni")
|
||||
|
||||
declare_args() {
|
||||
# Sets the test isolation mode (noop|prepare|check).
|
||||
v8_test_isolation_mode = "noop"
|
||||
}
|
||||
|
||||
template("v8_isolate_run") {
|
||||
forward_variables_from(invoker,
|
||||
"*",
|
||||
[
|
||||
"deps",
|
||||
"isolate",
|
||||
])
|
||||
|
||||
# Remember target name as within the action scope the target name will be
|
||||
# different.
|
||||
name = target_name
|
||||
|
||||
assert(defined(invoker.deps))
|
||||
assert(defined(invoker.isolate))
|
||||
|
||||
if (name != "" && v8_test_isolation_mode != "noop") {
|
||||
action(name + "_run") {
|
||||
testonly = true
|
||||
|
||||
deps = invoker.deps
|
||||
|
||||
script = "//tools/isolate_driver.py"
|
||||
|
||||
sources = [
|
||||
invoker.isolate,
|
||||
]
|
||||
|
||||
inputs = [
|
||||
# Files that are known to be involved in this step.
|
||||
"//tools/swarming_client/isolate.py",
|
||||
"//tools/swarming_client/run_isolated.py",
|
||||
]
|
||||
|
||||
if (v8_test_isolation_mode == "prepare") {
|
||||
outputs = [
|
||||
"$root_out_dir/$name.isolated.gen.json",
|
||||
]
|
||||
} else if (v8_test_isolation_mode == "check") {
|
||||
outputs = [
|
||||
"$root_out_dir/$name.isolated",
|
||||
"$root_out_dir/$name.isolated.state",
|
||||
]
|
||||
}
|
||||
|
||||
# Translate gn to gyp variables.
|
||||
if (v8_code_coverage) {
|
||||
coverage = "1"
|
||||
} else {
|
||||
coverage = "0"
|
||||
}
|
||||
if (is_asan) {
|
||||
asan = "1"
|
||||
} else {
|
||||
asan = "0"
|
||||
}
|
||||
if (is_msan) {
|
||||
msan = "1"
|
||||
} else {
|
||||
msan = "0"
|
||||
}
|
||||
if (is_tsan) {
|
||||
tsan = "1"
|
||||
} else {
|
||||
tsan = "0"
|
||||
}
|
||||
if (is_cfi) {
|
||||
cfi_vptr = "1"
|
||||
} else {
|
||||
cfi_vptr = "0"
|
||||
}
|
||||
if (target_cpu == "x86") {
|
||||
target_arch = "ia32"
|
||||
} else {
|
||||
target_arch = target_cpu
|
||||
}
|
||||
if (is_debug) {
|
||||
configuration_name = "Debug"
|
||||
} else {
|
||||
configuration_name = "Release"
|
||||
}
|
||||
if (is_component_build) {
|
||||
component = "shared_library"
|
||||
} else {
|
||||
component = "static_library"
|
||||
}
|
||||
if (icu_use_data_file) {
|
||||
icu_use_data_file_flag = "1"
|
||||
} else {
|
||||
icu_use_data_file_flag = "0"
|
||||
}
|
||||
if (v8_use_external_startup_data) {
|
||||
use_external_startup_data = "1"
|
||||
} else {
|
||||
use_external_startup_data = "0"
|
||||
}
|
||||
if (is_ubsan_vptr) {
|
||||
ubsan_vptr = "1"
|
||||
} else {
|
||||
ubsan_vptr = "0"
|
||||
}
|
||||
if (v8_use_snapshot) {
|
||||
use_snapshot = "true"
|
||||
} else {
|
||||
use_snapshot = "false"
|
||||
}
|
||||
if (v8_use_multi_snapshots) {
|
||||
multi_snapshots = "1"
|
||||
} else {
|
||||
multi_snapshots = "0"
|
||||
}
|
||||
if (v8_has_valgrind) {
|
||||
has_valgrind = "1"
|
||||
} else {
|
||||
has_valgrind = "0"
|
||||
}
|
||||
if (v8_gcmole) {
|
||||
gcmole = "1"
|
||||
} else {
|
||||
gcmole = "0"
|
||||
}
|
||||
|
||||
# Note, all paths will be rebased in isolate_driver.py to be relative to
|
||||
# the isolate file.
|
||||
args = [
|
||||
v8_test_isolation_mode,
|
||||
"--isolated",
|
||||
rebase_path("$root_out_dir/$name.isolated", root_build_dir),
|
||||
"--isolate",
|
||||
rebase_path(invoker.isolate, root_build_dir),
|
||||
|
||||
# Path variables are used to replace file paths when loading a .isolate
|
||||
# file
|
||||
"--path-variable",
|
||||
"DEPTH",
|
||||
rebase_path("//", root_build_dir),
|
||||
"--path-variable",
|
||||
"PRODUCT_DIR",
|
||||
rebase_path(root_out_dir, root_build_dir),
|
||||
|
||||
# TODO(machenbach): Set variables for remaining features.
|
||||
"--config-variable",
|
||||
"CONFIGURATION_NAME=$configuration_name",
|
||||
"--config-variable",
|
||||
"OS=$target_os",
|
||||
"--config-variable",
|
||||
"asan=$asan",
|
||||
"--config-variable",
|
||||
"cfi_vptr=$cfi_vptr",
|
||||
"--config-variable",
|
||||
"gcmole=$gcmole",
|
||||
"--config-variable",
|
||||
"has_valgrind=$has_valgrind",
|
||||
"--config-variable",
|
||||
"icu_use_data_file_flag=$icu_use_data_file_flag",
|
||||
"--config-variable",
|
||||
"msan=$msan",
|
||||
"--config-variable",
|
||||
"tsan=$tsan",
|
||||
"--config-variable",
|
||||
"coverage=$coverage",
|
||||
"--config-variable",
|
||||
"sanitizer_coverage=$sanitizer_coverage_flags",
|
||||
"--config-variable",
|
||||
"component=$component",
|
||||
"--config-variable",
|
||||
"target_arch=$target_arch",
|
||||
"--config-variable",
|
||||
"ubsan_vptr=$ubsan_vptr",
|
||||
"--config-variable",
|
||||
"v8_use_multi_snapshots=$multi_snapshots",
|
||||
"--config-variable",
|
||||
"v8_use_external_startup_data=$use_external_startup_data",
|
||||
"--config-variable",
|
||||
"v8_use_snapshot=$use_snapshot",
|
||||
]
|
||||
|
||||
if (is_win) {
|
||||
args += [
|
||||
"--config-variable",
|
||||
"msvs_version=2017",
|
||||
]
|
||||
} else {
|
||||
args += [
|
||||
"--config-variable",
|
||||
"msvs_version=0",
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
97
gni/msvs_dependencies.isolate
Normal file
97
gni/msvs_dependencies.isolate
Normal file
@ -0,0 +1,97 @@
|
||||
# Copyright 2016 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.
|
||||
|
||||
# TODO(machenbach): Remove this when crbug.com/669910 is resolved.
|
||||
{
|
||||
'conditions': [
|
||||
# Copy the VS runtime DLLs into the isolate so that they
|
||||
# don't have to be preinstalled on the target machine.
|
||||
#
|
||||
# VS2013 runtimes
|
||||
['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/msvcp120d.dll',
|
||||
'<(PRODUCT_DIR)/msvcr120d.dll',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/msvcp120.dll',
|
||||
'<(PRODUCT_DIR)/msvcr120.dll',
|
||||
],
|
||||
},
|
||||
}],
|
||||
# VS2015/2017 runtimes
|
||||
['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/msvcp140d.dll',
|
||||
'<(PRODUCT_DIR)/vccorlib140d.dll',
|
||||
'<(PRODUCT_DIR)/vcruntime140d.dll',
|
||||
'<(PRODUCT_DIR)/ucrtbased.dll',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/msvcp140.dll',
|
||||
'<(PRODUCT_DIR)/vccorlib140.dll',
|
||||
'<(PRODUCT_DIR)/vcruntime140.dll',
|
||||
'<(PRODUCT_DIR)/ucrtbase.dll',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library"', {
|
||||
# Windows 10 Universal C Runtime binaries.
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-console-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-datetime-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-debug-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-errorhandling-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-file-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-file-l1-2-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-file-l2-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-handle-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-heap-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-interlocked-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-libraryloader-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-localization-l1-2-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-memory-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-namedpipe-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-processenvironment-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-1.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-profile-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-rtlsupport-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-string-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-synch-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-synch-l1-2-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-sysinfo-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-timezone-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-core-util-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-conio-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-convert-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-environment-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-filesystem-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-heap-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-locale-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-math-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-multibyte-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-private-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-process-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-runtime-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-stdio-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-string-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-time-l1-1-0.dll',
|
||||
'<(PRODUCT_DIR)/api-ms-win-crt-utility-l1-1-0.dll',
|
||||
],
|
||||
},
|
||||
}],
|
||||
],
|
||||
}
|
46
src/base.isolate
Normal file
46
src/base.isolate
Normal file
@ -0,0 +1,46 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'includes': [
|
||||
'../third_party/icu/icu.isolate',
|
||||
|
||||
# MSVS runtime libraries.
|
||||
'../gni/msvs_dependencies.isolate',
|
||||
],
|
||||
'conditions': [
|
||||
['v8_use_snapshot=="true" and v8_use_external_startup_data==1', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/natives_blob.bin',
|
||||
'<(PRODUCT_DIR)/snapshot_blob.bin',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and v8_use_multi_snapshots==1', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/snapshot_blob_trusted.bin',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['tsan==1', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'../tools/sanitizers/tsan_suppressions.txt',
|
||||
],
|
||||
},
|
||||
}],
|
||||
['asan==1 or cfi_vptr==1 or msan==1 or tsan==1 or ubsan_vptr==1', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'../third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer<(EXECUTABLE_SUFFIX)',
|
||||
],
|
||||
},
|
||||
}],
|
||||
# Workaround for https://code.google.com/p/swarming/issues/detail?id=211
|
||||
['asan==0 or cfi_vptr==0 or msan==0 or tsan==0 or ubsan_vptr==0 ', {
|
||||
'variables': {},
|
||||
}],
|
||||
],
|
||||
}
|
16
src/d8.isolate
Normal file
16
src/d8.isolate
Normal file
@ -0,0 +1,16 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'<(PRODUCT_DIR)/d8<(EXECUTABLE_SUFFIX)',
|
||||
],
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/d8<(EXECUTABLE_SUFFIX)',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'base.isolate',
|
||||
],
|
||||
}
|
211
test/BUILD.gn
211
test/BUILD.gn
@ -2,6 +2,7 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("../gni/isolate.gni")
|
||||
import("../gni/v8.gni")
|
||||
|
||||
group("gn_all") {
|
||||
@ -21,6 +22,7 @@ group("gn_all") {
|
||||
]
|
||||
|
||||
deps = [
|
||||
":default_tests",
|
||||
"inspector:inspector-test",
|
||||
"mkgrokdump:mkgrokdump",
|
||||
]
|
||||
@ -33,6 +35,17 @@ group("gn_all") {
|
||||
"unittests:unittests",
|
||||
]
|
||||
}
|
||||
|
||||
if (v8_test_isolation_mode != "noop") {
|
||||
deps += [
|
||||
":benchmarks_run",
|
||||
":bot_default_run",
|
||||
":default_run",
|
||||
":d8_default_run",
|
||||
":mozilla_run",
|
||||
"test262:test262_run",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
@ -134,3 +147,201 @@ group("v8_run_num_fuzzer") {
|
||||
"webkit:v8_webkit",
|
||||
]
|
||||
}
|
||||
|
||||
group("default_tests") {
|
||||
testonly = true
|
||||
|
||||
if (v8_test_isolation_mode != "noop") {
|
||||
deps = [
|
||||
":cctest_run",
|
||||
":debugger_run",
|
||||
":fuzzer_run",
|
||||
":inspector-test_run",
|
||||
":intl_run",
|
||||
":message_run",
|
||||
":mjsunit_run",
|
||||
":mkgrokdump_run",
|
||||
":preparser_run",
|
||||
":unittests_run",
|
||||
":wasm_spec_tests_run",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
v8_isolate_run("bot_default") {
|
||||
deps = [
|
||||
":default_tests",
|
||||
":webkit_run",
|
||||
]
|
||||
|
||||
isolate = "bot_default.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("default") {
|
||||
deps = [
|
||||
":default_tests",
|
||||
]
|
||||
|
||||
isolate = "default.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("d8_default") {
|
||||
deps = [
|
||||
":debugger_run",
|
||||
":intl_run",
|
||||
":message_run",
|
||||
":mjsunit_run",
|
||||
":preparser_run",
|
||||
":webkit_run",
|
||||
]
|
||||
|
||||
isolate = "d8_default.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("optimize_for_size") {
|
||||
deps = [
|
||||
":cctest_run",
|
||||
":inspector-test_run",
|
||||
":intl_run",
|
||||
":mjsunit_run",
|
||||
":webkit_run",
|
||||
]
|
||||
|
||||
isolate = "optimize_for_size.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("perf") {
|
||||
deps = [
|
||||
":cctest_exe_run",
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "perf.isolate"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Subtests
|
||||
#
|
||||
|
||||
v8_isolate_run("benchmarks") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "benchmarks/benchmarks.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("cctest") {
|
||||
deps = [
|
||||
":cctest_exe_run",
|
||||
]
|
||||
|
||||
isolate = "cctest/cctest.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("cctest_exe") {
|
||||
deps = [
|
||||
"cctest:cctest",
|
||||
]
|
||||
|
||||
isolate = "cctest/cctest_exe.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("debugger") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "debugger/debugger.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("fuzzer") {
|
||||
deps = [
|
||||
"..:v8_simple_json_fuzzer",
|
||||
"..:v8_simple_parser_fuzzer",
|
||||
"..:v8_simple_regexp_fuzzer",
|
||||
"..:v8_simple_wasm_fuzzer",
|
||||
]
|
||||
|
||||
isolate = "fuzzer/fuzzer.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("inspector-test") {
|
||||
deps = [
|
||||
"inspector:inspector-test",
|
||||
]
|
||||
|
||||
isolate = "inspector/inspector.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("intl") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "intl/intl.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("message") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "message/message.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("mjsunit") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "mjsunit/mjsunit.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("mkgrokdump") {
|
||||
deps = [
|
||||
"mkgrokdump:mkgrokdump",
|
||||
]
|
||||
|
||||
isolate = "mkgrokdump/mkgrokdump.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("mozilla") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "mozilla/mozilla.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("preparser") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "preparser/preparser.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("unittests") {
|
||||
deps = [
|
||||
"unittests:unittests",
|
||||
]
|
||||
|
||||
isolate = "unittests/unittests.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("wasm_spec_tests") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "wasm-spec-tests/wasm-spec-tests.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("webkit") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "webkit/webkit.isolate"
|
||||
}
|
||||
|
14
test/benchmarks/benchmarks.isolate
Normal file
14
test/benchmarks/benchmarks.isolate
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
24
test/bot_default.isolate
Normal file
24
test/bot_default.isolate
Normal file
@ -0,0 +1,24 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'../tools/run-tests.py',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'cctest/cctest.isolate',
|
||||
'debugger/debugger.isolate',
|
||||
'fuzzer/fuzzer.isolate',
|
||||
'inspector/inspector.isolate',
|
||||
'intl/intl.isolate',
|
||||
'message/message.isolate',
|
||||
'mjsunit/mjsunit.isolate',
|
||||
'mkgrokdump/mkgrokdump.isolate',
|
||||
'preparser/preparser.isolate',
|
||||
'unittests/unittests.isolate',
|
||||
'wasm-spec-tests/wasm-spec-tests.isolate',
|
||||
'webkit/webkit.isolate',
|
||||
],
|
||||
}
|
16
test/cctest/cctest.isolate
Normal file
16
test/cctest/cctest.isolate
Normal file
@ -0,0 +1,16 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./cctest.status',
|
||||
'./testcfg.py',
|
||||
'./interpreter/bytecode_expectations/',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'cctest_exe.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
13
test/cctest/cctest_exe.isolate
Normal file
13
test/cctest/cctest_exe.isolate
Normal file
@ -0,0 +1,13 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/cctest<(EXECUTABLE_SUFFIX)',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/base.isolate',
|
||||
],
|
||||
}
|
18
test/d8_default.isolate
Normal file
18
test/d8_default.isolate
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright 2018 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'../tools/run-tests.py',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'debugger/debugger.isolate',
|
||||
'intl/intl.isolate',
|
||||
'message/message.isolate',
|
||||
'mjsunit/mjsunit.isolate',
|
||||
'preparser/preparser.isolate',
|
||||
'webkit/webkit.isolate',
|
||||
],
|
||||
}
|
15
test/debugger/debugger.isolate
Normal file
15
test/debugger/debugger.isolate
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
23
test/default.isolate
Normal file
23
test/default.isolate
Normal file
@ -0,0 +1,23 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'../tools/run-tests.py',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'cctest/cctest.isolate',
|
||||
'debugger/debugger.isolate',
|
||||
'fuzzer/fuzzer.isolate',
|
||||
'inspector/inspector.isolate'
|
||||
'intl/intl.isolate',
|
||||
'message/message.isolate',
|
||||
'mjsunit/mjsunit.isolate',
|
||||
'mkgrokdump/mkgrokdump.isolate',
|
||||
'preparser/preparser.isolate',
|
||||
'unittests/unittests.isolate',
|
||||
'wasm-spec-tests/wasm-spec-tests.isolate',
|
||||
],
|
||||
}
|
48
test/fuzzer/fuzzer.isolate
Normal file
48
test/fuzzer/fuzzer.isolate
Normal file
@ -0,0 +1,48 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/v8_simple_json_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_parser_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_regexp_builtins_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_regexp_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_multi_return_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_async_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_code_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_compile_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_data_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_function_sigs_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_globals_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_imports_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_memory_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_names_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'<(PRODUCT_DIR)/v8_simple_wasm_types_section_fuzzer<(EXECUTABLE_SUFFIX)',
|
||||
'./fuzzer.status',
|
||||
'./testcfg.py',
|
||||
'./json/',
|
||||
'./parser/',
|
||||
'./regexp/',
|
||||
'./regexp_builtins/',
|
||||
'./multi_return/',
|
||||
'./wasm/',
|
||||
'./wasm_async/',
|
||||
'./wasm_code/',
|
||||
'./wasm_compile/',
|
||||
'./wasm_data_section/',
|
||||
'./wasm_function_sigs_section/',
|
||||
'./wasm_globals_section/',
|
||||
'./wasm_imports_section/',
|
||||
'./wasm_memory_section/',
|
||||
'./wasm_names_section/',
|
||||
'./wasm_types_section/',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/base.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
27
test/inspector/inspector.isolate
Normal file
27
test/inspector/inspector.isolate
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./console/',
|
||||
'./cpu-profiler/',
|
||||
'./debugger/',
|
||||
'./heap-profiler/',
|
||||
'./inspector.status',
|
||||
'./json-parse-expected.txt',
|
||||
'./json-parse.js',
|
||||
'./protocol-test.js',
|
||||
'./runtime/',
|
||||
'./sessions/',
|
||||
'./testcfg.py',
|
||||
'./type-profiler/',
|
||||
'../../src/inspector/injected-script-source.js',
|
||||
'<(PRODUCT_DIR)/inspector-test<(EXECUTABLE_SUFFIX)',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/base.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
14
test/intl/intl.isolate
Normal file
14
test/intl/intl.isolate
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
14
test/message/message.isolate
Normal file
14
test/message/message.isolate
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
28
test/mjsunit/mjsunit.isolate
Normal file
28
test/mjsunit/mjsunit.isolate
Normal file
@ -0,0 +1,28 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
'../../tools/codemap.js',
|
||||
'../../tools/consarray.js',
|
||||
'../../tools/csvparser.js',
|
||||
'../../tools/logreader.js',
|
||||
'../../tools/arguments.js',
|
||||
'../../tools/profile.js',
|
||||
'../../tools/profile_view.js',
|
||||
'../../tools/profviz/composer.js',
|
||||
'../../tools/splaytree.js',
|
||||
'../../tools/tickprocessor.js',
|
||||
'../../tools/dumpcpp.js',
|
||||
'../wasm-js/test/harness/wasm-constants.js',
|
||||
'../wasm-js/test/harness/wasm-module-builder.js',
|
||||
'../wasm-js/test/js-api/jsapi.js',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
17
test/mkgrokdump/mkgrokdump.isolate
Normal file
17
test/mkgrokdump/mkgrokdump.isolate
Normal file
@ -0,0 +1,17 @@
|
||||
# Copyright 2017 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./mkgrokdump.status',
|
||||
'./testcfg.py',
|
||||
'../../tools/v8heapconst.py',
|
||||
'<(PRODUCT_DIR)/mkgrokdump<(EXECUTABLE_SUFFIX)',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/base.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
14
test/mozilla/mozilla.isolate
Normal file
14
test/mozilla/mozilla.isolate
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
18
test/optimize_for_size.isolate
Normal file
18
test/optimize_for_size.isolate
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'../tools/run-tests.py',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'cctest/cctest.isolate',
|
||||
'debugger/debugger.isolate',
|
||||
'inspector/inspector.isolate',
|
||||
'intl/intl.isolate',
|
||||
'mjsunit/mjsunit.isolate',
|
||||
'webkit/webkit.isolate',
|
||||
],
|
||||
}
|
27
test/perf.isolate
Normal file
27
test/perf.isolate
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'../tools/run_perf.py',
|
||||
],
|
||||
'files': [
|
||||
'../tools/run_perf.py',
|
||||
# TODO(machenbach): These files are referenced by the perf runner.
|
||||
# They should be transformed into a proper python module.
|
||||
'../tools/testrunner/local/command.py',
|
||||
'../tools/testrunner/local/utils.py',
|
||||
'../tools/testrunner/objects/output.py',
|
||||
# This is often used to trigger performance bots. We include it in the
|
||||
# isolate to not get these builds deduped.
|
||||
'../tools/whitespace.txt',
|
||||
'js-perf-test/',
|
||||
'memory/',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'cctest/cctest_exe.isolate',
|
||||
'../src/d8.isolate',
|
||||
],
|
||||
}
|
14
test/preparser/preparser.isolate
Normal file
14
test/preparser/preparser.isolate
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
@ -2,6 +2,8 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("../../gni/isolate.gni")
|
||||
|
||||
group("v8_test262") {
|
||||
testonly = true
|
||||
|
||||
@ -21,3 +23,32 @@ group("v8_test262") {
|
||||
"local-tests/",
|
||||
]
|
||||
}
|
||||
|
||||
if (v8_test_isolation_mode != "noop") {
|
||||
action("archive_test262") {
|
||||
visibility = [ ":*" ]
|
||||
|
||||
script = "archive.py"
|
||||
|
||||
inputs = [
|
||||
"list.py",
|
||||
]
|
||||
|
||||
sources = exec_script("list.py", [], "list lines")
|
||||
|
||||
outputs = [
|
||||
"$target_gen_dir/test262_archiving.stamp",
|
||||
]
|
||||
|
||||
args = rebase_path(outputs, root_build_dir)
|
||||
}
|
||||
}
|
||||
|
||||
v8_isolate_run("test262") {
|
||||
deps = [
|
||||
":archive_test262",
|
||||
"../..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "test262.isolate"
|
||||
}
|
38
test/test262/archive.py
Executable file
38
test/test262/archive.py
Executable file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import tarfile
|
||||
import time
|
||||
|
||||
# In GN we expect the path to a stamp file as an argument.
|
||||
if len(sys.argv) == 2:
|
||||
STAMP_FILE = os.path.abspath(sys.argv[1])
|
||||
|
||||
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
# Workaround for slow grp and pwd calls.
|
||||
tarfile.grp = None
|
||||
tarfile.pwd = None
|
||||
|
||||
def filter_git(tar_info):
|
||||
if tar_info.name.startswith(os.path.join('data', '.git')) or \
|
||||
tar_info.name.startswith(os.path.join('harness', '.git')):
|
||||
return None
|
||||
else:
|
||||
tar_info.uname = tar_info.gname = "test262"
|
||||
return tar_info
|
||||
|
||||
with tarfile.open('data.tar', 'w') as tar:
|
||||
tar.add('data', filter=filter_git)
|
||||
tar.add('harness', filter=filter_git)
|
||||
|
||||
# Workaround for GN. We can't specify the tarfile as output because it's
|
||||
# not in the product directory. Therefore we track running of this script
|
||||
# with an extra stamp file in the product directory.
|
||||
if len(sys.argv) == 2:
|
||||
with open(STAMP_FILE, 'w') as f:
|
||||
f.write(str(time.time()))
|
26
test/test262/list.py
Executable file
26
test/test262/list.py
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import tarfile
|
||||
from itertools import chain
|
||||
|
||||
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
for root, dirs, files in chain(os.walk("data"), os.walk("harness")):
|
||||
dirs[:] = [d for d in dirs if not d.endswith('.git')]
|
||||
for name in files:
|
||||
# These names are for gyp, which expects slashes on all platforms.
|
||||
pathname = '/'.join(root.split(os.sep) + [name])
|
||||
# For gyp, quote the name in case it includes spaces
|
||||
if len(sys.argv) > 1 and sys.argv[1] == '--quoted':
|
||||
pathname = '"' + pathname + '"'
|
||||
# Temporary hack until we upgrade to gn swarming:
|
||||
# gyp doesn't handle files containing $ in the name very well, so we just
|
||||
# exclude them from the 'sources' list and hope that other changes cause
|
||||
# the archive to be rebuilt.
|
||||
if '$' in pathname: continue
|
||||
print(pathname)
|
20
test/test262/test262.isolate
Normal file
20
test/test262/test262.isolate
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'data.tar',
|
||||
'detachArrayBuffer.js',
|
||||
'harness-adapt.js',
|
||||
'harness-agent.js',
|
||||
'test262.status',
|
||||
'testcfg.py',
|
||||
'local-tests/',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
16
test/unittests/unittests.isolate
Normal file
16
test/unittests/unittests.isolate
Normal file
@ -0,0 +1,16 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/unittests<(EXECUTABLE_SUFFIX)',
|
||||
'./testcfg.py',
|
||||
'./unittests.status',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/base.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
15
test/wasm-spec-tests/wasm-spec-tests.isolate
Normal file
15
test/wasm-spec-tests/wasm-spec-tests.isolate
Normal file
@ -0,0 +1,15 @@
|
||||
# Copyright 2017 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
||||
|
14
test/webkit/webkit.isolate
Normal file
14
test/webkit/webkit.isolate
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'files': [
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
'../../tools/testrunner/testrunner.isolate',
|
||||
],
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//build/config/sanitizers/sanitizers.gni")
|
||||
import("../gni/isolate.gni")
|
||||
import("../gni/v8.gni")
|
||||
|
||||
group("gn_all") {
|
||||
@ -13,6 +14,15 @@ group("gn_all") {
|
||||
"gcmole:v8_run_gcmole",
|
||||
"jsfunfuzz:v8_jsfunfuzz",
|
||||
]
|
||||
|
||||
if (v8_test_isolation_mode != "noop") {
|
||||
deps = [
|
||||
":check-static-initializers_run",
|
||||
":jsfunfuzz_run",
|
||||
":run-gcmole_run",
|
||||
":run-num-fuzzer_run",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
group("v8_check_static_initializers") {
|
||||
@ -45,3 +55,36 @@ group("v8_testrunner") {
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
v8_isolate_run("check-static-initializers") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "check-static-initializers.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("jsfunfuzz") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "jsfunfuzz/jsfunfuzz.isolate"
|
||||
}
|
||||
|
||||
v8_isolate_run("run-gcmole") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "gcmole/run-gcmole.isolate"
|
||||
}
|
||||
|
||||
# TODO(machenbach): Add tests as dependencies.
|
||||
v8_isolate_run("run-num-fuzzer") {
|
||||
deps = [
|
||||
"..:d8_run",
|
||||
]
|
||||
|
||||
isolate = "run-num-fuzzer.isolate"
|
||||
}
|
||||
|
16
tools/check-static-initializers.isolate
Normal file
16
tools/check-static-initializers.isolate
Normal file
@ -0,0 +1,16 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'check-static-initializers.sh',
|
||||
],
|
||||
'files': [
|
||||
'check-static-initializers.sh',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../src/d8.isolate',
|
||||
],
|
||||
}
|
36
tools/gcmole/run-gcmole.isolate
Normal file
36
tools/gcmole/run-gcmole.isolate
Normal file
@ -0,0 +1,36 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'run-gcmole.py',
|
||||
],
|
||||
'files': [
|
||||
'gccause.lua',
|
||||
'gcmole.lua',
|
||||
'parallel.py',
|
||||
'run-gcmole.py',
|
||||
# The following contains all relevant source and gyp files.
|
||||
'../../BUILD.gn',
|
||||
'../../base/',
|
||||
'../../include/',
|
||||
'../../src/',
|
||||
'../../test/cctest/',
|
||||
'../../testing/gtest/include/gtest/gtest_prod.h',
|
||||
'../../third_party/googletest/src/googletest/include/gtest/gtest_prod.h',
|
||||
'../../third_party/icu/source/',
|
||||
],
|
||||
},
|
||||
'conditions': [
|
||||
['gcmole==1', {
|
||||
'variables': {
|
||||
'files': [
|
||||
# This assumes gcmole tools have been fetched by a hook
|
||||
# into v8/tools/gcmole/gcmole_tools.
|
||||
'gcmole-tools/',
|
||||
],
|
||||
},
|
||||
}],
|
||||
],
|
||||
}
|
340
tools/isolate_driver.py
Normal file
340
tools/isolate_driver.py
Normal file
@ -0,0 +1,340 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Copyright 2014 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.
|
||||
|
||||
"""Adaptor script called through gni/isolate.gni.
|
||||
|
||||
Creates a wrapping .isolate which 'includes' the original one, that can be
|
||||
consumed by tools/swarming_client/isolate.py. Path variables are determined
|
||||
based on the current working directory. The relative_cwd in the .isolated file
|
||||
is determined based on the .isolate file that declare the 'command' variable to
|
||||
be used so the wrapping .isolate doesn't affect this value.
|
||||
|
||||
This script loads build.ninja and processes it to determine all the executables
|
||||
referenced by the isolated target. It adds them in the wrapping .isolate file.
|
||||
|
||||
WARNING: The target to use for build.ninja analysis is the base name of the
|
||||
.isolate file plus '_run'. For example, 'foo_test.isolate' would have the target
|
||||
'foo_test_run' analysed.
|
||||
"""
|
||||
|
||||
import errno
|
||||
import glob
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import posixpath
|
||||
import StringIO
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
TOOLS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
SWARMING_CLIENT_DIR = os.path.join(TOOLS_DIR, 'swarming_client')
|
||||
SRC_DIR = os.path.dirname(TOOLS_DIR)
|
||||
|
||||
sys.path.insert(0, SWARMING_CLIENT_DIR)
|
||||
|
||||
import isolate_format
|
||||
|
||||
|
||||
def load_ninja_recursively(build_dir, ninja_path, build_steps):
|
||||
"""Crudely extracts all the subninja and build referenced in ninja_path.
|
||||
|
||||
In particular, it ignores rule and variable declarations. The goal is to be
|
||||
performant (well, as much as python can be performant) which is currently in
|
||||
the <200ms range for a complete chromium tree. As such the code is laid out
|
||||
for performance instead of readability.
|
||||
"""
|
||||
logging.debug('Loading %s', ninja_path)
|
||||
try:
|
||||
with open(os.path.join(build_dir, ninja_path), 'rb') as f:
|
||||
line = None
|
||||
merge_line = ''
|
||||
subninja = []
|
||||
for line in f:
|
||||
line = line.rstrip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
if line[-1] == '$':
|
||||
# The next line needs to be merged in.
|
||||
merge_line += line[:-1]
|
||||
continue
|
||||
|
||||
if merge_line:
|
||||
line = merge_line + line
|
||||
merge_line = ''
|
||||
|
||||
statement = line[:line.find(' ')]
|
||||
if statement == 'build':
|
||||
# Save the dependency list as a raw string. Only the lines needed will
|
||||
# be processed with raw_build_to_deps(). This saves a good 70ms of
|
||||
# processing time.
|
||||
build_target, dependencies = line[6:].split(': ', 1)
|
||||
# Interestingly, trying to be smart and only saving the build steps
|
||||
# with the intended extensions ('', '.stamp', '.so') slows down
|
||||
# parsing even if 90% of the build rules can be skipped.
|
||||
# On Windows, a single step may generate two target, so split items
|
||||
# accordingly. It has only been seen for .exe/.exe.pdb combos.
|
||||
for i in build_target.strip().split():
|
||||
build_steps[i] = dependencies
|
||||
elif statement == 'subninja':
|
||||
subninja.append(line[9:])
|
||||
except IOError:
|
||||
print >> sys.stderr, 'Failed to open %s' % ninja_path
|
||||
raise
|
||||
|
||||
total = 1
|
||||
for rel_path in subninja:
|
||||
try:
|
||||
# Load each of the files referenced.
|
||||
# TODO(maruel): Skip the files known to not be needed. It saves an aweful
|
||||
# lot of processing time.
|
||||
total += load_ninja_recursively(build_dir, rel_path, build_steps)
|
||||
except IOError:
|
||||
print >> sys.stderr, '... as referenced by %s' % ninja_path
|
||||
raise
|
||||
return total
|
||||
|
||||
|
||||
def load_ninja(build_dir):
|
||||
"""Loads the tree of .ninja files in build_dir."""
|
||||
build_steps = {}
|
||||
total = load_ninja_recursively(build_dir, 'build.ninja', build_steps)
|
||||
logging.info('Loaded %d ninja files, %d build steps', total, len(build_steps))
|
||||
return build_steps
|
||||
|
||||
|
||||
def using_blacklist(item):
|
||||
"""Returns True if an item should be analyzed.
|
||||
|
||||
Ignores many rules that are assumed to not depend on a dynamic library. If
|
||||
the assumption doesn't hold true anymore for a file format, remove it from
|
||||
this list. This is simply an optimization.
|
||||
"""
|
||||
# *.json is ignored below, *.isolated.gen.json is an exception, it is produced
|
||||
# by isolate_driver.py in 'test_isolation_mode==prepare'.
|
||||
if item.endswith('.isolated.gen.json'):
|
||||
return True
|
||||
IGNORED = (
|
||||
'.a', '.cc', '.css', '.dat', '.def', '.frag', '.h', '.html', '.isolate',
|
||||
'.js', '.json', '.manifest', '.o', '.obj', '.pak', '.png', '.pdb', '.py',
|
||||
'.strings', '.test', '.txt', '.vert',
|
||||
)
|
||||
# ninja files use native path format.
|
||||
ext = os.path.splitext(item)[1]
|
||||
if ext in IGNORED:
|
||||
return False
|
||||
# Special case Windows, keep .dll.lib but discard .lib.
|
||||
if item.endswith('.dll.lib'):
|
||||
return True
|
||||
if ext == '.lib':
|
||||
return False
|
||||
return item not in ('', '|', '||')
|
||||
|
||||
|
||||
def raw_build_to_deps(item):
|
||||
"""Converts a raw ninja build statement into the list of interesting
|
||||
dependencies.
|
||||
"""
|
||||
# TODO(maruel): Use a whitelist instead? .stamp, .so.TOC, .dylib.TOC,
|
||||
# .dll.lib, .exe and empty.
|
||||
# The first item is the build rule, e.g. 'link', 'cxx', 'phony', etc.
|
||||
return filter(using_blacklist, item.split(' ')[1:])
|
||||
|
||||
|
||||
def collect_deps(target, build_steps, dependencies_added, rules_seen):
|
||||
"""Recursively adds all the interesting dependencies for |target|
|
||||
into |dependencies_added|.
|
||||
"""
|
||||
if rules_seen is None:
|
||||
rules_seen = set()
|
||||
if target in rules_seen:
|
||||
# TODO(maruel): Figure out how it happens.
|
||||
logging.warning('Circular dependency for %s!', target)
|
||||
return
|
||||
rules_seen.add(target)
|
||||
try:
|
||||
dependencies = raw_build_to_deps(build_steps[target])
|
||||
except KeyError:
|
||||
logging.info('Failed to find a build step to generate: %s', target)
|
||||
return
|
||||
logging.debug('collect_deps(%s) -> %s', target, dependencies)
|
||||
for dependency in dependencies:
|
||||
dependencies_added.add(dependency)
|
||||
collect_deps(dependency, build_steps, dependencies_added, rules_seen)
|
||||
|
||||
|
||||
def post_process_deps(build_dir, dependencies):
|
||||
"""Processes the dependency list with OS specific rules."""
|
||||
def filter_item(i):
|
||||
if i.endswith('.so.TOC'):
|
||||
# Remove only the suffix .TOC, not the .so!
|
||||
return i[:-4]
|
||||
if i.endswith('.dylib.TOC'):
|
||||
# Remove only the suffix .TOC, not the .dylib!
|
||||
return i[:-4]
|
||||
if i.endswith('.dll.lib'):
|
||||
# Remove only the suffix .lib, not the .dll!
|
||||
return i[:-4]
|
||||
return i
|
||||
|
||||
def is_exe(i):
|
||||
# This script is only for adding new binaries that are created as part of
|
||||
# the component build.
|
||||
ext = os.path.splitext(i)[1]
|
||||
# On POSIX, executables have no extension.
|
||||
if ext not in ('', '.dll', '.dylib', '.exe', '.nexe', '.so'):
|
||||
return False
|
||||
if os.path.isabs(i):
|
||||
# In some rare case, there's dependency set explicitly on files outside
|
||||
# the checkout.
|
||||
return False
|
||||
|
||||
# Check for execute access and strip directories. This gets rid of all the
|
||||
# phony rules.
|
||||
p = os.path.join(build_dir, i)
|
||||
return os.access(p, os.X_OK) and not os.path.isdir(p)
|
||||
|
||||
return filter(is_exe, map(filter_item, dependencies))
|
||||
|
||||
|
||||
def create_wrapper(args, isolate_index, isolated_index):
|
||||
"""Creates a wrapper .isolate that add dynamic libs.
|
||||
|
||||
The original .isolate is not modified.
|
||||
"""
|
||||
cwd = os.getcwd()
|
||||
isolate = args[isolate_index]
|
||||
# The code assumes the .isolate file is always specified path-less in cwd. Fix
|
||||
# if this assumption doesn't hold true.
|
||||
assert os.path.basename(isolate) == isolate, isolate
|
||||
|
||||
# This will look like ../out/Debug. This is based against cwd. Note that this
|
||||
# must equal the value provided as PRODUCT_DIR.
|
||||
build_dir = os.path.dirname(args[isolated_index])
|
||||
|
||||
# This will look like chrome/unit_tests.isolate. It is based against SRC_DIR.
|
||||
# It's used to calculate temp_isolate.
|
||||
src_isolate = os.path.relpath(os.path.join(cwd, isolate), SRC_DIR)
|
||||
|
||||
# The wrapping .isolate. This will look like
|
||||
# ../out/Debug/gen/chrome/unit_tests.isolate.
|
||||
temp_isolate = os.path.join(build_dir, 'gen', src_isolate)
|
||||
temp_isolate_dir = os.path.dirname(temp_isolate)
|
||||
|
||||
# Relative path between the new and old .isolate file.
|
||||
isolate_relpath = os.path.relpath(
|
||||
'.', temp_isolate_dir).replace(os.path.sep, '/')
|
||||
|
||||
# It's a big assumption here that the name of the isolate file matches the
|
||||
# primary target '_run'. Fix accordingly if this doesn't hold true, e.g.
|
||||
# complain to maruel@.
|
||||
target = isolate[:-len('.isolate')] + '_run'
|
||||
build_steps = load_ninja(build_dir)
|
||||
binary_deps = set()
|
||||
collect_deps(target, build_steps, binary_deps, None)
|
||||
binary_deps = post_process_deps(build_dir, binary_deps)
|
||||
logging.debug(
|
||||
'Binary dependencies:%s', ''.join('\n ' + i for i in binary_deps))
|
||||
|
||||
# Now do actual wrapping .isolate.
|
||||
isolate_dict = {
|
||||
'includes': [
|
||||
posixpath.join(isolate_relpath, isolate),
|
||||
],
|
||||
'variables': {
|
||||
# Will look like ['<(PRODUCT_DIR)/lib/flibuser_prefs.so'].
|
||||
'files': sorted(
|
||||
'<(PRODUCT_DIR)/%s' % i.replace(os.path.sep, '/')
|
||||
for i in binary_deps),
|
||||
},
|
||||
}
|
||||
# Some .isolate files have the same temp directory and the build system may
|
||||
# run this script in parallel so make directories safely here.
|
||||
try:
|
||||
os.makedirs(temp_isolate_dir)
|
||||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
comment = (
|
||||
'# Warning: this file was AUTOGENERATED.\n'
|
||||
'# DO NO EDIT.\n')
|
||||
out = StringIO.StringIO()
|
||||
isolate_format.print_all(comment, isolate_dict, out)
|
||||
isolate_content = out.getvalue()
|
||||
with open(temp_isolate, 'wb') as f:
|
||||
f.write(isolate_content)
|
||||
logging.info('Added %d dynamic libs', len(binary_deps))
|
||||
logging.debug('%s', isolate_content)
|
||||
args[isolate_index] = temp_isolate
|
||||
|
||||
|
||||
def prepare_isolate_call(args, output):
|
||||
"""Gathers all information required to run isolate.py later.
|
||||
|
||||
Dumps it as JSON to |output| file.
|
||||
"""
|
||||
with open(output, 'wb') as f:
|
||||
json.dump({
|
||||
'args': args,
|
||||
'dir': os.getcwd(),
|
||||
'version': 1,
|
||||
}, f, indent=2, sort_keys=True)
|
||||
|
||||
|
||||
def rebase_directories(args, abs_base):
|
||||
"""Rebases all paths to be relative to abs_base."""
|
||||
def replace(index):
|
||||
args[index] = os.path.relpath(os.path.abspath(args[index]), abs_base)
|
||||
for i, arg in enumerate(args):
|
||||
if arg in ['--isolate', '--isolated']:
|
||||
replace(i + 1)
|
||||
if arg == '--path-variable':
|
||||
# Path variables have a triple form: --path-variable NAME <path>.
|
||||
replace(i + 2)
|
||||
|
||||
|
||||
def main():
|
||||
logging.basicConfig(level=logging.ERROR, format='%(levelname)7s %(message)s')
|
||||
args = sys.argv[1:]
|
||||
mode = args[0] if args else None
|
||||
isolate = None
|
||||
isolated = None
|
||||
for i, arg in enumerate(args):
|
||||
if arg == '--isolate':
|
||||
isolate = i + 1
|
||||
if arg == '--isolated':
|
||||
isolated = i + 1
|
||||
if isolate is None or isolated is None or not mode:
|
||||
print >> sys.stderr, 'Internal failure'
|
||||
return 1
|
||||
|
||||
# Make sure all paths are relative to the isolate file. This is an
|
||||
# expectation of the go binaries. In gn, this script is not called
|
||||
# relative to the isolate file, but relative to the product dir.
|
||||
new_base = os.path.abspath(os.path.dirname(args[isolate]))
|
||||
rebase_directories(args, new_base)
|
||||
assert args[isolate] == os.path.basename(args[isolate])
|
||||
os.chdir(new_base)
|
||||
|
||||
create_wrapper(args, isolate, isolated)
|
||||
|
||||
# In 'prepare' mode just collect all required information for postponed
|
||||
# isolated.py invocation later, store it in *.isolated.gen.json file.
|
||||
if mode == 'prepare':
|
||||
prepare_isolate_call(args[1:], args[isolated] + '.gen.json')
|
||||
return 0
|
||||
|
||||
swarming_client = os.path.join(SRC_DIR, 'tools', 'swarming_client')
|
||||
sys.stdout.flush()
|
||||
result = subprocess.call(
|
||||
[sys.executable, os.path.join(swarming_client, 'isolate.py')] + args)
|
||||
return result
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
18
tools/jsfunfuzz/jsfunfuzz.isolate
Normal file
18
tools/jsfunfuzz/jsfunfuzz.isolate
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright 2016 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'fuzz-harness.sh',
|
||||
],
|
||||
'files': [
|
||||
# Grab current directory. This avoids adding logic for checking the
|
||||
# existence of the jsfunfuzz subdirectory.
|
||||
'./',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'../../src/d8.isolate',
|
||||
],
|
||||
}
|
20
tools/run-num-fuzzer.isolate
Normal file
20
tools/run-num-fuzzer.isolate
Normal file
@ -0,0 +1,20 @@
|
||||
# Copyright 2017 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'run-num-fuzzer.py',
|
||||
],
|
||||
'files': [
|
||||
'run-num-fuzzer.py',
|
||||
],
|
||||
},
|
||||
'includes': [
|
||||
'testrunner/testrunner.isolate',
|
||||
'../src/d8.isolate',
|
||||
'../test/benchmarks/benchmarks.isolate',
|
||||
'../test/mjsunit/mjsunit.isolate',
|
||||
'../test/webkit/webkit.isolate',
|
||||
],
|
||||
}
|
25
tools/testrunner/testrunner.isolate
Normal file
25
tools/testrunner/testrunner.isolate
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright 2015 the V8 project authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
{
|
||||
'variables': {
|
||||
'command': [
|
||||
'../run-tests.py',
|
||||
],
|
||||
'files': [
|
||||
'<(PRODUCT_DIR)/v8_build_config.json',
|
||||
'../run-tests.py',
|
||||
'./'
|
||||
],
|
||||
},
|
||||
'conditions': [
|
||||
['coverage==1 and sanitizer_coverage=="bb,trace-pc-guard"', {
|
||||
'variables': {
|
||||
'files': [
|
||||
'../sanitizers/sancov_merger.py',
|
||||
'../../third_party/llvm/projects/compiler-rt/lib/sanitizer_common/scripts/sancov.py',
|
||||
],
|
||||
},
|
||||
}],
|
||||
],
|
||||
}
|
Loading…
Reference in New Issue
Block a user