.../demos_obazl/rules_ocaml]$ bazel aquery ns/topdown/ppx:Blue
INFO: Analyzed target //ns/topdown/ppx:Blue (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
action 'Writing script ns/topdown/ppx/Blue_ppx.sh'
Mnemonic: FileWrite (1)
Target: //ns/topdown/ppx:Blue
Configuration: darwin-fastbuild
Execution platform: @local_config_platform//:host
ActionKey: e97323d347578da30c04c0bbaf0ee6df47984ca53994ed684df3be9ea426a0f9
Inputs: []
Outputs: [bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/Blue_ppx.sh]
action 'ppx_transform ocaml_module: demos//ns/topdown/ppx:Blue'
Mnemonic: OCamlPpxTransform (1)
Target: //ns/topdown/ppx:Blue
Configuration: darwin-fastbuild
Execution platform: @local_config_platform//:host
ActionKey: bee23a7eacaf95dbdfd5590474d6feab927496e1e934fa40e1a8d754ed20015c
Inputs: [bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/Blue_ppx.sh, bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/ppx.exe, bazel-out/darwin-fastbuild/internal/_middlemen/ns_Stopdown_Sppx_Sppx.exe-runfiles, ns/topdown/ppx/blue.ml]
Outputs: [bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.ml]
Command Line: (exec bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/Blue_ppx.sh \
-o \
../bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.ml \
-impl \
ns/topdown/ppx/blue.ml)
# Configuration: f980a41ed8e8fc07b34c21c148caeaaeea788b6ece312887882afc3763631455
# Execution platform: @local_config_platform//:host
action 'sys>sys compiling ocaml_module: demos//ns/topdown/ppx:Blue'
Mnemonic: CompileOCamlModule (1)
Target: //ns/topdown/ppx:Blue
Configuration: darwin-fastbuild
Execution platform: @local_config_platform//:host
ActionKey: cb0b4b940adbaa21e77b289d2b57d8b34d7513de905936a8670c616041f98dfa
Inputs: [bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.ml, external/ocaml/bin/ocamlopt.opt]
Outputs: [bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.cmi, bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.cmx, bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.o]
Command Line: (exec external/ocaml/bin/ocamlopt.opt \
-keep-locs \
-noassert \
-short-paths \
-strict-formats \
-strict-sequence \
-w \
@1..3@5..28@30..39@43@46..47@49..57@61..62-40 \
-I \
bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl \
-c \
-impl \
bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.ml \
-o \
bazel-out/darwin-fastbuild/bin/ns/topdown/ppx/__obazl/Blue.cmx)
# Configuration: f980a41ed8e8fc07b34c21c148caeaaeea788b6ece312887882afc3763631455
# Execution platform: @local_config_platform//:host
Querying Last updated July 6, 2022
Target Graph Queries
Configured Graph Queries
cquery "cquery is a variant of query that correctly handles select() and build options' effects on the build graph."
Action Graph Queries
-
Aquery (Action Graph Query) Reference doc.
Examples:
PPX processing involves "hidden" actions that run a PPX to transform
source files. These actions are a side-effect of building targets
(ocaml_module or ocaml_signature) that undergo PPX transformation,
but aquery will show them:
| 1 | Each action has a Mnemonic. |
You can filter aquery by mnemonics. In this demo
(ns/topdown/ppx),
an ocaml_ns_library target named color lists three submodules,
each of which is PPX-transformed. That means the example above is a
little misleading, since it builds ns/topdown/ppx:Blue independent
of the namespace. When you build ns/topdown/ppx:color, each
submodule will not only be preprocessed by a PPX, but also renamed.
The following aquery will show this:
...azl/demos_obazl/rules_ocaml]$ bazel aquery 'mnemonic("OCamlPpxTransform", deps(ns/topdown/ppx:color))'
INFO: Analyzed target //ns/topdown/ppx:color (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
WARNING: Targets were missing from graph: [ConfiguredTargetKey{label=@ocaml//toolchain/adapters/local:ncnc, config=BuildConfigurationValue.Key[31e6065273d39a7233241ad2738425079768663b03b77650e19688c9f47e747f]}]
WARNING: Targets were missing from graph: [ConfiguredTargetKey{label=@ocaml//toolchain/adapters/local:ncnc, config=BuildConfigurationValue.Key[33036bf992ae1cd9400769abcf7b91b3cfa72b954d6c3660ef1958c812d92cf2]}]
action 'ppx_transform ocaml_module: demos//ns/topdown/ppx:Red'
Mnemonic: OCamlPpxTransform
Target: //ns/topdown/ppx:Red
Configuration: darwin-fastbuild-ST-2386c8310427
Execution platform: @local_config_platform//:host
ActionKey: 0198e3f7633f19b056cb5a8fecd8886a8bc7f3911d670626a35e288bfa051a98
Inputs: [bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/Red_ppx.sh, bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/ppx.exe, bazel-out/darwin-fastbuild-ST-2386c8310427/internal/_middlemen/ns_Stopdown_Sppx_Sppx.exe-runfiles, ns/topdown/ppx/red.ml]
Outputs: [bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/__obazl/Color__Red.ml]
Command Line: (exec bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/Red_ppx.sh \ (1)
-o \
../bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/__obazl/Color__Red.ml \ (3)
-impl \
ns/topdown/ppx/red.ml) (2)
# Configuration: 31e6065273d39a7233241ad2738425079768663b03b77650e19688c9f47e747f
# Execution platform: @local_config_platform//:host
action 'ppx_transform ocaml_module: demos//ns/topdown/ppx:Green'
Mnemonic: OCamlPpxTransform
Target: //ns/topdown/ppx:Green
Configuration: darwin-fastbuild-ST-2386c8310427
Execution platform: @local_config_platform//:host
ActionKey: 6c45a135981e2753eb67ddf97a63d7e13caea275e386d1e8e051a64598adc246
Inputs: [bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/Green_ppx.sh, bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/ppx.exe, bazel-out/darwin-fastbuild-ST-2386c8310427/internal/_middlemen/ns_Stopdown_Sppx_Sppx.exe-runfiles, ns/topdown/ppx/green.ml]
Outputs: [bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/__obazl/Color__Green.ml]
Command Line: (exec bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/Green_ppx.sh \
-o \
../bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/__obazl/Color__Green.ml \
-impl \
ns/topdown/ppx/green.ml)
# Configuration: 31e6065273d39a7233241ad2738425079768663b03b77650e19688c9f47e747f
# Execution platform: @local_config_platform//:host
action 'ppx_transform ocaml_module: demos//ns/topdown/ppx:Blue'
Mnemonic: OCamlPpxTransform
Target: //ns/topdown/ppx:Blue
Configuration: darwin-fastbuild-ST-2386c8310427
Execution platform: @local_config_platform//:host
ActionKey: 44fd9066b7d6c9e0b74de9eb13f0e0d7a440825bf104662d368f5da7af3ac1b5
Inputs: [bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/Blue_ppx.sh, bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/ppx.exe, bazel-out/darwin-fastbuild-ST-2386c8310427/internal/_middlemen/ns_Stopdown_Sppx_Sppx.exe-runfiles, ns/topdown/ppx/blue.ml]
Outputs: [bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/__obazl/Color__Blue.ml]
Command Line: (exec bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/Blue_ppx.sh \
-o \
../bazel-out/darwin-fastbuild-ST-2386c8310427/bin/ns/topdown/ppx/__obazl/Color__Blue.ml \
-impl \
ns/topdown/ppx/blue.ml)
# Configuration: 31e6065273d39a7233241ad2738425079768663b03b77650e19688c9f47e747f
# Execution platform: @local_config_platform//:host
| 1 | The shell script (written by a previous FileWrite action) runs the ppx executable. |
| 2 | Input is the original file. |
| 3 | Output is transformed and renamed. |
This shows that PPX processing and renaming are accomplished by the same OCamlPpxTransform action.
The mnemonic argument supports regexes; the following aquery would show all of the actions whose mnemonic includes OCaml:
bazel aquery 'mnemonic(".OCaml.", deps(ns/topdown/ppx:ppx.exe))'
The (rather lengthy) output shows the following actions:
CompileOCamlPpxModule, CompileOCamlNsResolver,
LinkOCamlPpxExecutable, CompileOCamlModule, and
OCamlPpxTransform.
Without filtering the action for all dependencies would be shown:
bazel aquery 'deps(ns/topdown/ppx:color)'
This would include actions with mnemonic ocaml_import (since the PPX
executable depends on @ppxlib//:ppxlib and all of its dependencies,
imported from OPAM), a Genrule action (since the PPX executable
depends on a file created by a genrule target), some FileWrite
actions (to generate the source file compiled by the
CompileOCamlNsResolver action, and write the shell scripts used by
the OCamlPpxTransform action to run the PPX executable), and a large
number of actions generated by Bazel itself, to generate
toolchains, configure runfiles, etc.