From ff89f1ceacc63d694046182e7c7a8a4f30dd5acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ojeda=20B=C3=A4r?= Date: Wed, 4 Jan 2023 20:29:39 +0100 Subject: [PATCH 1/5] Add repro case for Jsoo rule bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nicolás Ojeda Bär --- test/blackbox-tests/test-cases/jsoo/public-libs.t/a/a.ml | 1 + test/blackbox-tests/test-cases/jsoo/public-libs.t/a/dune | 3 +++ test/blackbox-tests/test-cases/jsoo/public-libs.t/b/dune | 4 ++++ .../test-cases/jsoo/public-libs.t/b/main.ml | 1 + .../test-cases/jsoo/public-libs.t/dune-project | 3 +++ test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t | 8 ++++++++ 6 files changed, 20 insertions(+) create mode 100644 test/blackbox-tests/test-cases/jsoo/public-libs.t/a/a.ml create mode 100644 test/blackbox-tests/test-cases/jsoo/public-libs.t/a/dune create mode 100644 test/blackbox-tests/test-cases/jsoo/public-libs.t/b/dune create mode 100644 test/blackbox-tests/test-cases/jsoo/public-libs.t/b/main.ml create mode 100644 test/blackbox-tests/test-cases/jsoo/public-libs.t/dune-project create mode 100644 test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/a/a.ml b/test/blackbox-tests/test-cases/jsoo/public-libs.t/a/a.ml new file mode 100644 index 00000000000..df5e542079b --- /dev/null +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/a/a.ml @@ -0,0 +1 @@ +let x = 12 diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/a/dune b/test/blackbox-tests/test-cases/jsoo/public-libs.t/a/dune new file mode 100644 index 00000000000..9222db1e318 --- /dev/null +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/a/dune @@ -0,0 +1,3 @@ +(library + (public_name foo.a) + (name a)) diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/b/dune b/test/blackbox-tests/test-cases/jsoo/public-libs.t/b/dune new file mode 100644 index 00000000000..aed5b0c21a4 --- /dev/null +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/b/dune @@ -0,0 +1,4 @@ +(executable + (name main) + (libraries a) + (modes js)) diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/b/main.ml b/test/blackbox-tests/test-cases/jsoo/public-libs.t/b/main.ml new file mode 100644 index 00000000000..e9273e98aa0 --- /dev/null +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/b/main.ml @@ -0,0 +1 @@ +let _ = A.x diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/dune-project b/test/blackbox-tests/test-cases/jsoo/public-libs.t/dune-project new file mode 100644 index 00000000000..dd32274baba --- /dev/null +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/dune-project @@ -0,0 +1,3 @@ +(lang dune 3.7) + +(package (name foo)) diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t b/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t new file mode 100644 index 00000000000..f43c770df2a --- /dev/null +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t @@ -0,0 +1,8 @@ +Compilation of libraries with pulic-names + + $ dune build + File "b/dune", line 2, characters 7-11: + 2 | (name main) + ^^^^ + Error: No rule found for a/.a.objs/jsoo/default/foo.a.cma.js + [1] From c2b4e2ab8e9737f12b3e6e4382cf4a0deff9cd54 Mon Sep 17 00:00:00 2001 From: Hugo Heuzard Date: Wed, 4 Jan 2023 23:47:30 +0100 Subject: [PATCH 2/5] fix jsoo with public lib names Signed-off-by: Hugo Heuzard --- src/dune_rules/jsoo_rules.ml | 9 +++++---- test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t | 7 +------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/dune_rules/jsoo_rules.ml b/src/dune_rules/jsoo_rules.ml index 1d50927302a..259682a062b 100644 --- a/src/dune_rules/jsoo_rules.ml +++ b/src/dune_rules/jsoo_rules.ml @@ -187,14 +187,15 @@ let with_js_ext s = let jsoo_archives ~sctx config lib = let info = Lib.info lib in + let archives = Lib_info.archives info in match Lib.is_local lib with | true -> let obj_dir = Lib_info.obj_dir info in - [ in_obj_dir' ~obj_dir ~config:(Some config) - [ Lib_name.to_string (Lib.name lib) ^ Js_of_ocaml.Ext.cma ] - ] + List.map archives.byte ~f:(fun archive -> + in_obj_dir' ~obj_dir ~config:(Some config) + [ with_js_ext (Path.basename archive) ] + ) | false -> - let archives = Lib_info.archives info in List.map archives.byte ~f:(fun archive -> Path.build (in_build_dir ~sctx ~config diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t b/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t index f43c770df2a..fb7c7585341 100644 --- a/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t @@ -1,8 +1,3 @@ Compilation of libraries with pulic-names - $ dune build - File "b/dune", line 2, characters 7-11: - 2 | (name main) - ^^^^ - Error: No rule found for a/.a.objs/jsoo/default/foo.a.cma.js - [1] + $ dune build --display short From 6cc0bad54d43f20e51efdadc6bcbdc7bb8815750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ojeda=20B=C3=A4r?= Date: Thu, 5 Jan 2023 06:00:24 +0100 Subject: [PATCH 3/5] Accept test results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nicolás Ojeda Bär --- .../test-cases/jsoo/public-libs.t/run.t | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t b/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t index fb7c7585341..c1c4965d67c 100644 --- a/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t +++ b/test/blackbox-tests/test-cases/jsoo/public-libs.t/run.t @@ -1,3 +1,17 @@ Compilation of libraries with pulic-names $ dune build --display short + ocamlc a/.a.objs/byte/a.{cmi,cmo,cmt} + js_of_ocaml b/.main.eobjs/jsoo/main.bc.runtime.js + js_of_ocaml .js/default/stdlib/std_exit.cmo.js + js_of_ocaml .js/default/stdlib/stdlib.cma.js + ocamlopt a/.a.objs/native/a.{cmx,o} + ocamlc b/.main.eobjs/byte/dune__exe__Main.{cmi,cmti} + ocamlc a/a.cma + ocamlopt a/a.{a,cmxa} + ocamlc b/.main.eobjs/byte/dune__exe__Main.{cmo,cmt} + js_of_ocaml a/.a.objs/jsoo/default/a.cma.js + ocamlopt a/a.cmxs + ocamlc b/main.bc-for-jsoo + js_of_ocaml b/.main.eobjs/jsoo/dune__exe__Main.cmo.js + js_of_ocaml b/main.bc.js From 26040436f69823dd0f55747d97e125446c619237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ojeda=20B=C3=A4r?= Date: Thu, 5 Jan 2023 06:07:59 +0100 Subject: [PATCH 4/5] make fmt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nicolás Ojeda Bär --- src/dune_rules/jsoo_rules.ml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dune_rules/jsoo_rules.ml b/src/dune_rules/jsoo_rules.ml index 259682a062b..0d1cad25586 100644 --- a/src/dune_rules/jsoo_rules.ml +++ b/src/dune_rules/jsoo_rules.ml @@ -192,9 +192,8 @@ let jsoo_archives ~sctx config lib = | true -> let obj_dir = Lib_info.obj_dir info in List.map archives.byte ~f:(fun archive -> - in_obj_dir' ~obj_dir ~config:(Some config) - [ with_js_ext (Path.basename archive) ] - ) + in_obj_dir' ~obj_dir ~config:(Some config) + [ with_js_ext (Path.basename archive) ]) | false -> List.map archives.byte ~f:(fun archive -> Path.build From 8285c52f9ba66e0b419c92ed93a77823fbdbfbb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ojeda=20B=C3=A4r?= Date: Thu, 5 Jan 2023 06:55:28 +0100 Subject: [PATCH 5/5] CHANGES.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nicolás Ojeda Bär --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index c949abf26d5..f7849079ddd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -77,7 +77,7 @@ Unreleased enabled (#6645, @hhugo) - Fix *js_of_ocaml* separate compilation rules when `--enable=effects` - or `--enable=use-js-string` is used. (#6714, @hhugo) + or `--enable=use-js-string` is used. (#6714, #6828, @hhugo) - Remove spurious build dir created when running `dune init proj ...` (#6707, fixes #5429, @gridbugs)