criu-3.15-7.el9

- add gating tests
- Related: #1970747

Signed-off-by: Jindrich Novy <jnovy@redhat.com>
This commit is contained in:
Jindrich Novy 2021-08-04 09:32:00 +02:00
parent a510146207
commit 46e263795c
6 changed files with 13 additions and 2154 deletions

52
.gitignore vendored
View File

@ -1,51 +1 @@
/crtools-0.3.tar.bz2 /*.tar.gz
/crtools-0.4.tar.bz2
/criu-0.5.tar.bz2
/criu-0.6.tar.bz2
/criu-0.7.tar.bz2
/criu-0.8.tar.bz2
/criu-1.0.tar.bz2
/criu-1.1.tar.bz2
/criu-1.2.tar.bz2
/criu-1.3.tar.bz2
/criu-1.3.1.tar.bz2
/criu-1.4.tar.bz2
/criu-1.5.tar.bz2
/criu-1.5.1.tar.bz2
/criu-1.5.2.tar.bz2
/criu-1.6.tar.bz2
/criu-1.6.1.tar.bz2
/criu-1.7.tar.bz2
/criu-1.7.2.tar.bz2
/criu-1.8.tar.bz2
/criu-2.0.tar.bz2
/criu-2.1.tar.bz2
/criu-2.2.tar.bz2
/criu-2.3.tar.bz2
/criu-2.4.tar.bz2
/criu-2.5.tar.bz2
/criu-2.6.tar.bz2
/criu-2.7.tar.bz2
/criu-2.8.tar.bz2
/criu-2.9.tar.bz2
/criu-2.10.tar.bz2
/criu-2.11.tar.bz2
/criu-2.11.1.tar.bz2
/criu-2.12.tar.bz2
/criu-3.0.tar.bz2
/criu-3.1.tar.bz2
/criu-3.2.1.tar.bz2
/criu-3.3.tar.bz2
/criu-3.4.tar.bz2
/criu-3.5.tar.bz2
/criu-3.6.tar.bz2
/criu-3.7.tar.bz2
/criu-3.8.tar.bz2
/criu-3.8.1.tar.bz2
/criu-3.9.tar.bz2
/criu-3.10.tar.bz2
/criu-3.11.tar.bz2
/criu-3.12.tar.bz2
/criu-3.13.tar.bz2
/criu-3.14.tar.bz2
/criu-3.15.tar.bz2

View File

@ -1,11 +0,0 @@
--- a/criu/aio.c 2015-07-01 11:02:50.360004543 -0400
+++ b/criu/aio.c 2015-07-01 11:03:33.099757812 -0400
@@ -74,7 +74,7 @@
* up back to the k_max_reqs.
*/
- return (k_max_reqs - 2) / 2;
+ return (k_max_reqs - 2);
}
unsigned long aio_rings_args_size(struct vm_area_list *vmas)

373
compel.1
View File

