mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-30 14:01:57 -09:00
package/criu: new package
Checkpoint/Restore In Userspace (CRIU), is a software tool for the Linux operating system to make it possible to freeze a running application and checkpoint it to persistent storage as a collection of files. Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> [yann.morin.1998@free.fr: - BR2_ARM_CPU_ARMV8M does not exist - BR2_BR2_powerpc64le misspelled - move all arch dependencies to BR2_PACKAGE_CRIU_ARCH_SUPPORTS - comment hidden with arch dependencies - select host-python3, don't depend on it - extend legal-info: LPLG-2.1 for lib/, MIT for images/ - PREFIX is also used at compile time for PLUGINDIR - copy .proto file, rather than symlinking - wrap long lines ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
committed by
Yann E. MORIN
parent
a96361901d
commit
3e4b479f39
@@ -2008,6 +2008,7 @@ F: support/testing/tests/package/test_python_pytest.py
|
|||||||
F: support/testing/tests/package/test_python_pytest_asyncio.py
|
F: support/testing/tests/package/test_python_pytest_asyncio.py
|
||||||
|
|
||||||
N: Marcus Folkesson <marcus.folkesson@gmail.com>
|
N: Marcus Folkesson <marcus.folkesson@gmail.com>
|
||||||
|
F: package/criu/
|
||||||
F: package/libcamera/
|
F: package/libcamera/
|
||||||
F: package/libcamera-apps/
|
F: package/libcamera-apps/
|
||||||
F: package/libostree/
|
F: package/libostree/
|
||||||
|
|||||||
@@ -2679,6 +2679,7 @@ menu "System tools"
|
|||||||
source "package/coreutils/Config.in"
|
source "package/coreutils/Config.in"
|
||||||
source "package/cpulimit/Config.in"
|
source "package/cpulimit/Config.in"
|
||||||
source "package/cpuload/Config.in"
|
source "package/cpuload/Config.in"
|
||||||
|
source "package/criu/Config.in"
|
||||||
source "package/crun/Config.in"
|
source "package/crun/Config.in"
|
||||||
source "package/daemon/Config.in"
|
source "package/daemon/Config.in"
|
||||||
source "package/dc3dd/Config.in"
|
source "package/dc3dd/Config.in"
|
||||||
|
|||||||
53
package/criu/Config.in
Normal file
53
package/criu/Config.in
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# criu only builds on certain architectures
|
||||||
|
config BR2_PACKAGE_CRIU_ARCH_SUPPORTS
|
||||||
|
bool
|
||||||
|
default y if BR2_ARM_CPU_ARMV6
|
||||||
|
default y if BR2_ARM_CPU_ARMV7A
|
||||||
|
default y if BR2_ARM_CPU_ARMV7M
|
||||||
|
default y if BR2_ARM_CPU_ARMV8A
|
||||||
|
default y if BR2_aarch64
|
||||||
|
default y if BR2_i386
|
||||||
|
default y if BR2_mips
|
||||||
|
default y if BR2_x86_64
|
||||||
|
default y if BR2_powerpc64le # Only support powerpc64 with LE
|
||||||
|
# CRIU has "some" support for s390 but it is not included due to
|
||||||
|
# BE/LE endian issues.
|
||||||
|
depends on BR2_USE_MMU # libcap
|
||||||
|
depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
|
||||||
|
depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
|
||||||
|
depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS
|
||||||
|
|
||||||
|
config BR2_PACKAGE_CRIU
|
||||||
|
bool "criu"
|
||||||
|
depends on BR2_PACKAGE_CRIU_ARCH_SUPPORTS
|
||||||
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # -march=armv7-a+fp
|
||||||
|
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 # rseq.h
|
||||||
|
depends on !BR2_TOOLCHAIN_USES_UCLIBC # no aio.h
|
||||||
|
depends on !BR2_STATIC_LIBS # protobuf, libbsd
|
||||||
|
depends on BR2_INSTALL_LIBSTDCPP # protobuf
|
||||||
|
depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf, libnl
|
||||||
|
depends on BR2_USE_WCHAR # libbsd
|
||||||
|
select BR2_PACKAGE_HOST_PYTHON3
|
||||||
|
select BR2_PACKAGE_HOST_PYTHON3_SSL
|
||||||
|
select BR2_PACKAGE_PROTOBUF
|
||||||
|
select BR2_PACKAGE_PROTOBUF_C
|
||||||
|
select BR2_PACKAGE_LIBAIO
|
||||||
|
select BR2_PACKAGE_LIBBSD
|
||||||
|
select BR2_PACKAGE_LIBCAP
|
||||||
|
select BR2_PACKAGE_LIBNET
|
||||||
|
select BR2_PACKAGE_LIBNL
|
||||||
|
select BR2_PACKAGE_PYTHON3
|
||||||
|
help
|
||||||
|
Checkpoint/Restore In Userspace (CRIU), is a software
|
||||||
|
tool for the Linux operating system to make it possible
|
||||||
|
to freeze a running application and checkpoint it to
|
||||||
|
persistent storage as a collection of files.
|
||||||
|
|
||||||
|
https://criu.org/Main_Page
|
||||||
|
|
||||||
|
comment "criu needs a glibc or musl toolchain w/ threads, gcc >= 8, headers >= 4.18, dynamic library, wchar"
|
||||||
|
depends on BR2_PACKAGE_CRIU_ARCH_SUPPORTS
|
||||||
|
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || !BR2_TOOLCHAIN_HAS_THREADS \
|
||||||
|
|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 \
|
||||||
|
|| BR2_TOOLCHAIN_USES_UCLIBC \
|
||||||
|
|| BR2_STATIC_LIBS || !BR2_USE_WCHAR
|
||||||
3
package/criu/criu.hash
Normal file
3
package/criu/criu.hash
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Locally calculated
|
||||||
|
sha256 6a9997981c9fe4730c848ce59346b3a22fad69b803607cb67a3f6ec0557fa474 criu-3.18.tar.gz
|
||||||
|
sha256 568a1fa9d90e18a1a1a61ea58ec2eece16b56a5042cc72c1b4f8d4455ae6fcb7 COPYING
|
||||||
77
package/criu/criu.mk
Normal file
77
package/criu/criu.mk
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# CRIU
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
CRIU_VERSION = 3.18
|
||||||
|
CRIU_SITE = $(call github,checkpoint-restore,criu,v$(CRIU_VERSION))
|
||||||
|
|
||||||
|
CRIU_LICENSE = GPL-2.0, LGPL-2.1 (for lib/), MIT (for images/)
|
||||||
|
CRIU_LICENSE_FILES = COPYING images/LICENSE
|
||||||
|
|
||||||
|
CRIU_DEPENDENCIES =\
|
||||||
|
host-pkgconf \
|
||||||
|
host-protobuf-c \
|
||||||
|
host-python3 \
|
||||||
|
host-python-pip \
|
||||||
|
libaio \
|
||||||
|
libbsd \
|
||||||
|
libcap \
|
||||||
|
libnet \
|
||||||
|
libnl \
|
||||||
|
protobuf \
|
||||||
|
protobuf-c \
|
||||||
|
python3
|
||||||
|
|
||||||
|
CRIU_MAKE_ENV =\
|
||||||
|
$(TARGET_MAKE_ENV) \
|
||||||
|
$(TARGET_CONFIGURE_OPTS) \
|
||||||
|
CROSS_COMPILE=$(TARGET_CROSS) \
|
||||||
|
WERROR=0
|
||||||
|
|
||||||
|
# Remap to match the used in criu.
|
||||||
|
ifeq ($(BR2_NORMALIZED_ARCH),"x86_64")
|
||||||
|
CRIU_MAKE_ENV += ARCH=x86
|
||||||
|
else ifeq ($(BR2_NORMALIZED_ARCH),"powerpc")
|
||||||
|
CRIU_MAKE_ENV += ARCH=ppc64
|
||||||
|
else ifeq ($(BR2_NORMALIZED_ARCH),"arm64")
|
||||||
|
CRIU_MAKE_ENV += ARCH=aarch64
|
||||||
|
else
|
||||||
|
CRIU_MAKE_ENV += ARCH=$(BR2_NORMALIZED_ARCH)
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BR2_ARM_CPU_ARMV6),y)
|
||||||
|
CRIU_MAKE_ENV += SUBARCH=armv6
|
||||||
|
else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
|
||||||
|
CRIU_MAKE_ENV += SUBARCH=armv7
|
||||||
|
else ifeq ($(BR2_ARM_CPU_ARMV7M),y)
|
||||||
|
CRIU_MAKE_ENV += SUBARCH=armv7
|
||||||
|
else ifeq ($(BR2_ARM_CPU_ARMV8A),y)
|
||||||
|
CRIU_MAKE_ENV += SUBARCH=armv8
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Criu needs Kernel Checkpoint/restore support which is not enabled
|
||||||
|
# by default.
|
||||||
|
define CRIU_LINUX_CONFIG_FIXUPS
|
||||||
|
$(call KCONFIG_ENABLE_OPT,CONFIG_CHECKPOINT_RESTORE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define CRIU_BUILD_CMDS
|
||||||
|
rm -rf $(@D)/images/google/protobuf/descriptor.proto
|
||||||
|
cp -a $(STAGING_DIR)/usr/include/google/protobuf/descriptor.proto \
|
||||||
|
$(@D)/images/google/protobuf/descriptor.proto
|
||||||
|
$(CRIU_MAKE_ENV) $(MAKE) -C $(@D) \
|
||||||
|
PREFIX=/usr
|
||||||
|
endef
|
||||||
|
|
||||||
|
define CRIU_INSTALL_TARGET_CMDS
|
||||||
|
$(CRIU_MAKE_ENV) $(MAKE) -C $(@D) \
|
||||||
|
PREFIX=/usr \
|
||||||
|
DESTDIR=$(TARGET_DIR) \
|
||||||
|
install-criu \
|
||||||
|
install-lib \
|
||||||
|
install-compel
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
||||||
Reference in New Issue
Block a user