diff --git a/pkgs/development/compilers/opa/default.nix b/pkgs/development/compilers/opa/default.nix index 2843625daef2..0eb4240d12f4 100644 --- a/pkgs/development/compilers/opa/default.nix +++ b/pkgs/development/compilers/opa/default.nix @@ -15,7 +15,12 @@ stdenv.mkDerivation rec { sha256 = "1qs91rq9xrafv2mf2v415k8lv91ab3ycz0xkpjh1mng5ca3pjlf3"; }; - patches = [ ./ocaml-4.03.patch ./ocaml-4.04.patch ]; + patches = [ + ./ocaml-4.03.patch + ./ocaml-4.04.patch + ./ocaml-4.14.patch + ./ocaml-4.14-tags.patch + ]; # Paths so the opa compiler code generation will use the same programs as were # used to build opa. @@ -37,7 +42,6 @@ stdenv.mkDerivation rec { export CAMLP4O=${ocamlPackages.camlp4}/bin/camlp4o export CAMLP4ORF=${ocamlPackages.camlp4}/bin/camlp4orf export OCAMLBUILD=${ocamlPackages.ocamlbuild}/bin/ocamlbuild - substituteInPlace _tags --replace ', warn_error_A' "" ''; prefixKey = "-prefix "; @@ -47,7 +51,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ gcc binutils nodejs which makeWrapper ]; buildInputs = [ perl jdk openssl coreutils zlib ncurses ] ++ (with ocamlPackages; [ - ocaml findlib ssl camlzip ulex ocamlgraph camlp4 + ocaml findlib ssl camlzip ulex ocamlgraph camlp4 num ]); NIX_LDFLAGS = lib.optionalString (!stdenv.isDarwin) "-lgcc_s"; diff --git a/pkgs/development/compilers/opa/ocaml-4.14-tags.patch b/pkgs/development/compilers/opa/ocaml-4.14-tags.patch new file mode 100644 index 000000000000..b620cd0ceaed --- /dev/null +++ b/pkgs/development/compilers/opa/ocaml-4.14-tags.patch @@ -0,0 +1,191 @@ +diff --git a/Makefile b/Makefile +index 37589e1..10d3418 100644 +--- a/Makefile ++++ b/Makefile +@@ -14,6 +14,7 @@ OPALANG_DIR ?= . + + MAKE ?= $_ + OCAMLBUILD_OPT ?= -j 6 ++OCAMLBUILD_OPT += -use-ocamlfind -package num + + ifndef NO_REBUILD_OPA_PACKAGES + OPAOPT += --rebuild +diff --git a/_tags b/_tags +index 5d8d922..b6bdd5e 100644 +--- a/_tags ++++ b/_tags +@@ -15,4 +15,4 @@ + <{ocamllib,compiler,lib,tools}>: include + + # Warnings +-<**/*.ml>: warn_L, warn_Z, warn_error_A ++<**/*.ml>: warn_L, warn_Z +diff --git a/compiler/_tags b/compiler/_tags +index b33eeeb..7afa493 100644 +--- a/compiler/_tags ++++ b/compiler/_tags +@@ -7,6 +7,6 @@ + + : use_opalib, use_opalang, use_opapasses, use_libqmlcompil, use_passlib, use_libbsl, use_qmloptions, use_qml2js, use_js_passes, use_opa + +-: thread, use_dynlink, use_graph, use_str, use_unix, use_nums, use_zip, use_buildinfos, use_libbase, use_ulex, use_libtrx, use_libqmlcompil, use_libbsl, use_opalib, use_opalang, use_opapasses, use_qmlfakecompiler, use_qmloptions, use_qmljsimp, use_qml2js, use_opabsl_for_compiler, use_qmlslicer, use_jslang, use_qmlcpsrewriter, use_ocamllang, use_passlib, use_compilerlib, use_pplib, use_qmlpasses, use_opacapi, use_js_passes, use_opa ++: thread, use_dynlink, use_graph, use_str, use_zip, use_buildinfos, use_libbase, use_ulex, use_libtrx, use_libqmlcompil, use_libbsl, use_opalib, use_opalang, use_opapasses, use_qmlfakecompiler, use_qmloptions, use_qmljsimp, use_qml2js, use_opabsl_for_compiler, use_qmlslicer, use_jslang, use_qmlcpsrewriter, use_ocamllang, use_passlib, use_compilerlib, use_pplib, use_qmlpasses, use_opacapi, use_js_passes, use_opa + + : with_mlstate_debug +diff --git a/compiler/jslang/_tags b/compiler/jslang/_tags +index f33b592..8925703 100644 +--- a/compiler/jslang/_tags ++++ b/compiler/jslang/_tags +@@ -4,7 +4,7 @@ + : use_camlp4, camlp4orf_fixed + + # todo: find a way to link fewer libs +-<{jspp,jsstat,globalizer}.{byte,native}>: use_passlib, use_opacapi, use_libtrx, use_ulex, use_str, use_unix, use_buildinfos, use_libbase, use_libqmlcompil, use_compilerlib, use_graph, use_nums, use_dynlink, use_jslang, use_ocamllang, use_libbsl, use_opalang, use_pplib, use_qmloptions, use_qml2js, use_qmlcpsrewriter, use_qmlpasses ++<{jspp,jsstat,globalizer}.{byte,native}>: use_passlib, use_opacapi, use_libtrx, use_ulex, use_str, use_unix, use_buildinfos, use_libbase, use_libqmlcompil, use_compilerlib, use_graph, use_dynlink, use_jslang, use_ocamllang, use_libbsl, use_opalang, use_pplib, use_qmloptions, use_qml2js, use_qmlcpsrewriter, use_qmlpasses + <{jspp,jsstat,globalizer}.{ml,byte,native}>: use_qmljsimp + + : use_libjsminify +diff --git a/compiler/libbsl/_tags b/compiler/libbsl/_tags +index cad1fe4..8ef238b 100644 +--- a/compiler/libbsl/_tags ++++ b/compiler/libbsl/_tags +@@ -20,7 +20,7 @@ + : use_libtrx + : use_libtrx + : use_jslang +-: use_ulex, use_libbsl, use_dynlink, use_zip, use_nums ++: use_ulex, use_libbsl, use_dynlink, use_zip + : use_ulex, use_libbsl, use_dynlink, use_zip, use_nums + : use_ulex, use_dynlink, use_zip, use_nums, use_jslang + : use_jslang +@@ -30,7 +30,7 @@ + : ignore + + # applications, linking +-<*.{byte,native}>:use_buildinfos, use_ulex, use_libtrx, use_dynlink, use_unix, thread, use_graph, use_libbsl, use_passlib, use_zip, use_nums, use_opalang, use_ocamllang, use_langlang, use_jslang, use_opacapi ++<*.{byte,native}>:use_buildinfos, use_ulex, use_libtrx, use_dynlink, thread, use_graph, use_libbsl, use_passlib, use_zip, use_opalang, use_ocamllang, use_langlang, use_jslang, use_opacapi + + # ppdebug (pl. be very specific with the use of ppdebug) + : with_mlstate_debug +diff --git a/compiler/opa/_tags b/compiler/opa/_tags +index cfe97a1..702af34 100644 +--- a/compiler/opa/_tags ++++ b/compiler/opa/_tags +@@ -62,7 +62,7 @@ + : use_opalib, use_opalang, use_opapasses, use_libqmlcompil, use_passlib + + # linking +-<{opa_parse,checkopacapi,gen_opa_manpage,syntaxHelper}.{byte,native}>: thread, use_dynlink, use_graph, use_str, use_unix, use_nums, use_zip, use_buildinfos, use_libbase, use_ulex, use_libtrx, use_libqmlcompil, use_libbsl, use_opalib, use_opalang, use_opapasses, use_qmlfakecompiler, use_qmljsimp, use_qml2js, use_opabsl_for_compiler, use_qmlslicer, use_jslang, use_qmlcpsrewriter, use_ocamllang, use_passlib, use_compilerlib, use_pplib, use_qmlpasses, use_opacapi, use_qmloptions ++<{opa_parse,checkopacapi,gen_opa_manpage,syntaxHelper}.{byte,native}>: thread, use_dynlink, use_graph, use_str, use_zip, use_buildinfos, use_libbase, use_ulex, use_libtrx, use_libqmlcompil, use_libbsl, use_opalib, use_opalang, use_opapasses, use_qmlfakecompiler, use_qmljsimp, use_qml2js, use_opabsl_for_compiler, use_qmlslicer, use_jslang, use_qmlcpsrewriter, use_ocamllang, use_passlib, use_compilerlib, use_pplib, use_qmlpasses, use_opacapi, use_qmloptions + + : with_mlstate_debug + : with_mlstate_debug +diff --git a/compiler/opalang/_tags b/compiler/opalang/_tags +index 6844281..8f0eaec 100644 +--- a/compiler/opalang/_tags ++++ b/compiler/opalang/_tags +@@ -14,7 +14,7 @@ true: warn_Z + : use_buildinfos, use_compilerlib, use_pplib + <**/*.{ml,mli}>: use_libbase, use_compilerlib, use_libqmlcompil, use_passlib + +-<{opa2opa,standaloneparser}.{native,byte}>: use_unix, use_libbase, use_mutex, use_graph, use_str, use_zlib, thread, use_nums, use_libtrx, use_passlib, use_libqmlcompil, use_buildinfos, use_ulex, use_compilerlib, use_pplib, use_opacapi ++<{opa2opa,standaloneparser}.{native,byte}>: use_libbase, use_mutex, use_graph, use_str, use_zlib, thread, use_libtrx, use_passlib, use_libqmlcompil, use_buildinfos, use_ulex, use_compilerlib, use_pplib, use_opacapi + + : use_opacapi + : use_opacapi +diff --git a/compiler/opx2js/_tags b/compiler/opx2js/_tags +index 7e9b9cc..3e257ea 100644 +--- a/compiler/opx2js/_tags ++++ b/compiler/opx2js/_tags +@@ -2,7 +2,7 @@ + + <**/*.{ml,mli}>: use_buildinfos, use_libbase, use_compilerlib, use_passlib + +-<**/*.native>: thread, use_dynlink, use_graph, use_str, use_unix, use_nums, use_zip, use_buildinfos, use_libbase, use_ulex, use_libtrx, use_libqmlcompil, use_libbsl, use_opalib, use_opalang, use_opapasses, use_qmlfakecompiler, use_qmlflatcompiler, use_qmloptions, use_qmljsimp, use_qml2js, use_opabsl_for_compiler, use_qmlslicer, use_jslang, use_qmlcpsrewriter, use_ocamllang, use_passlib, use_compilerlib, use_pplib, use_qmlpasses, use_opacapi, use_libopa ++<**/*.native>: thread, use_dynlink, use_graph, use_str, use_zip, use_buildinfos, use_libbase, use_ulex, use_libtrx, use_libqmlcompil, use_libbsl, use_opalib, use_opalang, use_opapasses, use_qmlfakecompiler, use_qmlflatcompiler, use_qmloptions, use_qmljsimp, use_qml2js, use_opabsl_for_compiler, use_qmlslicer, use_jslang, use_qmlcpsrewriter, use_ocamllang, use_passlib, use_compilerlib, use_pplib, use_qmlpasses, use_opacapi, use_libopa + + <**/opx2jsPasses.{ml,mli}>: use_jslang, use_opalib, use_opalang, use_opapasses, use_libopa, use_libqmlcompil, use_qmlpasses, use_qmlcpsrewriter, use_qmlslicer + +diff --git a/compiler/passes/_tags b/compiler/passes/_tags +index a0daff4..9644d3a 100644 +--- a/compiler/passes/_tags ++++ b/compiler/passes/_tags +@@ -1,7 +1,7 @@ + # -*- conf -*- (for emacs) + + # preprocessing +-true: with_mlstate_debug, warn_A, warn_e, warn_error_A, warnno_48 ++true: with_mlstate_debug, warn_A, warn_e, warnno_48 + + <**/*.{ml,mli}>: use_libbase, use_libqmlcompil, use_passlib, use_opalang, use_compilerlib, use_opacapi + : use_opalib, use_libbsl +diff --git a/compiler/passlib/_tags b/compiler/passlib/_tags +index 2b9cfcf..5cb3145 100644 +--- a/compiler/passlib/_tags ++++ b/compiler/passlib/_tags +@@ -1,6 +1,6 @@ + # -*- conf -*- (for emacs) + +-<*.{ml,mli,byte,native}>: use_libbase, use_compilerlib, thread, use_ulex, use_unix, use_str ++<*.{ml,mli,byte,native}>: use_libbase, use_compilerlib, thread, use_ulex, use_str + + : use_buildinfos + : use_buildinfos, use_graph +diff --git a/compiler/qmlcompilers/_tags b/compiler/qmlcompilers/_tags +index 087165c..87ae918 100644 +--- a/compiler/qmlcompilers/_tags ++++ b/compiler/qmlcompilers/_tags +@@ -5,7 +5,7 @@ + + # application, linkink + # common +-<{qmljs_exe}.{ml,mli,byte,native}>: thread, use_unix, use_dynlink, use_str, use_graph, use_ulex, use_libtrx, use_pplib, use_opabsl_for_compiler, use_passlib, use_nums, use_buildinfos, use_opalang, use_compilerlib, use_opacapi ++<{qmljs_exe}.{ml,mli,byte,native}>: thread, use_dynlink, use_str, use_graph, use_ulex, use_libtrx, use_pplib, use_opabsl_for_compiler, use_passlib, use_buildinfos, use_opalang, use_compilerlib, use_opacapi + + # specific + : use_qmljsimp, use_qml2js, use_zip +diff --git a/ocamllib/libbase/_tags b/ocamllib/libbase/_tags +index 42d067d..6b7e690 100644 +--- a/ocamllib/libbase/_tags ++++ b/ocamllib/libbase/_tags +@@ -27,4 +27,4 @@ + : with_mlstate_debug + + +-<{testconsole,testfilepos}.{ml,mli,byte,native}>: thread, use_str, use_unix, use_libbase, use_ulex ++<{testconsole,testfilepos}.{ml,mli,byte,native}>: thread, use_str, use_libbase, use_ulex +diff --git a/tools/_tags b/tools/_tags +index 549752b..44c97b3 100644 +--- a/tools/_tags ++++ b/tools/_tags +@@ -8,7 +8,7 @@ + : include + + # Odep +-: thread, use_str, use_unix, use_graph, use_zip, use_libbase, use_ulex ++: thread, use_str, use_graph, use_zip, use_libbase, use_ulex + + ### + # Ofile +@@ -16,7 +16,7 @@ + : use_libbase + + # linking +-: use_unix, use_str, thread, use_ulex, use_libbase, use_zip ++: use_str, thread, use_ulex, use_libbase, use_zip + + ### + # jschecker +diff --git a/tools/teerex/_tags b/tools/teerex/_tags +index d662b49..366ea01 100644 +--- a/tools/teerex/_tags ++++ b/tools/teerex/_tags +@@ -6,6 +6,6 @@ + + <*.{ml,mli,byte,native}>: use_str, use_libbase, use_compilerlib, use_graph, use_libtrx, use_ocamllang, use_zip, use_buildinfos, use_passlib + +-: thread, use_unix ++: thread + : thread, use_unix +-: thread, use_unix ++: thread diff --git a/pkgs/development/compilers/opa/ocaml-4.14.patch b/pkgs/development/compilers/opa/ocaml-4.14.patch new file mode 100644 index 000000000000..7df254f3af49 --- /dev/null +++ b/pkgs/development/compilers/opa/ocaml-4.14.patch @@ -0,0 +1,63 @@ +diff --git a/compiler/compilerlib/objectFiles.ml b/compiler/compilerlib/objectFiles.ml +index d0e7223..5fee601 100644 +--- a/compiler/compilerlib/objectFiles.ml ++++ b/compiler/compilerlib/objectFiles.ml +@@ -339,8 +339,9 @@ let dirname (package:package_name) : filename = Filename.concat !opxdir (unprefi + let unprefixed_dirname_plugin (package:package_name) : filename = package ^ "." ^ Name.plugin_ext + let dirname_plugin (package:package_name) : filename = Filename.concat !opxdir (unprefixed_dirname_plugin package) + let dirname_from_package ((package_name,_):package) = dirname package_name +-let undirname filename : package_name = Filename.chop_suffix (Filename.basename filename) ("."^Name.object_ext) +-let undirname_plugin filename : package_name = Filename.chop_suffix (Filename.basename filename) ("."^Name.plugin_ext) ++let chop_suffix name suff = try Filename.chop_suffix name suff with _ -> name ++let undirname filename : package_name = chop_suffix (Filename.basename filename) ("."^Name.object_ext) ++let undirname_plugin filename : package_name = chop_suffix (Filename.basename filename) ("."^Name.plugin_ext) + let filename_from_dir dir pass = Filename.concat dir pass + let filename_from_package package pass = filename_from_dir (dirname_from_package package) pass + +diff --git a/ocamllib/libbase/baseHashtbl.ml b/ocamllib/libbase/baseHashtbl.ml +index 439d76c..7be6cf9 100644 +--- a/ocamllib/libbase/baseHashtbl.ml ++++ b/ocamllib/libbase/baseHashtbl.ml +@@ -29,7 +29,6 @@ let iter = Hashtbl.iter + let fold = Hashtbl.fold + let length = Hashtbl.length + let hash = Hashtbl.hash +-external hash_param : int -> int -> 'a -> int = "caml_hash_univ_param" "noalloc" + module type HashedType = Hashtbl.HashedType + + (* could be done (with magic) more efficiently +diff --git a/ocamllib/libbase/baseHashtbl.mli b/ocamllib/libbase/baseHashtbl.mli +index 1a2b146..10e448b 100644 +--- a/ocamllib/libbase/baseHashtbl.mli ++++ b/ocamllib/libbase/baseHashtbl.mli +@@ -41,7 +41,6 @@ end + module Make (H : HashedType) : S with type key = H.t + + val hash : 'a -> int +-external hash_param : int -> int -> 'a -> int = "caml_hash_univ_param" "noalloc" + + (** + additional functions +diff --git a/ocamllib/libbase/baseObj.mli b/ocamllib/libbase/baseObj.mli +index da2d973..5eb77b5 100644 +--- a/ocamllib/libbase/baseObj.mli ++++ b/ocamllib/libbase/baseObj.mli +@@ -23,7 +23,7 @@ external obj : t -> 'a = "%identity" + external magic : 'a -> 'b = "%identity" + external is_block : t -> bool = "caml_obj_is_block" + external is_int : t -> bool = "%obj_is_int" +-external tag : t -> int = "caml_obj_tag" ++external tag : t -> int = "caml_obj_tag" [@@noalloc] + external set_tag : t -> int -> unit = "caml_obj_set_tag" + external size : t -> int = "%obj_size" + external truncate : t -> int -> unit = "caml_obj_truncate" +@@ -49,9 +49,6 @@ val int_tag : int + val out_of_heap_tag : int + val unaligned_tag : int + +-val marshal : t -> string +-val unmarshal : string -> int -> t * int +- + (** Additional functions *) + + val dump : ?custom:(Obj.t -> (Buffer.t -> Obj.t -> unit) option) -> ?depth:int -> 'a -> string diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 387c96dd3d05..6558698b3154 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15575,7 +15575,7 @@ with pkgs; ocsigen-i18n = callPackage ../development/tools/ocaml/ocsigen-i18n { }; opa = callPackage ../development/compilers/opa { - ocamlPackages = ocaml-ng.ocamlPackages_4_05; + ocamlPackages = ocaml-ng.ocamlPackages_4_14_unsafe_string; }; opaline = callPackage ../development/tools/ocaml/opaline { };