commit:     120aaef2153b8f40bd902888dbbf0cf71efb86e9
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Sat May  6 00:01:12 2023 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Sat May  6 00:01:20 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=120aaef2

sys-process/criu: add 3.18

Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org>

 sys-process/criu/Manifest                          |   1 +
 sys-process/criu/criu-3.18.ebuild                  | 183 +++++++++++++++++++++
 sys-process/criu/files/criu-3.18-buildsystem.patch |  57 +++++++
 3 files changed, 241 insertions(+)

diff --git a/sys-process/criu/Manifest b/sys-process/criu/Manifest
index 17a9661b07b3..8c033e463e65 100644
--- a/sys-process/criu/Manifest
+++ b/sys-process/criu/Manifest
@@ -1 +1,2 @@
 DIST criu-3.17.tar.gz 1321713 BLAKE2B 
3bc13a7df0da0a17c74e0c12f07b81fe7f294be4d1980647b64c74e35383416ffbc10e7c04398f307bc68ff701f76a9586ea58825057b0df16b40f6aab3cbd0e
 SHA512 
febae66a7820345c0f335f4a49e64c0af5c8ae5d3a394cc0770881b64eab11ca03ad5872f06b0c4ccd1da844c519268dad3b4f8b260267e6d3f582e80d80f804
+DIST criu-3.18.tar.gz 1354367 BLAKE2B 
3e6613bc44355d4544541ec399ca462eed12203327f832e3c72ea2ccc772afbe2947f760de452b776299af36576880b189ce7583ce7f74c12225d86d1247c2ab
 SHA512 
3d15554ebd2d08c8904c23b0aba00d505891c14caa4790c2fd12ad6b20bf4058fd210f1d03fd63aacc5ad8bc47e341396b48abbeb474f1fd43c3023fd1ff9171

