[PATCH] D113282: [gn build] Use build-machine-independent paths in coverage information

Nico Weber via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 5 07:43:45 PDT 2021


thakis created this revision.
thakis added reviewers: hans, zequanwu.
thakis requested review of this revision.
Herald added a project: LLVM.

This is possible after D106314 <https://reviews.llvm.org/D106314> / 8773822c578a <https://reviews.llvm.org/rG8773822c578ab76e78a9524ef0ddedfaa4904cd3>.

Makes the required prepare-code-coverage-artifact.py invocation a bit longer,
but that seems like a good tradeoff.


https://reviews.llvm.org/D113282

Files:
  llvm/utils/gn/build/BUILD.gn


Index: llvm/utils/gn/build/BUILD.gn
===================================================================
--- llvm/utils/gn/build/BUILD.gn
+++ llvm/utils/gn/build/BUILD.gn
@@ -7,7 +7,8 @@
 declare_args() {
   # Whether to build everything with coverage information.
   # After building with this, run tests and then run
-  #    llvm/utils/prepare-code-coverage-artifact.py  \
+  #    llvm/utils/prepare-code-coverage-artifact.py \
+  #        --compilation-dir=out/gn \
   #        .../llvm-profdata .../llvm-cov out/gn/profiles/ report/ \
   #        out/gn/bin/llvm-undname ...
   # to generate a HTML report for the binaries passed in the last line.
@@ -226,6 +227,10 @@
     cflags += [
       "-fcoverage-mapping",
 
+      # For build determinism. Using this requires passing --compilation-dir to
+      # llvm/utils/prepare-code-coverage-artifact.py.
+      "-fcoverage-compilation-dir=.",
+
       # Using an absolute path here is lame, but it's used at test execution
       # time to generate the profiles, and lit doesn't specify a fixed folder
       # for test execution -- so this is the only way to get all profiles into
@@ -234,14 +239,6 @@
       "-fprofile-instr-generate=" +
           rebase_path("$root_build_dir/profiles/%4m.profraw"),
     ]
-    if (use_goma) {
-      # goma has a bug where it writes the server-side absolute path.
-      # Work around that.
-      # FIXME: Instead, set this to `.` for deterministic builds and pass
-      # the build dir to prepare-code-coverage-artifact.py instead.
-      cflags += [ "-fcoverage-compilation-dir=" + rebase_path(root_build_dir) ]
-    }
-
     if (host_os != "win") {
       ldflags += [ "-fprofile-instr-generate" ]
     }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113282.385070.patch
Type: text/x-patch
Size: 1701 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211105/ecdeb009/attachment.bin>


More information about the llvm-commits mailing list