Revert "gn recipe: Link GN with rpmalloc to speed it up." This reverts commit 4323e7015d8a7f74208962dd11f2d1065ae8aa15. Reason for revert: https://bugs.chromium.org/p/gn/issues/detail?id=208 Original change's description: > gn recipe: Link GN with rpmalloc to speed it up. > > This CL changes the GN recipe to link the executable with the > rpmalloc allocator from https://github.com/mjansson/rpmalloc > > This speeds up the 'gn gen' operation of both Chromium and Fuchsia > operations by 28% and 12% respectively [1], and has slightly better > performance than using tcmalloc from gperftools in the Fuchsia case. > > Note that: > > - The sources are grabbed directly from github.com, but it might be > desirable to use a Chromium or Fuchsia supported mirror instead. > > - Only Linux has been tested so far, so only this platform enables > this build mode. > > [1] Median measurements from 10 runs of 'gn gen' using the default > Linux allocator (glibc), gperftools' tcmalloc, and rpmalloc: > > Fuchsia: > glibc (default): 9917 ms > gperftools: 7858 ms (26% faster) > rpmalloc: 7752 ms (28% faster) > > Chromium: > glibc (default): 4742 ms > gperftools: 4186 ms (13% faster) > rpmalloc: 4235 ms (12% faster) > > Change-Id: Ia52134ef602f546d6e8b33bef0146c620d214b58 > Reviewed-on: https://gn-review.googlesource.com/c/gn/+/9920 > Commit-Queue: David Turner <digit@google.com> > Reviewed-by: Scott Graham <scottmg@chromium.org> > Reviewed-by: Petr Hosek <phosek@google.com> TBR=phosek@google.com,scottmg@chromium.org,pylaligand@google.com,digit@google.com Change-Id: I654d4646dae1d75d0aa2c110dbd7128dc0dd0911 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://gn-review.googlesource.com/c/gn/+/10360 Reviewed-by: David Turner <digit@google.com> Commit-Queue: David Turner <digit@google.com>
diff --git a/infra/README.recipes.md b/infra/README.recipes.md index e045932..869f775 100644 --- a/infra/README.recipes.md +++ b/infra/README.recipes.md
@@ -91,7 +91,7 @@ Recipe for building GN. -— **def [RunSteps](/infra/recipes/gn.py#72)(api, repository):** +— **def [RunSteps](/infra/recipes/gn.py#30)(api, repository):** ### *recipes* / [macos\_sdk:examples/full](/infra/recipe_modules/macos_sdk/examples/full.py) [DEPS](/infra/recipe_modules/macos_sdk/examples/full.py#5): [macos\_sdk](#recipe_modules-macos_sdk), [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
diff --git a/infra/recipes/gn.expected/ci_linux.json b/infra/recipes/gn.expected/ci_linux.json index 46d945b..4a301f2 100644 --- a/infra/recipes/gn.expected/ci_linux.json +++ b/infra/recipes/gn.expected/ci_linux.json
@@ -96,213 +96,6 @@ }, { "cmd": [], - "name": "rpmalloc" - }, - { - "cmd": [ - "git", - "init", - "[START_DIR]/rpmalloc" - ], - "name": "rpmalloc.init", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "fetch", - "--tags", - "https://fuchsia.googlesource.com/third_party/github.com/mjansson/rpmalloc", - "9c030f7a5efed87e3d036440e753c31342f9f909" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.fetch", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "checkout", - "FETCH_HEAD" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.checkout", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-amd64/configure.py", - "-c", - "release", - "-a", - "x86-64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/x86-64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-arm64/configure.py", - "-c", - "release", - "-a", - "arm64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/arm64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [], "name": "debug" }, { @@ -377,8 +170,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-amd64/lib/linux/release/x86-64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": { @@ -466,8 +258,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-arm64/lib/linux/release/arm64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": {
diff --git a/infra/recipes/gn.expected/ci_mac.json b/infra/recipes/gn.expected/ci_mac.json index a2db672..03d5da6 100644 --- a/infra/recipes/gn.expected/ci_mac.json +++ b/infra/recipes/gn.expected/ci_mac.json
@@ -144,19 +144,6 @@ "name": "debug" }, { - "cmd": [ - "xcrun", - "--show-sdk-path" - ], - "name": "debug.xcrun", - "stdout": "/path/to/tmp/", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@", - "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", - "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" - ] - }, - { "cmd": [], "name": "debug.mac-amd64", "~followup_annotations": [ @@ -165,6 +152,19 @@ }, { "cmd": [ + "xcrun", + "--show-sdk-path" + ], + "name": "debug.mac-amd64.xcrun", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", + "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py", @@ -216,19 +216,6 @@ "name": "release" }, { - "cmd": [ - "xcrun", - "--show-sdk-path" - ], - "name": "release.xcrun", - "stdout": "/path/to/tmp/", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@", - "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", - "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" - ] - }, - { "cmd": [], "name": "release.mac-amd64", "~followup_annotations": [ @@ -237,6 +224,19 @@ }, { "cmd": [ + "xcrun", + "--show-sdk-path" + ], + "name": "release.mac-amd64.xcrun", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", + "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py",
diff --git a/infra/recipes/gn.expected/cipd_exists.json b/infra/recipes/gn.expected/cipd_exists.json index f76eb84..d7127c2 100644 --- a/infra/recipes/gn.expected/cipd_exists.json +++ b/infra/recipes/gn.expected/cipd_exists.json
@@ -96,213 +96,6 @@ }, { "cmd": [], - "name": "rpmalloc" - }, - { - "cmd": [ - "git", - "init", - "[START_DIR]/rpmalloc" - ], - "name": "rpmalloc.init", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "fetch", - "--tags", - "https://fuchsia.googlesource.com/third_party/github.com/mjansson/rpmalloc", - "9c030f7a5efed87e3d036440e753c31342f9f909" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.fetch", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "checkout", - "FETCH_HEAD" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.checkout", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-amd64/configure.py", - "-c", - "release", - "-a", - "x86-64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/x86-64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-arm64/configure.py", - "-c", - "release", - "-a", - "arm64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/arm64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [], "name": "debug" }, { @@ -377,8 +170,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-amd64/lib/linux/release/x86-64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": { @@ -497,8 +289,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-arm64/lib/linux/release/arm64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": {
diff --git a/infra/recipes/gn.expected/cipd_register.json b/infra/recipes/gn.expected/cipd_register.json index 94900d0..2e09f95 100644 --- a/infra/recipes/gn.expected/cipd_register.json +++ b/infra/recipes/gn.expected/cipd_register.json
@@ -96,213 +96,6 @@ }, { "cmd": [], - "name": "rpmalloc" - }, - { - "cmd": [ - "git", - "init", - "[START_DIR]/rpmalloc" - ], - "name": "rpmalloc.init", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "fetch", - "--tags", - "https://fuchsia.googlesource.com/third_party/github.com/mjansson/rpmalloc", - "9c030f7a5efed87e3d036440e753c31342f9f909" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.fetch", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "checkout", - "FETCH_HEAD" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.checkout", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-amd64/configure.py", - "-c", - "release", - "-a", - "x86-64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/x86-64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-arm64/configure.py", - "-c", - "release", - "-a", - "arm64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/arm64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [], "name": "debug" }, { @@ -377,8 +170,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-amd64/lib/linux/release/x86-64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": { @@ -511,8 +303,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-arm64/lib/linux/release/arm64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": {
diff --git a/infra/recipes/gn.expected/cq_linux.json b/infra/recipes/gn.expected/cq_linux.json index 82ae5dd..75b64a4 100644 --- a/infra/recipes/gn.expected/cq_linux.json +++ b/infra/recipes/gn.expected/cq_linux.json
@@ -74,12 +74,12 @@ { "cmd": [ "git", - "cherry-pick", + "checkout", "FETCH_HEAD" ], "cwd": "[START_DIR]/gn", "infra_step": true, - "name": "git.cherry-pick 123456/7", + "name": "git.checkout 123456/7", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -123,213 +123,6 @@ }, { "cmd": [], - "name": "rpmalloc" - }, - { - "cmd": [ - "git", - "init", - "[START_DIR]/rpmalloc" - ], - "name": "rpmalloc.init", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "fetch", - "--tags", - "https://fuchsia.googlesource.com/third_party/github.com/mjansson/rpmalloc", - "9c030f7a5efed87e3d036440e753c31342f9f909" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.fetch", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "git", - "checkout", - "FETCH_HEAD" - ], - "cwd": "[START_DIR]/rpmalloc", - "infra_step": true, - "name": "rpmalloc.checkout", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-amd64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-amd64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-amd64/configure.py", - "-c", - "release", - "-a", - "x86-64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/x86-64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-amd64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=x86_64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-amd64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "rmtree", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.remove sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", - "--json-output", - "/path/to/tmp/json", - "copytree", - "[START_DIR]/rpmalloc", - "[CLEANUP]/rpmalloc-linux-arm64" - ], - "infra_step": true, - "name": "rpmalloc.copy sources linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [], - "name": "rpmalloc.build rpmalloc-linux-arm64", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@" - ] - }, - { - "cmd": [ - "python", - "-u", - "[CLEANUP]/rpmalloc-linux-arm64/configure.py", - "-c", - "release", - "-a", - "arm64", - "--lto" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.configure", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [ - "[START_DIR]/cipd/ninja", - "lib/linux/release/arm64/librpmallocwrap.a" - ], - "cwd": "[CLEANUP]/rpmalloc-linux-arm64", - "env": { - "AR": "[START_DIR]/cipd/bin/llvm-ar", - "CC": "[START_DIR]/cipd/bin/clang", - "CFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot", - "CXX": "[START_DIR]/cipd/bin/clang++", - "LDFLAGS": "--target=aarch64-linux-gnu --sysroot=[START_DIR]/cipd/sysroot -static-libstdc++" - }, - "name": "rpmalloc.build rpmalloc-linux-arm64.ninja", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@2@@@" - ] - }, - { - "cmd": [], "name": "debug" }, { @@ -404,8 +197,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-amd64/lib/linux/release/x86-64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": { @@ -461,8 +253,7 @@ "-u", "[START_DIR]/gn/build/gen.py", "--use-lto", - "--use-icf", - "--link-lib=[CLEANUP]/rpmalloc-linux-arm64/lib/linux/release/arm64/librpmallocwrap.a" + "--use-icf" ], "cwd": "[START_DIR]/gn", "env": {
diff --git a/infra/recipes/gn.expected/cq_mac.json b/infra/recipes/gn.expected/cq_mac.json index 76ceca4..0244003 100644 --- a/infra/recipes/gn.expected/cq_mac.json +++ b/infra/recipes/gn.expected/cq_mac.json
@@ -74,12 +74,12 @@ { "cmd": [ "git", - "cherry-pick", + "checkout", "FETCH_HEAD" ], "cwd": "[START_DIR]/gn", "infra_step": true, - "name": "git.cherry-pick 123456/7", + "name": "git.checkout 123456/7", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -171,19 +171,6 @@ "name": "debug" }, { - "cmd": [ - "xcrun", - "--show-sdk-path" - ], - "name": "debug.xcrun", - "stdout": "/path/to/tmp/", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@", - "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", - "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" - ] - }, - { "cmd": [], "name": "debug.mac-amd64", "~followup_annotations": [ @@ -192,6 +179,19 @@ }, { "cmd": [ + "xcrun", + "--show-sdk-path" + ], + "name": "debug.mac-amd64.xcrun", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", + "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py", @@ -243,19 +243,6 @@ "name": "release" }, { - "cmd": [ - "xcrun", - "--show-sdk-path" - ], - "name": "release.xcrun", - "stdout": "/path/to/tmp/", - "~followup_annotations": [ - "@@@STEP_NEST_LEVEL@1@@@", - "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", - "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" - ] - }, - { "cmd": [], "name": "release.mac-amd64", "~followup_annotations": [ @@ -264,6 +251,19 @@ }, { "cmd": [ + "xcrun", + "--show-sdk-path" + ], + "name": "release.mac-amd64.xcrun", + "stdout": "/path/to/tmp/", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@raw_io.output[sdk-path]@/some/xcode/path@@@", + "@@@STEP_LOG_END@raw_io.output[sdk-path]@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]/gn/build/gen.py",
diff --git a/infra/recipes/gn.expected/cq_win.json b/infra/recipes/gn.expected/cq_win.json index 8e352de..164b245 100644 --- a/infra/recipes/gn.expected/cq_win.json +++ b/infra/recipes/gn.expected/cq_win.json
@@ -74,12 +74,12 @@ { "cmd": [ "git", - "cherry-pick", + "checkout", "FETCH_HEAD" ], "cwd": "[START_DIR]\\gn", "infra_step": true, - "name": "git.cherry-pick 123456/7", + "name": "git.checkout 123456/7", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ]
diff --git a/infra/recipes/gn.py b/infra/recipes/gn.py index 298e870..68e721c 100644 --- a/infra/recipes/gn.py +++ b/infra/recipes/gn.py
@@ -26,55 +26,10 @@ 'repository': Property(kind=str, default='https://gn.googlesource.com/gn'), } -# On select platforms, link the GN executable against rpmalloc for a small 10% speed boost. -_RPMALLOC_GIT_URL = 'https://fuchsia.googlesource.com/third_party/github.com/mjansson/rpmalloc' -_RPMALLOC_REVISION = '9c030f7a5efed87e3d036440e753c31342f9f909' - -# Used to convert os and arch strings to rpmalloc format -_RPMALLOC_MAP = { - 'amd64': 'x86-64', - 'mac': 'macos', -} - - -def _get_compilation_environment(api, target, cipd_dir): - if target.is_linux: - triple = '--target=%s' % target.triple - sysroot = '--sysroot=%s' % cipd_dir.join('sysroot') - env = { - 'CC': cipd_dir.join('bin', 'clang'), - 'CXX': cipd_dir.join('bin', 'clang++'), - 'AR': cipd_dir.join('bin', 'llvm-ar'), - 'CFLAGS': '%s %s' % (triple, sysroot), - 'LDFLAGS': '%s %s -static-libstdc++' % (triple, sysroot), - } - elif target.is_mac: - triple = '--target=%s' % target.triple - sysroot = '--sysroot=%s' % api.step( - 'xcrun', ['xcrun', '--show-sdk-path'], - stdout=api.raw_io.output(name='sdk-path', add_output_log=True), - step_test_data=lambda: api.raw_io.test_api.stream_output( - '/some/xcode/path')).stdout.strip() - stdlib = cipd_dir.join('lib', 'libc++.a') - env = { - 'CC': cipd_dir.join('bin', 'clang'), - 'CXX': cipd_dir.join('bin', 'clang++'), - 'AR': cipd_dir.join('bin', 'llvm-ar'), - 'CFLAGS': '%s %s' % (triple, sysroot), - 'LDFLAGS': '%s %s -nostdlib++ %s' % (triple, sysroot, stdlib), - } - else: - env = {} - - return env - def RunSteps(api, repository): src_dir = api.path['start_dir'].join('gn') - # TODO: Verify that building and linking rpmalloc works on OS X and Windows as - # well. - use_rpmalloc = api.platform.is_linux with api.step.nest('git'), api.context(infra_steps=True): api.step('init', ['git', 'init', src_dir]) @@ -95,8 +50,8 @@ 'refs/changes/%s/%s/%s' % (str(change.change)[-2:], change.change, change.patchset) ]) - api.step('cherry-pick %s/%s' % (change.change, change.patchset), - ['git', 'cherry-pick', 'FETCH_HEAD']) + api.step('checkout %s/%s' % (change.change, change.patchset), + ['git', 'checkout', 'FETCH_HEAD']) with api.context(infra_steps=True): cipd_dir = api.path['start_dir'].join('cipd') @@ -118,8 +73,7 @@ 'targets': [api.target.host], }, { - 'name': - 'release', + 'name': 'release', 'args': ['--use-lto', '--use-icf'], 'targets': [api.target('linux-amd64'), api.target('linux-arm64')] @@ -128,83 +82,44 @@ ] with api.macos_sdk(), api.windows_sdk(): - # Build the rpmalloc stastic libraries if needed. - if use_rpmalloc: - # Maps a target.platform string to the location of the corresponding - # rpmalloc static library. - rpmalloc_static_libs = {} - - # Get the list of all target platforms that are listed in `configs` - # above. Note that this is a list of Target instances, some of them - # may refer to the same platform string (e.g. linux-amd64). - # - # For each platform, a version of rpmalloc will be built if necessary, - # but doing this properly requires having a valid target instance to - # call _get_compilation_environment. So create a { platform -> Target } - # map to do that later. - all_config_platforms = {} - for c in configs: - for t in c['targets']: - if t.platform not in all_config_platforms: - all_config_platforms[t.platform] = t - - rpmalloc_src_dir = api.path['start_dir'].join('rpmalloc') - with api.step.nest('rpmalloc'): - api.step('init', ['git', 'init', rpmalloc_src_dir]) - with api.context(cwd=rpmalloc_src_dir, infra_steps=True): - api.step( - 'fetch', - ['git', 'fetch', '--tags', _RPMALLOC_GIT_URL, _RPMALLOC_REVISION]) - api.step('checkout', ['git', 'checkout', 'FETCH_HEAD']) - - for platform in all_config_platforms: - # Convert target architecture and os to rpmalloc format. - rpmalloc_os, rpmalloc_arch = platform.split('-') - rpmalloc_os = _RPMALLOC_MAP.get(rpmalloc_os, rpmalloc_os) - rpmalloc_arch = _RPMALLOC_MAP.get(rpmalloc_arch, rpmalloc_arch) - - # The rpmalloc build system doesn't support out-of-tree builds. - # So copy the source tree into a new clean directory. - rpmalloc_build_dir = api.path['cleanup'].join('rpmalloc-' + platform) - api.file.rmtree('remove sources ' + platform, rpmalloc_build_dir) - api.file.copytree('copy sources ' + platform, rpmalloc_src_dir, - rpmalloc_build_dir) - - env = _get_compilation_environment(api, - all_config_platforms[platform], - cipd_dir) - with api.step.nest('build rpmalloc-' + platform), api.context( - env=env, cwd=rpmalloc_build_dir): - api.python( - 'configure', - rpmalloc_build_dir.join('configure.py'), - args=['-c', 'release', '-a', rpmalloc_arch, '--lto']) - - # NOTE: Only build the static library. - rpmalloc_static_lib = api.path.join('lib', rpmalloc_os, 'release', - rpmalloc_arch, - 'librpmallocwrap.a') - api.step('ninja', [cipd_dir.join('ninja'), rpmalloc_static_lib]) - - rpmalloc_static_libs[platform] = rpmalloc_build_dir.join( - rpmalloc_static_lib) - for config in configs: with api.step.nest(config['name']): for target in config['targets']: - env = _get_compilation_environment(api, target, cipd_dir) with api.step.nest(target.platform): + if target.is_linux: + triple = '--target=%s' % target.triple + sysroot = '--sysroot=%s' % cipd_dir.join('sysroot') + env = { + 'CC': cipd_dir.join('bin', 'clang'), + 'CXX': cipd_dir.join('bin', 'clang++'), + 'AR': cipd_dir.join('bin', 'llvm-ar'), + 'CFLAGS': '%s %s' % (triple, sysroot), + 'LDFLAGS': '%s %s -static-libstdc++' % (triple, sysroot), + } + elif target.is_mac: + triple = '--target=%s' % target.triple + sysroot = '--sysroot=%s' % api.step( + 'xcrun', ['xcrun', '--show-sdk-path'], + stdout=api.raw_io.output( + name='sdk-path', add_output_log=True), + step_test_data=lambda: api.raw_io.test_api.stream_output( + '/some/xcode/path')).stdout.strip() + stdlib = cipd_dir.join('lib', 'libc++.a') + env = { + 'CC': cipd_dir.join('bin', 'clang'), + 'CXX': cipd_dir.join('bin', 'clang++'), + 'AR': cipd_dir.join('bin', 'llvm-ar'), + 'CFLAGS': '%s %s' % (triple, sysroot), + 'LDFLAGS': '%s %s -nostdlib++ %s' % (triple, sysroot, stdlib), + } + else: + env = {} + with api.context(env=env, cwd=src_dir): - args = config['args'] - - # Ensure that the release `gn` binary will be linked to the rpmalloc static - # library when needed. - if use_rpmalloc and config['name'] == 'release': - args = args[:] + [ - '--link-lib=%s' % rpmalloc_static_libs[target.platform] - ] - - api.python('generate', src_dir.join('build', 'gen.py'), args=args) + api.python( + 'generate', + src_dir.join('build', 'gen.py'), + args=config['args']) # Windows requires the environment modifications when building too. api.step('build',