The following commit has been merged in the master branch:
commit 7aaf2c71f59cdeee1754531bbf9062dcafa7f5e1
Author: Sylvain Le Gall <gil...@debian.org>
Date:   Thu Apr 19 23:14:23 2012 +0000

    Use oasis v0.3 new API.

diff --git a/src/BuildDepends.ml b/src/BuildDepends.ml
index b81f2fc..7706679 100644
--- a/src/BuildDepends.ml
+++ b/src/BuildDepends.ml
@@ -265,7 +265,7 @@ let get ~ctxt pkg =
               hd
 
           | [] ->
-              failwithf1
+              failwithf
                 "Cannot find file '%s'"
                 fn
     in
diff --git a/src/Common.ml b/src/Common.ml
index 8354ccf..7c0cc69 100644
--- a/src/Common.ml
+++ b/src/Common.ml
@@ -97,7 +97,7 @@ let assert_command ~ctxt cmd =
   match Sys.command cmd with 
     | 0 -> ()
     | n -> 
-        failwithf2
+        failwithf
           "Command '%s' exited with code %d" 
           cmd n
 
@@ -123,7 +123,7 @@ let assert_command_output ~ctxt cmd =
       | Unix.WEXITED 0 ->
           res
       | _ ->
-          failwithf1
+          failwithf
             "Command '%s' exited with non-zero exit code"
             cmd
 
diff --git a/src/Copyright.ml b/src/Copyright.ml
index 8fe44e8..c5d9094 100644
--- a/src/Copyright.ml
+++ b/src/Copyright.ml
@@ -74,59 +74,53 @@ let license_full ~ctxt t =
          (OASISLicense.to_string 
             t.pkg.OASISTypes.license))
   in
+  let debian_licenses = 
+    [
+      apache, 
+      [`Ver "2.0", "Aparche-2.0"];
+      artistic, 
+      [`Any, "Artistic"];
+      bsd3, 
+      [`Any, "BSD"];
+      gpl,
+      [`Ver "1", "GPL-1";
+       `Ver "2", "GPL-2";
+       `Ver "3", "GPL-3";
+       `None, "GPL"];
+      gfdl,
+      [`Ver "1.2", "GFDL-1.2";
+       `Ver "1.3", "GFDL-1.3";
+       `None, "GFDL"];
+      lgpl,
+      [`Ver "2", "LGPL-2";
+       `Ver "2.1", "LGPL-2.1";
+       `Ver "3", "LGPL-3";
+       `None, "LGPL"]
+    ]
+  in
     match t.pkg.OASISTypes.license with 
       | DEP5License l ->
           begin
-            let license = 
-              l.OASISLicense.license
-            in
-              if license = apache then
-                begin
-                  match min_ver l.version with 
-                    | Some "2.0" -> see_common "Apache-2.0"
-                    | _ -> todo ()
-                end
-
-              else if license = artistic then
-                begin
-                  see_common "Artistic"
-                end
-
-              else if license = bsd3 then 
-                begin
-                  see_common "BSD"
-                end
-
-              else if license = gpl then
+            let process_one l = 
+              try
                 begin
-                  match min_ver l.version with 
-                    | Some "1" -> see_common "GPL-1"
-                    | Some "2" -> see_common "GPL-2"
-                    | Some "3" -> see_common "GPL-3"
-                    | None -> see_common "GPL"
-                    | Some _ -> todo ()
+                  let vers = List.assoc l.license debian_licenses in
+                    try 
+                      let ver = min_ver l.version in
+                      let _, debian_common = 
+                        List.find
+                          (fun (ver', _) ->
+                             match ver, ver' with 
+                               | Some v, `Ver v' -> v = v'
+                               | None, `None | _, `Any -> true
+                               | None, `Ver _ | Some _, `None -> false)
+                          vers
+                      in
+                        see_common debian_common
+                    with Not_found ->
+                      todo ()
                 end
-
-              else if license = gfdl then
-                begin
-                  match min_ver l.version with 
-                    | Some "1.2" -> see_common "GFDL-1.2"
-                    | Some "1.3" -> see_common "GFDL-1.3"
-                    | None -> see_common "GFDL"
-                    | Some _ -> todo ()
-                end
-
-              else if license = lgpl then
-                begin
-                  match min_ver l.version with 
-                    | Some "2" -> see_common "LGPL-2"
-                    | Some "2.1" -> see_common "LGPL-2.1"
-                    | Some "3" -> see_common "LGPL-3"
-                    | None -> see_common "LGPL"
-                    | Some _ -> todo ()
-                end
-
-              else
+              with Not_found ->
                 begin
                   match t.pkg.OASISTypes.license_file with 
                     | Some fn when Sys.file_exists fn ->
@@ -151,6 +145,15 @@ let license_full ~ctxt t =
                     | _ ->
                         todo ()
                 end
+            in
+            let rec process acc =
+              function
+                | DEP5Unit l ->
+                    (process_one l) :: acc
+                | DEP5Or lst | DEP5And lst ->
+                    List.fold_left process acc lst
+            in
+              String.concat "\n" (List.rev (process [] l))
           end
 
       | OtherLicense _ ->
@@ -183,11 +186,29 @@ let create ~ctxt t =
 
   let license_exception =
     match t.pkg.OASISTypes.license with 
-      | DEP5License {exceptions = lst} when lst <> [] ->
+      | DEP5License l ->
+          let lst = 
+            let rec collect_excpt acc =
+              function 
+                | DEP5Unit {excption = Some e} ->
+                    if not (List.mem e acc) then
+                      e :: acc
+                    else 
+                      acc
+                | DEP5Unit _ ->
+                    acc
+                | DEP5Or lst | DEP5And lst ->
+                    List.fold_left collect_excpt acc lst
+            in
+              collect_excpt [] l
+          in
           let sep  = 
             "\n\n"
           in
-            sep ^ (String.concat sep (List.map (license_exception ~ctxt) lst))
+            if lst <> [] then
+              sep ^ (String.concat sep (List.map (license_exception ~ctxt) 
lst))
+            else 
+              ""
 
       | _ ->
           ""
diff --git a/src/DhFiles.ml b/src/DhFiles.ml
index fe25b00..f981b30 100644
--- a/src/DhFiles.ml
+++ b/src/DhFiles.ml
@@ -34,6 +34,7 @@ type t =
     has_native:   bool;
     has_dll:      bool;
     has_cmi:      bool;
+    (* TODO: dynlink *)
   }
 
 let create ~ctxt t = 
@@ -74,11 +75,12 @@ let create ~ctxt t =
                      let fns = 
                        OASISLibrary.generated_unix_files
                          ~ctxt
+                         ~source_file_exists:Sys.file_exists
+                         ~is_native:true
+                         ~has_native_dynlink:true
+                         ~ext_lib:".a"
+                         ~ext_dll:".so"
                          e
-                         Sys.file_exists
-                         (fun () -> true)
-                         (fun () -> ".a")
-                         (fun () -> ".so")
                      in
                        fns :: acc) 
                   []

-- 
oasis2debian project

_______________________________________________
Pkg-ocaml-maint-commits mailing list
Pkg-ocaml-maint-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits

Reply via email to