[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Summary on ocaml-ldconf bug



On Mon, Jul 08, 2002 at 10:31:47PM +0200, Stefano Zacchiroli wrote:
>   Anyway to avoid others' lazyness mistake I suggest to patch
>   ocaml-ldconf so that it output a warning or an error message if
>   /etc/ocaml/ld.conf isn't in the expected format.

I attached a tiny ocaml-ldconf patch that:
- put a more verbose comment in /etc/ocaml/ld.conf
- by default output more warnings, even if -v switch isn't given,
  mainly: it output what action is taking place (i.e. feedback on user
  whises), it output a warning when it encounter a bad formatted line

> The bad one:
> 
>   the upgrading problem is real and is a bug in dh_ocamlld (I'm going to
>   submit the bug just after this mail): while upgrading to a new package

Never mind, I thought that dh_ocamlld was provided by debhelper, but
it's provided by ocaml. So instead of filing the bug I attach another,
even more tiny, patch for
/usr/share/debhelper/autoscripts/postrm-ocamlld that solve the postrm
problem.

Anyway please note that we still need a solution for the removal of old
spurious entries in /var/lib/ocaml/ld.conf.

Cheers.

-- 
Stefano Zacchiroli - undergraduate student of CS @ Univ. Bologna, Italy
zack@cs.unibo.it | ICQ# 33538863 | http://www.cs.unibo.it/~zacchiro
"I know you believe you understood what you think I said, but I am not
sure you realize that what you heard is not what I meant!" -- G.Romney
--- debian.orig/ocaml-ldconf.ml	Mon Jul  8 22:23:05 2002
+++ debian/ocaml-ldconf.ml	Mon Jul  8 23:03:52 2002
@@ -39,12 +39,31 @@
 let user_ldconf_comment = Printf.sprintf
 "#
 # %s
+#
+# WARNING: if you modify this file remember to invoke
+# 'ocaml-ldconf' afterward or your mofidication will not be
+# seen by the ocaml tools (compiler, toplevel, ...)
+#
 # This is the system administrator ld.conf file for ocaml
 # On Debian systems, this file is read by the ocaml-ldconf
 # tool, together with %s, to generate
 # the standard ocaml %s file.
-# See ocaml-ldconf(1) for more details.
 #
+# File format:
+#
+# <directory> { add | addafter | remove }
+#
+# 'add'       add the directory to the ocaml shared objects
+#             search path _before_ dpkg managed ones
+#
+# 'addafter'  add the directory to the ocaml shared objects
+#             search path _after_ dpkg managed ones
+#
+# 'remove'    remove the directory from the ocaml shared
+#             objects search path if it's included in the
+#             dpkg managed ones
+#
+# See ocaml-ldconf(1) for more details.
 " user_ldconf dpkg_ldconf ocaml_ldconf
 
 let dpkg_ldconf_comment = Printf.sprintf
@@ -210,7 +229,7 @@
 
 (* add directories, if those don't already exist for the given package *)
 let action_add path package =
-  if !verbose then Printf.printf "%s adds path %s to %s\n" package (string_of_list path) dpkg_ldconf;
+  Printf.printf "%s adds path %s to %s\n" package (string_of_list path) dpkg_ldconf;
   let add_list = addpath path package in
   let contents = read_file_contents dpkg_ldconf in
   let new_list = sup_list add_list contents in
@@ -218,7 +237,7 @@
 
 (* remove directories, if those exist for the given package *)
 let action_remove path package =
-  if !verbose then Printf.printf "%s removes path %s to %s\n" package (string_of_list path) dpkg_ldconf;
+  Printf.printf "%s removes path %s to %s\n" package (string_of_list path) dpkg_ldconf;
   let remove_list = addpath path package in
   let contents = read_file_contents dpkg_ldconf in
   let new_cont = sup_list contents remove_list in
@@ -226,7 +245,7 @@
 
 (* display the list of ld.conf directories if those exist *)
 let action_display () =
-  if !verbose then Printf.printf "paths found in %s:\n" ocaml_ldconf;
+  Printf.printf "paths found in %s:\n" ocaml_ldconf;
   let contents = read_file_contents ocaml_ldconf in
   let f l =
     if String.length l > 0 && l.[0] <> '#' then Printf.printf "\t%s\n" l; in
@@ -234,7 +253,7 @@
 
 (* update the ocaml_ldconf file *)
 let action_update () =
-  if !verbose then Printf.printf "updating %s\n" ocaml_ldconf;
+  Printf.printf "updating %s\n" ocaml_ldconf;
   let rec f fd lineno add_list addafter_list ignore_list =
     let f = f fd (lineno+1) in try
     let l = input_line fd in
@@ -244,14 +263,16 @@
     | dir, Remove_action -> f add_list addafter_list (ignore_list@[dir])
     | _, Comment_action -> f add_list addafter_list ignore_list
     | _, _ ->
-      begin if !verbose then Printf.eprintf "%s:%d: ignore wrong formatted line:\n  %s\n"
+      begin
+        Printf.eprintf "%s:%d: ignore wrong formatted line:\n  %s\n"
         user_ldconf lineno l end;
       f add_list addafter_list ignore_list
     with End_of_file -> close_in fd; add_list, addafter_list, ignore_list in
   let add_list, addafter_list, ignore_list = try
     let fd = open_in user_ldconf in f fd 1 [] [] []
     with Sys_error s ->
-      begin if !verbose then Printf.eprintf "Warning, %s not accesible: %s"
+      begin
+        Printf.eprintf "Warning, %s not accesible: %s"
         user_ldconf s end; [], [], [] in
   let rec f fd lineno dpkg_list =
     let f = f fd (lineno+1) in try
@@ -260,14 +281,14 @@
     | _, Comment_action -> f dpkg_list
     | dir, Add_action -> f (dpkg_list@[dir])
     | _, _ ->
-      begin if !verbose then Printf.eprintf "%s:%d: ignore wrong formatted line:\n  %s\n"
+      begin Printf.eprintf "%s:%d: ignore wrong formatted line:\n  %s\n"
         dpkg_ldconf lineno l end;
       f dpkg_list
     with End_of_file -> close_in fd; dpkg_list in
   let dpkg_list = try
     let fd = open_in dpkg_ldconf in sup_list (f fd 1 []) ignore_list
     with Sys_error s ->
-      begin if !verbose then Printf.eprintf "Warning, %s not accesible: %s"
+      begin Printf.eprintf "Warning, %s not accesible: %s"
         dpkg_ldconf s end; [] in
   write_file_contents ocaml_ldconf (ocaml_ldconf_comment::add_list@dpkg_list@addafter_list)
 
--- postrm-ocamlld.orig	Mon Jul  8 23:09:06 2002
+++ postrm-ocamlld	Mon Jul  8 23:15:07 2002
@@ -1,3 +1,10 @@
-if [ "$1" = "remove" -a -x /usr/bin/ocaml-ldconf ]; then
-	/usr/bin/ocaml-ldconf -p #PACKAGE# -r #DIR#
+if [ -x /usr/bin/ocaml-ldconf ]; then
+  case "$1" in
+    remove|upgrade)
+      /usr/bin/ocaml-ldconf -p #PACKAGE# -r #DIR#
+      ;;
+    *)
+      # do nothing
+      ;;
+  esac
 fi

Attachment: pgpGoB8lx0_XV.pgp
Description: PGP signature


Reply to: