[infra] Fix GN build with rpmalloc and latest Clang.
Latest Clang will now complain when the `-funit-at-a-time` optimization flag,
used by the rpmalloc build, is being used. The error message looks like:
```
.....
clang-15: error: optimization flag '-funit-at-a-time' is not supported [-Werror,-Wignored-optimization-argument]
```
This CL locally patches the rpmalloc `build/ninja/clang.py` file to add
the `-Wno-ignored-optimization-argument` flag to avoid this. This is a
temporary fix until the issue is fixed in upstream rpmalloc.
Bug: None
Change-Id: I7e3af4222a1813219843d532d61d8c2babe9b86f
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/13581
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
diff --git a/infra/recipes/gn.expected/ci_linux.json b/infra/recipes/gn.expected/ci_linux.json
index 8457f94..a7001a6 100644
--- a/infra/recipes/gn.expected/ci_linux.json
+++ b/infra/recipes/gn.expected/ci_linux.json
@@ -235,6 +235,68 @@
]
},
{
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "gn:ci"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.read [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "gn:ci"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.write [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
"cmd": [],
"name": "rpmalloc.build rpmalloc-linux-amd64",
"~followup_annotations": [
diff --git a/infra/recipes/gn.expected/cipd_exists.json b/infra/recipes/gn.expected/cipd_exists.json
index 7ed384a..6094333 100644
--- a/infra/recipes/gn.expected/cipd_exists.json
+++ b/infra/recipes/gn.expected/cipd_exists.json
@@ -235,6 +235,68 @@
]
},
{
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "infra-internal:ci"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.read [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "infra-internal:ci"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.write [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
"cmd": [],
"name": "rpmalloc.build rpmalloc-linux-amd64",
"~followup_annotations": [
diff --git a/infra/recipes/gn.expected/cipd_register.json b/infra/recipes/gn.expected/cipd_register.json
index f0b7372..9420990 100644
--- a/infra/recipes/gn.expected/cipd_register.json
+++ b/infra/recipes/gn.expected/cipd_register.json
@@ -235,6 +235,68 @@
]
},
{
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "infra-internal:ci"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.read [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "infra-internal:ci"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.write [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
"cmd": [],
"name": "rpmalloc.build rpmalloc-linux-amd64",
"~followup_annotations": [
diff --git a/infra/recipes/gn.expected/cq_linux.json b/infra/recipes/gn.expected/cq_linux.json
index 1181b8c..9f6943e 100644
--- a/infra/recipes/gn.expected/cq_linux.json
+++ b/infra/recipes/gn.expected/cq_linux.json
@@ -286,6 +286,68 @@
]
},
{
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py",
+ "/path/to/tmp/"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "gn:try"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.read [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']",
+ "[START_DIR]/rpmalloc/build/ninja/clang.py"
+ ],
+ "infra_step": true,
+ "luci_context": {
+ "realm": {
+ "name": "gn:try"
+ },
+ "resultdb": {
+ "current_invocation": {
+ "name": "invocations/build:8945511751514863184",
+ "update_token": "token"
+ },
+ "hostname": "rdbhost"
+ }
+ },
+ "name": "rpmalloc.write [START_DIR]/rpmalloc/build/ninja/clang.py",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@clang.py@CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']@@@",
+ "@@@STEP_LOG_END@clang.py@@@"
+ ]
+ },
+ {
"cmd": [],
"name": "rpmalloc.build rpmalloc-linux-amd64",
"~followup_annotations": [
diff --git a/infra/recipes/gn.py b/infra/recipes/gn.py
index 19a3033..011d4b0 100644
--- a/infra/recipes/gn.py
+++ b/infra/recipes/gn.py
@@ -202,6 +202,19 @@
['git', 'fetch', '--tags', RPMALLOC_GIT_URL, RPMALLOC_BRANCH])
api.step('checkout', ['git', 'checkout', RPMALLOC_REVISION])
+ # Patch configure.py since to add -Wno-ignored-optimization-flag since
+ # Clang will now complain when `-funit-at-a-time` is being used.
+ build_ninja_clang_path = api.path.join(rpmalloc_src_dir, 'build/ninja/clang.py')
+ build_ninja_clang_py = api.file.read_text('read %s' % build_ninja_clang_path,
+ build_ninja_clang_path,
+ "CXXFLAGS = ['-Wall', '-Weverything', '-Wfoo']")
+ build_ninja_clang_py = build_ninja_clang_py.replace(
+ "'-Wno-disabled-macro-expansion'",
+ "'-Wno-disabled-macro-expansion', '-Wno-ignored-optimization-argument'")
+ api.file.write_text('write %s' % build_ninja_clang_path,
+ build_ninja_clang_path,
+ build_ninja_clang_py)
+
for platform in all_config_platforms:
# Convert target architecture and os to rpmalloc format.
rpmalloc_os, rpmalloc_arch = platform.split('-')