tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
ocamlmklib patch to (conditionally) properly handle RPATH (Re: xentools41 LDFLAGS Re: broken packages for 2012Q3)
On Tue, Mar 12, 2013 at 01:08:57PM +0100, Ignatios Souvatzis wrote:
> (...) Unfortunately, this doesn't solve the issue. If we do this, both the
> -L and the -Wl,-rpath path are added to the .so's rpath.
>
> That's because ocamlmklib adds the -L arguments to the rpath used later with
> -R, if they're absolute (defined for Unixoids as "starting with '/'"):
>
> From ocamlmklib:
>
> else if starts_with s "-L" then
> (c_Lopts := s :: !c_Lopts;
> let l = chop_prefix s "-L" in
> if not (Filename.is_relative l) then rpath := l :: !rpath)
I've prepared a patch for ocaml to make this conditional on not setting
a new flag, "-elfmode". (see below).
This way we can proceed for the time being until the Inria OCamL people
have decided what to do.
May I commit?
-is
? fistinfo
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/lang/ocaml/Makefile,v
retrieving revision 1.82
diff -u -r1.82 Makefile
--- Makefile 4 Mar 2013 08:52:53 -0000 1.82
+++ Makefile 13 Mar 2013 13:40:12 -0000
@@ -2,6 +2,8 @@
.include "Makefile.common"
+PKGREVISION= 1
+
CONFIGURE_ARGS+= -no-tk
CONFIGURE_ARGS+= -cc ${CC}
CONFIGURE_ENV+= disable_x11=yes
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/lang/ocaml/distinfo,v
retrieving revision 1.69
diff -u -r1.69 distinfo
--- distinfo 18 Feb 2013 16:29:28 -0000 1.69
+++ distinfo 13 Mar 2013 13:40:12 -0000
@@ -29,3 +29,4 @@
SHA1 (patch-stdlib_Makefile) = 85c89d6b9caf08056407da3564e7d2f5353b93a0
SHA1 (patch-stdlib_Makefile.shared) = 42dafb10f88b501982fb0d65c380f1fa61740f54
SHA1 (patch-tools_Makefile.shared) = 8c23fc72c627e2315451e6223946e9257c3e341d
+SHA1 (patch-tools_ocamlmklib) = 4c288c1d7e281aaee9f7ef6d7158b848b49ed2a6
Index: patches/patch-tools_ocamlmklib
===================================================================
RCS file: patches/patch-tools_ocamlmklib
diff -N patches/patch-tools_ocamlmklib
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-tools_ocamlmklib 13 Mar 2013 13:40:12 -0000
@@ -0,0 +1,41 @@
+$NetBSD$
+
+--- tools/ocamlmklib.mlp.orig 2012-07-17 18:25:54.000000000 +0000
++++ tools/ocamlmklib.mlp
+@@ -26,6 +26,7 @@ and c_objs = ref [] (* .o, .a, .
+ and caml_libs = ref [] (* -cclib to pass to ocamlc, ocamlopt *)
+ and caml_opts = ref [] (* -ccopt to pass to ocamlc, ocamlopt *)
+ and dynlink = ref supports_shared_libraries
++and elfmode = ref false (* do not add C link lib path to run-time path *)
+ and failsafe = ref false (* whether to fall back on static build only *)
+ and c_libs = ref [] (* libs to pass to mksharedlib and ocamlc -cclib
*)
+ and c_Lopts = ref [] (* options to pass to mksharedlib and ocamlc -cclib
*)
+@@ -95,8 +96,9 @@ let parse_arguments argv =
+ c_libs := s :: !c_libs
+ else if starts_with s "-L" then
+ (c_Lopts := s :: !c_Lopts;
+- let l = chop_prefix s "-L" in
+- if not (Filename.is_relative l) then rpath := l :: !rpath)
++ if not !elfmode then
++ (let l = chop_prefix s "-L" in
++ if not (Filename.is_relative l) then rpath := l :: !rpath))
+ else if s = "-ocamlc" then
+ ocamlc := next_arg ()
+ else if s = "-ocamlopt" then
+@@ -107,6 +109,8 @@ let parse_arguments argv =
+ output_c := next_arg()
+ else if s = "-dllpath" || s = "-R" || s = "-rpath" then
+ rpath := next_arg() :: !rpath
++ else if s = "-elfmode" then
++ elfmode := true
+ else if starts_with s "-R" then
+ rpath := chop_prefix s "-R" :: !rpath
+ else if s = "-Wl,-rpath" then
+@@ -150,6 +154,7 @@ Usage: ocamlmklib [options] <.cmo|.cma|.
+ \n -ccopt <opt> C option passed to ocamlc -a or ocamlopt -a only\
+ \n -custom disable dynamic loading\
+ \n -dllpath <dir> Add <dir> to the run-time search path for DLLs\
++\n -elfmode Do not add link-time search path to run-time path\
+ \n -F<dir> Specify a framework directory (MacOSX)\
+ \n -framework <name> Use framework <name> (MacOSX)\
+ \n -help Print this help message and exit\
Home |
Main Index |
Thread Index |
Old Index