(alias
 (name package-cycle)
 (deps (package a) (package b)))

(alias
 (name simple-repro-case)
 (deps x y))

(rule (copy %{read:u} y))
(rule (copy %{read:v} x))

(rule (with-stdout-to u (system "printf x")))
(rule (with-stdout-to v (system "printf y")))

(rule (progn (copy x2 x1) (cat x4)))
(rule (copy x3 x2))
(rule (copy %{read:x3-x2-dyn-dep} x3))
(rule (copy x3 x4))

(rule (with-stdout-to x3-x2-dyn-dep (system "printf x2")))

(alias
  (name complex-repro-case)
  (deps cd1 cd3))

(rule (copy cd2 cd1))
(rule (copy cd4 cd3))
(rule (copy %{read:dcd3} cd2))
(rule (copy %{read:dcd1} cd4))

(rule (with-stdout-to dcd3 (system "printf cd3")))
(rule (with-stdout-to dcd1 (system "printf cd1")))
