commit:     2a5e6fa4194077e9d9d3df3596ff84ea10dd91c3
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu May 19 03:16:37 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu May 19 03:16:37 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2a5e6fa4

sys-process/criu: add 3.17

Closes: https://bugs.gentoo.org/841014
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-process/criu/Manifest                          |   1 +
 sys-process/criu/criu-3.17.ebuild                  | 164 +++++++++++++++++++++
 .../criu/files/criu-3.17-amdgpu-build-fixes.patch  |  98 ++++++++++++
 3 files changed, 263 insertions(+)

diff --git a/sys-process/criu/Manifest b/sys-process/criu/Manifest
index afc75c58706a..4f343f4a67bd 100644
--- a/sys-process/criu/Manifest
+++ b/sys-process/criu/Manifest
@@ -1,3 +1,4 @@
 DIST criu-3.14.tar.bz2 881407 BLAKE2B 
418412681baf7ec9d3a03afe3860590c857bffcb6c57d01e60b77e85dd5ba2b30deee280c884ba1574665be5fcfd03f3cc058a4b7ae08f66aabe63a80373089b
 SHA512 
97d064c5ffc41daf6e89edd6208b30e4198f313afc6d621d0dc74dadf94c303be70ba448d4e1ced9500f1c65f1bd12206eb88883be398911cc2c995310b17cc6
 DIST criu-3.15.tar.bz2 913904 BLAKE2B 
2a3c7ad7ac32a407493e8908886d2929606e1dd0a1dd499be75cb954c1c4d60d0c59f0524d173dcdd89fa638e1edcc0c31886262069e3478173648ef09b4c159
 SHA512 
7bfd32053e47b95d10cdd5e99494bff6a21aa3179518179f8c72e870f0aab960dd76c9f6cb6982e5b881472cf6962eefee3cf7d8ae9128b3379bcaecc937ebbc
 DIST criu-3.16.1.tar.gz 1228535 BLAKE2B 
45aa87ee00a18b91474e767dc0326cce6c0942af7771a0c5536751361c171c86ba2065c54587e82b51fd6d7ab116e659324369955086c5237cd7fd26b60d6ce6
 SHA512 
a558af41f1927a1b1d87f8d11163a5f3d2e4f83a74aba00619b45a6d464d5477a6a0aac3c1b9d9a17e3343a4bf21a3fd6b279b51fa0c347c86c307381a4d0739
+DIST criu-3.17.tar.gz 1321713 BLAKE2B 
3bc13a7df0da0a17c74e0c12f07b81fe7f294be4d1980647b64c74e35383416ffbc10e7c04398f307bc68ff701f76a9586ea58825057b0df16b40f6aab3cbd0e
 SHA512 
febae66a7820345c0f335f4a49e64c0af5c8ae5d3a394cc0770881b64eab11ca03ad5872f06b0c4ccd1da844c519268dad3b4f8b260267e6d3f582e80d80f804

