From b39e403ae246e6f5a224dbdef35d35cbbb5ac54a Mon Sep 17 00:00:00 2001 From: mefyl Date: Tue, 14 Jul 2020 13:25:09 +0200 Subject: [PATCH] Catch Io's Sys_error too when retrieving files from cache. Fix issue #3627. Signed-off-by: mefyl --- src/dune/build_system.ml | 3 +++ test/blackbox-tests/dune.inc | 13 +++++++++++ .../test-cases/dune-cache/missing-data/run.t | 23 +++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 test/blackbox-tests/test-cases/dune-cache/missing-data/run.t diff --git a/src/dune/build_system.ml b/src/dune/build_system.ml index b6d95155024..6a40174e619 100644 --- a/src/dune/build_system.ml +++ b/src/dune/build_system.ml @@ -1531,6 +1531,9 @@ end = struct f ]; false + | exception Sys_error m -> + Log.info [ Pp.textf "error retrieving data file: %s" m ]; + false | () -> true ) | _ -> false in diff --git a/test/blackbox-tests/dune.inc b/test/blackbox-tests/dune.inc index 6ce0d3d81c7..b4a2d726fe0 100644 --- a/test/blackbox-tests/dune.inc +++ b/test/blackbox-tests/dune.inc @@ -458,6 +458,17 @@ test-cases/dune-cache/dedup-direct-copy.t (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) +(rule + (alias dune-cache-missing-data) + (deps + (package dune) + (source_tree test-cases/dune-cache/missing-data) + (alias test-deps)) + (action + (chdir + test-cases/dune-cache/missing-data + (progn (run dune-cram run run.t) (diff? run.t run.t.corrected))))) + (rule (alias dune-cache-promote) (deps @@ -3122,6 +3133,7 @@ (alias dune-cache-dedup) (alias dune-cache-dedup-direct) (alias dune-cache-dedup-direct-copy) + (alias dune-cache-missing-data) (alias dune-cache-promote) (alias dune-cache-promote-copy) (alias dune-cache-promote-direct) @@ -3419,6 +3431,7 @@ (alias dune-cache-dedup) (alias dune-cache-dedup-direct) (alias dune-cache-dedup-direct-copy) + (alias dune-cache-missing-data) (alias dune-cache-promote) (alias dune-cache-promote-copy) (alias dune-cache-promote-direct) diff --git a/test/blackbox-tests/test-cases/dune-cache/missing-data/run.t b/test/blackbox-tests/test-cases/dune-cache/missing-data/run.t new file mode 100644 index 00000000000..9eb54ea99a9 --- /dev/null +++ b/test/blackbox-tests/test-cases/dune-cache/missing-data/run.t @@ -0,0 +1,23 @@ +Check that missing data files simply make the cached rule invalid. + + $ cat > config < (lang dune 2.1) + > (cache enabled) + > (cache-duplication copy) + > (cache-transport direct) + > EOF + $ cat > dune-project < (lang dune 2.1) + > EOF + $ cat > dune < (rule + > (deps source) + > (targets target) + > (action (bash "cat source source > target"))) + > EOF + $ cat > source < \_o< COIN + > EOF + $ env XDG_RUNTIME_DIR=$PWD/.xdg-runtime XDG_CACHE_HOME=$PWD/.xdg-cache dune build --config-file=config target + $ rm -rf _build $PWD/.xdg-cache/dune/db/files/v3/ + $ env XDG_RUNTIME_DIR=$PWD/.xdg-runtime XDG_CACHE_HOME=$PWD/.xdg-cache dune build --config-file=config target