blob: c1bc2ca6b135e1d92dabd5f50cad3b39961869b8 [file] [log] [blame]
# Check that commands with missing output files are handle properly for
# incremental builds. This relies on commands themselves to behave correctly and
# diagnose missing required inputs, but otherwise allows supporting commands
# which "may" generate output files.
# RUN: rm -rf %t.build
# RUN: mkdir -p %t.build
# RUN: cp %s %t.build/build.llbuild
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build &> %t.out
# RUN: test -f %t.build/output-1
# RUN: %{FileCheck} %s --input-file %t.out
#
# CHECK: TOUCH
# Verify that we get a null build, despite the output missing (its state has not changed).
#
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build &> %t.rebuild.out
# RUN: echo "<<eof>>" >> %t.rebuild.out
# RUN: test -f %t.build/output-1
# RUN: %{FileCheck} %s --check-prefix=CHECK-REBUILD --input-file %t.rebuild.out
#
# CHECK-REBUILD-NOT: TOUCH
# CHECK-REBUILD: <<eof>>
# Verify that we *do* rebuild if we make the other output appear.
#
# FIXME: CONSISTENCY: This masks a build inconsistency -- if the command claimed
# the output, but didn't itself write it. We should really be removing or hiding
# the command output files to ensure consistency.
#
# RUN: touch %t.build/output-2
# RUN: %{llbuild} buildsystem build --serial --chdir %t.build &> %t.after-create.out
# RUN: test -f %t.build/output-2
# RUN: %{FileCheck} %s --check-prefix=CHECK-AFTER-CREATE --input-file %t.after-create.out
#
# CHECK-AFTER-CREATE: TOUCH
client:
name: basic
targets:
"": ["<all>"]
commands:
C.all:
tool: phony
inputs: ["output-1"]
outputs: ["<all>"]
C.command-with-missing-output:
tool: shell
description: TOUCH
args: ["touch", "output-1"]
outputs: ["output-1", "output-2"]