1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
# 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 %t.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
|