From 204b21f4fb57d6fcd26cec9e47cf72eb64cb8b31 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Fri, 6 Jul 2018 14:42:14 +0700 Subject: [PATCH] Rename %{<} to %{deps[0]} and implement %{deps[i]} Signed-off-by: Rudi Grinberg --- doc/quick-start.rst | 10 +++---- .../sample-projects/with-configure-step/dune | 2 +- .../with-configure-step/src/dune | 2 +- src/dune | 2 +- src/jbuild.ml | 4 +-- src/super_context.ml | 26 +++++++++++------ .../blackbox-tests/test-cases/force-test/dune | 2 +- test/blackbox-tests/test-cases/github568/dune | 4 +-- .../github660/explicit-interfaces/dune | 2 +- .../test-cases/github660/no-interfaces/dune | 2 +- .../blackbox-tests/test-cases/output-obj/dune | 6 ++-- test/blackbox-tests/test-cases/reason/dune | 10 +++---- test/blackbox-tests/test-cases/select/dune | 2 +- test/unit-tests/configurator/dune | 2 +- test/unit-tests/dune | 28 +++++++++---------- test/unit-tests/ocaml-config/dune | 2 +- 16 files changed, 57 insertions(+), 49 deletions(-) diff --git a/doc/quick-start.rst b/doc/quick-start.rst index c23af0d6..ed6024a9 100644 --- a/doc/quick-start.rst +++ b/doc/quick-start.rst @@ -136,7 +136,7 @@ Add this field to your ``library`` or ``executable`` stanzas: .. code:: scheme - (preprocess (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{<}))) + (preprocess (action (run %{bin:cppo} -V OCAML:%{ocaml_version} %{deps[0]}))) Additionally, if you are include a ``config.h`` file, you need to declare the dependency to this file via: @@ -155,7 +155,7 @@ Write this in your ``dune`` file: (rule (targets foo.ml) (deps foo.cppo.ml ) - (action (run %{bin:cppo} %{<} -o %{targets}))) + (action (run %{bin:cppo} %{deps[0]} -o %{targets}))) Defining a library with C stubs =============================== @@ -193,7 +193,7 @@ compilation and link flags. Write this ``dune`` file: (rule (targets c_flags.sexp c_library_flags.sexp) (deps config/discover.exe) - (action (run %{<} -ocamlc %{OCAMLC}))) + (action (run %{deps[0]} -ocamlc %{OCAMLC}))) Then create a ``config`` subdirectory and write this ``dune`` file: @@ -241,7 +241,7 @@ To generate a file ``foo.ml`` using a program from another directory: (rule (targets foo.ml) (deps ../generator/gen.exe) - (action (run %{<} -o %{targets}))) + (action (run %{deps[0]} -o %{targets}))) Defining tests ============== @@ -253,7 +253,7 @@ Write this in your ``dune`` file: (alias (name runtest) (deps my-test-program.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) And run the tests with: diff --git a/example/sample-projects/with-configure-step/dune b/example/sample-projects/with-configure-step/dune index 84fdf05e..9ccca784 100644 --- a/example/sample-projects/with-configure-step/dune +++ b/example/sample-projects/with-configure-step/dune @@ -2,7 +2,7 @@ ((fallback) (targets (config)) (deps (config.defaults)) - (action (copy %{<} %{targets})))) + (action (copy %{deps[0]} %{targets})))) (rule ((targets (config.full)) diff --git a/example/sample-projects/with-configure-step/src/dune b/example/sample-projects/with-configure-step/src/dune index ffcf4ef4..9c1d24bf 100644 --- a/example/sample-projects/with-configure-step/src/dune +++ b/example/sample-projects/with-configure-step/src/dune @@ -8,5 +8,5 @@ (rule ((targets (config.ml)) (deps (../config.full)) - (action (copy %{<} %{targets})))) + (action (copy %{deps[0]} %{targets})))) diff --git a/src/dune b/src/dune index 0baaf2a0..dd878557 100644 --- a/src/dune +++ b/src/dune @@ -11,7 +11,7 @@ which_program) (synopsis "Internal Dune library, do not use!")) -(ocamllex meta_lexer glob_lexer dune_lexer) +(ocamllex meta_lexer glob_lexer dune_lexer dune_vars) (rule (targets setup.ml) diff --git a/src/jbuild.ml b/src/jbuild.ml index 95ddbd4f..7721d2d8 100644 --- a/src/jbuild.ml +++ b/src/jbuild.ml @@ -1243,7 +1243,7 @@ module Rule = struct [ S.virt_text __POS__ "-q" ; S.virt_text __POS__ "-o" ; S.virt_var __POS__ "targets" - ; S.virt_var __POS__"<" + ; S.virt_var __POS__"deps[0]" ]))) ; mode ; locks = [] @@ -1261,7 +1261,7 @@ module Rule = struct Chdir (S.virt_var __POS__ "ROOT", Run (S.virt_text __POS__ "ocamlyacc", - [S.virt_var __POS__ "<"]))) + [S.virt_var __POS__ "deps[0]"]))) ; mode ; locks = [] ; loc diff --git a/src/super_context.ml b/src/super_context.ml index bc93bd63..71f40794 100644 --- a/src/super_context.ml +++ b/src/super_context.ml @@ -807,16 +807,20 @@ module Action = struct match String.Map.find dynamic_expansions key with | Some _ as opt -> opt | None -> + let dep i = + match List.nth deps_written_by_user i with + | None -> + Loc.warn loc "Variable '%s' used with no explicit \ + dependencies@." key; + [Value.String ""] + | Some v -> [Path v] + in match key with | "<" -> - Some - (match deps_written_by_user with - | [] -> - Loc.warn loc "Variable '<' used with no explicit \ - dependencies@."; - [Value.String ""] - | dep :: _ -> - [Path dep]) + if syntax_version < (1, 0) then + Some (dep 0) + else + Loc.fail loc "Variable '<' is renamed to 'deps[0]' in dune" | "^" -> if syntax_version < (1, 0) then Some (Value.L.paths deps_written_by_user) @@ -824,7 +828,11 @@ module Action = struct Loc.fail loc "Variable %%{^} has been renamed to %%{deps}" | "deps" when syntax_version >= (1, 0) -> Some (Value.L.paths deps_written_by_user) - | _ -> None) + | _ -> + if syntax_version < (1, 0) then + None + else + Option.map (Dune_vars.deps key) ~f:dep) let run sctx ~loc ?(extra_vars=String.Map.empty) t ~dir ~dep_kind ~targets:targets_written_by_user ~scope diff --git a/test/blackbox-tests/test-cases/force-test/dune b/test/blackbox-tests/test-cases/force-test/dune index b82cbf03..eadca903 100644 --- a/test/blackbox-tests/test-cases/force-test/dune +++ b/test/blackbox-tests/test-cases/force-test/dune @@ -4,4 +4,4 @@ (alias (name runtest) (deps f.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) diff --git a/test/blackbox-tests/test-cases/github568/dune b/test/blackbox-tests/test-cases/github568/dune index 93ebd2fd..70af3db3 100644 --- a/test/blackbox-tests/test-cases/github568/dune +++ b/test/blackbox-tests/test-cases/github568/dune @@ -8,7 +8,7 @@ (name runtest) (package lib1) (deps test1.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) (executable (name test1) @@ -25,7 +25,7 @@ (name runtest) (package lib2) (deps test2.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) (executable (name test2) diff --git a/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune b/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune index a6b2e734..a987515c 100644 --- a/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune +++ b/test/blackbox-tests/test-cases/github660/explicit-interfaces/dune @@ -1,6 +1,6 @@ (alias (name runtest) (deps main.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) (executable (name main)) diff --git a/test/blackbox-tests/test-cases/github660/no-interfaces/dune b/test/blackbox-tests/test-cases/github660/no-interfaces/dune index a6b2e734..a987515c 100644 --- a/test/blackbox-tests/test-cases/github660/no-interfaces/dune +++ b/test/blackbox-tests/test-cases/github660/no-interfaces/dune @@ -1,6 +1,6 @@ (alias (name runtest) (deps main.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) (executable (name main)) diff --git a/test/blackbox-tests/test-cases/output-obj/dune b/test/blackbox-tests/test-cases/output-obj/dune index 8d0795a3..05939861 100644 --- a/test/blackbox-tests/test-cases/output-obj/dune +++ b/test/blackbox-tests/test-cases/output-obj/dune @@ -33,7 +33,7 @@ (rule (targets dynamic.exe) (deps dynamic.c) - (action (run %{CC} -o %{targets} %{<} %{ocaml-config:native_c_libraries}))) + (action (run %{CC} -o %{targets} %{deps[0]} %{ocaml-config:native_c_libraries}))) (alias (name runtest) @@ -48,9 +48,9 @@ (alias (name runtest) (deps test.bc%{ext_dll}) - (action (run ./dynamic.exe ./%{<}))) + (action (run ./dynamic.exe ./%{deps[0]}))) (alias (name runtest) (deps test%{ext_dll}) - (action (run ./dynamic.exe ./%{<}))) + (action (run ./dynamic.exe ./%{deps[0]}))) diff --git a/test/blackbox-tests/test-cases/reason/dune b/test/blackbox-tests/test-cases/reason/dune index 3aaf006d..36f366ab 100644 --- a/test/blackbox-tests/test-cases/reason/dune +++ b/test/blackbox-tests/test-cases/reason/dune @@ -8,18 +8,18 @@ (lint (per_module ((pps (reasonppx (-lint true))) (hello cppome)) - ((action (run ./pp/reasononlypp.exe -lint %{<})) (foo bar pped)))) + ((action (run ./pp/reasononlypp.exe -lint %{deps[0]})) (foo bar pped)))) (preprocess (per_module ((pps (reasonppx)) (foo)) ((pps (reasonppx (-lint false))) (hello)) - ((action (run ./pp/reasononlypp.exe %{<})) (cppome)))))) + ((action (run ./pp/reasononlypp.exe %{deps[0]})) (cppome)))))) (executable ((name rbin) (modules rbin) - (lint (action (run ./pp/reasononlypp.exe -lint %{<}))) - (preprocess (action (run ./pp/reasononlypp.exe %{<}))) + (lint (action (run ./pp/reasononlypp.exe -lint %{deps[0]}))) + (preprocess (action (run ./pp/reasononlypp.exe %{deps[0]}))) (libraries (rlib)))) ;; we want to make sure that .rei files are present @@ -31,4 +31,4 @@ (alias ((name runtest) (deps (rbin.exe)) - (action (run %{<})))) + (action (run %{deps[0]})))) diff --git a/test/blackbox-tests/test-cases/select/dune b/test/blackbox-tests/test-cases/select/dune index b577aa3b..e063a6e8 100644 --- a/test/blackbox-tests/test-cases/select/dune +++ b/test/blackbox-tests/test-cases/select/dune @@ -11,4 +11,4 @@ (alias (name runtest) (deps main.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) diff --git a/test/unit-tests/configurator/dune b/test/unit-tests/configurator/dune index 13f1fc96..43977a7d 100644 --- a/test/unit-tests/configurator/dune +++ b/test/unit-tests/configurator/dune @@ -5,4 +5,4 @@ (alias (name runtest) (deps ./test_configurator.exe) - (action (run %{<}))) + (action (run %{deps[0]}))) diff --git a/test/unit-tests/dune b/test/unit-tests/dune index cb279b8e..d1ca0488 100644 --- a/test/unit-tests/dune +++ b/test/unit-tests/dune @@ -25,8 +25,8 @@ (source_tree findlib-db)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) (alias (name runtest) @@ -35,8 +35,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) (alias (name runtest) @@ -45,8 +45,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) (alias (name runtest) @@ -55,8 +55,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) (alias (name runtest) @@ -65,8 +65,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) (alias (name runtest) @@ -75,8 +75,8 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) (alias (name runtest) @@ -85,5 +85,5 @@ (glob_files %{project_root}/src/stdune/.stdune.objs/*.cmi)) (action (chdir %{project_root} (progn - (run %{exe:expect_test.exe} %{<}) - (diff? %{<} %{<}.corrected))))) + (run %{exe:expect_test.exe} %{deps[0]}) + (diff? %{deps[0]} %{deps[0]}.corrected))))) diff --git a/test/unit-tests/ocaml-config/dune b/test/unit-tests/ocaml-config/dune index 05f8ec00..409881d1 100644 --- a/test/unit-tests/ocaml-config/dune +++ b/test/unit-tests/ocaml-config/dune @@ -5,4 +5,4 @@ (alias (name runtest) (deps ./gh637.exe) - (action (run %{<}))) + (action (run %{deps[0]})))