[criu] Create -devel subpackage
Adrian Reber
adrian at fedoraproject.org
Fri Feb 7 15:21:32 UTC 2014
commit aa89a15c6b26ef2f89b625f311c9ebbe88b71443
Author: Adrian Reber <adrian at lisas.de>
Date: Fri Feb 7 16:22:00 2014 +0100
Create -devel subpackage
...x-libcriu.so-links-and-man-page-installat.patch | 49 +++++++++++
48b22f0d9578561660ae67c0cfdd66040362c9cf | 54 +++++++++++++
b0e6ebc1c7a529dfc3073c26f2a18733a1088458 | 84 ++++++++++++++++++++
criu.spec | 35 ++++++++-
f5f9fb9c0007a613273064626b87ad62ad4b5923 | 40 +++++++++
5 files changed, 260 insertions(+), 2 deletions(-)
---
diff --git a/0001-Makefile-fix-libcriu.so-links-and-man-page-installat.patch b/0001-Makefile-fix-libcriu.so-links-and-man-page-installat.patch
new file mode 100644
index 0000000..bc25e3d
--- /dev/null
+++ b/0001-Makefile-fix-libcriu.so-links-and-man-page-installat.patch
@@ -0,0 +1,49 @@
+From fd02dcdc7a0faaf972f6c9e8eda3f44b24dda337 Mon Sep 17 00:00:00 2001
+From: Adrian Reber <adrian at lisas.de>
+Date: Fri, 7 Feb 2014 16:11:50 +0100
+Subject: [PATCH] Makefile: fix libcriu.so links and man page installation
+
+The links to the versioned libcriu.so.* included $(DESTDIR) and
+$(LIBDIR) which will generate wrong links if building criu packages.
+Now the links points to the correct file without any path.
+
+For some reason criu.8 was installed with executable permission. Use
+'install' with '-m 644' to make sure this does not happen.
+
+Signed-off-by: Adrian Reber <adrian at lisas.de>
+---
+ Documentation/Makefile | 2 +-
+ Makefile | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Documentation/Makefile b/Documentation/Makefile
+index 50e4526..e236635 100644
+--- a/Documentation/Makefile
++++ b/Documentation/Makefile
+@@ -46,6 +46,6 @@ clean:
+ install: $(MANS)
+ $(E) " INSTALL " $(MANS)
+ $(Q) mkdir -p $(DESTDIR)$(MAN8DIR)
+- $(Q) install $(MANS) $(DESTDIR)$(MAN8DIR)
++ $(Q) install -m 644 $(MANS) $(DESTDIR)$(MAN8DIR)
+
+ .PHONY: clean install
+diff --git a/Makefile b/Makefile
+index 9ed45bd..a4d560a 100644
+--- a/Makefile
++++ b/Makefile
+@@ -241,9 +241,9 @@ install: $(PROGRAM) install-man
+ $(Q) mkdir -p $(DESTDIR)$(LIBDIR)
+ $(Q) install -m 755 $(CRIU-LIB) \
+ $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR)
+- $(Q) ln -s $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR) \
++ $(Q) ln -s $(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR) \
+ $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR)
+- $(Q) ln -s $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR) \
++ $(Q) ln -s $(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR) \
+ $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so
+ $(Q) mkdir -p $(DESTDIR)$(INCLUDEDIR)
+ $(Q) install -m 644 $(CRIU-INC) $(DESTDIR)$(INCLUDEDIR)
+--
+1.8.5.3
+
diff --git a/48b22f0d9578561660ae67c0cfdd66040362c9cf b/48b22f0d9578561660ae67c0cfdd66040362c9cf
new file mode 100644
index 0000000..532ec31
--- /dev/null
+++ b/48b22f0d9578561660ae67c0cfdd66040362c9cf
@@ -0,0 +1,54 @@
+From 48b22f0d9578561660ae67c0cfdd66040362c9cf Mon Sep 17 00:00:00 2001
+From: Adrian Reber <adrian at lisas.de>
+Date: Wed, 5 Feb 2014 01:05:00 +0400
+Subject: [PATCH] Makefile: Also install libcriu.so and headers
+
+To link Open MPI against CRIU I need the header files installed.
+Attached is a patch which adds the necessary Makefile rules to
+install libcriu.so and the header file to compile against CRIU.
+
+Signed-off-by: Adrian Reber <adrian at lisas.de>
+Acked-by: Kir Kolyshkin <kir at openvz.org>
+Acked-by: Andrew Vagin <avagin at parallels.com>
+Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
+---
+ Makefile | 5 +++++
+ Makefile.inc | 2 ++
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index f8ee59a..985b8c9 100644
+--- a/Makefile
++++ b/Makefile
+@@ -104,6 +104,7 @@ CFLAGS += $(WARNINGS) $(DEFINES)
+ SYSCALL-LIB := arch/$(ARCH)/syscalls.built-in.o
+ ARCH-LIB := arch/$(ARCH)/crtools.built-in.o
+ CRIU-LIB := lib/libcriu.so
++CRIU-INC := lib/criu.h include/criu-plugin.h include/criu-log.h protobuf/rpc.proto
+
+ export CC MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS
+ export SRC_DIR SYSCALL-LIB SH RM ARCH_DIR OBJCOPY LDARCH LD
+@@ -233,6 +234,10 @@ install: $(PROGRAM) install-man
+ $(E) " INSTALL " $(PROGRAM)
+ $(Q) mkdir -p $(DESTDIR)$(SBINDIR)
+ $(Q) install -m 755 $(PROGRAM) $(DESTDIR)$(SBINDIR)
++ $(Q) mkdir -p $(DESTDIR)$(LIBDIR)
++ $(Q) install -m 755 $(CRIU-LIB) $(DESTDIR)$(LIBDIR)
++ $(Q) mkdir -p $(DESTDIR)$(INCLUDEDIR)
++ $(Q) install -m 644 $(CRIU-INC) $(DESTDIR)$(INCLUDEDIR)
+ $(Q) mkdir -p $(DESTDIR)$(SYSTEMDUNITDIR)
+ $(Q) install -m 644 scripts/sd/criu.socket $(DESTDIR)$(SYSTEMDUNITDIR)
+ $(Q) install -m 644 scripts/sd/criu.service $(DESTDIR)$(SYSTEMDUNITDIR)
+diff --git a/Makefile.inc b/Makefile.inc
+index 87a267a..032a99a 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -15,3 +15,5 @@ PREFIX := /usr/local
+ SBINDIR := $(PREFIX)/sbin
+ MANDIR := $(PREFIX)/share/man
+ SYSTEMDUNITDIR := $(PREFIX)/lib/systemd/system/
++LIBDIR := $(PREFIX)/lib
++INCLUDEDIR := $(PREFIX)/include/criu
+--
+1.7.1
+
diff --git a/b0e6ebc1c7a529dfc3073c26f2a18733a1088458 b/b0e6ebc1c7a529dfc3073c26f2a18733a1088458
new file mode 100644
index 0000000..fc8052c
--- /dev/null
+++ b/b0e6ebc1c7a529dfc3073c26f2a18733a1088458
@@ -0,0 +1,84 @@
+From b0e6ebc1c7a529dfc3073c26f2a18733a1088458 Mon Sep 17 00:00:00 2001
+From: Adrian Reber <adrian at lisas.de>
+Date: Wed, 5 Feb 2014 18:28:00 +0400
+Subject: [PATCH] Makefile: add soname to libcriu.so
+
+Using a soname makes it easy for applications to
+detect if the ABI of libcriu.so has changed.
+It still creates libcriu.so as before in lib. During
+'make install' additional links are created:
+
+ libcriu.so -> libcriu.so.1.0
+ libcriu.so.1 -> libcriu.so.1.0
+
+Signed-off-by: Adrian Reber <adrian at lisas.de>
+Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
+---
+ Makefile | 15 ++++++++++++---
+ lib/Makefile | 4 ++--
+ 2 files changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 985b8c9..9ed45bd 100644
+--- a/Makefile
++++ b/Makefile
+@@ -3,8 +3,11 @@ VERSION_MINOR := 1
+ VERSION_SUBLEVEL :=
+ VERSION_EXTRA :=
+ VERSION_NAME :=
++VERSION_SO_MAJOR := 1
++VERSION_SO_MINOR := 0
+
+ export VERSION_MAJOR VERSION_MINOR VERSION_SUBLEVEL VERSION_EXTRA VERSION_NAME
++export VERSION_SO_MAJOR VERSION_SO_MINOR
+
+ #
+ # FIXME zdtm building procedure requires implicit rules
+@@ -103,10 +106,11 @@ endif
+ CFLAGS += $(WARNINGS) $(DEFINES)
+ SYSCALL-LIB := arch/$(ARCH)/syscalls.built-in.o
+ ARCH-LIB := arch/$(ARCH)/crtools.built-in.o
+-CRIU-LIB := lib/libcriu.so
++CRIU-SO := libcriu
++CRIU-LIB := lib/$(CRIU-SO).so
+ CRIU-INC := lib/criu.h include/criu-plugin.h include/criu-log.h protobuf/rpc.proto
+
+-export CC MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS
++export CC MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS CRIU-SO
+ export SRC_DIR SYSCALL-LIB SH RM ARCH_DIR OBJCOPY LDARCH LD
+ export cflags-y
+
+@@ -235,7 +239,12 @@ install: $(PROGRAM) install-man
+ $(Q) mkdir -p $(DESTDIR)$(SBINDIR)
+ $(Q) install -m 755 $(PROGRAM) $(DESTDIR)$(SBINDIR)
+ $(Q) mkdir -p $(DESTDIR)$(LIBDIR)
+- $(Q) install -m 755 $(CRIU-LIB) $(DESTDIR)$(LIBDIR)
++ $(Q) install -m 755 $(CRIU-LIB) \
++ $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR)
++ $(Q) ln -s $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR) \
++ $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR)
++ $(Q) ln -s $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so.$(VERSION_SO_MAJOR).$(VERSION_SO_MINOR) \
++ $(DESTDIR)$(LIBDIR)/$(CRIU-SO).so
+ $(Q) mkdir -p $(DESTDIR)$(INCLUDEDIR)
+ $(Q) install -m 644 $(CRIU-INC) $(DESTDIR)$(INCLUDEDIR)
+ $(Q) mkdir -p $(DESTDIR)$(SYSTEMDUNITDIR)
+diff --git a/lib/Makefile b/lib/Makefile
+index e9beace..aec6d84 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -1,10 +1,10 @@
+-lib-so += libcriu
++lib-so += $(CRIU-SO)
+ obj-y += criu.o
+ obj-ext-src-y += protobuf/rpc.pb-c.o
+
+ includes += -iquote $(obj)/../arch/$(ARCH)/include -iquote $(obj)/../include -iquote $(obj)/.. -iquote $(obj)/../protobuf
+ cflags-y += $(includes) -fPIC -Wa,--noexecstack -fno-stack-protector
+-cflags-so += -rdynamic
++cflags-so += -rdynamic -Wl,-soname,$(lib-so).so.$(VERSION_SO_MAJOR)
+ ldflags-so += -lprotobuf-c
+
+ .SECONDARY:
+--
+1.7.1
+
diff --git a/criu.spec b/criu.spec
index 0dde98f..61893b1 100644
--- a/criu.spec
+++ b/criu.spec
@@ -1,6 +1,6 @@
Name: criu
Version: 1.1
-Release: 3%{?dist}
+Release: 4%{?dist}
Provides: crtools = %{version}-%{release}
Obsoletes: crtools <= 1.0-2
Summary: Tool for Checkpoint/Restore in User-space
@@ -9,6 +9,11 @@ License: GPLv2
URL: http://criu.org/
Source0: http://download.openvz.org/criu/criu-%{version}.tar.bz2
Patch0: ptrace_peeksiginfo_args.patch
+Patch1: http://git.criu.org/?p=criu.git;a=patch;h=48b22f0d9578561660ae67c0cfdd66040362c9cf
+Patch2: http://git.criu.org/?p=criu.git;a=patch;h=f5f9fb9c0007a613273064626b87ad62ad4b5923
+Patch3: http://git.criu.org/?p=criu.git;a=patch;h=b0e6ebc1c7a529dfc3073c26f2a18733a1088458
+Patch4: 0001-Makefile-fix-libcriu.so-links-and-man-page-installat.patch
+
BuildRequires: protobuf-c-devel asciidoc xmlto
@@ -23,10 +28,24 @@ criu is the user-space part of Checkpoint/Restore in User-space
(CRIU), a project to implement checkpoint/restore functionality for
Linux in user-space.
+%package devel
+Summary: Header files and libraries for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+This package contains header files and libraries for %{name}.
+
%prep
%setup -q -n criu-%{version}
+%if 0%{fedora} > 20
%patch0 -p1
+%endif
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%build
# %{?_smp_mflags} does not work
@@ -36,20 +55,32 @@ make docs V=1
%install
-make install DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix}
+make install DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
# upstream renamed to binary to criu
ln -s %{_sbindir}/criu $RPM_BUILD_ROOT%{_sbindir}/crtools
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
%files
%{_sbindir}/%{name}
%{_sbindir}/crtools
%{_mandir}/man8/*
%{_unitdir}/criu.service
%{_unitdir}/criu.socket
+%{_libdir}/*.so.*
%doc README COPYING
+%files devel
+%{_includedir}/criu
+%{_libdir}/*.so
+
+
%changelog
+* Tue Feb 04 2014 Adrian Reber <adrian at lisas.de> - 1.1-4
+- Create -devel subpackage
+
* Wed Dec 11 2013 Andrew Vagin <avagin at openvz.org> - 1.0-3
- Fix the epoch of crtools
diff --git a/f5f9fb9c0007a613273064626b87ad62ad4b5923 b/f5f9fb9c0007a613273064626b87ad62ad4b5923
new file mode 100644
index 0000000..fe8f1c0
--- /dev/null
+++ b/f5f9fb9c0007a613273064626b87ad62ad4b5923
@@ -0,0 +1,40 @@
+From f5f9fb9c0007a613273064626b87ad62ad4b5923 Mon Sep 17 00:00:00 2001
+From: Kir Kolyshkin <kir at openvz.org>
+Date: Fri, 7 Feb 2014 15:31:34 +0400
+Subject: [PATCH] make install: guess LIBDIR
+
+For x86_64, LIBDIR can be tricky to find out. Nevertheless, this
+works for at least RedHat/CentOS/Fedora, SLES/openSUSE, Debian/Ubuntu
+and Gentoo. So, while it can guess LIBDIR wrong, this is still
+a good approximation for those installing criu from source.
+
+Signed-off-by: Kir Kolyshkin <kir at openvz.org>
+Acked-by: Cyrill Gorcunov <gorcunov at openvz.org>
+Acked-by: Adrian Reber <adrian at lisas.de>
+Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
+---
+ Makefile.inc | 10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index 032a99a..49cee8f 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -16,4 +16,14 @@ SBINDIR := $(PREFIX)/sbin
+ MANDIR := $(PREFIX)/share/man
+ SYSTEMDUNITDIR := $(PREFIX)/lib/systemd/system/
+ LIBDIR := $(PREFIX)/lib
++# For recent Debian/Ubuntu with multiarch support
++DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture \
++ -qDEB_HOST_MULTIARCH 2>/dev/null)
++ifneq "$(DEB_HOST_MULTIARCH)" ""
++LIBDIR := $(PREFIX)/lib/$(DEB_HOST_MULTIARCH)
++# For most other systems
++else ifeq "$(shell uname -m)" "x86_64"
++LIBDIR := $(PREFIX)/lib64
++endif
++
+ INCLUDEDIR := $(PREFIX)/include/criu
+--
+1.7.1
+
More information about the scm-commits
mailing list