From 60115e0f0c0bbdfe33b2e6a068d5df854247c4effb83615f175ec87dd3cd6377 Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Thu, 16 Sep 2021 18:09:07 +0000 Subject: [PATCH] - Fix ocaml linker error due to unresolved 'rpl_free'. For comparison, see libguestfs commit 489b14b75e. fix-linker-error.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-v2v?expand=0&rev=15 --- fix-linker-error.patch | 90 ++++++++++++++++++++++++++++++++++++++++++ virt-v2v.changes | 7 ++++ virt-v2v.spec | 3 +- 3 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 fix-linker-error.patch diff --git a/fix-linker-error.patch b/fix-linker-error.patch new file mode 100644 index 0000000..b8a73e8 --- /dev/null +++ b/fix-linker-error.patch @@ -0,0 +1,90 @@ +Resolves the following error. +Similar to libguestfs commit 489b14b75e5f30010d8a8c8d3a10ecc52b629563 + +/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/ocaml/guestfs/libmlguestfs.a(libguestfsocaml_a-guestfs-c.o): in function `guestfs_finalize': +/home/abuild/rpmbuild/BUILD/libguestfs-1.44.2/ocaml/guestfs-c.c:86: undefined reference to `rpl_free' +/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /home/abuild/rpmbuild/BUILD/libguestfs-1.44.2/ocaml/guestfs-c.c:88: undefined reference to `rpl_free' +/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/ocaml/guestfs/libmlguestfs.a(libguestfsocaml_a-guestfs-c.o): in function `guestfs_int_ocaml_set_event_callback': +/home/abuild/rpmbuild/BUILD/libguestfs-1.44.2/ocaml/guestfs-c.c:239: undefined reference to `rpl_free' +/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/ocaml/guestfs/libmlguestfs.a(libguestfsocaml_a-guestfs-c.o): in function `guestfs_int_ocaml_delete_event_callback': +/home/abuild/rpmbuild/BUILD/libguestfs-1.44.2/ocaml/guestfs-c.c:266: undefined reference to `rpl_free' +/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/ocaml/guestfs/libmlguestfs.a(libguestfsocaml_a-guestfs-c.o): in function `guestfs_int_ocaml_event_to_string': +/home/abuild/rpmbuild/BUILD/libguestfs-1.44.2/ocaml/guestfs-c.c:290: undefined reference to `rpl_free' +/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/ocaml/guestfs/libmlguestfs.a(libguestfsocaml_a-guestfs-c-actions.o):/home/abuild/rpmbuild/BUILD/libguestfs-1.44.2/ocaml/guestfs-c-actions.c:1188: more undefined references to `rpl_free' follow +collect2: error: ld returned 1 exit status +File "caml_startup", line 1: +Error: Error during linking + + +Index: virt-v2v-1.44.0/gnulib/lib/free.c +=================================================================== +--- /dev/null ++++ virt-v2v-1.44.0/gnulib/lib/free.c +@@ -0,0 +1,53 @@ ++/* Make free() preserve errno. ++ ++ Copyright (C) 2003, 2006, 2009-2021 Free Software Foundation, Inc. ++ ++ This file is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as ++ published by the Free Software Foundation; either version 2.1 of the ++ License, or (at your option) any later version. ++ ++ This file is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program. If not, see . */ ++ ++/* written by Paul Eggert */ ++ ++#include ++ ++/* Specification. */ ++#include ++ ++/* A function definition is only needed if HAVE_FREE_POSIX is not defined. */ ++#if !HAVE_FREE_POSIX ++ ++# include ++ ++void ++rpl_free (void *p) ++# undef free ++{ ++# if defined __GNUC__ && !defined __clang__ ++ /* An invalid GCC optimization ++ ++ would optimize away the assignments in the code below, when link-time ++ optimization (LTO) is enabled. Make the code more complicated, so that ++ GCC does not grok how to optimize it. */ ++ int err[2]; ++ err[0] = errno; ++ err[1] = errno; ++ errno = 0; ++ free (p); ++ errno = err[errno == 0]; ++# else ++ int err = errno; ++ free (p); ++ errno = err; ++# endif ++} ++ ++#endif +Index: virt-v2v-1.44.0/gnulib/lib/Makefile.am +=================================================================== +--- virt-v2v-1.44.0.orig/gnulib/lib/Makefile.am ++++ virt-v2v-1.44.0/gnulib/lib/Makefile.am +@@ -35,7 +35,8 @@ libgnu_la_SOURCES = \ + xstrtoll.c \ + xstrtoul.c \ + xstrtoull.c \ +- xstrtoumax.c ++ xstrtoumax.c \ ++ free.c + libutils_la_CFLAGS = \ + $(WARN_CFLAGS) $(WERROR_CFLAGS) \ + $(GCC_VISIBILITY_HIDDEN) diff --git a/virt-v2v.changes b/virt-v2v.changes index d127904..dac8e2b 100644 --- a/virt-v2v.changes +++ b/virt-v2v.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Sep 16 11:58:59 MDT 2021 - carnold@suse.com + +- Fix ocaml linker error due to unresolved 'rpl_free'. For + comparison, see libguestfs commit 489b14b75e. + fix-linker-error.patch + ------------------------------------------------------------------- Fri May 7 14:34:45 MDT 2021 - carnold@suse.com diff --git a/virt-v2v.spec b/virt-v2v.spec index cb64685..197e142 100644 --- a/virt-v2v.spec +++ b/virt-v2v.spec @@ -18,7 +18,7 @@ # If there are patches which touch autotools files, set this to 1. -%global patches_touch_autotools %{nil} +%global patches_touch_autotools 1 # The source directory. %global source_directory 1.44-stable Name: virt-v2v @@ -28,6 +28,7 @@ Summary: Tools to convert a virtual machine to run on KVM License: GPL-2.0-or-later Group: System/Management URL: https://github.com/libguestfs/virt-v2v +Patch0: fix-linker-error.patch Source0: https://download.libguestfs.org/virt-v2v/%{source_directory}/%{name}-%{version}.tar.gz Source1: https://download.libguestfs.org/virt-v2v/%{source_directory}/%{name}-%{version}.tar.gz.sig BuildRequires: augeas-devel