From 65a7256371c5121d38f2caa9bec40191568f886d Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 00:34:16 +0900 Subject: [PATCH 1/9] Support core v15.0 --- bin/dune | 3 ++- bin/main.ml | 2 +- satyrographos.opam | 7 ++++--- src/autogen/dune | 9 ++++++++- src/autogen/fontsSystem.ml | 2 +- src/autogen/today.ml | 2 +- src/command/dune | 2 +- src/dune | 13 +++++++++++-- src/library.ml | 7 +------ src/library.mli | 3 ++- src/lockdown/lockdownFile.ml | 8 +------- src/repository.ml | 2 +- src/satysfi/dune | 1 + src/satysfi/migration.ml | 2 +- src/satysfi/satysfiDirs.ml | 2 +- src/satysfi/version.ml | 2 +- src/store.ml | 14 +++++++------- test/testcases/command_build__doc_make.ml | 2 +- test/testcases/command_build__doc_satysfi.ml | 2 +- test/testcases/command_build__doc_with_autogen.ml | 2 +- .../testcases/command_build__doc_with_libraries.ml | 2 +- .../command_install__distWithBrokenHash.expected | 5 +---- ...install__thirdParties_brokenDependency.expected | 3 +-- .../command_install_l__invalid_autogen.expected | 2 +- ...stall_l__thirdParties_brokenDependency.expected | 3 +-- .../command_lint__missing_satyristes.expected | 3 +-- ...d_lockdown_save__invalid_opam_response.expected | 3 +-- ...mand_opam_install__library_missingHash.expected | 3 +-- test/testlib/prepareBin.ml | 5 +++-- test/testlib/testCommand.ml | 2 +- test/testlib/testLib.ml | 9 ++++++--- 31 files changed, 66 insertions(+), 61 deletions(-) diff --git a/bin/dune b/bin/dune index 17aaab9..19b1031 100644 --- a/bin/dune +++ b/bin/dune @@ -1,9 +1,10 @@ (executable (name main) (public_name satyrographos) - (preprocess (pps ppx_deriving.std ppx_jane -allow-unannotated-ignores)) + (preprocess (pps ppx_deriving.std ppx_jane)) (libraries core + core_unix.command_unix satyrographos_template satyrographos_command satyrographos_lockdown diff --git a/bin/main.ml b/bin/main.ml index e2439f9..d62cf7c 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -20,4 +20,4 @@ let total_command = (* %%VERSION_NUM%% is expanded by "dune subst" *) let () = - Command.run ~version:"%%VERSION_NUM%%" total_command + Command_unix.run ~version:"%%VERSION_NUM%%" total_command diff --git a/satyrographos.opam b/satyrographos.opam index f1e447a..65d47b9 100644 --- a/satyrographos.opam +++ b/satyrographos.opam @@ -24,8 +24,8 @@ depends: [ "conf-diffutils" {with-test} "dune" {>= "2.7"} "fileutils" - "json-derivers" "menhir" {>= "20181006"} + "ppx_import" "ppx_deriving" "ppx_deriving_yojson" "ocamlgraph" @@ -42,10 +42,11 @@ depends: [ "uri-sexp" {>= "3.0.0"} "yaml" {>= "3.0" & < "4.0"} "yaml-sexp" {>= "3.0" & < "4.0"} - "yojson" + "yojson" {< "2.0"} # Janestreet Libs - "core" {>= "v0.14" & < "v0.15"} + "core" {>= "v0.14" & < "v0.16"} + "core_unix" "ppx_jane" "shexp" ] diff --git a/src/autogen/dune b/src/autogen/dune index 476405d..123198a 100644 --- a/src/autogen/dune +++ b/src/autogen/dune @@ -2,4 +2,11 @@ (name satyrographos_autogen) (inline_tests) (preprocess (staged_pps ppx_deriving.std ppx_deriving_yojson ppx_jane)) - (libraries core fileutils satyrographos satyrographos_satysfi shexp.process)) + (libraries + core + core_unix.time_unix + fileutils + satyrographos + satyrographos_satysfi + shexp.process +)) diff --git a/src/autogen/fontsSystem.ml b/src/autogen/fontsSystem.ml index 32c1b3d..18137aa 100644 --- a/src/autogen/fontsSystem.ml +++ b/src/autogen/fontsSystem.ml @@ -50,7 +50,7 @@ module DistinctFontMap = Map.Make(DistinctFont) let font_list ~outf = Printf.sprintf "fc-list -f '%s'" fc_format_data (* TODO escape quotes *) - |> Unix.open_process_in + |> Core_unix.open_process_in |> In_channel.input_all |> Printf.sprintf "(%s)" |> Sexp.of_string diff --git a/src/autogen/today.ml b/src/autogen/today.ml index 66a6d15..04188de 100644 --- a/src/autogen/today.ml +++ b/src/autogen/today.ml @@ -39,7 +39,7 @@ let generate_persistent () = (* TODO (gh-98) get the values from the lockfile *) let datetime = Time.now () in let tzname = - Time.Zone.local + Time_unix.Zone.local |> Lazy.force in { datetime = diff --git a/src/command/dune b/src/command/dune index 6b341bf..71bf9b8 100644 --- a/src/command/dune +++ b/src/command/dune @@ -1,7 +1,7 @@ (library (name satyrographos_command) (inline_tests) - (preprocess (staged_pps ppx_deriving.std ppx_jane -allow-unannotated-ignores)) + (preprocess (staged_pps ppx_deriving.std ppx_jane)) (libraries core fileutils diff --git a/src/dune b/src/dune index 53220a0..90b1da5 100644 --- a/src/dune +++ b/src/dune @@ -2,8 +2,17 @@ (name satyrographos) (synopsis "Internal Satyrographos Library, do not use!") (inline_tests) - (preprocess (staged_pps ppx_deriving.std ppx_jane)) - (libraries core fileutils json-derivers opam-format shexp.process uri uri-sexp yojson)) + (preprocess (staged_pps ppx_import ppx_deriving.std ppx_jane)) + (libraries + core + core_unix.filename_unix + fileutils + opam-format + shexp.process + uri + uri-sexp + yojson +)) (ocamllex (modules glob_lexer) diff --git a/src/library.ml b/src/library.ml index 98ad0bc..0d01761 100644 --- a/src/library.ml +++ b/src/library.ml @@ -10,13 +10,8 @@ module LibraryFiles = struct end module Json = struct - (* include Yojson.Safe - type t = Json_derivers.Yojson.t - let ( sexp_of_t, t_of_sexp, compare, hash ) = Json_derivers.Yojson.( sexp_of_t, t_of_sexp, compare, hash ) - *) - let ( to_string, from_file, to_file ) = Yojson.Safe.( to_string, from_file, to_file ) - include Json_derivers.Yojson + type t = [%import: Yojson.Safe.t] [@@deriving sexp, compare, hash] end module Dependency = Set.Make(String) diff --git a/src/library.mli b/src/library.mli index 32b4cac..05447cf 100644 --- a/src/library.mli +++ b/src/library.mli @@ -5,7 +5,8 @@ module LibraryFiles : sig end module Json : sig - include module type of Json_derivers.Yojson + include module type of Yojson.Safe + type t = [%import: Yojson.Safe.t] [@@deriving sexp, compare, hash] val to_string : ?buf:Bi_outbuf.t -> ?len:int -> ?std:bool -> t -> string val from_file : diff --git a/src/lockdown/lockdownFile.ml b/src/lockdown/lockdownFile.ml index 6e00772..afe8526 100644 --- a/src/lockdown/lockdownFile.ml +++ b/src/lockdown/lockdownFile.ml @@ -3,13 +3,7 @@ open Core let version = "0.0.3" module Json = struct - (* - include Yojson.Safe - type t = Json_derivers.Yojson.t - let ( sexp_of_t, t_of_sexp, compare, hash ) = Json_derivers.Yojson.( sexp_of_t, t_of_sexp, compare, hash ) - *) - include Yojson.Safe - include Json_derivers.Yojson + include Satyrographos.Library.Json let to_yojson = ident let of_yojson x = Result.Ok x end diff --git a/src/repository.ml b/src/repository.ml index 0fd9e87..f872abf 100644 --- a/src/repository.ml +++ b/src/repository.ml @@ -23,7 +23,7 @@ let remove reg name = remove_multiple reg [name] let add_dir reg name dir = - let abs_dir = Filename.realpath dir in + let abs_dir = Filename_unix.realpath dir in let uri = Uri.make ~scheme:"file" ~path:abs_dir () in (* Store.add_dir reg.cache name dir; *) Metadata.add reg.metadata name { diff --git a/src/satysfi/dune b/src/satysfi/dune index 3df0697..f50631f 100644 --- a/src/satysfi/dune +++ b/src/satysfi/dune @@ -4,6 +4,7 @@ (preprocess (staged_pps ppx_deriving.std ppx_jane)) (libraries core + core_unix fileutils ocamlgraph re diff --git a/src/satysfi/migration.ml b/src/satysfi/migration.ml index 3360b34..d862301 100644 --- a/src/satysfi/migration.ml +++ b/src/satysfi/migration.ml @@ -1,7 +1,7 @@ open Core -module Json = Json_derivers.Yojson module Library = Satyrographos.Library +module Json = Library.Json let migrate_font_src ~outf (l: Library.t) = let migrate_font_hash_variant_entry ~outf names = function diff --git a/src/satysfi/satysfiDirs.ml b/src/satysfi/satysfiDirs.ml index d7a8bc2..8e87f6e 100644 --- a/src/satysfi/satysfiDirs.ml +++ b/src/satysfi/satysfiDirs.ml @@ -30,7 +30,7 @@ let is_runtime_dir dir = let opam_share_dir ~outf = try - Unix.open_process_in "opam var share" + Core_unix.open_process_in "opam var share" |> In_channel.input_all |> String.strip |> begin function diff --git a/src/satysfi/version.ml b/src/satysfi/version.ml index 89b6bfa..c096747 100644 --- a/src/satysfi/version.ml +++ b/src/satysfi/version.ml @@ -132,7 +132,7 @@ let flag = | Some x -> x | None -> Format.fprintf outf - "Cannot detect SATySFi Version. Please specify with --satysfi-version. Assuming %s" + "Cannot detect SATySFi Version. Please specify it with --satysfi-version. Assuming %s" (to_string latest_version); latest_version ] diff --git a/src/store.ml b/src/store.ml index 817a24c..8c14f16 100644 --- a/src/store.ml +++ b/src/store.ml @@ -42,7 +42,7 @@ let create_new_reg dir = initialize registry_dir; read registry_dir let with_new_reg f = - let dir = Filename.temp_dir "Satyrographos" "Store" in + let dir = Filename_unix.temp_dir "Satyrographos" "Store" in protect ~f:(fun () -> create_new_reg dir |> f) ~finally:(fun () -> FileUtil.rm ~force:Force ~recurse:true [dir]) let test_library_list ~expect reg = @@ -58,7 +58,7 @@ let%test "store: list: empty" = with_new_reg begin fun reg -> match list reg with [] -> true | _ :: _ -> false end let%test_unit "store: add empty dir" = with_new_reg begin fun reg -> - let dir = Filename.temp_dir "Satyrographos" "Library" in + let dir = Filename_unix.temp_dir "Satyrographos" "Library" in add_dir reg "a" dir; test_library_list ~expect:["a"] reg; [%test_result: bool] ~expect:true (mem reg "a"); @@ -67,7 +67,7 @@ let%test_unit "store: add empty dir" = with_new_reg begin fun reg -> end let%test_unit "store: add nonempty dir" = with_new_reg begin fun reg -> - let dir = Filename.temp_dir "Satyrographos" "Library" in + let dir = Filename_unix.temp_dir "Satyrographos" "Library" in FilePath.concat dir "c" |> FileUtil.touch; add_dir reg "a" dir; test_library_list ~expect:["a"] reg; @@ -78,12 +78,12 @@ let%test_unit "store: add nonempty dir" = with_new_reg begin fun reg -> end let%test_unit "store: add nonempty dir twice" = with_new_reg begin fun reg -> - let dir1 = Filename.temp_dir "Satyrographos" "Library" in + let dir1 = Filename_unix.temp_dir "Satyrographos" "Library" in FilePath.concat dir1 "c" |> FileUtil.touch; add_dir reg "a" dir1; test_library_list ~expect:["a"] reg; test_library_content ~expect:["c"] reg "a"; - let dir2 = Filename.temp_dir "Satyrographos" "Library" in + let dir2 = Filename_unix.temp_dir "Satyrographos" "Library" in FilePath.concat dir2 "d" |> FileUtil.touch; add_dir reg "a" dir2; test_library_list ~expect:["a"] reg; @@ -91,7 +91,7 @@ let%test_unit "store: add nonempty dir twice" = with_new_reg begin fun reg -> end let%test_unit "store: added dir must be copied" = with_new_reg begin fun reg -> - let dir = Filename.temp_dir "Satyrographos" "Library" in + let dir = Filename_unix.temp_dir "Satyrographos" "Library" in FilePath.concat dir "c" |> FileUtil.touch; add_dir reg "a" dir; test_library_list ~expect:["a"] reg; @@ -105,7 +105,7 @@ let%test_unit "store: added dir must be copied" = with_new_reg begin fun reg -> end let%test_unit "store: add the same directory twice with different contents" = with_new_reg begin fun reg -> - let dir = Filename.temp_dir "Satyrographos" "Library" in + let dir = Filename_unix.temp_dir "Satyrographos" "Library" in FilePath.concat dir "c" |> FileUtil.touch; add_dir reg "a" dir; test_library_list ~expect:["a"] reg; diff --git a/test/testcases/command_build__doc_make.ml b/test/testcases/command_build__doc_make.ml index 2003dc6..2c41f09 100644 --- a/test/testcases/command_build__doc_make.ml +++ b/test/testcases/command_build__doc_make.ml @@ -60,7 +60,7 @@ let () = ~outf ~verbose ~buildscript_path:(FilePath.concat temp_dir "pkg/Satyristes") - ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Option.some) + ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Core.Option.some) ~env ~names in diff --git a/test/testcases/command_build__doc_satysfi.ml b/test/testcases/command_build__doc_satysfi.ml index f6e7ff3..9b11529 100644 --- a/test/testcases/command_build__doc_satysfi.ml +++ b/test/testcases/command_build__doc_satysfi.ml @@ -59,7 +59,7 @@ let () = ~outf ~verbose ~buildscript_path:(FilePath.concat temp_dir "pkg/Satyristes") - ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Option.some) + ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Core.Option.some) ~env ~names in diff --git a/test/testcases/command_build__doc_with_autogen.ml b/test/testcases/command_build__doc_with_autogen.ml index fde0cf5..9086043 100644 --- a/test/testcases/command_build__doc_with_autogen.ml +++ b/test/testcases/command_build__doc_with_autogen.ml @@ -90,7 +90,7 @@ let () = ~outf ~verbose ~buildscript_path:(FilePath.concat temp_dir "pkg/Satyristes") - ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Option.some) + ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Core.Option.some) ~env ~names in diff --git a/test/testcases/command_build__doc_with_libraries.ml b/test/testcases/command_build__doc_with_libraries.ml index 3922d7b..a01f5c2 100644 --- a/test/testcases/command_build__doc_with_libraries.ml +++ b/test/testcases/command_build__doc_with_libraries.ml @@ -100,7 +100,7 @@ let () = ~outf ~verbose ~buildscript_path:(FilePath.concat temp_dir "pkg/Satyristes") - ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Option.some) + ~build_dir:(FilePath.concat temp_dir "pkg/_build" |> Core.Option.some) ~env ~names in diff --git a/test/testcases/command_install__distWithBrokenHash.expected b/test/testcases/command_install__distWithBrokenHash.expected index 32920ba..70142a0 100644 --- a/test/testcases/command_install__distWithBrokenHash.expected +++ b/test/testcases/command_install__distWithBrokenHash.expected @@ -1,10 +1,7 @@ Installing packages ------------------------------------------------------------ Exception: -(Failure - "JSON Error in file @@temp_dir@@/simple_dist/hash/broken.satysfi-hash: Line 1, bytes -4:\ - \nInvalid token 'abc\ - \n'") +Failure("JSON Error in file @@temp_dir@@/simple_dist/hash/broken.satysfi-hash: Line 1, bytes -4:\nInvalid token 'abc\n'") ------------------------------------------------------------ @@dest_dir@@ ------------------------------------------------------------ diff --git a/test/testcases/command_install__thirdParties_brokenDependency.expected b/test/testcases/command_install__thirdParties_brokenDependency.expected index dbc8834..8d8d4af 100644 --- a/test/testcases/command_install__thirdParties_brokenDependency.expected +++ b/test/testcases/command_install__thirdParties_brokenDependency.expected @@ -1,8 +1,7 @@ Installing packages ------------------------------------------------------------ Exception: -(Failure - "Missing dependencies: (fonts-theano). Revdeps: ((fonts-theano (grcnum)))") +Failure("Missing dependencies: (fonts-theano). Revdeps: ((fonts-theano (grcnum)))") ------------------------------------------------------------ @@dest_dir@@ ------------------------------------------------------------ diff --git a/test/testcases/command_install_l__invalid_autogen.expected b/test/testcases/command_install_l__invalid_autogen.expected index 60fedc0..a8c5411 100644 --- a/test/testcases/command_install_l__invalid_autogen.expected +++ b/test/testcases/command_install_l__invalid_autogen.expected @@ -1,7 +1,7 @@ Installing packages ------------------------------------------------------------ Exception: -(Failure "Autogen libraries ($invalid-autogen) are not available.") +Failure("Autogen libraries ($invalid-autogen) are not available.") ------------------------------------------------------------ @@dest_dir@@ ------------------------------------------------------------ diff --git a/test/testcases/command_install_l__thirdParties_brokenDependency.expected b/test/testcases/command_install_l__thirdParties_brokenDependency.expected index dbc8834..8d8d4af 100644 --- a/test/testcases/command_install_l__thirdParties_brokenDependency.expected +++ b/test/testcases/command_install_l__thirdParties_brokenDependency.expected @@ -1,8 +1,7 @@ Installing packages ------------------------------------------------------------ Exception: -(Failure - "Missing dependencies: (fonts-theano). Revdeps: ((fonts-theano (grcnum)))") +Failure("Missing dependencies: (fonts-theano). Revdeps: ((fonts-theano (grcnum)))") ------------------------------------------------------------ @@dest_dir@@ ------------------------------------------------------------ diff --git a/test/testcases/command_lint__missing_satyristes.expected b/test/testcases/command_lint__missing_satyristes.expected index 733fbd7..8f1177f 100644 --- a/test/testcases/command_lint__missing_satyristes.expected +++ b/test/testcases/command_lint__missing_satyristes.expected @@ -1,3 +1,2 @@ Exception: -(Sys_error - "@@test_library@@/Satyristes: No such file or directory") +Sys_error("@@test_library@@/Satyristes: No such file or directory") diff --git a/test/testcases/command_lockdown_save__invalid_opam_response.expected b/test/testcases/command_lockdown_save__invalid_opam_response.expected index 64b9b71..e5f0e34 100644 --- a/test/testcases/command_lockdown_save__invalid_opam_response.expected +++ b/test/testcases/command_lockdown_save__invalid_opam_response.expected @@ -120,8 +120,7 @@ Installing packages ------------------------------------------------------------ Gathering OPAM package information... Exception: -(Failure - "BUG: Unrecognizable package information from OPAM: \"***invalid,response,!!!\"") +Failure("BUG: Unrecognizable package information from OPAM: \"***invalid,response,!!!\"") ------------------------------------------------------------ @@temp_dir@@/pkg @@temp_dir@@/pkg/Makefile diff --git a/test/testcases/command_opam_install__library_missingHash.expected b/test/testcases/command_opam_install__library_missingHash.expected index 9c1b9a4..5f7c812 100644 --- a/test/testcases/command_opam_install__library_missingHash.expected +++ b/test/testcases/command_opam_install__library_missingHash.expected @@ -1,8 +1,7 @@ Installing packages ------------------------------------------------------------ Exception: -(Sys_error - "@@temp_dir@@/pkg/fonts.satysfi-hash: No such file or directory") +Sys_error("@@temp_dir@@/pkg/fonts.satysfi-hash: No such file or directory") ------------------------------------------------------------ @@dest_dir@@ ------------------------------------------------------------ diff --git a/test/testlib/prepareBin.ml b/test/testlib/prepareBin.ml index 8a83e8f..939cf89 100644 --- a/test/testlib/prepareBin.ml +++ b/test/testlib/prepareBin.ml @@ -73,9 +73,10 @@ echo opam "$@" >> "$LOG_FILE" case "$1" in list) cat < Option.map (fun o -> o.list_result) - |> Option.value ~default:""; + |> Option.map ~f:(fun o -> o.list_result) + |> Option.value ~default:"" end; {|EOF ;; *) diff --git a/test/testlib/testCommand.ml b/test/testlib/testCommand.ml index 779f7a8..98c3575 100644 --- a/test/testlib/testCommand.ml +++ b/test/testlib/testCommand.ml @@ -37,7 +37,7 @@ in } in mkdir ~p:() dist_library_dir - >> (Option.map create_opam_reg opam_libs |> Option.value ~default:(return ())) + >> (Option.map create_opam_reg opam_libs |> Core.Option.value ~default:(return ())) >> TestLib.prepare_files work_dir files >> TestLib.prepare_files reg_dir satysfi_files >>| env diff --git a/test/testlib/testLib.ml b/test/testlib/testLib.ml index 571ac4a..b24d832 100644 --- a/test/testlib/testLib.ml +++ b/test/testlib/testLib.ml @@ -80,7 +80,10 @@ let dump_dir dir : unit t = ) |> set_env "LC_ALL" "C" -let stacktrace = false +let stacktrace = + Sys.getenv_opt "SATYROGRAPHOS_TEST_STACKTRACE" + |> Option.map (String.equal "true") + |> Core.Option.value ~default:false let filter_output f c = capture [Std_io.Stdout] c @@ -210,11 +213,11 @@ let opam_file_for_test = let name = Option.map (Printf.sprintf {|name: "%s"|}) name - |> Option.value ~default:"" + |> Core.Option.value ~default:"" in let version = Option.map (Printf.sprintf {|version: "%s"|}) version - |> Option.value ~default:"" + |> Core.Option.value ~default:"" in Printf.sprintf {|opam-version: "2.0" From d4af4528d4adfc7a067fb3723d092ef5b6c4e490 Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 03:08:01 +0900 Subject: [PATCH 2/9] Ignore EOF newlines during dumping files --- .../command_install__distWithNonHashUnderHashDir.expected | 1 - test/testcases/command_install__onlyDist.expected | 1 - test/testcases/command_install__thirdParties.expected | 1 - test/testcases/command_install_l__autogen.expected | 1 - test/testcases/command_install_l__dependent.expected | 1 - test/testcases/command_install_l__independentTwo.expected | 1 - test/testcases/command_install_l__transitive.expected | 1 - .../command_opam_install__duplicated_font_hash.expected | 1 - test/testcases/command_opam_install__font_hash.expected | 1 - test/testcases/command_opam_install__library.expected | 1 - .../command_opam_install__library_depending_autogen.expected | 1 - .../command_opam_install__library_recursive.expected | 1 - test/testcases/library_write_dir__content.expected | 2 -- test/testlib/testLib.ml | 4 +++- 14 files changed, 3 insertions(+), 15 deletions(-) diff --git a/test/testcases/command_install__distWithNonHashUnderHashDir.expected b/test/testcases/command_install__distWithNonHashUnderHashDir.expected index b05deab..23e754d 100644 --- a/test/testcases/command_install__distWithNonHashUnderHashDir.expected +++ b/test/testcases/command_install__distWithNonHashUnderHashDir.expected @@ -60,7 +60,6 @@ diff -Nr @@empty_dir@@/dest/fonts/Junicode.ttf @@dest_dir@@/dest/fonts/Junicode. diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"Junicode":<"Single":{"src":"dist/fonts/Junicode.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,2 > ((version 1) (libraryName dist) (libraryVersion "") (compatibility ()) diff --git a/test/testcases/command_install__onlyDist.expected b/test/testcases/command_install__onlyDist.expected index edbf66e..d95138b 100644 --- a/test/testcases/command_install__onlyDist.expected +++ b/test/testcases/command_install__onlyDist.expected @@ -59,7 +59,6 @@ diff -Nr @@empty_dir@@/dest/fonts/Junicode.ttf @@dest_dir@@/dest/fonts/Junicode. diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"Junicode":<"Single":{"src":"dist/fonts/Junicode.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,2 > ((version 1) (libraryName dist) (libraryVersion "") (compatibility ()) diff --git a/test/testcases/command_install__thirdParties.expected b/test/testcases/command_install__thirdParties.expected index 6fc3118..f36ec3b 100644 --- a/test/testcases/command_install__thirdParties.expected +++ b/test/testcases/command_install__thirdParties.expected @@ -133,7 +133,6 @@ diff -Nr @@empty_dir@@/dest/fonts/fonts-theano/TheanoOldStyle-Regular.otf @@dest diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"fonts-theano:TheanoDidot":<"Single":{"src-dist":"fonts-theano/TheanoDidot-Regular.otf"}>,"fonts-theano:TheanoModern":<"Single":{"src-dist":"fonts-theano/TheanoModern-Regular.otf"}>,"fonts-theano:TheanoOldStyle":<"Single":{"src-dist":"fonts-theano/TheanoOldStyle-Regular.otf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,9 > ((version 1) (libraryName dist) (libraryVersion 2.0) diff --git a/test/testcases/command_install_l__autogen.expected b/test/testcases/command_install_l__autogen.expected index d74fbdb..ecfa90f 100644 --- a/test/testcases/command_install_l__autogen.expected +++ b/test/testcases/command_install_l__autogen.expected @@ -224,7 +224,6 @@ diff -Nr @@empty_dir@@/dest/fonts/fonts-theano/TheanoOldStyle-Regular.otf @@dest diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"fonts-theano:TheanoDidot":<"Single":{"src-dist":"fonts-theano/TheanoDidot-Regular.otf"}>,"fonts-theano:TheanoModern":<"Single":{"src-dist":"fonts-theano/TheanoModern-Regular.otf"}>,"fonts-theano:TheanoOldStyle":<"Single":{"src-dist":"fonts-theano/TheanoOldStyle-Regular.otf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,9 > ((version 1) (libraryName $libraries) (libraryVersion 0.1) diff --git a/test/testcases/command_install_l__dependent.expected b/test/testcases/command_install_l__dependent.expected index 8280a3d..3c792d3 100644 --- a/test/testcases/command_install_l__dependent.expected +++ b/test/testcases/command_install_l__dependent.expected @@ -110,7 +110,6 @@ diff -Nr @@empty_dir@@/dest/fonts/fonts-theano/TheanoOldStyle-Regular.otf @@dest diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"fonts-theano:TheanoDidot":<"Single":{"src-dist":"fonts-theano/TheanoDidot-Regular.otf"}>,"fonts-theano:TheanoModern":<"Single":{"src-dist":"fonts-theano/TheanoModern-Regular.otf"}>,"fonts-theano:TheanoOldStyle":<"Single":{"src-dist":"fonts-theano/TheanoOldStyle-Regular.otf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,7 > ((version 1) (libraryName dist) (libraryVersion 2.0) diff --git a/test/testcases/command_install_l__independentTwo.expected b/test/testcases/command_install_l__independentTwo.expected index 3577e34..2b6b608 100644 --- a/test/testcases/command_install_l__independentTwo.expected +++ b/test/testcases/command_install_l__independentTwo.expected @@ -142,7 +142,6 @@ diff -Nr @@empty_dir@@/dest/fonts/fonts-theano/TheanoOldStyle-Regular.otf @@dest diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"fonts-theano:TheanoDidot":<"Single":{"src-dist":"fonts-theano/TheanoDidot-Regular.otf"}>,"fonts-theano:TheanoModern":<"Single":{"src-dist":"fonts-theano/TheanoModern-Regular.otf"}>,"fonts-theano:TheanoOldStyle":<"Single":{"src-dist":"fonts-theano/TheanoOldStyle-Regular.otf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,9 > ((version 1) (libraryName base) (libraryVersion 1.1.1) diff --git a/test/testcases/command_install_l__transitive.expected b/test/testcases/command_install_l__transitive.expected index 3577e34..2b6b608 100644 --- a/test/testcases/command_install_l__transitive.expected +++ b/test/testcases/command_install_l__transitive.expected @@ -142,7 +142,6 @@ diff -Nr @@empty_dir@@/dest/fonts/fonts-theano/TheanoOldStyle-Regular.otf @@dest diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"fonts-theano:TheanoDidot":<"Single":{"src-dist":"fonts-theano/TheanoDidot-Regular.otf"}>,"fonts-theano:TheanoModern":<"Single":{"src-dist":"fonts-theano/TheanoModern-Regular.otf"}>,"fonts-theano:TheanoOldStyle":<"Single":{"src-dist":"fonts-theano/TheanoOldStyle-Regular.otf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,9 > ((version 1) (libraryName base) (libraryVersion 1.1.1) diff --git a/test/testcases/command_opam_install__duplicated_font_hash.expected b/test/testcases/command_opam_install__duplicated_font_hash.expected index c677f7a..bb907e7 100644 --- a/test/testcases/command_opam_install__duplicated_font_hash.expected +++ b/test/testcases/command_opam_install__duplicated_font_hash.expected @@ -48,7 +48,6 @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/fonts/grcnum/grcnum-font.ttf @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash @@dest_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash 0a1 > {"grcnum:grcnum-font":<"Single":{"src-dist":"grcnum/grcnum-font.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/metadata @@dest_dir@@/dest/share/satysfi/grcnum/metadata 0a1,2 > ((version 1) (libraryName grcnum) (libraryVersion 0.2) (compatibility ()) diff --git a/test/testcases/command_opam_install__font_hash.expected b/test/testcases/command_opam_install__font_hash.expected index 2ed9e8b..750fc07 100644 --- a/test/testcases/command_opam_install__font_hash.expected +++ b/test/testcases/command_opam_install__font_hash.expected @@ -57,7 +57,6 @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/fonts/grcnum/grcnum-font2.ttf @ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash @@dest_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash 0a1 > {"grcnum:grcnum-font":<"Single":{"src":"dist/fonts/grcnum/grcnum-font.ttf"}>,"grcnum:grcnum-font-1":<"Collection":{"src":"dist/fonts/grcnum/grcnum-font.ttf","index":1}>,"grcnum:grcnum-font2":<"Single":{"src":"dist/fonts/grcnum/grcnum-font2.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/metadata @@dest_dir@@/dest/share/satysfi/grcnum/metadata 0a1,2 > ((version 1) (libraryName grcnum) (libraryVersion 0.2) (compatibility ()) diff --git a/test/testcases/command_opam_install__library.expected b/test/testcases/command_opam_install__library.expected index d191fc1..3c8e348 100644 --- a/test/testcases/command_opam_install__library.expected +++ b/test/testcases/command_opam_install__library.expected @@ -50,7 +50,6 @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/fonts/grcnum/grcnum-font.ttf @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash @@dest_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash 0a1 > {"grcnum:grcnum-font":<"Single":{"src":"dist/fonts/grcnum/grcnum-font.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/md/grcnum/mdja.satysfi-md @@dest_dir@@/dest/share/satysfi/grcnum/md/grcnum/mdja.satysfi-md 0a1 > @@mdja.satysfi-md@@ diff --git a/test/testcases/command_opam_install__library_depending_autogen.expected b/test/testcases/command_opam_install__library_depending_autogen.expected index 8c00c7c..720f6d2 100644 --- a/test/testcases/command_opam_install__library_depending_autogen.expected +++ b/test/testcases/command_opam_install__library_depending_autogen.expected @@ -39,7 +39,6 @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/fonts/grcnum/grcnum-font.ttf @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash @@dest_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash 0a1 > {} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/metadata @@dest_dir@@/dest/share/satysfi/grcnum/metadata 0a1,2 > ((version 1) (libraryName grcnum) (libraryVersion 0.2) (compatibility ()) diff --git a/test/testcases/command_opam_install__library_recursive.expected b/test/testcases/command_opam_install__library_recursive.expected index f280d3c..0c19f44 100644 --- a/test/testcases/command_opam_install__library_recursive.expected +++ b/test/testcases/command_opam_install__library_recursive.expected @@ -107,7 +107,6 @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/fonts/grcnum/grcnum-font.ttf @@ diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash @@dest_dir@@/dest/share/satysfi/grcnum/hash/fonts.satysfi-hash 0a1 > {"grcnum:grcnum-font":<"Single":{"src":"dist/fonts/grcnum/grcnum-font.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/share/satysfi/grcnum/metadata @@dest_dir@@/dest/share/satysfi/grcnum/metadata 0a1,2 > ((version 1) (libraryName grcnum) (libraryVersion 0.2) (compatibility ()) diff --git a/test/testcases/library_write_dir__content.expected b/test/testcases/library_write_dir__content.expected index 57bae59..20f1c52 100644 --- a/test/testcases/library_write_dir__content.expected +++ b/test/testcases/library_write_dir__content.expected @@ -20,7 +20,6 @@ diff -Nr @@empty_dir@@/dest/fonts/Junicode.ttf @@dest_dir@@/dest/fonts/Junicode. diff -Nr @@empty_dir@@/dest/hash/fonts.satysfi-hash @@dest_dir@@/dest/hash/fonts.satysfi-hash 0a1 > {"Junicode":<"Single":{"src":"dist/fonts/Junicode.ttf"}>} -\ No newline at end of file diff -Nr @@empty_dir@@/dest/metadata @@dest_dir@@/dest/metadata 0a1,2 > ((version 1) (libraryName "") (libraryVersion "") (compatibility ()) @@ -32,7 +31,6 @@ diff -Nr @@empty_dir@@/dest/packages/List.satyg @@dest_dir@@/dest/packages/List. diff -Nr @@empty_dir@@/dest/packages/test.satyg @@dest_dir@@/dest/packages/test.satyg 0a1 > let x = 1 -\ No newline at end of file diff -Nr @@empty_dir@@/dest/unidata/UnicodeData.txt @@dest_dir@@/dest/unidata/UnicodeData.txt 0a1,3 > 0000;;Cc;0;BN;;;;;N;NULL;;;; diff --git a/test/testlib/testLib.ml b/test/testlib/testLib.ml index b24d832..adefe8e 100644 --- a/test/testlib/testLib.ml +++ b/test/testlib/testLib.ml @@ -75,8 +75,10 @@ let dump_dir dir : unit t = with_temp_dir ~prefix:"Satyrographos" ~suffix:"empty_dir" (fun empty_dir -> (run "find" [dir] |- run "sort" []) >> echo_line - >> run_exit_code "diff" ["-Nr"; empty_dir; dir] >>| (fun _ -> ()) + >> run_exit_code "diff" ["-Nr"; empty_dir; dir] + >>| (fun _ -> ()) |- censor [ empty_dir, "@@empty_dir@@"; ] + |- run "sed" ["-e"; "/^\\\\/d"] ) |> set_env "LC_ALL" "C" From fb1d552d614a14a1648217e59b88175025dab31b Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 03:08:23 +0900 Subject: [PATCH 3/9] Drop support of core v0.14 --- satyrographos.opam | 2 +- src/buildScript_prim.ml | 2 +- src/command/install.ml | 2 +- src/glob.ml | 4 ++-- src/library.mli | 6 ------ src/location.ml | 2 +- src/lockdown/lockdownFile.ml | 2 +- 7 files changed, 7 insertions(+), 13 deletions(-) diff --git a/satyrographos.opam b/satyrographos.opam index 65d47b9..2ee19d6 100644 --- a/satyrographos.opam +++ b/satyrographos.opam @@ -45,7 +45,7 @@ depends: [ "yojson" {< "2.0"} # Janestreet Libs - "core" {>= "v0.14" & < "v0.16"} + "core" {>= "v0.15" & < "v0.16"} "core_unix" "ppx_jane" "shexp" diff --git a/src/buildScript_prim.ml b/src/buildScript_prim.ml index 4378e2a..5bcff4f 100644 --- a/src/buildScript_prim.ml +++ b/src/buildScript_prim.ml @@ -277,7 +277,7 @@ let rebase_file ~src_dir ~library_name = let append_prefix dst_dir {dst; src} = let dst_prefix = if String.is_empty dst_dir - then ident + then Fn.id else Filename.concat dst_dir in {dst=dst_prefix dst; src=Filename.concat src_dir src} in diff --git a/src/command/install.ml b/src/command/install.ml index dad5882..e0cb5a0 100644 --- a/src/command/install.ml +++ b/src/command/install.ml @@ -24,7 +24,7 @@ let get_libraries ~outf ~(env: Environment.t) ~libraries = Format.fprintf outf "Reading runtime dist: %s\n" dist_library_dir; let dist_library = Library.read_dir ~outf dist_library_dir in let opam_libraries = match opam_reg with - | None -> StringSet.to_map StringSet.empty ~f:ident + | None -> StringSet.to_map StringSet.empty ~f:Fn.id | Some reg_opam -> OpamSatysfiRegistry.list reg_opam |> StringSet.of_list diff --git a/src/glob.ml b/src/glob.ml index d158f63..b07fe24 100644 --- a/src/glob.ml +++ b/src/glob.ml @@ -3,7 +3,7 @@ open Core module PrinterSemantics = struct type glob = string let star = "*" - let atom = ident + let atom = Fn.id let range = sprintf "%d..%d" let slash s g = @@ -50,7 +50,7 @@ module TokenMatcher = struct then b else begin let v = - List.find_map ~f:ident + List.find_map ~f:Fn.id [b.value; a.value; v;] in let merge_children = diff --git a/src/library.mli b/src/library.mli index 05447cf..d704b21 100644 --- a/src/library.mli +++ b/src/library.mli @@ -7,12 +7,6 @@ end module Json : sig include module type of Yojson.Safe type t = [%import: Yojson.Safe.t] [@@deriving sexp, compare, hash] - val to_string : - ?buf:Bi_outbuf.t -> ?len:int -> ?std:bool -> t -> string - val from_file : - ?buf:Bi_outbuf.t -> ?fname:string -> ?lnum:int -> string -> t - val to_file : - ?len:int -> ?std:bool -> string -> t -> unit end module Dependency : sig diff --git a/src/location.ml b/src/location.ml index 3498089..c1b945a 100644 --- a/src/location.ml +++ b/src/location.ml @@ -95,7 +95,7 @@ let%expect_test "position_of_offset: empty content" = |> printf !"%d: %{sexp: position}\n" off in Sequence.init 6 ~f:test - |> Sequence.iter ~f:ident; + |> Sequence.iter ~f:Fn.id; [%expect{| 0: ((lnum 0) (cnum 0)) 1: ((lnum 0) (cnum 1)) diff --git a/src/lockdown/lockdownFile.ml b/src/lockdown/lockdownFile.ml index afe8526..b143e42 100644 --- a/src/lockdown/lockdownFile.ml +++ b/src/lockdown/lockdownFile.ml @@ -4,7 +4,7 @@ let version = "0.0.3" module Json = struct include Satyrographos.Library.Json - let to_yojson = ident + let to_yojson = Fn.id let of_yojson x = Result.Ok x end From 344abf481230beeffcac830eb7c22c41ec0d74e2 Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 03:11:49 +0900 Subject: [PATCH 4/9] Update version constraint on ocaml dependency --- .github/workflows/ci.yaml | 4 ++-- satyrographos.opam | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 49b7778..6d0f5ea 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,10 +13,10 @@ jobs: - 'ubuntu-latest' # - 'macos-latest' ocaml-version: - - 4.09.1 - - 4.10.2 - 4.11.2 - 4.12.1 + - 4.13.2 + - 4.14.2 with-satysfi: - false oldest-dependencies: diff --git a/satyrographos.opam b/satyrographos.opam index 2ee19d6..b451215 100644 --- a/satyrographos.opam +++ b/satyrographos.opam @@ -19,7 +19,7 @@ run-test: [ ] depends: [ - "ocaml" {>= "4.09.0"} + "ocaml" {>= "4.11.0"} "conf-diffutils" {with-test} "dune" {>= "2.7"} From ff380ee6c28a3ad836bfa977e621f86009e3a458 Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 03:15:56 +0900 Subject: [PATCH 5/9] Fix typo --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6d0f5ea..d1c593e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -15,7 +15,7 @@ jobs: ocaml-version: - 4.11.2 - 4.12.1 - - 4.13.2 + - 4.13.1 - 4.14.2 with-satysfi: - false From 358dc98b0f95c81f07aab49b4a1b19cc20bcaa21 Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 03:21:51 +0900 Subject: [PATCH 6/9] Use OCaml 4.14.1 instead --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d1c593e..ea46197 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,7 +16,7 @@ jobs: - 4.11.2 - 4.12.1 - 4.13.1 - - 4.14.2 + - 4.14.1 with-satysfi: - false oldest-dependencies: From 952e1e6919b8fbfa516ec55f054c74d31692346c Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 03:36:42 +0900 Subject: [PATCH 7/9] Use OCaml 4.14.0 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ea46197..6afd012 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,7 +16,7 @@ jobs: - 4.11.2 - 4.12.1 - 4.13.1 - - 4.14.1 + - 4.14.0 with-satysfi: - false oldest-dependencies: From 9deb9a4f54b0ad3857abb0c2ee85d4277e46b138 Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 04:01:02 +0900 Subject: [PATCH 8/9] Remove version restriction on yojson --- satyrographos.opam | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/satyrographos.opam b/satyrographos.opam index b451215..1a384d6 100644 --- a/satyrographos.opam +++ b/satyrographos.opam @@ -42,7 +42,7 @@ depends: [ "uri-sexp" {>= "3.0.0"} "yaml" {>= "3.0" & < "4.0"} "yaml-sexp" {>= "3.0" & < "4.0"} - "yojson" {< "2.0"} + "yojson" # Janestreet Libs "core" {>= "v0.15" & < "v0.16"} From 8de74382231cce81600630f37f71484cdf2c6f14 Mon Sep 17 00:00:00 2001 From: Noriaki SAKAMOTO Date: Fri, 30 Dec 2022 04:11:22 +0900 Subject: [PATCH 9/9] Fix ocaml-base-compiler version for oldest-deps test --- .github/workflows/ci.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6afd012..568f3d7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,7 +16,7 @@ jobs: - 4.11.2 - 4.12.1 - 4.13.1 - - 4.14.0 + - 4.14.1 with-satysfi: - false oldest-dependencies: @@ -65,11 +65,12 @@ jobs: if: matrix.oldest-dependencies run: | OCAML_PACKAGE="ocaml.$(opam show --color=never -f version ocaml)" + OCAML_BASE_COMPILER="ocaml-base-compiler.$(opam show --color=never -f version ocaml-base-compiler)" SATYROGRAPHOS_PACKAGE=satyrographos # export OPAMEXTERNALSOLVER=builtin-0install # export OPAMCRITERIA=+removed,+count[version-lag,solution] opam install opam-0install - opam install --yes $(opam exec -- opam-0install --prefer-oldest "$SATYROGRAPHOS_PACKAGE" "$OCAML_PACKAGE") + opam install --yes $(opam exec -- opam-0install --prefer-oldest "$SATYROGRAPHOS_PACKAGE" "$OCAML_PACKAGE" "$OCAML_BASE_COMPILER") - name: Test Satyrographos