FIX Remove dependency on ocaml 4.12 and sqlite < 5.0.0
2 files changed, 14 insertions(+), 22 deletions(-)

M hll.pins
M src/pds/pds.ml
M hll.pins +3 -2
@@ 1,5 1,6 @@ 
-ocaml >= "4.12.0"
-toml >= "6"
 cmdliner >= "1.3.0"
 containers >= "3.12"
+ocaml >= "4.13.0"
 process >= "0.2.1"
+sqlite3 >= "5.0.0"
+toml >= "6"
  No newline at end of file

          
M src/pds/pds.ml +11 -20
@@ 19,6 19,11 @@ let printf = Printf.printf
 let fprintf = Printf.fprintf
 let sprintf = Printf.sprintf
 
+let add_to_list k v m =
+  match String_map.find_opt k m with
+  | Some v' -> String_map.add k (v :: v') m
+  | None -> String_map.add k [ v ] m
+
 module Cmdline = struct
   module C = Cmdliner
 

          
@@ 398,15 403,13 @@ module Hash_db = struct
     in
     let srcs_map =
       CCList.fold_left
-        (fun acc ({ Build.Src.build_name; _ } as build) ->
-          String_map.add_to_list build_name build acc)
+        (fun acc ({ Build.Src.build_name; _ } as build) -> add_to_list build_name build acc)
         String_map.empty
         srcs
     in
     let tests_map =
       CCList.fold_left
-        (fun acc ({ Build.Test.build_name; _ } as build) ->
-          String_map.add_to_list build_name build acc)
+        (fun acc ({ Build.Test.build_name; _ } as build) -> add_to_list build_name build acc)
         String_map.empty
         tests
     in

          
@@ 680,17 683,11 @@ let apply_and_write_template tmpl_name o
 let emit_pds_mk { Build.build_types; srcs; tests } =
   let srcs_by_type =
     let m = String_map.of_list @@ List.map (fun bt -> (bt, [])) build_types in
-    List.fold_left
-      (fun m ({ Build.Src.build_type; _ } as b) -> String_map.add_to_list build_type b m)
-      m
-      srcs
+    List.fold_left (fun m ({ Build.Src.build_type; _ } as b) -> add_to_list build_type b m) m srcs
   in
   let tests_by_type =
     let m = String_map.of_list @@ List.map (fun bt -> (bt, [])) build_types in
-    List.fold_left
-      (fun m ({ Build.Test.build_type; _ } as t) -> String_map.add_to_list build_type t m)
-      m
-      tests
+    List.fold_left (fun m ({ Build.Test.build_type; _ } as t) -> add_to_list build_type t m) m tests
   in
   let internal_deps =
     String_set.of_list

          
@@ 918,17 915,11 @@ let emit_build pds_conf =
   let ({ Build.build_types; srcs; tests } as builds) = Build.load pds_conf in
   let srcs_by_type =
     let m = String_map.of_list @@ List.map (fun bt -> (bt, [])) build_types in
-    List.fold_left
-      (fun m ({ Build.Src.build_type; _ } as b) -> String_map.add_to_list build_type b m)
-      m
-      srcs
+    List.fold_left (fun m ({ Build.Src.build_type; _ } as b) -> add_to_list build_type b m) m srcs
   in
   let tests_by_type =
     let m = String_map.of_list @@ List.map (fun bt -> (bt, [])) build_types in
-    List.fold_left
-      (fun m ({ Build.Test.build_type; _ } as t) -> String_map.add_to_list build_type t m)
-      m
-      tests
+    List.fold_left (fun m ({ Build.Test.build_type; _ } as t) -> add_to_list build_type t m) m tests
   in
   List.iter
     (fun build_type ->