diff --git a/sys-process/criu/criu-3.17.ebuild 
b/sys-process/criu/criu-3.17.ebuild
new file mode 100644
index 000000000000..4ac0facc8cc2
--- /dev/null
+++ b/sys-process/criu/criu-3.17.ebuild
@@ -0,0 +1,164 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit toolchain-funcs linux-info python-r1
+
+DESCRIPTION="utility to checkpoint/restore a process tree"
+HOMEPAGE="
+       https://criu.org/
+       https://github.com/checkpoint-restore/
+"
+SRC_URI="https://github.com/checkpoint-restore/${PN}/archive/v${PV}/${P}.tar.gz";
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 -riscv"
+IUSE="bpf doc gnutls nftables selinux setproctitle static-libs test"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+COMMON_DEPEND="
+       ${PYTHON_DEPS}
+       >=dev-libs/protobuf-c-1.4.0:=
+       dev-libs/libnl:3=
+       net-libs/libnet:1.1=
+       sys-libs/libcap:=
+       bpf? ( dev-libs/libbpf:= )
+       gnutls? ( net-libs/gnutls:= )
+       nftables? ( net-libs/gnutls:= )
+       selinux? ( sys-libs/libselinux:= )
+       setproctitle? ( dev-libs/libbsd:= )
+"
+DEPEND="${COMMON_DEPEND}"
+BDEPEND="
+       dev-python/setuptools[${PYTHON_USEDEP}]
+       doc? (
+               app-text/asciidoc
+               app-text/xmlto
+       )
+"
+RDEPEND="
+       ${COMMON_DEPEND}
+       dev-python/protobuf-python[${PYTHON_USEDEP}]
+"
+
+CONFIG_CHECK="~CHECKPOINT_RESTORE ~NAMESPACES ~PID_NS ~FHANDLE ~EVENTFD ~EPOLL 
~INOTIFY_USER
+       ~UNIX_DIAG ~INET_DIAG ~INET_UDP_DIAG ~PACKET_DIAG ~NETLINK_DIAG ~TUN 
~NETFILTER_XT_MARK"
+
+# root access required for tests
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+       "${FILESDIR}/2.2/criu-2.2-flags.patch"
+       "${FILESDIR}/2.3/criu-2.3-no-git.patch"
+       "${FILESDIR}/criu-3.12-automagic-libbsd.patch"
+       "${FILESDIR}/criu-3.16.1-buildsystem.patch"
+
+       "${FILESDIR}/${P}-amdgpu-build-fixes.patch"
+)
+
+criu_arch() {
+       # criu infers the arch from $(uname -m).  We never want this to happen.
+       case ${ARCH} in
+               amd64) echo "x86";;
+               arm64) echo "aarch64";;
+               ppc64*) echo "ppc64";;
+               *)     echo "${ARCH}";;
+       esac
+}
+
+pkg_setup() {
+       use amd64 && CONFIG_CHECK+=" ~IA32_EMULATION"
+       linux-info_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       use doc || sed -i 's_\(install: \)install-man _\1_g' Makefile.install
+}
+
+criu_use() {
+       if ! use "${1}"; then
+               sed \
+                       -e "s:${2:-${1}}:no_${2:-lib${1}}:g" \
+                       -i Makefile.config || die
+       fi
+}
+
+src_configure() {
+       # Gold linker generates invalid object file when used with criu's custom
+       # linker script.  Use the bfd linker instead. See 
https://crbug.com/839665#c3
+       tc-ld-disable-gold
+
+       # Build system uses this variable as a trigger to append coverage flags
+       # we'd like to avoid it. https://bugs.gentoo.org/744244
+       unset GCOV
+
+       # we have to sed the Makdfile.config to disable automagic deps
+       criu_use selinux
+       criu_use bpf
+       criu_use nftables
+
+       emake_opts=(
+               SETPROCTITLE="$(usex setproctitle)"
+               NO_GNUTLS="$(usex gnutls '' '1')"
+       )
+
+       python_setup
+}
+
+criu_emake() {
+       emake \
+               AR="$(tc-getAR)" \
+               ARCH="$(criu_arch)" \
+               CC="$(tc-getCC)" \
+               FULL_PYTHON="${PYTHON%.*}" \
+               HOSTCC="$(tc-getBUILD_CC)" \
+               LD="$(tc-getLD)" \
+               LIBDIR="${EPREFIX}/usr/$(get_libdir)" \
+               LOGROTATEDIR="${EPREFIX}"/etc/logrotate.d \
+               OBJCOPY="$(tc-getOBJCOPY)" \
+               PKG_CONFIG="$(tc-getPKG_CONFIG)" \
+               PREFIX="${EPREFIX}"/usr \
+               PYTHON="${EPYTHON%.*}" \
+               V=1 WERROR=0 DEBUG=0 \
+               "${emake_opts[@]}" \
+               "${@}"
+}
+
+build_crit() {
+       "${EPYTHON}" scripts/crit-setup.py build || die
+}
+
+src_compile() {
+       local -a targets=(
+               all
+               $(usex doc 'docs' '')
+       )
+       criu_emake ${targets}
+}
+
+src_test() {
+       criu_emake unittest
+}
+
+install_crit() {
+       "${EPYTHON}" scripts/crit-setup.py install --root="${D}" 
--prefix="${EPREFIX}/usr/" || die
+       python_optimize
+}
+
+src_install() {
+       criu_emake DESTDIR="${D}" install
+       python_foreach_impl install_crit
+
+       dodoc CREDITS README.md
+
+       if ! use static-libs; then
+               find "${D}" -name "*.a" -delete || die
+       fi
+}

