From 5dbd4b2b27e24eaed6a79603875493b15b999d4b Mon Sep 17 00:00:00 2001 From: Vincent Laporte Date: Tue, 15 Mar 2022 08:12:41 +0100 Subject: [PATCH] =?UTF-8?q?ocamlPackages.ocamlscript:=202.0.3=20=E2=86=92?= =?UTF-8?q?=203.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/ocaml/ocamlscript/Makefile.patch | 75 +++++++++---------- .../tools/ocaml/ocamlscript/default.nix | 26 ++++--- 2 files changed, 52 insertions(+), 49 deletions(-) diff --git a/pkgs/development/tools/ocaml/ocamlscript/Makefile.patch b/pkgs/development/tools/ocaml/ocamlscript/Makefile.patch index 4fc887c070d7..e26993f760ae 100644 --- a/pkgs/development/tools/ocaml/ocamlscript/Makefile.patch +++ b/pkgs/development/tools/ocaml/ocamlscript/Makefile.patch @@ -1,42 +1,23 @@ ---- a/Makefile 2012-02-04 01:24:21.000000000 +0000 -+++ b/Makefile 2014-10-29 14:42:08.690188302 +0000 -@@ -4,6 +4,8 @@ - version.ml pipeline.mli pipeline.ml common.mli common.ml \ - utils.mli utils.ml ocaml.mli ocaml.ml - -+CAMLP4 := $(shell ocamlfind query camlp4) -+ - STDBIN = $(shell dirname `which ocamlfind`) - ifndef PREFIX - PREFIX = $(shell dirname $(STDBIN)) -@@ -15,7 +17,7 @@ +diff --git a/Makefile b/Makefile +index 894e94d..9adc44b 100644 +--- a/Makefile ++++ b/Makefile +@@ -17,7 +17,7 @@ ifndef BINDIR endif export BINDIR -PACKS = unix str +PACKS = unix str findlib - PP = camlp4o -I . -parser pa_tryfinally.cmo -parser pa_opt.cmo - export PP + # PP = camlp4o -I . -parser pa_opt.cmo + # export PP -@@ -36,11 +38,11 @@ - - common: version.ml - ocamlc -pp 'camlp4orf -loc _loc' -c \ -- -I +camlp4 pa_opt310.ml && \ -+ -I $(CAMLP4) pa_opt310.ml && \ - cp pa_opt310.cmo pa_opt.cmo && \ - cp pa_opt310.cmi pa_opt.cmi - ocamlc -pp 'camlp4orf -loc _loc' -c \ -- -I +camlp4 pa_tryfinally310.ml && \ -+ -I $(CAMLP4) pa_tryfinally310.ml && \ - cp pa_tryfinally310.cmo pa_tryfinally.cmo && \ - cp pa_tryfinally310.cmi pa_tryfinally.cmi - ---- a/main.ml 2014-11-08 09:05:12.516401313 +0000 -+++ b/main.ml 2014-11-08 09:09:59.801311230 +0000 -@@ -250,9 +250,15 @@ - Sys.getcwd ()) - | `File script_name -> "", get_dir script_name in +diff --git a/main.ml b/main.ml +index 288526a..b67c5e9 100644 +--- a/main.ml ++++ b/main.ml +@@ -247,6 +247,11 @@ let write_header ~pos ~source ~source_option ~verbose ~prog_file lines = + Sys.getcwd ()) + | `File script_name -> "", get_dir script_name in + let findlibdir = + Filename.( @@ -46,20 +27,24 @@ let file, oc = Filename.open_temp_file "meta" ".ml" in fprintf oc "\ #%i %S;; +@@ -255,6 +260,7 @@ let () = + try Topdirs.dir_directory (Sys.getenv \"OCAML_TOPLEVEL_PATH\") + with Not_found -> () + ;; +#directory \"%s\";; #use \"topfind\";; #require \"ocamlscript\";; Ocamlscript.Common.verbose := %s;; -@@ -261,7 +267,7 @@ +@@ -263,7 +269,7 @@ Ocamlscript.Common.script_dir := %S;; open Ocamlscript;; open Utils;; #%i %S;;\n" -- pos source verbose script_dir extra_args trash pos source; -+ pos source findlibdir verbose script_dir extra_args trash pos source; - +- pos source verbose script_dir extra_args trash pos source; ++ pos source findlibdir verbose script_dir extra_args trash pos source; + List.iter (output_line oc) lines; -@@ -544,6 +550,7 @@ +@@ -550,6 +556,7 @@ let main () = exit compilation_status let _ = @@ -67,4 +52,16 @@ try main () with Failure s -> eprintf "ocamlscript: %s\n%!" s; - +diff --git a/ocaml.ml b/ocaml.ml +index a1824c6..b8f287e 100644 +--- a/ocaml.ml ++++ b/ocaml.ml +@@ -14,7 +14,7 @@ let ocamlfind = ref "ocamlfind" + let packs = ref [] (* findlib packages *) + let sources = ref [] (* extra sources *) + let use_ocamllex = ref false (* preprocess with ocamllex before camlp4 *) +-let use_camlp4 = ref true (* by default camlp4 is used *) ++let use_camlp4 = ref false (* by default camlp4 is not used *) + let use_ocamlc = ref false (* by default we want native code *) + let use_ocamlfind = ref false (* used only if necessary *) + let revised = ref false (* use this to use the revised syntax *) diff --git a/pkgs/development/tools/ocaml/ocamlscript/default.nix b/pkgs/development/tools/ocaml/ocamlscript/default.nix index 82a495b733b5..0b4b748f0586 100644 --- a/pkgs/development/tools/ocaml/ocamlscript/default.nix +++ b/pkgs/development/tools/ocaml/ocamlscript/default.nix @@ -1,26 +1,32 @@ -{lib, stdenv, fetchurl, ocaml, findlib, camlp4}: +{ lib, stdenv, fetchFromGitHub, ocaml, findlib }: + +lib.throwIfNot (lib.versionAtLeast ocaml.version "4.08") + "ocamlscript is not available for OCaml ${ocaml.version}" + stdenv.mkDerivation rec { - pname = "ocamlscript"; - version = "2.0.3"; - src = fetchurl { - url = "https://mjambon.com/releases/${pname}/${pname}-${version}.tar.gz"; - sha256 = "1v1i24gijxwris8w4hi95r9swld6dm7jbry0zp72767a3g5ivlrd"; + pname = "ocaml${ocaml.version}-ocamlscript"; + version = "3.0.0"; + src = fetchFromGitHub { + owner = "mjambon"; + repo = "ocamlscript"; + rev = "v${version}"; + sha256 = "sha256:10xz8jknlmcgnf233nahd04q98ijnxpijhpvb8hl7sv94dgkvpql"; }; - propagatedBuildInputs = [ ocaml findlib camlp4 ]; + propagatedBuildInputs = [ ocaml findlib ]; patches = [ ./Makefile.patch ]; buildFlags = [ "PREFIX=$(out)" ]; installFlags = [ "PREFIX=$(out)" ]; - preInstall = "mkdir $out/bin"; + preInstall = "mkdir -p $out/bin"; createFindlibDestdir = true; meta = with lib; { - homepage = "http://martin.jambon.free.fr/ocamlscript.html"; + inherit (src.meta) homepage; license = licenses.boost; - platforms = ocaml.meta.platforms or []; + inherit (ocaml.meta) platforms; description = "Natively-compiled OCaml scripts"; maintainers = [ maintainers.vbgl ]; };