diff --git a/sys-process/criu/criu-3.18.ebuild 
b/sys-process/criu/criu-3.18.ebuild
new file mode 100644
index 000000000000..a87a2907ba4a
--- /dev/null
+++ b/sys-process/criu/criu-3.18.ebuild
@@ -0,0 +1,183 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+DISTUTILS_USE_PEP517=setuptools
+inherit toolchain-funcs linux-info distutils-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 
video_cards_amdgpu"
+
+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:= )
+       video_cards_amdgpu? ( x11-libs/libdrm[video_cards_amdgpu] )
+"
+DEPEND="
+       ${COMMON_DEPEND}
+"
+BDEPEND="
+       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.18-buildsystem.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() {
+       distutils-r1_src_prepare
+       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
+}
+
+criu_python() {
+       local -x \
+               CRIU_VERSION_MAJOR="$(ver_cut 1)" \
+               CRIU_VERSION_MINOR=$(ver_cut 2) \
+               CRIU_VERSION_SUBLEVEL=$(ver_cut 3)
+
+       "${@}"
+}
+
+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 Makefile.config to disable automagic deps
+       criu_use selinux
+       criu_use bpf
+       criu_use nftables
+       criu_use video_cards_amdgpu libdrm
+
+       emake_opts=(
+               SETPROCTITLE="$(usex setproctitle)"
+               NO_GNUTLS="$(usex gnutls '' '1')"
+       )
+
+       python_setup
+       pushd crit >/dev/null || die
+       criu_python distutils-r1_src_configure
+       popd >/dev/null || die
+}
+
+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[@]}" \
+               "${@}"
+}
+
+src_compile() {
+       local -a targets=(
+               all
+               $(usex doc 'docs' '')
+       )
+       criu_emake ${targets}
+
+       pushd crit >/dev/null || die
+       criu_python distutils-r1_src_compile
+       popd >/dev/null || die
+}
+
+src_test() {
+       criu_emake unittest
+}
+
+python_install() {
+       local -x \
+               CRIU_VERSION_MAJOR="$(ver_cut 1)" \
+               CRIU_VERSION_MINOR=$(ver_cut 2) \
+               CRIU_VERSION_SUBLEVEL=$(ver_cut 3)
+
+       distutils-r1_python_install
+}
+
+src_install() {
+       criu_emake DESTDIR="${D}" install
+
+       pushd crit >/dev/null || die
+       criu_python distutils-r1_src_install
+       popd >/dev/null || die
+
+       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.18-buildsystem.patch 
b/sys-process/criu/files/criu-3.18-buildsystem.patch
new file mode 100644
index 000000000000..5a4d41a3840d
--- /dev/null
+++ b/sys-process/criu/files/criu-3.18-buildsystem.patch
@@ -0,0 +1,57 @@
+diff --git a/Makefile.config b/Makefile.config
+index 270ec61c0..eed38626e 100644
+--- a/Makefile.config
++++ b/Makefile.config
+@@ -5,9 +5,6 @@ include scripts/feature-tests.mak
+ ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),true)
+         LIBS_FEATURES += -lbsd
+         FEATURE_DEFINES       += -DCONFIG_HAS_LIBBSD
+-else
+-        $(info Note: Building without setproctitle() and strlcpy() support.)
+-        $(info $(info)      To enable these features, please install 
libbsd-devel (RPM) / libbsd-dev (DEB).)
+ endif
+ 
+ ifeq ($(call pkg-config-check,libselinux),y)
+@@ -33,8 +30,6 @@ ifeq ($(NO_GNUTLS)x$(call pkg-config-check,gnutls),xy)
+         LIBS_FEATURES += -lgnutls
+         export CONFIG_GNUTLS := y
+         FEATURE_DEFINES       += -DCONFIG_GNUTLS
+-else
+-        $(info Note: Building without GnuTLS support)
+ endif
+ 
+ ifeq ($(call pkg-config-check,libnftables),y)
+@@ -49,9 +44,6 @@ ifeq ($(call pkg-config-check,libnftables),y)
+                 $(warning Warn: you have libnftables installed but it has 
incompatible API)
+                 $(warning Warn: Building without nftables support)
+         endif
+-else
+-        $(warning Warn: you have no libnftables installed)
+-        $(warning Warn: Building without nftables support)
+ endif
+ 
+ export LIBS += $(LIBS_FEATURES)
+diff --git a/lib/Makefile b/lib/Makefile
+index ff540fb75..dcac4b1ac 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -54,10 +54,6 @@ install: lib-c lib-a lib-py crit/crit lib/c/criu.pc.in
+       $(Q) mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig
+       $(Q) sed -e 's,@version@,$(CRIU_VERSION),' -e 's,@libdir@,$(LIBDIR),' 
-e 's,@includedir@,$(dir $(INCLUDEDIR)/criu/),' lib/c/criu.pc.in > lib/c/criu.pc
+       $(Q) install -m 644 lib/c/criu.pc $(DESTDIR)$(LIBDIR)/pkgconfig
+-ifeq ($(PYTHON),python3)
+-      $(E) "  INSTALL " crit
+-      $(Q) $(PYTHON) -m pip install --upgrade --force-reinstall 
--prefix=$(DESTDIR)$(PREFIX) ./crit
+-endif
+ .PHONY: install
+ 
+ uninstall:
+@@ -69,8 +65,4 @@ uninstall:
+       $(Q) $(RM) $(addprefix $(DESTDIR)$(INCLUDEDIR)/criu/,$(notdir 
$(UAPI_HEADERS)))
+       $(E) " UNINSTALL" pkgconfig/criu.pc
+       $(Q) $(RM) $(addprefix $(DESTDIR)$(LIBDIR)/pkgconfig/,criu.pc)
+-ifeq ($(PYTHON),python3)
+-      $(E) " UNINSTALL" crit
+-      $(Q) $(PYTHON) ./scripts/uninstall_module.py 
--prefix=$(DESTDIR)$(PREFIX) crit
+-endif
+ .PHONY: uninstall

Reply via email to