diff --git a/sys-process/criu/files/criu-3.17-amdgpu-build-fixes.patch 
b/sys-process/criu/files/criu-3.17-amdgpu-build-fixes.patch
new file mode 100644
index 000000000000..913737215e49
--- /dev/null
+++ b/sys-process/criu/files/criu-3.17-amdgpu-build-fixes.patch
@@ -0,0 +1,98 @@
+https://github.com/checkpoint-restore/criu/commit/cd0ed7e5491c7c827b887b2d80cf35e87819278b.patch
+https://github.com/checkpoint-restore/criu/commit/2b3763fe6a39033d4e3d3d80e28911d1737ac23b.patch
+
+From cd0ed7e5491c7c827b887b2d80cf35e87819278b Mon Sep 17 00:00:00 2001
+From: Radostin Stoyanov <[email protected]>
+Date: Sun, 15 May 2022 17:08:18 +0100
+Subject: [PATCH] amdgpu/Makefile: Fix include path
+
+When building packages for CRIU the source directory might have a
+name different than 'criu'.
+
+Fixes: #1877
+
+Reported-by: @siris
+Signed-off-by: Radostin Stoyanov <[email protected]>
+--- a/plugins/amdgpu/Makefile
++++ b/plugins/amdgpu/Makefile
+@@ -2,7 +2,7 @@ PLUGIN_NAME            := amdgpu_plugin
+ PLUGIN_SOBJ           := amdgpu_plugin.so
+ 
+ 
+-PLUGIN_INCLUDE        := -iquote../../../criu/include
++PLUGIN_INCLUDE        := -iquote../../include
+ PLUGIN_INCLUDE        += -iquote../../criu/include
+ PLUGIN_INCLUDE        += -iquote../../criu/arch/$(ARCH)/include/
+ PLUGIN_INCLUDE        += -iquote../../
+
+
+From 2b3763fe6a39033d4e3d3d80e28911d1737ac23b Mon Sep 17 00:00:00 2001
+From: Radostin Stoyanov <[email protected]>
+Date: Sun, 8 May 2022 11:07:25 +0100
+Subject: [PATCH] amdgpu: Set PLUGINDIR to /usr/lib/criu
+
+Building the criu packages for Ubuntu/Debian fails with:
+
+       mkdir: cannot create directory '/var/lib/criu': Permission denied
+
+This patch updates PLUGINDIR with the value /usr/lib/criu
+
+Fixes: #1877
+
+Signed-off-by: Radostin Stoyanov <[email protected]>
+--- a/Makefile.install
++++ b/Makefile.install
+@@ -7,7 +7,7 @@ MANDIR         ?= $(PREFIX)/share/man
+ INCLUDEDIR    ?= $(PREFIX)/include
+ LIBEXECDIR    ?= $(PREFIX)/libexec
+ RUNDIR                ?= /run
+-PLUGINDIR     ?= /var/lib/criu
++PLUGINDIR     ?= $(PREFIX)/lib/criu
+ 
+ #
+ # For recent Debian/Ubuntu with multiarch support.
+--- a/criu/include/plugin.h
++++ b/criu/include/plugin.h
+@@ -5,7 +5,9 @@
+ #include "common/compiler.h"
+ #include "common/list.h"
+ 
+-#define CR_PLUGIN_DEFAULT "/var/lib/criu/"
++#ifndef CR_PLUGIN_DEFAULT
++#define CR_PLUGIN_DEFAULT "/usr/lib/criu/"
++#endif
+ 
+ void cr_plugin_fini(int stage, int err);
+ int cr_plugin_init(int stage);
+--- a/plugins/amdgpu/Makefile
++++ b/plugins/amdgpu/Makefile
+@@ -15,7 +15,7 @@ DEPS_NOK             := ;
+ include $(__nmk_dir)msg.mk
+ 
+ CC                    := gcc
+-PLUGIN_CFLAGS                 := -g -Wall -Werror -D _GNU_SOURCE -shared 
-nostartfiles -fPIC
++PLUGIN_CFLAGS                 := -g -Wall -Werror -D _GNU_SOURCE -shared 
-nostartfiles -fPIC -DCR_PLUGIN_DEFAULT="$(PLUGINDIR)"
+ PLUGIN_LDFLAGS                := -lpthread -lrt -ldrm -ldrm_amdgpu
+ 
+ ifeq ($(CONFIG_AMDGPU),y)
+@@ -50,16 +50,16 @@ clean: amdgpu_plugin_clean amdgpu_plugin_test_clean
+ mrproper: clean
+ 
+ install:
+-      $(Q) mkdir -p $(PLUGINDIR)
+ ifeq ($(CONFIG_AMDGPU),y)
++      $(Q) mkdir -p $(DESTDIR)$(PLUGINDIR)
+       $(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
+

Reply via email to