[ocaml-deriving] - Rebuild for OCaml 3.12.0. - Include separate fixes for 3.12 by Jake Donham.
Richard W.M. Jones
rjones at fedoraproject.org
Thu Jan 6 17:50:24 UTC 2011
commit fd4efb9c74d587e880fdb44a3d14e3b392418df5
Author: Richard W.M. Jones <rjones at redhat.com>
Date: Thu Jan 6 17:42:09 2011 +0000
- Rebuild for OCaml 3.12.0.
- Include separate fixes for 3.12 by Jake Donham.
0001-fixes-for-3.12.0.patch | 313 ++++++++++++++++++++++++++++++
ocaml-deriving-0.1.1a-no-bimap-mli.patch | 11 +
ocaml-deriving.spec | 15 ++-
3 files changed, 336 insertions(+), 3 deletions(-)
---
diff --git a/0001-fixes-for-3.12.0.patch b/0001-fixes-for-3.12.0.patch
new file mode 100644
index 0000000..e160ea2
--- /dev/null
+++ b/0001-fixes-for-3.12.0.patch
@@ -0,0 +1,313 @@
+From c7b9cea3eb4bbfb9e09673faf725f70247c9df78 Mon Sep 17 00:00:00 2001
+From: Jake Donham <jake at donham.org>
+Date: Fri, 3 Sep 2010 19:33:49 -0400
+Subject: [PATCH] fixes for 3.12.0
+
+---
+ syntax/Makefile | 2 +-
+ syntax/base.ml | 4 ++--
+ syntax/bounded_class.ml | 6 +++---
+ syntax/dump_class.ml | 2 +-
+ syntax/enum_class.ml | 5 +++--
+ syntax/eq_class.ml | 12 ++++++------
+ syntax/extend.ml | 2 +-
+ syntax/pickle_class.ml | 6 +++---
+ syntax/show_class.ml | 4 ++--
+ syntax/type.ml | 10 +++++-----
+ syntax/typeable_class.ml | 6 +++---
+ syntax/utils.ml | 1 +
+ 12 files changed, 31 insertions(+), 29 deletions(-)
+
+diff --git a/syntax/Makefile b/syntax/Makefile
+index 2542efa..3884644 100644
+--- a/syntax/Makefile
++++ b/syntax/Makefile
+@@ -6,7 +6,7 @@ OCAMLDEP = ocamldep.opt
+ ANNOTATE = yes
+ PPFLAGS = -loc loc
+ USE_CAMLP4 = yes
+-LIBS = camlp4lib unix
++LIBS = dynlink camlp4lib unix
+
+ CAMLP4_PRE_NOPRINTER =
+
+diff --git a/syntax/base.ml b/syntax/base.ml
+index 16e50de..6848eaf 100644
+--- a/syntax/base.ml
++++ b/syntax/base.ml
+@@ -77,13 +77,13 @@ struct
+ <:expr<
+ let module M =
+ struct
+- type t = $t$
++ type $Ast.TyDcl (loc, "t", [], t, [])$
+ let test = function #t -> true | _ -> false
+ end in M.test $lid:param$ >>,
+ <:expr<
+ (let module M =
+ struct
+- type t = $t$
++ type $Ast.TyDcl (loc, "t", [], t, [])$
+ let cast = function #t as t -> t | _ -> assert false
+ end in M.cast $lid:param$ )>>)
+
+diff --git a/syntax/bounded_class.ml b/syntax/bounded_class.ml
+index dbccfb0..7a523ed 100644
+--- a/syntax/bounded_class.ml
++++ b/syntax/bounded_class.ml
+@@ -24,7 +24,7 @@ struct
+ (fun t -> let e = self#expr ctxt t in
+ <:expr< let module M = $e$ in M.min_bound >>,
+ <:expr< let module M = $e$ in M.max_bound >>) ts) in
+- <:module_expr< struct type a = $atype_expr ctxt (`Tuple ts)$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype_expr ctxt (`Tuple ts), [])$
+ let min_bound = $tuple_expr minBounds$
+ let max_bound = $tuple_expr maxBounds$ end >>
+
+@@ -35,7 +35,7 @@ struct
+ | (name,_) -> raise (Underivable ("Bounded cannot be derived for the type "^
+ tname ^" because the constructor "^
+ name^" is not nullary"))) in
+- <:module_expr< struct type a = $atype ctxt decl$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let min_bound = $uid:List.hd names$
+ and max_bound = $uid:List.last names$ end >>
+
+@@ -47,7 +47,7 @@ struct
+ name^" is not nullary"))
+ | _ -> raise (Underivable ("Bounded cannot be derived for this "
+ ^"polymorphic variant type"))) in
+- <:module_expr< struct type a = $atype ctxt decl$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let min_bound = `$List.hd names$
+ and max_bound = `$List.last names$ end >>
+
+diff --git a/syntax/dump_class.ml b/syntax/dump_class.ml
+index 798875a..1eab673 100644
+--- a/syntax/dump_class.ml
++++ b/syntax/dump_class.ml
+@@ -16,7 +16,7 @@ struct
+ let classname = "Dump"
+
+ let wrap ~atype ~dumpers ~undump =
+- <:module_expr< struct type a = $atype$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype, [])$
+ let to_buffer buffer = function $list:dumpers$
+ let from_stream stream = $undump$ end >>
+
+diff --git a/syntax/enum_class.ml b/syntax/enum_class.ml
+index ac92833..feef7d0 100644
+--- a/syntax/enum_class.ml
++++ b/syntax/enum_class.ml
+@@ -30,7 +30,8 @@ struct
+ (List.range 0 (List.length summands))
+ summands
+ <:expr< [] >> in
+- <:module_expr< Enum.Defaults(struct type a = $atype ctxt decl$ let numbering = $numbering$ end) >>
++ <:module_expr< Enum.Defaults(struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
++ let numbering = $numbering$ end) >>
+
+ method variant ctxt decl (_, tags) =
+ let numbering =
+@@ -45,7 +46,7 @@ struct
+ (List.range 0 (List.length tags))
+ tags
+ <:expr< [] >> in
+- <:module_expr< Enum.Defaults(struct type a = $atype ctxt decl$ let numbering = $numbering$ end) >>
++ <:module_expr< Enum.Defaults(struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$ let numbering = $numbering$ end) >>
+
+ method tuple context _ = raise (Underivable "Enum cannot be derived for tuple types")
+ method record ?eq _ (tname,_,_,_,_) = raise (Underivable
+diff --git a/syntax/eq_class.ml b/syntax/eq_class.ml
+index 1d8de1b..a008785 100644
+--- a/syntax/eq_class.ml
++++ b/syntax/eq_class.ml
+@@ -22,7 +22,7 @@ struct
+ let tup ctxt ts mexpr exp =
+ match ts with
+ | [t] ->
+- <:module_expr< struct type a = $atype_expr ctxt (`Tuple ts)$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype_expr ctxt (`Tuple ts), [])$
+ let eq l r = let module M = $exp ctxt t$
+ in $mexpr$ l r end >>
+ | ts ->
+@@ -38,7 +38,7 @@ struct
+ ts
+ (0, (<:patt< >>, <:patt< >>), <:expr< true >>)
+ in
+- <:module_expr< struct type a = $atype_expr ctxt (`Tuple ts)$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype_expr ctxt (`Tuple ts), [])$
+ let eq $Ast.PaTup (loc, lpatt)$ $Ast.PaTup (loc, rpatt)$ = $expr$ end >>
+
+
+@@ -80,14 +80,14 @@ struct
+ method sum ?eq ctxt decl summands =
+ let wildcard = match summands with [_] -> [] | _ -> [ <:match_case< _ -> false >>] in
+ <:module_expr<
+- struct type a = $atype ctxt decl$
++ struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let eq l r = match l, r with
+ $list:List.map (self#case ctxt) summands @ wildcard$
+ end >>
+
+ method record ?eq ctxt decl fields =
+ if List.exists (function (_,_,`Mutable) -> true | _ -> false) fields then
+- <:module_expr< struct type a = $atype ctxt decl$ let eq = (==) end >>
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$ let eq = (==) end >>
+ else
+ let lpatt = record_pattern ~prefix:"l" fields
+ and rpatt = record_pattern ~prefix:"r" fields
+@@ -96,11 +96,11 @@ struct
+ (fun f e -> <:expr< $self#field ctxt f$ && $e$ >>)
+ fields
+ <:expr< true >>
+- in <:module_expr< struct type a = $atype ctxt decl$
++ in <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let eq $lpatt$ $rpatt$ = $expr$ end >>
+
+ method variant ctxt decl (spec, tags) =
+- <:module_expr< struct type a = $atype ctxt decl$
++ <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let eq l r = match l, r with
+ $list:List.map (self#polycase ctxt) tags$
+ | _ -> false end >>
+diff --git a/syntax/extend.ml b/syntax/extend.ml
+index 059c6e9..934e880 100644
+--- a/syntax/extend.ml
++++ b/syntax/extend.ml
+@@ -68,7 +68,7 @@ struct
+ EXTEND Gram
+ expr: LEVEL "simple"
+ [
+- [e1 = val_longident ; "<" ; t = ctyp; ">" ->
++ [e1 = TRY val_longident ; "<" ; t = ctyp; ">" ->
+ match e1 with
+ | <:ident< $uid:classname$ . $lid:methodname$ >> ->
+ if not (Base.is_registered classname) then
+diff --git a/syntax/pickle_class.ml b/syntax/pickle_class.ml
+index ca62c70..aab92d8 100644
+--- a/syntax/pickle_class.ml
++++ b/syntax/pickle_class.ml
+@@ -26,9 +26,9 @@ struct
+
+ let unpickle_record_bindings ctxt (tname,params,rhs,cs,_) (fields : field list) e = <:expr<
+ let module Mutable = struct
+- type t = $UT.repr
++ type $Ast.TyDcl (loc, "t", [], UT.repr
+ (instantiate_modargs_repr ctxt
+- (Record (List.map (fun (n,p,_) -> (n,p,`Mutable)) fields)))$
++ (Record (List.map (fun (n,p,_) -> (n,p,`Mutable)) fields))), [])$
+ end in $e$ >>
+
+ let unpickle_record ctxt (tname,_,_,_,_ as decl) fields expr =
+@@ -89,7 +89,7 @@ struct
+ <:module_expr< struct open Eq open Typeable
+ module T = $tymod$
+ module E = $eqmod$
+- type a = $atype$
++ type $Ast.TyDcl (loc, "a", [], atype, [])$
+ open Write
+ let pickle = let module W = Utils(T)(E) in function $list:picklers$
+ open Read
+diff --git a/syntax/show_class.ml b/syntax/show_class.ml
+index 6217690..ec78a61 100644
+--- a/syntax/show_class.ml
++++ b/syntax/show_class.ml
+@@ -15,7 +15,7 @@ struct
+ let classname = "Show"
+
+ let wrap (ctxt:Base.context) (decl : Type.decl) matches = <:module_expr<
+- struct type a = $atype ctxt decl$
++ struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let format formatter = function $list:matches$ end >>
+
+ let in_a_box box e =
+@@ -61,7 +61,7 @@ struct
+ method tuple ctxt args =
+ let n = List.length args in
+ let tpatt, _ = tuple n in
+- <:module_expr< Defaults (struct type a = $atype_expr ctxt (`Tuple args)$
++ <:module_expr< Defaults (struct type $Ast.TyDcl (loc, "a", [], atype_expr ctxt (`Tuple args), [])$
+ let format formatter $tpatt$ =
+ $self#nargs ctxt
+ (List.mapn (fun t n -> Printf.sprintf "v%d" n, t) args)$ end) >>
+diff --git a/syntax/type.ml b/syntax/type.ml
+index 736ca9a..e42cf78 100644
+--- a/syntax/type.ml
++++ b/syntax/type.ml
+@@ -1,4 +1,4 @@
+-(*pp camlp4of *)
++(*pp camlp4orf *)
+
+ (* Copyright Jeremy Yallop 2007.
+ This file is free software, distributed under the MIT license.
+@@ -422,8 +422,8 @@ struct
+ | _ -> assert false
+ and app f = function
+ | [] -> f
+- | [x] -> <:ctyp< $expr x$ $f$ >>
+- | x::xs -> app (<:ctyp< $expr x$ $f$ >>) xs
++ | [x] -> <:ctyp< $f$ $expr x$ >>
++ | x::xs -> app (<:ctyp< $f$ $expr x$ >>) xs
+ in expr
+
+ let poly (params, t) =
+@@ -436,10 +436,10 @@ struct
+ let rec rhs : rhs -> Ast.ctyp = function
+ | `Fresh (None, t, `Private) -> <:ctyp< private $repr t$ >>
+ | `Fresh (None, t, `Public) -> repr t
+- | `Fresh (Some e, t, `Private) -> <:ctyp< $expr e$ = private $repr t$ >>
++ | `Fresh (Some e, t, `Private) -> <:ctyp< $expr e$ == private $repr t$ >>
+ | `Fresh (Some e, t, `Public) -> Ast.TyMan (loc, expr e, repr t)
+ | `Expr t -> expr t
+- | `Variant (`Eq, tags) -> <:ctyp< [ $unlist bar tags tagspec$ ] >>
++ | `Variant (`Eq, tags) -> <:ctyp< [= $unlist bar tags tagspec$ ] >>
+ | `Variant (`Gt, tags) -> <:ctyp< [> $unlist bar tags tagspec$ ] >>
+ | `Variant (`Lt, tags) -> <:ctyp< [< $unlist bar tags tagspec$ ] >>
+ | `Nothing -> <:ctyp< >>
+diff --git a/syntax/typeable_class.ml b/syntax/typeable_class.ml
+index 21c069f..64039fc 100644
+--- a/syntax/typeable_class.ml
++++ b/syntax/typeable_class.ml
+@@ -26,7 +26,7 @@ struct
+ <:expr< $uid:NameMap.find p ctxt.argmap$.type_rep::$cdr$ >>)
+ ctxt.params
+ <:expr< [] >>
+- in <:module_expr< struct type a = $atype ctxt decl$
++ in <:module_expr< struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let type_rep = TypeRep.mkFresh $str:mkName tname$ $paramList$ end >>
+
+ let tup ctxt ts mexpr expr =
+@@ -34,7 +34,7 @@ struct
+ expr_list
+ (List.map (fun t -> <:expr< let module M = $expr ctxt t$
+ in $mexpr$ >>) ts) in
+- <:module_expr< Defaults(struct type a = $atype_expr ctxt (`Tuple ts)$
++ <:module_expr< Defaults(struct type $Ast.TyDcl (loc, "a", [], atype_expr ctxt (`Tuple ts), [])$
+ let type_rep = Typeable.TypeRep.mkTuple $params$ end) >>
+
+ let instance = object(self)
+@@ -56,7 +56,7 @@ struct
+ <:expr< $mproject (self#expr ctxt t) "type_rep"$::$extends$ >>)
+ (<:expr< [] >>, <:expr< [] >>) tags in
+ <:module_expr< Defaults(
+- struct type a = $atype ctxt decl$
++ struct type $Ast.TyDcl (loc, "a", [], atype ctxt decl, [])$
+ let type_rep = Typeable.TypeRep.mkPolyv $tags$ $extends$
+ end) >>
+ end
+diff --git a/syntax/utils.ml b/syntax/utils.ml
+index 6c963bb..3b4b653 100644
+--- a/syntax/utils.ml
++++ b/syntax/utils.ml
+@@ -126,6 +126,7 @@ struct
+ | TyVrnInfSup (_, c1, c2) -> "TyVrnInfSup ("^ ctyp c1 ^ ", " ^ ctyp c2 ^")"
+ | TyAmp (_, c1, c2) -> "TyAmp ("^ ctyp c1 ^ ", " ^ ctyp c2 ^")"
+ | TyOfAmp (_, c1, c2) -> "TyOfAmp ("^ ctyp c1 ^ ", " ^ ctyp c2 ^")"
++ | TyPkg (_, mt) -> failwith "first-class modules not supported"
+ | TyAnt (_, s) -> "TyAnt("^s^")"
+ end
+
+--
+1.7.3.4
+
diff --git a/ocaml-deriving-0.1.1a-no-bimap-mli.patch b/ocaml-deriving-0.1.1a-no-bimap-mli.patch
new file mode 100644
index 0000000..740da65
--- /dev/null
+++ b/ocaml-deriving-0.1.1a-no-bimap-mli.patch
@@ -0,0 +1,11 @@
+--- deriving-0.1.1/tests/Makefile.old 2011-01-06 17:44:05.056078740 +0000
++++ deriving-0.1.1/tests/Makefile 2011-01-06 17:44:27.745779764 +0000
+@@ -8,7 +8,7 @@
+ OCAMLFLAGS = -w Aef
+
+ SOURCES = defs.ml \
+- bimap.ml bimap.mli \
++ bimap.ml \
+ sigs.ml \
+ pickle_tests.ml \
+ typeable_tests.ml \
diff --git a/ocaml-deriving.spec b/ocaml-deriving.spec
index 9b9f376..2f016e2 100644
--- a/ocaml-deriving.spec
+++ b/ocaml-deriving.spec
@@ -3,7 +3,7 @@
Name: ocaml-deriving
Version: 0.1.1a
-Release: 10%{?dist}
+Release: 11%{?dist}
Summary: Extension to OCaml for deriving functions from types
Group: Development/Libraries
@@ -14,7 +14,10 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
ExcludeArch: sparc64 s390 s390x
Patch0: ocaml-deriving-no-link-libs.patch
-Patch1: ocaml-deriving-0.1.1a-dynlink.patch
+# This is included as part of the general fixes in patch 2.
+#Patch1: ocaml-deriving-0.1.1a-dynlink.patch
+Patch2: 0001-fixes-for-3.12.0.patch
+Patch3: ocaml-deriving-0.1.1a-no-bimap-mli.patch
BuildRequires: ocaml >= 3.11.0-1
BuildRequires: ocaml-findlib-devel
@@ -46,7 +49,9 @@ developing applications that use %{name}.
%prep
%setup -q -n deriving-0.1.1
%patch0
-%patch1 -p1
+#%patch1 -p1
+%patch2 -p1
+%patch3 -p1
%build
@@ -108,6 +113,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Thu Jan 6 2011 Richard W.M. Jones <rjones at redhat.com> - 0.1.1a-11
+- Rebuild for OCaml 3.12.0.
+- Include separate fixes for 3.12 by Jake Donham.
+
* Wed Dec 30 2009 Richard W.M. Jones <rjones at redhat.com> - 0.1.1a-10
- Rebuild for OCaml 3.11.2.
More information about the ocaml-devel
mailing list