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 +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 +--- + 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 +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 +Acked-by: Kir Kolyshkin +Acked-by: Andrew Vagin +Signed-off-by: Pavel Emelyanov +--- + 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 +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 +Signed-off-by: Pavel Emelyanov +--- + 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 - 1.1-4 +- Create -devel subpackage + * Wed Dec 11 2013 Andrew Vagin - 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 +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 +Acked-by: Cyrill Gorcunov +Acked-by: Adrian Reber +Signed-off-by: Pavel Emelyanov +--- + 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 +