[Pkg-ocaml-maint-commits] [SCM] Cooperative light-weight thread library for OCaml branch, master, updated. debian/2.1.1-1-10-ge5bbff5

Stephane Glondu steph at glondu.net
Sat Jan 1 19:48:27 UTC 2011


The following commit has been merged in the master branch:
commit 9952b8158c782c54affb4cf37210142685710d9c
Author: Stephane Glondu <steph at glondu.net>
Date:   Thu Dec 30 09:41:18 2010 +0100

    Update packaging
    
     - switch debian/rules to dh with overrides
     - new build-dependency: libev-dev
     - bump versioned to libtext-ocaml-dev
     - add script to partially generate debian/*.install files
     - *.cmx files are not installed (upstream issue)

diff --git a/debian/clean b/debian/clean
new file mode 100644
index 0000000..eac047b
--- /dev/null
+++ b/debian/clean
@@ -0,0 +1,5 @@
+debian/liblwt-glib-ocaml-dev.install
+debian/liblwt-glib-ocaml.install
+debian/liblwt-ocaml.install
+debian/liblwt-ssl-ocaml-dev.install
+debian/liblwt-ssl-ocaml.install
diff --git a/debian/control b/debian/control
index 47545e0..f35e159 100644
--- a/debian/control
+++ b/debian/control
@@ -6,12 +6,13 @@ Build-Depends:
  cdbs,
  debhelper (>= 8),
  dh-ocaml (>= 0.9),
+ libev-dev,
  ocaml-findlib,
  libfindlib-ocaml-dev,
  libssl-ocaml-dev (>= 0.4.3-3~),
  liblablgtk2-ocaml-dev (>= 2.12.0-4~),
  libreact-ocaml-dev (>= 0.9.1-1~),
- libtext-ocaml-dev (>= 0.2-3~),
+ libtext-ocaml-dev (>= 0.4),
  camlp4,
  ocaml-compiler-libs,
  ocaml-nox (>= 3.11.1-3~)
diff --git a/debian/liblwt-glib-ocaml-dev.install.in b/debian/liblwt-glib-ocaml-dev.install.in
deleted file mode 100644
index 5cccece..0000000
--- a/debian/liblwt-glib-ocaml-dev.install.in
+++ /dev/null
@@ -1,2 +0,0 @@
- at OCamlStdlibDir@/lwt/liblwt_glib_stubs.*
- at OCamlStdlibDir@/lwt/lwt_glib.*
diff --git a/debian/liblwt-glib-ocaml.install.in b/debian/liblwt-glib-ocaml.install.in
deleted file mode 100644
index 22ebdbf..0000000
--- a/debian/liblwt-glib-ocaml.install.in
+++ /dev/null
@@ -1 +0,0 @@
- at OCamlDllDir@/dlllwt_glib_stubs.so
diff --git a/debian/liblwt-ocaml-dev.install.in b/debian/liblwt-ocaml-dev.install.in
index ddfdd1c..c153255 100644
--- a/debian/liblwt-ocaml-dev.install.in
+++ b/debian/liblwt-ocaml-dev.install.in
@@ -1,34 +1,3 @@
- at OCamlStdlibDir@/lwt/liblwt_unix_stubs.*
- at OCamlStdlibDir@/lwt/lwt.*
- at OCamlStdlibDir@/lwt/lwt_chan.*
- at OCamlStdlibDir@/lwt/lwt_condition.*
- at OCamlStdlibDir@/lwt/lwt_daemon.*
- at OCamlStdlibDir@/lwt/lwt_extra.*
- at OCamlStdlibDir@/lwt/lwt_event.*
- at OCamlStdlibDir@/lwt/lwt_gc.*
- at OCamlStdlibDir@/lwt/lwt_io.*
- at OCamlStdlibDir@/lwt/lwt_lib.*
- at OCamlStdlibDir@/lwt/lwt_list.*
- at OCamlStdlibDir@/lwt/lwt_log.*
- at OCamlStdlibDir@/lwt/lwt_main.*
- at OCamlStdlibDir@/lwt/lwt_mutex.*
- at OCamlStdlibDir@/lwt/lwt_mvar.*
- at OCamlStdlibDir@/lwt/lwt_pool.*
- at OCamlStdlibDir@/lwt/lwt_preemptive.*
- at OCamlStdlibDir@/lwt/lwt_process.*
- at OCamlStdlibDir@/lwt/lwt_react.*
- at OCamlStdlibDir@/lwt/lwt_read_line.*
- at OCamlStdlibDir@/lwt/lwt_sequence.*
- at OCamlStdlibDir@/lwt/lwt_signal.*
- at OCamlStdlibDir@/lwt/lwt_simple_top.*
- at OCamlStdlibDir@/lwt/lwt_stream.*
- at OCamlStdlibDir@/lwt/lwt_term.*
- at OCamlStdlibDir@/lwt/lwt_text.*
- at OCamlStdlibDir@/lwt/lwt_throttle.*
- at OCamlStdlibDir@/lwt/lwt_timeout.*
- at OCamlStdlibDir@/lwt/lwt_top.*
- at OCamlStdlibDir@/lwt/lwt_unix.*
- at OCamlStdlibDir@/lwt/lwt_util.*
- at OCamlStdlibDir@/lwt/pa_*
- at OCamlStdlibDir@/lwt/toplevel.*
+/usr/bin/lwt-toplevel
 @OCamlStdlibDir@/lwt/META
+ at OCamlStdlibDir@/lwt/lwt_unix.h
diff --git a/debian/liblwt-ocaml-doc.doc-base b/debian/liblwt-ocaml-doc.doc-base.api
similarity index 64%
rename from debian/liblwt-ocaml-doc.doc-base
rename to debian/liblwt-ocaml-doc.doc-base.api
index 84a6991..20ad26b 100644
--- a/debian/liblwt-ocaml-doc.doc-base
+++ b/debian/liblwt-ocaml-doc.doc-base.api
@@ -4,5 +4,5 @@ Abstract: API reference manual for liblwt-*-dev (generated via OCamldoc)
 Section: Programming/OCaml
 
 Format: HTML
-Index: /usr/share/doc/liblwt-ocaml-doc/html/api/index.html
-Files: /usr/share/doc/liblwt-ocaml-doc/html/api/*
+Index: /usr/share/doc/liblwt-ocaml-dev/api/index.html
+Files: /usr/share/doc/liblwt-ocaml-dev/api/*
diff --git a/debian/liblwt-ocaml-doc.doc-base.manual b/debian/liblwt-ocaml-doc.doc-base.manual
new file mode 100644
index 0000000..7a6204d
--- /dev/null
+++ b/debian/liblwt-ocaml-doc.doc-base.manual
@@ -0,0 +1,7 @@
+Document: liblwt-ocaml-doc-manual
+Title: Lwt manual
+Abstract: Lwt manual
+Section: Programming/OCaml
+
+Format: PDF
+Files: /usr/share/doc/liblwt-ocaml-dev/manual.pdf*
diff --git a/debian/liblwt-ocaml-doc.install b/debian/liblwt-ocaml-doc.install
index 625df1c..dc97e36 100644
--- a/debian/liblwt-ocaml-doc.install
+++ b/debian/liblwt-ocaml-doc.install
@@ -1,2 +1 @@
-_build/lwt.docdir/*.html     usr/share/doc/liblwt-ocaml-doc/html/api
-_build/lwt.docdir/*.css      usr/share/doc/liblwt-ocaml-doc/html/api
+/usr/share/doc/liblwt-ocaml-dev
diff --git a/debian/liblwt-ocaml.install.in b/debian/liblwt-ocaml.install.in
deleted file mode 100644
index 8fd118b..0000000
--- a/debian/liblwt-ocaml.install.in
+++ /dev/null
@@ -1 +0,0 @@
- at OCamlDllDir@/dlllwt_unix_stubs.so
diff --git a/debian/liblwt-ssl-ocaml-dev.install.in b/debian/liblwt-ssl-ocaml-dev.install.in
deleted file mode 100644
index 093c77c..0000000
--- a/debian/liblwt-ssl-ocaml-dev.install.in
+++ /dev/null
@@ -1 +0,0 @@
- at OCamlStdlibDir@/lwt/lwt_ssl.*
diff --git a/debian/modules.ml b/debian/modules.ml
new file mode 100644
index 0000000..fb9b390
--- /dev/null
+++ b/debian/modules.ml
@@ -0,0 +1,91 @@
+(* This script fills in debian/*.install files, based on dispatching
+   of *.cma files. *)
+
+#use "topfind";;
+#require "unix";;
+#require "fileutils";;
+#require "pcre";;
+
+let dll_dir = Sys.getenv "OCAML_DLL_DIR"
+
+let is_private = function
+  | "Pa_lwt_options" | "Lwt_log_rules" | "Lwt_ocaml_completion" | "Lwt_simple_top" -> true
+  | _ -> false
+
+let suffix = function
+  | "lwt-glib" -> "-glib"
+  | "lwt-react" -> ""
+  | "lwt-ssl" -> "-ssl"
+  | "lwt-extra" -> ""
+  | "lwt-syntax-log" -> ""
+  | "lwt-text" -> ""
+  | "lwt-syntax-options" -> ""
+  | "lwt-unix" -> ""
+  | "lwt-syntax" -> ""
+  | "lwt-top" -> ""
+  | "lwt-preemptive" -> ""
+  | "lwt-simple-top" -> ""
+  | "lwt" -> ""
+  | _ -> assert false
+
+let chop_prefix x =
+  let n = String.length x in
+  assert (n > 10 && String.sub x 0 10 = "debian/tmp");
+  String.sub x 10 (n-10)
+
+exception Objinfo_error of string * Unix.process_status
+
+let split_dll =
+  let rex = Pcre.regexp " *-l" in
+  fun line -> List.tl (Pcre.split ~rex line)
+
+let print_cma () cma =
+  let component = suffix (Filename.chop_suffix (Filename.basename cma) ".cma") in
+  let flags = [Open_creat; Open_append] in
+  let dev = open_out_gen flags 0o644 (Printf.sprintf "debian/liblwt%s-ocaml-dev.install" component) in
+  let runtime = open_out_gen flags 0o644 (Printf.sprintf "debian/liblwt%s-ocaml.install" component) in
+  let () = Printf.fprintf dev "%s\n" (chop_prefix cma) in
+  let () =
+    let x = Filename.chop_suffix cma ".cma" in
+    if Sys.file_exists (x^".cmxa") then begin
+      Printf.fprintf dev "%s\n" (chop_prefix x ^ ".cmxa");
+      Printf.fprintf dev "%s\n" (chop_prefix x ^ ".a");
+    end
+  in
+  let dlls, modules =
+    let objinfo = Printf.ksprintf Unix.open_process_in "ocamlobjinfo %s | sed -nr 's/^(Unit name|Extra dynamically.*): //p'" cma in
+    let close () = match Unix.close_process_in objinfo with
+      | Unix.WEXITED 0 -> ()
+      | r -> raise (Objinfo_error (cma, r))
+    in
+    let rec slurp accu =
+      match (try Some (input_line objinfo) with End_of_file -> close (); None) with
+        | Some x -> slurp (x::accu)
+        | None -> accu
+    in match List.rev (slurp []) with
+      | x::xs when String.length x > 1 && x.[0] = '-' -> split_dll x, xs
+      | xs -> [], xs
+  in
+  let dirname = Filename.dirname cma in
+  let print_module m =
+    let m = Filename.concat dirname (String.uncapitalize m) in
+    let () =
+      let x = m^".cmx" in
+      if Sys.file_exists x then
+        Printf.fprintf dev "%s\n" (chop_prefix x)
+    in
+    Printf.fprintf dev "%s\n" (chop_prefix (m^".cmi"));
+    Printf.fprintf dev "%s\n" (chop_prefix (m^".mli"))
+  in
+  let print_dll m =
+    let b = chop_prefix dirname in
+    Printf.fprintf runtime "%s %s\n" (Filename.concat b ("dll"^m^".so")) dll_dir;
+    Printf.fprintf dev "%s\n" (Filename.concat b ("lib"^m^".a"))
+  in
+  List.iter (fun x -> if not (is_private x) then print_module x) modules;
+  List.iter print_dll dlls;
+  close_out dev;
+  close_out runtime
+;;
+
+FileUtil.find (FileUtil.Has_extension "cma") "debian/tmp" print_cma ();;
diff --git a/debian/rules b/debian/rules
index 33c8f44..3c072de 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,19 +1,46 @@
 #!/usr/bin/make -f
 # -*- makefile -*-
-#
-# debian/rules for lwt.
-#
-# Copyright © 2008 Stéphane Glondu
-#
 
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/cdbs/1/class/makefile.mk
-include /usr/share/cdbs/1/rules/ocaml.mk
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
 
-DESTDIR := $(CURDIR)/debian/tmp$(OCAML_STDLIB_DIR)
+DESTDIR=$(CURDIR)/debian/tmp
 
-DEB_INSTALL_DIRS_ALL = -pliblwt-ocaml -Pdebian/tmp
-DEB_MAKE_INSTALL_TARGET := install DESTDIR=$(DESTDIR)
+include /usr/share/ocaml/ocamlvars.mk
 
-build/liblwt-ocaml-doc::
-	$(MAKE) doc
+export OCAML_DLL_DIR
+export OCAMLFIND_DESTDIR=$(DESTDIR)/$(OCAML_STDLIB_DIR)
+export OCAMLFIND_LDCONF=ignore
+
+# Needed for running tests on bytecode architectures
+export CAML_LD_LIBRARY_PATH=$(CURDIR)/_build/src/unix
+
+%:
+	dh $@ --with ocaml
+
+.PHONY: override_dh_auto_configure
+override_dh_auto_configure:
+	ocaml setup.ml -configure --prefix /usr --destdir '$(DESTDIR)' --enable-all --docdir /usr/share/doc/liblwt-ocaml-dev
+
+.PHONY: override_dh_auto_build
+override_dh_auto_build:
+	ocaml setup.ml -build
+	ocaml setup.ml -doc
+
+.PHONY: override_dh_auto_test
+override_dh_auto_test:
+	ocaml setup.ml -test
+
+.PHONY: override_dh_auto_install
+override_dh_auto_install:
+	mkdir -p '$(OCAMLFIND_DESTDIR)'
+	ocaml setup.ml -install
+
+.PHONY: override_dh_install
+override_dh_install:
+	ocaml debian/modules.ml
+	dh_install --fail-missing
+
+.PHONY: override_dh_auto_clean
+override_dh_auto_clean:
+	ocaml setup.ml -distclean

-- 
Cooperative light-weight thread library for OCaml



More information about the Pkg-ocaml-maint-commits mailing list