Revert "Untangle dependency cycle in sksl dehydration"
This reverts commit a1ed0dc9f81255351eefe999975408f7afb32cfd.
Reason for revert: Bots will need some guidance to ingest this CL
Original change's description:
> Untangle dependency cycle in sksl dehydration
>
> NOTE: If you have any out directories with skia_compile_processors
> enabled, you will likely need to run `gn clean <dir>`
>
> Explanation: The sksl standalone compiler is used to convert the raw
> (text) SkSL pre-includes into a "dehydrated" binary format. It also
> (previously) depended on those files, as they were #included and used,
> unless a special #define was changed. This created a dependency cycle
> that we hid from GN (by lying about the outputs of the dehydrate step).
> As a result, builds would never reach steady-state, because the compiler
> would be rebuilt (due to the newer dehydrated files), and then the
> dehydrated files would be rebuilt (due to the newer compiler).
>
> This CL changes the logic so that the standalone compiler always uses
> the textual pre-includes, and no longer depends on the dehydrated binary
> files. Thus, to make any kind of change to the dehydrated files (whether
> due to pre-include changes, or the encoding format itself), you just
> need skia_compile_processors enabled. The dependencies are now honestly
> communicated to GN, and we reach steady state after one build.
>
> The NOTE above is because GN/ninja cache the dependencies of each
> target, and will still think that the SkSLCompiler.obj linked into the
> standalone compiler depends on the dehydrated files, at least until one
> successful build, when it will realize that's no longer true.
>
> Bug: skia:10571
> Change-Id: I246360cec387b17d017805ed42ab6424329e32e7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308760
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: John Stiles <johnstiles@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
TBR=mtklein@google.com,brianosman@google.com,ethannicholas@google.com,johnstiles@google.com
Change-Id: Id0f3f6e18474f7531b8531cfa481031c26b88d51
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10571
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308802
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 1500700..61f7beb 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -596,23 +596,20 @@
skslc_path += ".exe"
}
- dehydrate_sksl_outputs = []
- foreach(src, skia_dehydrate_sksl_sources) {
- name = get_path_info(src, "name")
-
- # GN insists its outputs should go somewhere underneath target_out_dir, so we trick it with a
- # path that starts with target_out_dir and then uses ".." to back up into the src dir.
- dehydrate_sksl_outputs += [ "$target_out_dir/" + rebase_path(
- "src/sksl/generated/$name.dehydrated.sksl",
- target_out_dir) ]
- }
-
action("dehydrate_sksl") {
script = "gn/dehydrate_sksl.py"
deps = [ ":skslc(//gn/toolchain:$host_toolchain)" ]
sources = skia_dehydrate_sksl_sources
- outputs = dehydrate_sksl_outputs
- args = [ rebase_path(skslc_path) ]
+
+ # we can't list the true outputs because it would cause a circular dependency, so we create a
+ # fake file just to satisfy gn
+ output = "$target_out_dir/" +
+ rebase_path("src/sksl/generated/fake.output", target_out_dir)
+ outputs = [ output ]
+ args = [
+ rebase_path(skslc_path),
+ rebase_path(output),
+ ]
args += rebase_path(skia_dehydrate_sksl_sources)
}