blob: 1f616bfdedf0f0b66ca008d6fb1a4c4852f60de4 [file] [log] [blame]
# Check that dependency scanning order is respected.
#
# RUN: rm -rf %t.build
# RUN: mkdir -p %t.build
# RUN: echo "input" > %t.build/input
# RUN: cp %s %t.build/build.llbuild
# Run an initial build forces "generated-input" to be one of the first declared
# keys. This is explicitly checking against an implementation detail that, when
# written, the dependency scanning order could be tied to the database key
# identifier index.
#
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build PREPARE > %t.prepare.out 2> %t.prepare.err || true
# Run the actual initial build.
#
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build > %t.out
# RUN: %{FileCheck} --input-file=%t.out %s --check-prefix=CHECK-INITIAL
# RUN: diff %t.build/input %t.build/generated-input
# RUN: diff %t.build/input %t.build/output
#
# CHECK-INITIAL: CONSUMER
# Check that a null build does nothing.
#
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build > %t2.out
# RUN: echo "END-OF-FILE" >> %t2.out
# RUN: %{FileCheck} --input-file=%t2.out %s --check-prefix=CHECK-REBUILD
#
# CHECK-REBUILD-NOT: GENERATOR
# CHECK-REBUILD-NOT: CONSUMER
# Check that a modification triggers both uses.
#
# RUN: echo "MOD" >> %t.build/input
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build --trace /tmp/x.trace > %t3.out
# RUN: %{FileCheck} --input-file=%t3.out %s --check-prefix=CHECK-AFTER-MOD
# RUN: diff %t.build/input %t.build/generated-input
# RUN: diff %t.build/input %t.build/output
#
# CHECK-AFTER-MOD: GENERATOR
# CHECK-AFTER-MOD: CONSUMER
# Check that another null build does nothing.
#
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build > %t4.out
# RUN: echo "END-OF-FILE" >> %t4.out
# RUN: %{FileCheck} --input-file=%t4.out %s --check-prefix=CHECK-REBUILD
client:
name: basic
targets:
"": ["output"]
PREPARE: ["generated-input"]
commands:
# A command which consumes a generated input and reports it as a discovered dep.
C.consumer:
tool: shell
description: CONSUMER
inputs: ["<GENERATOR>"]
outputs: ["output"]
# We report the dependency twice just to cover the duplicate dependency scenario.
args:
"echo \"output: generated-input generated-input\" > output.d &&
cp generated-input output"
deps: output.d
deps-style: makefile
# A command which generates the discovered input.
#
# NOTE: The generated-input itself is intentionally never declared as an
# output here; this test is intentionally checking that we support a situation
# where the dependency edge is only valid due to some other explicit ordering
# in the build system, in this case the edge "C.consumer -> <GENERATOR>".
C.generator:
tool: shell
description: GENERATOR
inputs: ["input"]
outputs: ["<GENERATOR>"]
args: cp input generated-input