The package rpms/ocaml-libvirt.git has added or updated architecture specific content in
its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/ocaml-libvirt.git/commit/?id=b7b9....
Change:
+%ifarch %{ocaml_native_compiler}
Thanks.
Full change:
============
commit b7b940a2e83c27e9dfecdb33761db50a6c83081d
Author: Richard W.M. Jones <rjones(a)redhat.com>
Date: Wed Nov 8 16:55:27 2017 +0000
Fix -safe-string.
diff --git a/0001-Use-safe-string-and-fix-the-library.patch
b/0001-Use-safe-string-and-fix-the-library.patch
new file mode 100644
index 0000000..448b08b
--- /dev/null
+++ b/0001-Use-safe-string-and-fix-the-library.patch
@@ -0,0 +1,76 @@
+From bab7f84ade84ceaddb08b6948792d49b3d04b897 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones(a)redhat.com>
+Date: Wed, 8 Nov 2017 16:52:58 +0000
+Subject: [PATCH] Use -safe-string and fix the library.
+
+Note this changes the type of the cpumap from string to bytes,
+since (by the design of the API) it must be mutated.
+---
+ libvirt/Makefile.in | 4 ++--
+ libvirt/libvirt.ml | 10 +++++-----
+ libvirt/libvirt.mli | 6 +++---
+ 3 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/libvirt/Makefile.in b/libvirt/Makefile.in
+index cf614fc..1eb846b 100644
+--- a/libvirt/Makefile.in
++++ b/libvirt/Makefile.in
+@@ -31,11 +31,11 @@ OCAMLMKLIB = @OCAMLMKLIB@
+
+ ifneq ($(OCAMLFIND),)
+ OCAMLCPACKAGES := -package unix
+-OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3
++OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -safe-string
+ OCAMLCLIBS := -linkpkg
+ else
+ OCAMLCINCS :=
+-OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3
++OCAMLCFLAGS := -g -warn-error CDEFLMPSUVYZX-3 -safe-string
+ OCAMLCLIBS := unix.cma
+ endif
+
+diff --git a/libvirt/libvirt.ml b/libvirt/libvirt.ml
+index d03a127..7e1e470 100644
+--- a/libvirt/libvirt.ml
++++ b/libvirt/libvirt.ml
+@@ -92,13 +92,13 @@ struct
+
+ (* See VIR_USE_CPU, VIR_UNUSE_CPU, VIR_CPU_USABLE macros defined in <libvirt.h>.
*)
+ let use_cpu cpumap cpu =
+- cpumap.[cpu/8] <-
+- Char.chr (Char.code cpumap.[cpu/8] lor (1 lsl (cpu mod 8)))
++ Bytes.set cpumap (cpu/8)
++ (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) lor (1 lsl (cpu mod 8))))
+ let unuse_cpu cpumap cpu =
+- cpumap.[cpu/8] <-
+- Char.chr (Char.code cpumap.[cpu/8] land (lnot (1 lsl (cpu mod 8))))
++ Bytes.set cpumap (cpu/8)
++ (Char.chr (Char.code (Bytes.get cpumap (cpu/8)) land (lnot (1 lsl (cpu mod 8)))))
+ let cpu_usable cpumaps maplen vcpu cpu =
+- Char.code cpumaps.[vcpu*maplen + cpu/8] land (1 lsl (cpu mod 8)) <> 0
++ Char.code (Bytes.get cpumaps (vcpu*maplen + cpu/8)) land (1 lsl (cpu mod 8))
<> 0
+
+ external set_keep_alive : [>`R] t -> int -> int -> unit =
"ocaml_libvirt_connect_set_keep_alive"
+
+diff --git a/libvirt/libvirt.mli b/libvirt/libvirt.mli
+index dc0033b..87f50f5 100644
+--- a/libvirt/libvirt.mli
++++ b/libvirt/libvirt.mli
+@@ -376,11 +376,11 @@ sig
+ CPU map between a single virtual and all physical CPUs of a domain.
+ *)
+
+- val use_cpu : string -> int -> unit
++ val use_cpu : bytes -> int -> unit
+ (** [use_cpu cpumap cpu] marks [cpu] as usable in [cpumap]. *)
+- val unuse_cpu : string -> int -> unit
++ val unuse_cpu : bytes -> int -> unit
+ (** [unuse_cpu cpumap cpu] marks [cpu] as not usable in [cpumap]. *)
+- val cpu_usable : string -> int -> int -> int -> bool
++ val cpu_usable : bytes -> int -> int -> int -> bool
+ (** [cpu_usable cpumaps maplen vcpu cpu] checks returns true iff the
+ [cpu] is usable by [vcpu]. *)
+
+--
+2.13.1
+
diff --git a/ocaml-libvirt.spec b/ocaml-libvirt.spec
index 5e93f51..ae9cdce 100644
--- a/ocaml-libvirt.spec
+++ b/ocaml-libvirt.spec
@@ -1,8 +1,6 @@
-%global opt %(test -x %{_bindir}/ocamlopt && echo 1 || echo 0)
-
Name: ocaml-libvirt
Version: 0.6.1.4
-Release: 24%{?dist}
+Release: 25%{?dist}
Summary: OCaml binding for libvirt
License: LGPLv2+
@@ -31,6 +29,9 @@ Patch8:
0003-Add-a-binding-for-virConnectGetAllDomainStats-RHBZ-1.patch
Patch9: 0004-examples-Print-more-stats-in-the-get_all_domain_stat.patch
Patch10: 0005-Change-binding-of-virConnectGetAllDomainStats-to-ret.patch
+# Upstream patch to use -safe-string.
+Patch11: 0001-Use-safe-string-and-fix-the-library.patch
+
BuildRequires: ocaml >= 3.10.0
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-findlib-devel
@@ -56,23 +57,13 @@ developing applications that use %{name}.
%prep
%setup -q
-
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
-%patch10 -p1
+%autopatch -p1
%build
%configure
make all doc
-%if %opt
+%ifarch %{ocaml_native_compiler}
make opt
%endif
@@ -83,7 +74,7 @@ export DESTDIR=$RPM_BUILD_ROOT
export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml
mkdir -p $OCAMLFIND_DESTDIR $OCAMLFIND_DESTDIR/stublibs
mkdir -p $RPM_BUILD_ROOT%{_bindir}
-%if %opt
+%ifarch %{ocaml_native_compiler}
make install-opt
%else
make install-byte
@@ -93,7 +84,7 @@ make install-byte
%files
%doc COPYING.LIB README ChangeLog
%{_libdir}/ocaml/libvirt
-%if %opt
+%ifarch %{ocaml_native_compiler}
%exclude %{_libdir}/ocaml/libvirt/*.a
%exclude %{_libdir}/ocaml/libvirt/*.cmxa
%exclude %{_libdir}/ocaml/libvirt/*.cmx
@@ -105,7 +96,7 @@ make install-byte
%files devel
%doc COPYING.LIB README TODO.libvirt ChangeLog html/*
-%if %opt
+%ifarch %{ocaml_native_compiler}
%{_libdir}/ocaml/libvirt/*.a
%{_libdir}/ocaml/libvirt/*.cmxa
%{_libdir}/ocaml/libvirt/*.cmx
@@ -114,11 +105,8 @@ make install-byte
%changelog
-* Wed Nov 08 2017 Richard W.M. Jones <rjones(a)redhat.com> - 0.6.1.4-24
-- Bump release and rebuild.
-
-* Wed Nov 08 2017 Richard W.M. Jones <rjones(a)redhat.com> - 0.6.1.4-23
-- Bump release and rebuild.
+* Wed Nov 08 2017 Richard W.M. Jones <rjones(a)redhat.com> - 0.6.1.4-25
+- Fix -safe-string.
* Tue Nov 07 2017 Richard W.M. Jones <rjones(a)redhat.com> - 0.6.1.4-22
- OCaml 4.06.0 rebuild.