From fd3d011d18ad08040b26dea807dacc0da14a97ce4c9781e48165b7fb65308922 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 18 May 2022 07:36:00 +0000 Subject: [PATCH] Accepting request 977879 from home:tiwai:branches:devel:tools - Update to criu 3.17: New features: * Introduced mount-v2 engine * Added support for MAP_HUGETLB mappings * Added support for Linux Restartable Sequences * Added support for SOCK_SEQPACKET unix sockets * CRIU AMD GPU plugin Bugfixes: * GCC 12 compatibility fixes * cgroup: fix --manage-cgroups=ignore * several memory leaks fixed in net, files, mount, tun and config subsystems * Improvements: * bpf: switch from deprecated bpf_create_map_xattr to bpf_map_create * bpfmap: handle map_extra field * setsockopt(SO_BUF_LOCK) support for tcp sockets - New criu-plugin-amdgpu sub-package for AMDGPU ROCm plugin, enabled only for x86_64 and aarch64. - Build fixes for plugins: criu-amdgpu-plugin-fix.patch - Change the plugin install path to $libdir/criu: plugin-dir-path.patch OBS-URL: https://build.opensuse.org/request/show/977879 OBS-URL: https://build.opensuse.org/package/show/devel:tools/criu?expand=0&rev=109 --- ...ftables-installed-in-different-direc.patch | 6 +-- criu-3.16.1.tar.gz | 3 -- criu-3.17.tar.gz | 3 ++ criu-amdgpu-plugin-fix.patch | 48 +++++++++++++++++++ criu.changes | 26 ++++++++++ criu.spec | 45 +++++++++++++++-- plugin-dir-path.patch | 43 +++++++++++++++++ 7 files changed, 165 insertions(+), 9 deletions(-) delete mode 100644 criu-3.16.1.tar.gz create mode 100644 criu-3.17.tar.gz create mode 100644 criu-amdgpu-plugin-fix.patch create mode 100644 plugin-dir-path.patch diff --git a/0002-Fix-build-with-nftables-installed-in-different-direc.patch b/0002-Fix-build-with-nftables-installed-in-different-direc.patch index 8fdd5f4..94af04c 100644 --- a/0002-Fix-build-with-nftables-installed-in-different-direc.patch +++ b/0002-Fix-build-with-nftables-installed-in-different-direc.patch @@ -12,7 +12,7 @@ Signed-off-by: Takashi Iwai --- a/Makefile.config +++ b/Makefile.config -@@ -30,13 +30,16 @@ else +@@ -38,13 +38,16 @@ else endif ifeq ($(call pkg-config-check,libnftables),y) @@ -31,7 +31,7 @@ Signed-off-by: Takashi Iwai else $(warning Warn: you have libnftables installed but it has incompatible API) $(warning Warn: Building without nftables support) -@@ -67,7 +70,7 @@ endif +@@ -75,7 +78,7 @@ endif endif export DEFINES += $(FEATURE_DEFINES) @@ -39,4 +39,4 @@ Signed-off-by: Takashi Iwai +export CFLAGS += $(FEATURE_DEFINES) $(FEATURE_CFLAGS) FEATURES_LIST := TCP_REPAIR STRLCPY STRLCAT PTRACE_PEEKSIGINFO \ - SETPROCTITLE_INIT MEMFD TCP_REPAIR_WINDOW FSCONFIG MEMFD_CREATE + SETPROCTITLE_INIT MEMFD TCP_REPAIR_WINDOW FSCONFIG MEMFD_CREATE OPENAT2 diff --git a/criu-3.16.1.tar.gz b/criu-3.16.1.tar.gz deleted file mode 100644 index 4d4584d..0000000 --- a/criu-3.16.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:13d6e2f99a34abf83ec2b9777af5bd069e739bf38582857c7f4c19a355a2b0b5 -size 1228535 diff --git a/criu-3.17.tar.gz b/criu-3.17.tar.gz new file mode 100644 index 0000000..241823b --- /dev/null +++ b/criu-3.17.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79744c938e33032951a41af45724be7ee9004445be8b4e4f3c59e0f7438168e7 +size 1321713 diff --git a/criu-amdgpu-plugin-fix.patch b/criu-amdgpu-plugin-fix.patch new file mode 100644 index 0000000..af65f21 --- /dev/null +++ b/criu-amdgpu-plugin-fix.patch @@ -0,0 +1,48 @@ +--- + plugins/amdgpu/Makefile | 9 +++++---- + plugins/amdgpu/kfd_ioctl.h | 2 +- + 2 files changed, 6 insertions(+), 5 deletions(-) + +--- a/plugins/amdgpu/Makefile ++++ b/plugins/amdgpu/Makefile +@@ -5,7 +5,8 @@ PLUGIN_SOBJ := amdgpu_plugin.so + PLUGIN_INCLUDE := -iquote../../../criu/include + PLUGIN_INCLUDE += -iquote../../criu/include + PLUGIN_INCLUDE += -iquote../../criu/arch/$(ARCH)/include/ +-PLUGIN_INCLUDE += -iquote../../ ++PLUGIN_INCLUDE += -iquote../../include ++PLUGIN_INCLUDE += -iquote../.. + + COMPEL := ../../compel/compel-host + LIBDRM_INC := -I/usr/include/libdrm +@@ -50,16 +51,16 @@ clean: amdgpu_plugin_clean amdgpu_plugin + mrproper: clean + + install: +- $(Q) mkdir -p $(PLUGINDIR) ++ $(Q) mkdir -p $(DESTDIR)$(PLUGINDIR) + ifeq ($(CONFIG_AMDGPU),y) + $(E) " INSTALL " $(PLUGIN_NAME) +- $(Q) install -m 644 $(PLUGIN_SOBJ) $(PLUGINDIR) ++ $(Q) install -m 644 $(PLUGIN_SOBJ) $(DESTDIR)$(PLUGINDIR) + endif + .PHONY: install + + uninstall: + ifeq ($(CONFIG_AMDGPU),y) + $(E) " UNINSTALL" $(PLUGIN_NAME) +- $(Q) $(RM) $(PLUGINDIR)/$(PLUGIN_SOBJ) ++ $(Q) $(RM) $(DESTDIR)$(PLUGINDIR)/$(PLUGIN_SOBJ) + endif + .PHONY: uninstall +--- a/plugins/amdgpu/kfd_ioctl.h ++++ b/plugins/amdgpu/kfd_ioctl.h +@@ -23,7 +23,7 @@ + #ifndef KFD_IOCTL_H_INCLUDED + #define KFD_IOCTL_H_INCLUDED + +-#include ++#include + #include + + /* diff --git a/criu.changes b/criu.changes index 4955d71..2dc7ea0 100644 --- a/criu.changes +++ b/criu.changes @@ -1,3 +1,29 @@ +------------------------------------------------------------------- +Wed May 18 07:01:20 UTC 2022 - Takashi Iwai + +- Update to criu 3.17: + New features: + * Introduced mount-v2 engine + * Added support for MAP_HUGETLB mappings + * Added support for Linux Restartable Sequences + * Added support for SOCK_SEQPACKET unix sockets + * CRIU AMD GPU plugin + Bugfixes: + * GCC 12 compatibility fixes + * cgroup: fix --manage-cgroups=ignore + * several memory leaks fixed in net, files, mount, tun and config + subsystems + * Improvements: + * bpf: switch from deprecated bpf_create_map_xattr to bpf_map_create + * bpfmap: handle map_extra field + * setsockopt(SO_BUF_LOCK) support for tcp sockets +- New criu-plugin-amdgpu sub-package for AMDGPU ROCm plugin, enabled + only for x86_64 and aarch64. +- Build fixes for plugins: + criu-amdgpu-plugin-fix.patch +- Change the plugin install path to $libdir/criu: + plugin-dir-path.patch + ------------------------------------------------------------------- Wed Dec 15 08:29:36 CET 2021 - tiwai@suse.de diff --git a/criu.spec b/criu.spec index 8cc74c5..a3ea7f7 100644 --- a/criu.spec +++ b/criu.spec @@ -1,7 +1,7 @@ # # spec file for package criu # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,10 +25,16 @@ %define _lto_cflags %{nil} %endif +%ifarch x86_64 aarch64 +%define with_amdgpu_plugin 1 +%else +%define with_amdgpu_plugin 0 +%endif + %define proto_c_ver %(protoc-c --version | head -1 | awk '{print $2}') Name: criu -Version: 3.16.1 +Version: 3.17 Release: 0 Summary: Checkpoint/Restore In Userspace Tools License: GPL-2.0-only @@ -37,7 +43,12 @@ URL: https://criu.org/ Source0: http://github.com/checkpoint-restore/criu/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz Patch1: criu-py-install-fix.diff Patch2: 0002-Fix-build-with-nftables-installed-in-different-direc.patch +Patch3: criu-amdgpu-plugin-fix.patch +Patch4: plugin-dir-path.patch BuildRequires: libcap-devel +%if %{with_amdgpu_plugin} +BuildRequires: libdrm-devel +%endif BuildRequires: libgnutls-devel BuildRequires: libnet-devel BuildRequires: libnl3-devel @@ -68,6 +79,17 @@ operating system. Using this tool, you can freeze a running application files. You can then use the files to restore and run the application from the point it was frozen at. +%if %{with_amdgpu_plugin} +%package plugin-amdgpu +Summary: AMDGPU plugin for CRIU +License: GPL-2.0-only +Group: System/Console +Requires: %{name} = %{version} + +%description plugin-amdgpu +This package contains the AMDGPU ROCm support plugin for CRIU. +%endif + %package -n libcriu2 Summary: Library for CRIU License: LGPL-2.1-only @@ -101,6 +123,8 @@ to develop applications with CRIU library. %setup -q %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 # default off echo "BINFMT_MISC_VIRTUALIZED" > .config @@ -111,7 +135,10 @@ export CFLAGS="%{optflags}" export CFLAGS="$CFLAGS -Wno-error=deprecated" %endif # WERROR=0 is needed for avoiding warning due to doubly _GNU_SOURCE defines -make V=1 %{?_smp_mflags} %{?make_options} WERROR=0 +make V=1 %{?_smp_mflags} %{?make_options} WERROR=0 \ + PREFIX=%{_prefix} \ + LIBDIR=%{_libdir} \ + LIBEXECDIR=%{_libexecdir} %install %make_install V=1 %{?make_options} WERROR=0 \ @@ -128,6 +155,10 @@ rm -f %{buildroot}%{_includedir}/compel/plugins/std/asm/.gitignore ln -s criu %{buildroot}%{_sbindir}/crtools ln -s criu.8 %{buildroot}%{_mandir}/man8/crtools.8 +%if ! %{with_amdgpu_plugin} +rm -f %{buildroot}%{_mandir}/man1/amdgpu_plugin.1 +%endif + %post -n libcriu2 -p /sbin/ldconfig %postun -n libcriu2 -p /sbin/ldconfig %post -n libcompel1 -p /sbin/ldconfig @@ -151,6 +182,14 @@ ln -s criu.8 %{buildroot}%{_mandir}/man8/crtools.8 %{python3_sitelib}/crit-*.egg-info %{python3_sitelib}/pycriu +%if %{with_amdgpu_plugin} +%files plugin-amdgpu +%doc plugins/amdgpu/README.md +%{_mandir}/man1/amdgpu_plugin.1%{?ext_man} +%dir %{_libdir}/criu +%{_libdir}/criu/amdgpu_plugin.so +%endif + %files -n libcriu2 %{_libdir}/libcriu.so.* diff --git a/plugin-dir-path.patch b/plugin-dir-path.patch new file mode 100644 index 0000000..63cd517 --- /dev/null +++ b/plugin-dir-path.patch @@ -0,0 +1,43 @@ +--- + Makefile.install | 3 ++- + criu/Makefile | 3 +++ + criu/include/plugin.h | 2 +- + 3 files changed, 6 insertions(+), 2 deletions(-) + +--- a/Makefile.install ++++ b/Makefile.install +@@ -5,9 +5,10 @@ BINDIR ?= $(PREFIX)/bin + SBINDIR ?= $(PREFIX)/sbin + MANDIR ?= $(PREFIX)/share/man + INCLUDEDIR ?= $(PREFIX)/include ++LIBDIR ?= $(PREFIX)/lib + LIBEXECDIR ?= $(PREFIX)/libexec + RUNDIR ?= /run +-PLUGINDIR ?= /var/lib/criu ++PLUGINDIR ?= $(LIBDIR)/criu + + # + # For recent Debian/Ubuntu with multiarch support. +--- a/criu/include/plugin.h ++++ b/criu/include/plugin.h +@@ -5,7 +5,7 @@ + #include "common/compiler.h" + #include "common/list.h" + +-#define CR_PLUGIN_DEFAULT "/var/lib/criu/" ++#define CR_PLUGIN_DEFAULT LIBDIR "/criu/" + + void cr_plugin_fini(int stage, int err); + int cr_plugin_init(int stage); +--- a/criu/Makefile ++++ b/criu/Makefile +@@ -29,6 +29,9 @@ CFLAGS += -iquote $(ARCH_DIR)/include + CFLAGS += -iquote . + CFLAGS += $(shell $(PKG_CONFIG) --cflags libnl-3.0) + CFLAGS += $(CONFIG-DEFINES) ++CFLAGS += -DINCLUDEDIR=\"$(INCLUDEDIR)\" ++CFLAGS += -DLIBEXECDIR=\"$(LIBEXECDIR)\" ++CFLAGS += -DLIBDIR=\"$(LIBDIR)\" + + ifeq ($(GMON),1) + CFLAGS += -pg