@ -1,373 +0,0 @@
'\" t
.\" Title: compel
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 09/12/2019
.\" Manual: CRIU Manual
.\" Source: criu 3.13
.\" Language: English
.\"
.TH "COMPEL" "1" "09/12/2019" "criu 3\&.13" "CRIU Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * (re)Define some macros
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" toupper - uppercase a string (locale-aware)
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de toupper
.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
\\$*
.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" SH-xref - format a cross-reference to an SH section
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de SH-xref
.ie n \{\
.\}
.toupper \\$*
.el \{\
\\$*
.\}
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" SH - level-one heading that works better for non-TTY output
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de1 SH
.\" put an extra blank line of space above the head in non-TTY output
.if t \{\
.sp 1
.\}
.sp \\n[PD]u
.nr an-level 1
.set-an-margin
.nr an-prevailing-indent \\n[IN]
.fi
.in \\n[an-margin]u
.ti 0
.HTML-TAG ".NH \\n[an-level]"
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
\." make the size of the head bigger
.ps +3
.ft B
.ne (2v + 1u)
.ie n \{\
.\" if n (TTY output), use uppercase
.toupper \\$*
.\}
.el \{\
.nr an-break-flag 0
.\" if not n (not TTY), use normal case (not uppercase)
\\$1
.in \\n[an-margin]u
.ti 0
.\" if not n (not TTY), put a border/line under subheading
.sp -.6
\l'\n(.lu'
.\}
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" SS - level-two heading that works better for non-TTY output
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de1 SS
.sp \\n[PD]u
.nr an-level 1
.set-an-margin
.nr an-prevailing-indent \\n[IN]
.fi
.in \\n[IN]u
.ti \\n[SN]u
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.ps \\n[PS-SS]u
\." make the size of the head bigger
.ps +2
.ft B
.ne (2v + 1u)
.if \\n[.$] \&\\$*
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" BB/EB - put background/screen (filled box) around block of text
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de BB
.if t \{\
.sp -.5
.br
.in +2n
.ll -2n
.gcolor red
.di BX
.\}
..
.de EB
.if t \{\
.if "\\$2"adjust-for-leading-newline" \{\
.sp -1
.\}
.br
.di
.in
.ll
.gcolor
.nr BW \\n(.lu-\\n(.i
.nr BH \\n(dn+.5v
.ne \\n(BHu+.5v
.ie "\\$2"adjust-for-leading-newline" \{\
\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
.\}
.el \{\
\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
.\}
.in 0
.sp -.5v
.nf
.BX
.in
.sp .5v
.fi
.\}
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" BM/EM - put colored marker in margin next to block of text
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de BM
.if t \{\
.br
.ll -2n
.gcolor red
.di BX
.\}
..
.de EM
.if t \{\
.br
.di
.ll
.gcolor
.nr BH \\n(dn
.ne \\n(BHu
\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
.in 0
.nf
.BX
.in
.fi
.\}
..
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "Name"
compel \- Execute parasitic code within another process\&.
.SH "Synopsis"
.sp
\fBcompel\fR \fIhgen\fR [\fIoption\fR \&...]
.sp
\fBcompel\fR \fIplugins\fR [\fIPLUGIN_NAME\fR \&...]
.sp
\fBcompel\fR [\fI\-\-compat\fR] \fIincludes\fR | \fIcflags\fR | \fIldflags\fR
.sp
\fBcompel\fR [\fI\-\-compat\fR] [\fI\-\-static\fR] \fIlibs\fR
.SH "DESCRIPTION"
.sp
\fBcompel\fR is a utility to execute arbitrary code, also called parasite code, in the context of a foreign process\&. The parasitic code, once compiled with compel flags and packed, can be executed in the context of other tasks\&. Currently there is only one way to load the parasitic blob into victim task using libcompel\&.a, called c\-header\&.
.SH "ARGUMENTS"
.SS "Positional Arguments"
.PP
\fBhgen\fR
.RS 4
create a header from the \&.po file, which is the parasite binary\&.
.RE
.PP
\fBplugins\fR
.RS 4
prints the plugins available\&.
.RE
.PP
\fBldflags\fR
.RS 4
prints the ldflags available to compel during linking of parasite code\&.
.RE
.PP
\fBcflags\fR
.RS 4
prints the compel cflags to be used during compilation of parasitic code\&.
.RE
.PP
\fBincludes\fR
.RS 4
prints list of standard include directories\&.
.RE
.PP
\fBlibs\fR
.RS 4
prints list of static or dynamic libraries that compel can link with\&.
.RE
.SH "OPTIONS"
.PP
\fB\-f\fR, \fB\-\-file\fR \fIFILE\fR
.RS 4
Path to the binary file,
\fIFILE\fR, which
\fBcompel\fR
must turn into a header
.RE
.PP
\fB\-o\fR, \fB\-\-output\fR \fIFILE\fR
.RS 4
Path to the header file,
\fIFILE\fR, where compel must write the resulting header\&.
.RE
.PP
\fB\-p\fR, \fB\-\-prefix\fR \fINAME\fR
.RS 4
Specify prefix for var names
.RE
.PP
\fB\-l\fR, \fB\-\-log\-level\fR \fINUM\fR
.RS 4
Default log level of compel\&.
.RE
.PP
\fB\-h\fR, \fB\-\-help\fR
.RS 4
Prints usage and exits\&.
.RE
.PP
\fB\-V\fR, \fB\-\-version\fR
.RS 4
Prints version number of compel\&.
.RE
.SH "SOURCE EXAMPLES"
.SS "Parasitic Code"
.sp
\fB#include <compel/plugins/std\&.h>\fR
.sp
\fBint parasite_trap_cmd(int cmd, void *args);\fR //gets called by compel_run_in_thread()
.sp
\fBint parasite_daemon_cmd(int cmd, void *arg);\fR // gets called by compel_rpc_call() and compel_rpc_call_sync()
.sp
\fBvoid parasite_cleanup(void);\fR //gets called on parasite unload by compel_cure()
.SS "Infecting code"
.sp
The parasitic code is compiled and converted to a header using \fBcompel\fR, and included here\&.
.sp
\fB#include <compel/compel\&.h>\fR
.sp
\fB#include "parasite\&.h"\fR
.sp
Following steps are perfomed to infect the victim process:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
stop the task:
\fBint compel_stop_task(int pid);\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
prepare infection handler:
\fBstruct parasite_ctl *compel_prepare(int pid);\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
execute system call:
\fBint compel_syscall(ctl, int syscall_nr, long *ret, int arg \&...);\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
infect victim:
\fBint compel_infect(ctl, nr_thread, size_of_args_area);\fR
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
cure the victim:
\fBint compel_cure(ctl);\fR
//ctl pointer is freed by this call
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Resume victim:
\fBint compel_resume_task(pid, orig_state, state);\fR
.RE
.sp
\fBctl\fR must be configured with blob information by calling \fBPREFIX_setup_c_header()\fR, with ctl as its argument\&. \fBPREFIX\fR is the argument given to \fB\-p\fR when calling hgen, else it is deduced from file name\&.
.SH "EXAMPLES"
.sp
To generate a header file(\&.h) from a parasite binary file(\&.po) use:
.sp
.if n \{\
.RS 4
.\}
.fam C
.ps -1
.nf
.BB lightgray
compel hgen \-f parasite\&.po \-o parasite\&.h
.EB lightgray
.fi
.fam
.ps +1
.if n \{\
.RE
.\}
.sp
\fIparasite\&.po\fR file is obtained by compiling the parasite source with compel flags and linking it with the compel plugins\&.
.SH "AUTHOR"
.sp
The CRIU team\&.

235
crit.1
View File

@ -1,235 +0,0 @@
'\" t
.\" Title: crit
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 04/23/2019
.\" Manual: CRIU Manual
.\" Source: criu 3.12
.\" Language: English
.\"
.TH "CRIT" "1" "04/23/2019" "criu 3\&.12" "CRIU Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * (re)Define some macros
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" toupper - uppercase a string (locale-aware)
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de toupper
.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
\\$*
.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" SH-xref - format a cross-reference to an SH section
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de SH-xref
.ie n \{\
.\}
.toupper \\$*
.el \{\
\\$*
.\}
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" SH - level-one heading that works better for non-TTY output
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de1 SH
.\" put an extra blank line of space above the head in non-TTY output
.if t \{\
.sp 1
.\}
.sp \\n[PD]u
.nr an-level 1
.set-an-margin
.nr an-prevailing-indent \\n[IN]
.fi
.in \\n[an-margin]u
.ti 0
.HTML-TAG ".NH \\n[an-level]"
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
\." make the size of the head bigger
.ps +3
.ft B
.ne (2v + 1u)
.ie n \{\
.\" if n (TTY output), use uppercase
.toupper \\$*
.\}
.el \{\
.nr an-break-flag 0
.\" if not n (not TTY), use normal case (not uppercase)
\\$1
.in \\n[an-margin]u
.ti 0
.\" if not n (not TTY), put a border/line under subheading
.sp -.6
\l'\n(.lu'
.\}
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" SS - level-two heading that works better for non-TTY output
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de1 SS
.sp \\n[PD]u
.nr an-level 1
.set-an-margin
.nr an-prevailing-indent \\n[IN]
.fi
.in \\n[IN]u
.ti \\n[SN]u
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.ps \\n[PS-SS]u
\." make the size of the head bigger
.ps +2
.ft B
.ne (2v + 1u)
.if \\n[.$] \&\\$*
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" BB/EB - put background/screen (filled box) around block of text
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de BB
.if t \{\
.sp -.5
.br
.in +2n
.ll -2n
.gcolor red
.di BX
.\}
..
.de EB
.if t \{\
.if "\\$2"adjust-for-leading-newline" \{\
.sp -1
.\}
.br
.di
.in
.ll
.gcolor
.nr BW \\n(.lu-\\n(.i
.nr BH \\n(dn+.5v
.ne \\n(BHu+.5v
.ie "\\$2"adjust-for-leading-newline" \{\
\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
.\}
.el \{\
\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
.\}
.in 0
.sp -.5v
.nf
.BX
.in
.sp .5v
.fi
.\}
..
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" BM/EM - put colored marker in margin next to block of text
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.de BM
.if t \{\
.br
.ll -2n
.gcolor red
.di BX
.\}
..
.de EM
.if t \{\
.br
.di
.ll
.gcolor
.nr BH \\n(dn
.ne \\n(BHu
\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
.in 0
.nf
.BX
.in
.fi
.\}
..
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "Name"
crit \- CRiu Image Tool
.SH "Synopsis"
.sp
\fBcrit\fR \fIdecode\fR [\-h] [\-i IN] [\-o OUT] [\-\-pretty]
.sp
\fBcrit\fR \fIencode\fR [\-h] [\-i IN] [\-o OUT]
.sp
\fBcrit\fR \fIinfo\fR [\-h] in
.sp
\fBcrit\fR \fIx\fR [\-h] dir {ps,fds,mems}
.sp
\fBcrit\fR \fIshow\fR [\-h] in
.SH "DESCRIPTION"
.sp
\fBcrit\fR is a feature\-rich replacement for existing \fBcriu\fR show\&.
.SH "ARGUMENTS"
.SS "Positional Arguments"
.PP
\fBdecode\fR
.RS 4
convert
\fBcriu\fR
image from binary type JSON
.RE
.PP
\fBencode\fR
.RS 4
convert
\fBcriu\fR
image from JSON type to binary
.RE
.PP
\fBinfo\fR
.RS 4
show info about image
.RE
.PP
\fBx\fR
.RS 4
explore image directory
.RE
.PP
\fBshow\fR
.RS 4
convert
\fBcriu\fR
image from binary to human\-readable JSON
.RE
.SS "Optional Arguments"
.PP
\fB\-h\fR, \fB\-\-help\fR
.RS 4
Print some help and exit
.RE
.SH "SEE ALSO"
.sp
criu(8)
.SH "AUTHOR"
.sp
The CRIU team

1403
criu.8

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,5 @@
%if 0%{?fedora} >= 27 || 0%{?rhel} > 7
%global py_prefix python3 %global py_prefix python3
%global py_binary %{py_prefix} %global py_binary %{py_prefix}
%else
%global py_prefix python
%global py_binary python2
%endif
# With annobin enabled, CRIU does not work anymore. It seems CRIU's # With annobin enabled, CRIU does not work anymore. It seems CRIU's
# parasite code breaks if annobin is enabled. # parasite code breaks if annobin is enabled.
@ -12,45 +7,26 @@
Name: criu Name: criu
Version: 3.15 Version: 3.15
Release: 6%{?dist} Release: 7%{?dist}
Provides: crtools = %{version}-%{release} Provides: crtools = %{version}-%{release}
Obsoletes: crtools <= 1.0-2 Obsoletes: crtools <= 1.0-2
Summary: Tool for Checkpoint/Restore in User-space Summary: Tool for Checkpoint/Restore in User-space
License: GPLv2 License: GPLv2
URL: http://criu.org/ URL: http://criu.org/
Source0: http://download.openvz.org/criu/criu-%{version}.tar.bz2 Source0: http://download.openvz.org/criu/criu-%{version}.tar.bz2
Source1: criu-tmpfiles.conf
%if 0%{?rhel} && 0%{?rhel} <= 7
BuildRequires: perl
# RHEL has no asciidoc; take man-page from Fedora 26
# zcat /usr/share/man/man8/criu.8.gz > criu.8
Source1: criu.8
Source2: crit.1
Source3: compel.1
# The patch aio-fix.patch is needed as RHEL7
# doesn't do "nr_events *= 2" in ioctx_alloc().
Patch100: aio-fix.patch
%endif
Source4: criu-tmpfiles.conf
BuildRequires: gcc BuildRequires: gcc
BuildRequires: systemd BuildRequires: systemd
BuildRequires: libnet-devel BuildRequires: libnet-devel
BuildRequires: protobuf-devel protobuf-c-devel %{py_prefix}-devel libnl3-devel libcap-devel BuildRequires: protobuf-devel protobuf-c-devel %{py_prefix}-devel libnl3-devel libcap-devel
%if 0%{?fedora} || 0%{?rhel} > 7
BuildRequires: asciidoc xmlto BuildRequires: asciidoc xmlto
BuildRequires: perl-interpreter BuildRequires: perl-interpreter
BuildRequires: libselinux-devel BuildRequires: libselinux-devel
BuildRequires: gnutls-devel BuildRequires: gnutls-devel
BuildRequires: nftables-devel
BuildRequires: make
# Checkpointing containers with a tmpfs requires tar # Checkpointing containers with a tmpfs requires tar
Recommends: tar Recommends: tar
%if 0%{?fedora}
BuildRequires: nftables-devel
BuildRequires: libbsd-devel
%endif
%endif
BuildRequires: make
# user-space and kernel changes are only available for x86_64, arm, # user-space and kernel changes are only available for x86_64, arm,
# ppc64le, aarch64 and s390x # ppc64le, aarch64 and s390x
@ -62,7 +38,6 @@ criu is the user-space part of Checkpoint/Restore in User-space
(CRIU), a project to implement checkpoint/restore functionality for (CRIU), a project to implement checkpoint/restore functionality for
Linux in user-space. Linux in user-space.
%if 0%{?fedora} || 0%{?rhel} > 8
%package devel %package devel
Summary: Header files and libraries for %{name} Summary: Header files and libraries for %{name}
Requires: %{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release}
@ -76,18 +51,12 @@ Requires: %{name} = %{version}-%{release}
%description libs %description libs
This package contains the libraries for %{name} This package contains the libraries for %{name}
%endif
%package -n %{py_prefix}-%{name} %package -n %{py_prefix}-%{name}
%{?python_provide:%python_provide %{py_prefix}-%{name}} %{?python_provide:%python_provide %{py_prefix}-%{name}}
Summary: Python bindings for %{name} Summary: Python bindings for %{name}
%if 0%{?rhel} && 0%{?rhel} <= 7
Requires: protobuf-python
Requires: %{name} = %{version}-%{release} %{py_prefix}-ipaddr
%else
Requires: %{py_prefix}-protobuf Requires: %{py_prefix}-protobuf
Obsoletes: python2-criu < 3.10-1 Obsoletes: python2-criu < 3.10-1
%endif
%description -n %{py_prefix}-%{name} %description -n %{py_prefix}-%{name}
%{py_prefix}-%{name} contains Python bindings for %{name}. %{py_prefix}-%{name} contains Python bindings for %{name}.
@ -100,69 +69,35 @@ Requires: %{py_prefix}-%{name} = %{version}-%{release}
crit is a tool designed to decode CRIU binary dump files and show crit is a tool designed to decode CRIU binary dump files and show
their content in human-readable form. their content in human-readable form.
%prep %prep
%setup -q %setup -q
%if 0%{?rhel} && 0%{?rhel} <= 7
%patch100 -p1
%endif
%build %build
# This package calls LD directly without specifying the LTO plugins. Until
# that is fixed, disable LTO.
%define _lto_cflags %{nil}
# %{?_smp_mflags} does not work # %{?_smp_mflags} does not work
# -fstack-protector breaks build # -fstack-protector breaks build
CFLAGS+=`echo %{optflags} | sed -e 's,-fstack-protector\S*,,g'` make V=1 WERROR=0 PREFIX=%{_prefix} RUNDIR=/run/criu PYTHON=%{py_binary} CFLAGS+=`echo %{optflags} | sed -e 's,-fstack-protector\S*,,g'` make V=1 WERROR=0 PREFIX=%{_prefix} RUNDIR=/run/criu PYTHON=%{py_binary}
%if 0%{?fedora} || 0%{?rhel} > 7
make docs V=1 make docs V=1
%endif
%install %install
make install-criu DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} make install-criu DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
make install-lib DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=%{py_binary} make install-lib DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=%{py_binary}
%if 0%{?fedora} || 0%{?rhel} > 7
# only install documentation on Fedora as it requires asciidoc,
# which is not available on RHEL7
make install-man DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir} make install-man DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
%else
install -p -m 644 -D %{SOURCE1} $RPM_BUILD_ROOT%{_mandir}/man8/%{name}.8
install -p -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1/crit.1
install -p -m 644 -D %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/compel.1
%endif
mkdir -p %{buildroot}%{_tmpfilesdir} mkdir -p %{buildroot}%{_tmpfilesdir}
install -m 0644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}/%{name}.conf install -m 0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf
install -d -m 0755 %{buildroot}/run/%{name}/ install -d -m 0755 %{buildroot}/run/%{name}/
%if 0%{?rhel} < 9 # remove static libs
# remove devel and libs packages rm $RPM_BUILD_ROOT%{_libdir}/*.a
rm -rf $RPM_BUILD_ROOT%{_includedir}/criu
rm $RPM_BUILD_ROOT%{_libdir}/*.so*
rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig
%endif
%if 0%{?rhel}
rm -rf $RPM_BUILD_ROOT%{_libexecdir}/%{name} rm -rf $RPM_BUILD_ROOT%{_libexecdir}/%{name}
%endif
# remove static lib
rm -f $RPM_BUILD_ROOT%{_libdir}/libcriu.a
%files %files
%{_sbindir}/%{name} %{_sbindir}/%{name}
%doc %{_mandir}/man8/criu.8* %{_mandir}/man8/criu.8*
%doc %{_mandir}/man1/compel.1* %{_mandir}/man1/compel.1*
%if 0%{?fedora}
%{_libexecdir}/%{name}
%endif
%dir /run/%{name} %dir /run/%{name}
%{_tmpfilesdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf
%doc README.md COPYING %doc README.md COPYING
%if 0%{?fedora} || 0%{?rhel} > 8
%files devel %files devel
%{_includedir}/criu %{_includedir}/criu
%{_libdir}/*.so %{_libdir}/*.so
@ -170,23 +105,19 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libcriu.a
%files libs %files libs
%{_libdir}/*.so.* %{_libdir}/*.so.*
%endif
%files -n %{py_prefix}-%{name} %files -n %{py_prefix}-%{name}
%if 0%{?rhel} && 0%{?rhel} <= 7
%{python2_sitelib}/pycriu/*
%{python2_sitelib}/*egg-info
%else
%{python3_sitelib}/pycriu/* %{python3_sitelib}/pycriu/*
%{python3_sitelib}/*egg-info %{python3_sitelib}/*egg-info
%endif
%files -n crit %files -n crit
%{_bindir}/crit %{_bindir}/crit
%doc %{_mandir}/man1/crit.1* %doc %{_mandir}/man1/crit.1*
%changelog %changelog
* Wed Aug 04 2021 Jindrich Novy <jnovy@redhat.com> - 3.15-7
- remove pre-RHEL9 hacks
* Wed May 05 2021 Adrian Reber <areber@redhat.com> - 3.15-6 * Wed May 05 2021 Adrian Reber <areber@redhat.com> - 3.15-6
- Enable criu-devel and criu-libs for RHEL 9 - Enable criu-devel and criu-libs for RHEL 9
- Remove nftables-devel dependency for now - Remove nftables-devel dependency for now