diff options
Diffstat (limited to 'sys-process')
-rw-r--r-- | sys-process/criu/Manifest | 1 | ||||
-rw-r--r-- | sys-process/criu/criu-3.16.1.ebuild | 162 | ||||
-rw-r--r-- | sys-process/criu/files/criu-3.16.1-buildsystem.patch | 56 | ||||
-rw-r--r-- | sys-process/criu/metadata.xml | 4 |
4 files changed, 222 insertions, 1 deletions
diff --git a/sys-process/criu/Manifest b/sys-process/criu/Manifest index 84332204a0a5..afc75c58706a 100644 --- a/sys-process/criu/Manifest +++ b/sys-process/criu/Manifest @@ -1,2 +1,3 @@ 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 diff --git a/sys-process/criu/criu-3.16.1.ebuild b/sys-process/criu/criu-3.16.1.ebuild new file mode 100644 index 000000000000..ff46a299a4af --- /dev/null +++ b/sys-process/criu/criu-3.16.1.ebuild @@ -0,0 +1,162 @@ +# Copyright 1999-2021 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" +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" +) + +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.16.1-buildsystem.patch b/sys-process/criu/files/criu-3.16.1-buildsystem.patch new file mode 100644 index 000000000000..7b83d1c8fe51 --- /dev/null +++ b/sys-process/criu/files/criu-3.16.1-buildsystem.patch @@ -0,0 +1,56 @@ +diff --git a/Makefile.config b/Makefile.config +index 6e3e1b062..830a66e83 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) +@@ -25,8 +22,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) +@@ -41,9 +36,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 575a7bad3..af88668c5 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -58,8 +58,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 +- $(E) " INSTALL " crit +- $(Q) $(PYTHON) scripts/crit-setup.py install --prefix=$(DESTDIR)$(PREFIX) --record $(CRIT_SETUP_FILES) + .PHONY: install + + uninstall: +diff --git a/scripts/crit-setup.py b/scripts/crit-setup.py +index 871e55921..50745c294 100644 +--- a/scripts/crit-setup.py ++++ b/scripts/crit-setup.py +@@ -1,4 +1,4 @@ +-from distutils.core import setup ++from setuptools import setup + + setup(name="crit", + version="0.0.1", diff --git a/sys-process/criu/metadata.xml b/sys-process/criu/metadata.xml index fd89c4dad3f8..bec8a7d57bfc 100644 --- a/sys-process/criu/metadata.xml +++ b/sys-process/criu/metadata.xml @@ -10,6 +10,8 @@ <name>Gentoo Virtualization Project</name> </maintainer> <use> - <flag name="setproctitle">Make process titles of service workers to be more verbose</flag> + <flag name="setproctitle">Use <pkg>dev-libs/libbsd</pkg> to make process titles of service workers to be more verbose</flag> + <flag name="bpf">Add support for BPF programs via <pkg>dev-libs/libbpf</pkg></flag> + <flag name="nftables">Add support for <pkg>net-firewall/nftables</pkg></flag> </use> </pkgmetadata> |