From c739573b76d25c10441efdcedf909df0bc1d20c7 Mon Sep 17 00:00:00 2001 From: Andrew Patterson Date: Wed, 2 Oct 2024 21:15:52 -0400 Subject: [PATCH 1/3] test: reproduce `@ocaml-index` failing with package management Signed-off-by: Andrew Patterson --- .../test-cases/ocaml-index/gh10985/dune | 4 ++++ .../ocaml-index/gh10985/dune-project | 1 + .../ocaml-index/gh10985/dune.lock/lock.dune | 1 + .../ocaml-index/gh10985/external_sources/dune | 3 +++ .../gh10985/external_sources/dune-project | 2 ++ .../gh10985/external_sources/test_lib.ml | 1 + .../test-cases/ocaml-index/gh10985/foo.ml | 1 + .../test-cases/ocaml-index/gh10985/run.t | 23 +++++++++++++++++++ 8 files changed, 36 insertions(+) create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/dune create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune new file mode 100644 index 00000000000..1b1c445a508 --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune @@ -0,0 +1,4 @@ +(dirs (:standard \ external_sources)) +(library + (name foo) + (libraries mypkg.lib)) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project new file mode 100644 index 00000000000..3e2a6150dda --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project @@ -0,0 +1 @@ +(lang dune 3.17) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune new file mode 100644 index 00000000000..5ee61488506 --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune @@ -0,0 +1 @@ +(lang package 0.1) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune new file mode 100644 index 00000000000..f495f7aee3e --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune @@ -0,0 +1,3 @@ +(library + (public_name mypkg.lib) + (name test_lib)) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project new file mode 100644 index 00000000000..f8fb8158cfd --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project @@ -0,0 +1,2 @@ +(lang dune 3.11) +(package (name mypkg)) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml new file mode 100644 index 00000000000..e17ba6d278c --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml @@ -0,0 +1 @@ +let x = () diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml b/test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml new file mode 100644 index 00000000000..b47de64ed07 --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml @@ -0,0 +1 @@ +let () = Test_lib.x diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t b/test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t new file mode 100644 index 00000000000..6d83f8b3148 --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t @@ -0,0 +1,23 @@ +This test attempts to build the ocaml index while depending on a library +installed through a lock file. + +This is based off of the pkg/libraries.t test, just taking advantage of +being in its own directory. + +This can't be just written to disk, I /think/ so it cat get an absolute path +in the source stanza. + + $ cat >dune.lock/mypkg.pkg < (version 0.0.1) + > (source (copy $PWD/external_sources)) + > (build (run dune build --release --promote-install-file=true . @install)) + > EOF + + $ dune build @ocaml-index + Error: This rule defines a directory target "default/.pkg/mypkg/target" that + matches the requested path + "default/.pkg/mypkg/target/lib/mypkg/lib/cctx.ocaml-index" but the rule's + action didn't produce it + -> required by _build/default/.foo.objs/cctx.ocaml-index + -> required by alias ocaml-index + [1] From 6524b7b1576bba2f9a515ea9ec0f79f3447ad724 Mon Sep 17 00:00:00 2001 From: Andrew Patterson Date: Thu, 3 Oct 2024 12:42:38 -0400 Subject: [PATCH 2/3] Refactor the test case into a single file The only real change between this file and pkg/libraries.t is the build command. Signed-off-by: Andrew Patterson --- .../test-cases/ocaml-index/gh10985.t | 55 +++++++++++++++++++ .../test-cases/ocaml-index/gh10985/dune | 4 -- .../ocaml-index/gh10985/dune-project | 1 - .../ocaml-index/gh10985/dune.lock/lock.dune | 1 - .../ocaml-index/gh10985/external_sources/dune | 3 - .../gh10985/external_sources/dune-project | 2 - .../gh10985/external_sources/test_lib.ml | 1 - .../test-cases/ocaml-index/gh10985/foo.ml | 1 - .../test-cases/ocaml-index/gh10985/run.t | 23 -------- 9 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985.t delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/dune delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml delete mode 100644 test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985.t b/test/blackbox-tests/test-cases/ocaml-index/gh10985.t new file mode 100644 index 00000000000..740d50ba2ec --- /dev/null +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985.t @@ -0,0 +1,55 @@ +This test attempts to build the ocaml index while depending on a library +installed through a lock file. + +We set up a library that will be installed as part of the package: + + $ mkdir external_sources + $ cat >external_sources/dune-project < (lang dune 3.11) + > (package (name mypkg)) + > EOF + $ cat >external_sources/dune < (library + > (public_name mypkg.lib) + > (name test_lib)) + > EOF + $ cat >external_sources/test_lib.ml < let x = () + > EOF + +Now we set up a lock file with this package and then attempt to use it: + + $ cat >dune-project < (lang dune 3.11) + > EOF + + $ mkdir dune.lock + $ cat >dune.lock/lock.dune < (lang package 0.1) + > EOF + + $ cat >dune.lock/mypkg.pkg < (version 0.0.1) + > (source (copy $PWD/external_sources)) + > (build (run dune build --release --promote-install-file=true . @install)) + > EOF + + $ cat >dune < (dirs (:standard \ external_sources)) + > (library + > (name foo) + > (libraries mypkg.lib)) + > EOF + + $ cat >foo.ml < let () = Test_lib.x + > EOF + + $ dune build @ocaml-index + Error: This rule defines a directory target "default/.pkg/mypkg/target" that + matches the requested path + "default/.pkg/mypkg/target/lib/mypkg/lib/cctx.ocaml-index" but the rule's + action didn't produce it + -> required by _build/default/.foo.objs/cctx.ocaml-index + -> required by alias ocaml-index + [1] diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune deleted file mode 100644 index 1b1c445a508..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune +++ /dev/null @@ -1,4 +0,0 @@ -(dirs (:standard \ external_sources)) -(library - (name foo) - (libraries mypkg.lib)) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project deleted file mode 100644 index 3e2a6150dda..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune-project +++ /dev/null @@ -1 +0,0 @@ -(lang dune 3.17) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune b/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune deleted file mode 100644 index 5ee61488506..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/dune.lock/lock.dune +++ /dev/null @@ -1 +0,0 @@ -(lang package 0.1) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune deleted file mode 100644 index f495f7aee3e..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune +++ /dev/null @@ -1,3 +0,0 @@ -(library - (public_name mypkg.lib) - (name test_lib)) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project deleted file mode 100644 index f8fb8158cfd..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/dune-project +++ /dev/null @@ -1,2 +0,0 @@ -(lang dune 3.11) -(package (name mypkg)) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml b/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml deleted file mode 100644 index e17ba6d278c..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/external_sources/test_lib.ml +++ /dev/null @@ -1 +0,0 @@ -let x = () diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml b/test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml deleted file mode 100644 index b47de64ed07..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/foo.ml +++ /dev/null @@ -1 +0,0 @@ -let () = Test_lib.x diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t b/test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t deleted file mode 100644 index 6d83f8b3148..00000000000 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985/run.t +++ /dev/null @@ -1,23 +0,0 @@ -This test attempts to build the ocaml index while depending on a library -installed through a lock file. - -This is based off of the pkg/libraries.t test, just taking advantage of -being in its own directory. - -This can't be just written to disk, I /think/ so it cat get an absolute path -in the source stanza. - - $ cat >dune.lock/mypkg.pkg < (version 0.0.1) - > (source (copy $PWD/external_sources)) - > (build (run dune build --release --promote-install-file=true . @install)) - > EOF - - $ dune build @ocaml-index - Error: This rule defines a directory target "default/.pkg/mypkg/target" that - matches the requested path - "default/.pkg/mypkg/target/lib/mypkg/lib/cctx.ocaml-index" but the rule's - action didn't produce it - -> required by _build/default/.foo.objs/cctx.ocaml-index - -> required by alias ocaml-index - [1] From 78aeee65cce9b4ac837ac281a93722988000410f Mon Sep 17 00:00:00 2001 From: Andrew Patterson Date: Fri, 4 Oct 2024 12:47:01 -0400 Subject: [PATCH 3/3] Put the package and actual build into separate directories Signed-off-by: Andrew Patterson --- test/blackbox-tests/test-cases/ocaml-index/gh10985.t | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/blackbox-tests/test-cases/ocaml-index/gh10985.t b/test/blackbox-tests/test-cases/ocaml-index/gh10985.t index 740d50ba2ec..5c4edfa7a45 100644 --- a/test/blackbox-tests/test-cases/ocaml-index/gh10985.t +++ b/test/blackbox-tests/test-cases/ocaml-index/gh10985.t @@ -17,6 +17,11 @@ We set up a library that will be installed as part of the package: > let x = () > EOF +We put the actual build in a separate directory, so we don't have to ignore +the package directory in the dune file: + $ mkdir actual + $ cd actual + Now we set up a lock file with this package and then attempt to use it: $ cat >dune-project <dune.lock/mypkg.pkg < (version 0.0.1) - > (source (copy $PWD/external_sources)) + > (source (copy $PWD/../external_sources)) > (build (run dune build --release --promote-install-file=true . @install)) > EOF $ cat >dune < (dirs (:standard \ external_sources)) > (library > (name foo) > (libraries mypkg.lib))