guix-commits
[Top][All Lists]
Advanced

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

01/03: gnu: ocaml@4.07: Fix link failure.


From: guix-commits
Subject: 01/03: gnu: ocaml@4.07: Fix link failure.
Date: Thu, 5 Aug 2021 09:47:15 -0400 (EDT)

civodul pushed a commit to branch core-updates-frozen
in repository guix.

commit 1d580f47a9f3b9a0ff9cbb490ff9db7388d74952
Author: Ludovic Courtès <ludovic.courtes@inria.fr>
AuthorDate: Thu Aug 5 15:19:20 2021 +0200

    gnu: ocaml@4.07: Fix link failure.
    
    The link failure shows up when using ld from GNU Binutils 2.37, and not
    with 2.34.
    
    * gnu/packages/patches/ocaml-multiple-definitions.patch: New file.
    * gnu/packages/ocaml.scm (ocaml-4.07-boot)[source]: Use it.
    * gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/ocaml.scm                             |  1 +
 .../patches/ocaml-multiple-definitions.patch       | 43 ++++++++++++++++++++++
 3 files changed, 45 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index a0f320d..8b75405 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1485,6 +1485,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch    \
   %D%/packages/patches/ocaml-dose3-dont-make-printconf.patch   \
   %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch   \
+  %D%/packages/patches/ocaml-multiple-definitions.patch                \
   %D%/packages/patches/omake-fix-non-determinism.patch \
   %D%/packages/patches/oneko-remove-nonfree-characters.patch   \
   %D%/packages/patches/onnx-use-system-googletest.patch        \
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 8137eb1..92c1704 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -275,6 +275,7 @@ functional, imperative and object-oriented styles of 
programming.")
               (sha256
                (base32
                 "1f07hgj5k45cylj1q3k5mk8yi02cwzx849b1fwnwia8xlcfqpr6z"))
+              (patches (search-patches "ocaml-multiple-definitions.patch"))
               (modules '((guix build utils)))
               (snippet
                `(begin
diff --git a/gnu/packages/patches/ocaml-multiple-definitions.patch 
b/gnu/packages/patches/ocaml-multiple-definitions.patch
new file mode 100644
index 0000000..e8678f4
--- /dev/null
+++ b/gnu/packages/patches/ocaml-multiple-definitions.patch
@@ -0,0 +1,43 @@
+Avoid multiply-defined symbols that lead to link errors such as:
+
+  gcc -O2 -fno-strict-aliasing -fwrapv -Wall -fno-tree-vrp  -g 
-D_FILE_OFFSET_BITS=64 -D_REENTRANT -DCAML_NAME_SPACE  -Wl,-E -o ocamlruni 
prims.o libcamlruni.a -lm  -ldl -lpthread 
+  ld: 
libcamlruni.a(backtrace.i.o):/tmp/guix-build-ocaml-4.07.1.drv-0/ocaml-4.07.1/byterun/backtrace.c:31:
 multiple definition of `caml_debug_info'; 
libcamlruni.a(backtrace_prim.i.o):/tmp/guix-build-ocaml-4.07.1.drv-0/ocaml-4.07.1/byterun/backtrace_prim.c:47:
 first defined here
+
+diff --git a/asmrun/startup.c b/asmrun/startup.c
+index 070f0c6..cf8a56f 100644
+--- a/asmrun/startup.c
++++ b/asmrun/startup.c
+@@ -44,7 +44,6 @@
+ #endif
+ 
+ extern int caml_parser_trace;
+-CAMLexport header_t caml_atom_table[256];
+ char * caml_code_area_start, * caml_code_area_end;
+ struct ext_table caml_code_fragments_table;
+ 
+diff --git a/byterun/backtrace.c b/byterun/backtrace.c
+index 8dfe9b7..9cc9e72 100644
+--- a/byterun/backtrace.c
++++ b/byterun/backtrace.c
+@@ -28,7 +28,7 @@
+ #include "caml/fail.h"
+ 
+ /* The table of debug information fragments */
+-struct ext_table caml_debug_info;
++static struct ext_table caml_debug_info;
+ 
+ CAMLexport int32_t caml_backtrace_active = 0;
+ CAMLexport int32_t caml_backtrace_pos = 0;
+diff --git a/byterun/backtrace_prim.c b/byterun/backtrace_prim.c
+index e69b256..d794f73 100644
+--- a/byterun/backtrace_prim.c
++++ b/byterun/backtrace_prim.c
+@@ -44,7 +44,7 @@
+ #include "caml/backtrace_prim.h"
+ 
+ /* The table of debug information fragments */
+-struct ext_table caml_debug_info;
++static struct ext_table caml_debug_info;
+ 
+ CAMLexport char_os * caml_cds_file = NULL;
+ 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]