meta-virtualization/recipes-containers/criu/criu_git.bb
Bruce Ashfield 33136f6c20 criu: update to v4.1
Along with the new commits we adjust the following:

  - refreshed patches
  - pytoml fixes for crit plugin
  - debug prefix map for cuda

Bumping criu to version v4.1, which comprises the following commits:

    b6059ff19 criu: Version 4.1 (CRISC-V)
    bc1415317 criu: fix log_keep_err signal deadlock
    0f6470944 namespace: skip cleaning up the uid/gid map in error cases
    6826ac58c ci: run tests on a nftables only system
    700a8c4b5 ci: do not run tests requiring iptables if it is missing
    f22330ff0 test: print out logs if tests fail
    29ccb5b62 test: others/rpc do not use nftables locking backend
    95729ec32 docs: mark make commands with same format as elsewhere
    2cd9d5ded docs: update INSTALL.md with a section about building CRIU
    867c77303 make: allow setting the default network locking backend
    720bf67e0 zdtm/vdso02: unmap vvar_vclock mappings
    62a4a5874 vdso: correct data types for ELF hash table sizes
    b8553d19e test/zdtm: check that PAC keys are C/R-ed
    8ae5db37b arm64: C/R PAC keys
    c5d46d86a restorer: Add a lock around cgroupd communication.
    7748b3fe7 pstree: print clone flags in error message
    d85550157 vdso: Fixes in DT_GNU_HASH handling
    ed6374b48 lsm: use the user provided lsm label
    d35808f5e ci: update to latest actions for codeql CI job
    c298b51a6 scripts/uninstall_module: import signal module
    38b9807cd coredump: enable coredump generation on arm
    da90b33a4 coredump: enable coredump generation on aarch64
    030fa4aff criu: fix internal representation of cgroups hierarchical structure
    b7fa7d304 kerndat: run iptables with -n to not resolve service names
    528c94c48 ci: install gawk for Fedora based tests
    d66bc3499 Makefile: move codespell options to .codespellrc
    8a06ca27c vdso: switch from DT_HASH to DT_GNU_HASH (aarch64)
    6710cfce1 zdtm/netns_sub_sysctl: add ipv4/ping_group_range sysctl check
    4ca74b9af net/sysctl: c/r ipv4/ping_group_range value
    9c40781c2 net/sysctl: put common multiplier outside the brackets
    d226bd4f6 ci: handle results from latest codespell
    e2dffcbc8 lib: do not set protobuf has_* field too early
    82b03429b cuda: disable CUDA plugin for pre-dump
    7f0d107fe seize: use separate checkpoint_devices function
    02056bf41 cuda: prevent task lockup on timeout error
    f83931542 net: remember the name of the lock chain (nftables)
    54795f174 criu: use libuuid for criu_run_id generation
    815ef6884 ci: two check-commits.yml changes
    061f4266e test/zdtm: add a new test to check non-periodic timers
    09dc2e958 timer: Refine itimer_armed logic and improve timer value handling
    aad66a4f7 test: fix cmdlinenv00 on aarch64
    2b7492480 files-reg: fix buffer overflow on aarch64
    6fdac5081 seize: Adjust the position of the log message
    97398068b net: redirect nftables stdout and stderr to CRIU's log file
    6dce80c53 util: added cleanup_file attribute.
    260c08418 zdtm: Check CapAmb is restored correctly after C/R
    6f8efad30 cr: Task CapAmb support
    94b9b3c5d freeze_processes: implement kludges for cgroup v1
    82f4ecda6 freeze_processes: fix logic
    99e1fbd8a criu/seize.c: clang-format it
    a8754905c test: run scm06 in the ns and uns flavors
    15c81c126 test/java: increate the ghost file limit
    dc6cef0b4 cuda: Fix return value from CHECKPOINT_DEVICES hook so that dump's fail properly
    8ee2eba47 vdso: handle vvar_vclock vma-s
    ed560a349 pidfd: add missing include
    40b7f04b7 compel/arch/riscv64: properly implement compel_task_size()
    399d7bdcb compel: fix gitignore and remove autogenerated code
    21e5f4cfd test: add get-state to mocked cuda-checkpoint tool
    28c2cb3fd cuda: enable checkpoint support for paused tasks
    498bcf280 zdtm: Check many processes with common dead pidfd
    7125bfc69 pidfd: one process creates a helper and opens all fds to it
    b1cac7a8e cuda: fix check for GPU device availability
    36a53fe23 ci: test interrupt-only mode with frozen cgroup
    4196268ee seize: enable support for frozen containers
    ff9dbef90 seize: fix error handling for check_freezer_cgroup
    622b43392 criu: Initialize util before service worker starts
    9052ef93c uffd: Disable image deduplication after fork
    2be958d22 include: don't use GCC's __builtin_ffs on riscv64
    da6b1807e ci: add workflow for riscv64
    bb29067de zdtm: add riscv64 support
    6d970ed04 criu: add riscv64 support to parasite and restorer
    1d028ef44 images: add riscv64 core image
    95359a62a compel: add riscv64 support
    d8f93e7ba include: add common header files for riscv64
    c49eb18f9 pidfd: block SIGCHLD during tmp process creation
    5ca440069 zdtm: add inventory test plugins
    5335b35f7 images/inventory: add field for enabled plugins
    b524dab32 pycriu: fix lint errors
    88aa7e2c1 make/lint: use 'ruff check <path>'
    f29e655df zdtm: Check pidfd for thread is valid after C/R
    7a64004dc zdtm: Check fd from pidfd_getfd is C/Red correctly
    2e6f34845 zdtm: Check dead pidfd is restored correctly
    3f30ec0ed zdtm: Check pidfd can kill descendant processes
    2899d4600 zdtm: Check pidfd can send signal after C/R
    3096df9ea zdtm: Check pidfd fdinfo entry is consistent
    1ce408ffa criu: Support C/R of pidfds
    3322d1e94 images: Add protobuf definition for pidfd
    4f8f6f288 Makefile.config: set CR_PLUGIN_DEFAULT variable
    f1d465448 amdgpu: remove exec permissions on source files
    c2b48ff42 criu: Version 4.0 (CRIUDA)
    a8cbe76d4 util: dump fsfd log messages
    096c1f7a4 plugins/amdgpu - Increase maximum parameter length
    60ee5ebd9 plugins/amdgpu: Zero ib_info on initialization
    691899889 plugin/cuda: disable CUDA plugin if /dev/nvidiactl isn't present
    e1331a4b6 fault: allow to check dont_use_freeze_cgroup
    651df375b criu: Allow disabling freeze cgroups
    59f49c627 codespell: fix typos
    edb6fbb82 scripts/uninstall_module: fix package discovery
    b1b3c14b1 cuda: unlock on timeout error
    dbfa45024 ci: run aarch64 tests native via actuated
    8beac656f coredump: fail on unsupported architectures early
    d44fc0de5 test: only run macvlan tests if macvlan devices can be created
    01c65732b test: better test for SELinux tools
    615ccf98c crit: do not crash on aarch64 doing 'crit x ./ rss'
    21ea718f9 plugins/amdgpu: fix printf format specifiers
    3e2ed1879 plugins/amdgpu: use C99-standard types
    d68205e91 ci: enable cross compile testing for amdgpu-plugin
    2ee584441 plugins/amdgpu: fix cross-compilation
    9a19cf34d scripts/ci: run tests with the mocked cuda-checkpoint tool
    de31abb97 criu/plugin: don't call plugin device hooks for non-alive tasks
    dea630591 test/zdtm: allow to run tests with the mocked cuda-checkpoint tool
    67fe44e98 support user set remote mmap vma address
    551cd9244 timer: fix printf specifiers for __suseconds64_t
    a045c874c ci: run tests with amdgpu and cuda plugins
    2453ed69a zdtm: add option to run tests with criu plugins
    ad66c27a1 cuda: fix launch cuda-checkpoint
    fde0b7ac6 cuda: don't leak fds to cuda-checkpoint
    4dde52a30 ci/podman: show mounts
    9a85fb638 ci/podman: show criu logs in case of error
    8437663cc delete redundant include header files
    c42b58f4f plugin: enable multiple plugins for the same hook
    85050be66 seize: fix pause-devices plugin hook
    21108b40d test/zdtm: mount a new tmpfs to the zdtm root /dev
    fcbadfbdb plugins: set executable bit on .so files
    5783706d5 docs: update amdgpu-plugin man page
    089345f77 Adjust to glibc __rseq_size semantic change
    b9081ca56 zdtm: make cgroup testcases run non-parallel
    4f45572fd util: use close_range when it's supported
    42b177da6 scripts/build: drop centos 7 targets
    181583819 vdso: proxify the __vdso_clock_gettime64 function
    ac22aaf57 apparmor: get_suspend_policy must return NULL in error cases
    71999d888 cgroupd: unblock SIGTERM to make stop_cgroupd actually work
    daed6c353 irmap: duplicate string in irmap_scan_path_add
    b169e3b63 plugins/cuda: fix crosscompilation
    ca971b7f8 compel: fix build on Amazon Linux 2 due to missing PTRACE_ARCH_PRCTL
    bf417dd05 criu/plugin: Add NVIDIA CUDA plugin
    5f486d5ae criu/plugin: Introduce new plugin hooks PAUSE_DEVICES and CHECKPOINT_DEVICES to be used during pstree collection
    1012e542e criu: Restore rseq_cs state slightly earlier in the restore sequence and run the plugin finalizer later in the dump sequence
    7ac453706 readme: update link to FAQ page
    4f15fe8c5 make: improve check for externally managed Python
    fdf546dbd ci: upgrade to Fedora 40 Vagrant images (38 is EOL)
    f17164926 test/dump-crash: check code path when dump crashes
    a252a240c zdtm: Distinguish between fail and crash of dump
    6feb57a84 ci: remove CentOS Stream 8 test (EOL)
    1da29f27f zdtm: add support for LD_PRELOAD tests
    e7276cf63 pagemap-cache: handle short reads
    cc88b1e1f net: Fix TOCTOU race condition in unix_conf_op
    457bc6a8f criu: use proper format-specified to accommodate time_t 64-bit change
    95f66d13d criu: move sigact dump/restore code into sigact.c
    9c8a6927a ci: update check for SELinux
    b3c3422cd test/make: remove unused target
    30aa8dbe4 mount: fix unbounded write
    708f872a6 sk-tcp: Add test cases for TCP_CORK and TCP_NODELAY socket options
    9ba9aff77 sk-tcp: Move TCP socket options from SkOptsEntry to TcpOptsEntry
    1cb75c0b1 sk-tcp: Move TCP socket options from TcpStreamEntry to TcpOptsEntry
    13854a988 criu: fix a fatal failure if nft doesn't work
    df178c7e5 sk-tcp: cleanup dump_tcp_conn_state error handling
    4607b5356 mem: optimize debug logging of enqueued pages
    f4290868b ci/vdso01: fix typo
    e68a06cfd ci: update actions/checkout to v4
    5aaf45021 ci: update base OS to ubuntu 22.04
    1c2a3d7fa check: verify ino and dev of overlayfs files in /proc/pid/maps
    e07ffa04b Makefile.config: fix/improve feature warnings.
    af4058871 timer: fix wrapping allignment in function declaration
    0fc83a79b ci: silence CircleCI warning about deprecated image
    52623cca1 criu: move timers dump/restore code into separate file
    231ba0cd2 zdtm/sched_policy00: use reset-on-fork flag
    75fed59ef Add support for reset-on-fork scheduling flag
    8f0e200e6 mem: fix some VMAs being incorrectly mapped wtih PROT_WRITE
    a2b018a18 ci: try to fix broken docker test
    a48aa33ea restorer: shstk: implement shadow stack restore
    7dd583002 restore: add infrastructure to enable shadow stack
    f47899c9e criu: kerndat: add kdat_has_shstk()
    2ebd1a4f0 criu: shstk: prepare shadow stack parameters for restorer blob
    4b6dda7ec criu: shstk: premap and prepopulate shadow stack VMAs
    17eda3ce5 criu: shstk: add VMA_AREA_SHSTK flag
    0aba3dcfa compel: shstk: prepare shadow stack signal frame
    63a45e1c8 compel: infect: prepare parasite_service() for addition of CET support
    6e491a19a compel: shstk: save CET state when CPU supports it
    17f4dd095 compel: always pass user_fpregs_struct_t to compel_get_task_regs()
    0b8c51eaa compiler: add ALIGN_DOWN macro
    f590c2b63 zdtm/static: check that cgroup layout of threads is preserved
    a0a6ec3dc cgroup: Add support for restoring a thread in a correct v1 cgroup
    835afb1b8 criu-ns: fix lint error
    e0b74f558 make: replace flake8 with ruff
    7fd4a15e6 pb2dict: fix flake8 error
    e0f91e66e kerndat: check support for PAGE_IS_SOFT_DIRTY
    a808f09be amdgpu_plugin: fix lint errors
    bd17bd43e sk-inet: fix codding style in restore_ip_opts
    895a16c13 zdtm: Added tests for IP_TTL restore
    71102e7f7 sk-inet: Added IP_TTL socket option
    0d5923c95 amdgpu_plugin: Refactor code used to implement Checkpoint
    733ef9631 amdgpu_plugin: Refactor code in preparation to support C&R for DRM devices
    b689a6710 plugin/amdgpu: Also don't print 'plugin failed' in criu
    59599dacd plugin/amdgpu: Don't print error for "No such process" during resume
    92e8f9293 net: return bool with iptable_has_criu_jump_target
    a62f82730 criu-log: remove unused declaration
    d2511707f zdtm: socket-tcp-nft-nfconntrack: add a hook to the chain in nft case
    afc0efcf7 pagemap-cache: add an ability to run tests without PAGEMAP_SCAN
    cb64d73ad page-cache: use the PAGEMAP_SCAN ioctl when it is available
    20628bc8a kerndat: check the PAGEMAP_SCAN ioctl
    842289c7e net: add error messages for restore of nftables
    d94251df7 test/nfconntrack: use nft or iptables-legacy
    0ab2f9e97 net: fix network unlock with iptables-nft
    d9c427d70 irmap: hardcode some more interesting paths
    b419f3dfd make: fix compilation on alpine
    7b689b7a4 gitignore: remove historical left-over files
    2d1f4ec71 ci: disable non-root in user namespace test in container
    fe8f5130c ci: fix centos-stream 9 ci errors
    6679d60ff ci: do not use 'tail' for skip-file-rwx-check test
    f86f1b849 tty: skip ioctl(TIOCSLCKTRMIOS) if possible
    8a51639e3 Makefile: Use common warnings settings for loongarch64
    37d62fa47 docker-test: downgrade docker to v24.0.7
    1004625fa docker-test: fix condition for max tries
    088390ea8 ci: switch to permissive selinux mode during test
    900909d95 test: check for btrfs in the current directory
    fc94b2d15 ci: fix rawhide netlink error
    9f9737c80 comple: correct the syscall number of bind on ARM64
    f8b14286b criu: Version 3.19 (Bronze Peacock)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2025-04-03 17:56:53 +00:00

117 lines
4.4 KiB
BlitzBasic

SUMMARY = "CRIU"
DESCRIPTION = "Checkpoint/Restore In Userspace, or CRIU, is a software tool for \
Linux operating system. Using this tool, you can freeze a running application \
(or part of it) and checkpoint it to a hard drive as a collection of files. \
You can then use the files to restore and run the application from the point \
it was frozen at. The distinctive feature of the CRIU project is that it is \
mainly implemented in user space"
HOMEPAGE = "http://criu.org"
SECTION = "console/tools"
LICENSE = "GPL-2.0-only"
EXCLUDE_FROM_WORLD = "1"
LIC_FILES_CHKSUM = "file://COPYING;md5=412de458544c1cb6a2b512cd399286e2"
SRCREV = "b6059ff193a9b0dff98e997134d662c3ccfd1600"
PV = "4.1+git"
SRC_URI = "git://github.com/checkpoint-restore/criu.git;branch=master;protocol=https \
file://0001-criu-Skip-documentation-install.patch \
file://0002-criu-Change-libraries-install-directory.patch \
file://0003-crit-pycriu-build-and-install-wheels.patch \
file://0004-pycriu-attr-pycriu.version.__version__.patch \
file://0005-pycriu-skip-dependency-check-during-build.patch \
file://0001-crit-explicity-set-PEP517_SOURCE_PATH.patch \
file://0001-plugins-cuda-pass-DEBUG_PREFIX_MAP.patch \
"
COMPATIBLE_HOST = "(x86_64|arm|aarch64).*-linux"
DEPENDS += "libnl libcap protobuf-c-native protobuf-c util-linux-native libbsd libnet python3-protobuf-native"
RDEPENDS:${PN} = "bash cgroup-lite python3-ctypes python3-fcntl python3-protobuf"
S = "${WORKDIR}/git"
#
# CRIU just can be built on ARMv7 and ARMv6, so the Makefile check
# if the ARCH is ARMv7 or ARMv6.
# ARM BSPs need set CRIU_BUILD_ARCH variable for building CRIU.
#
EXTRA_OEMAKE:arm += "ARCH=arm UNAME-M=${CRIU_BUILD_ARCH} WERROR=0"
EXTRA_OEMAKE:x86-64 += "ARCH=x86 WERROR=0"
EXTRA_OEMAKE:aarch64 += "ARCH=aarch64 WERROR=0"
EXTRA_OEMAKE:append = " SBINDIR=${sbindir} LIBDIR=${libdir} INCLUDEDIR=${includedir} PIEGEN=no"
EXTRA_OEMAKE:append = " LOGROTATEDIR=${sysconfdir} SYSTEMDUNITDIR=${systemd_unitdir}"
CFLAGS += "-D__USE_GNU -D_GNU_SOURCE "
CFLAGS += " -I${STAGING_INCDIR} -I${STAGING_INCDIR}/libnl3"
CFLAGS:append:arm = " -D__WORDSIZE"
# overide LDFLAGS to allow criu to build without: "x86_64-poky-linux-ld: unrecognized option '-Wl,-O1'"
export LDFLAGS = ""
export C_INCLUDE_PATH = "${STAGING_INCDIR}/libnl3"
export BUILD_SYS
export HOST_SYS
export HOSTCFLAGS = "${BUILD_CFLAGS}"
inherit python_setuptools_build_meta
inherit pkgconfig
B = "${S}"
PACKAGECONFIG ??= ""
PACKAGECONFIG[selinux] = ",,libselinux"
CLEANBROKEN = "1"
# WARNING: criu-3.17.1 do_package_qa: QA Issue: criu: ELF binary /usr/sbin/criu has relocations in .text [textrel]
INSANE_SKIP:${PN} += "textrel"
do_compile:prepend() {
rm -rf ${S}/images/google/protobuf/descriptor.proto
ln -s ${PKG_CONFIG_SYSROOT_DIR}/usr/include/google/protobuf/descriptor.proto ${S}/images/google/protobuf/descriptor.proto
}
do_compile () {
export DEBUG_PREFIX_MAP="${DEBUG_PREFIX_MAP}"
oe_runmake FULL_PYTHON=${PYTHON} PYTHON=nativepython3
}
do_install () {
export INSTALL_LIB="${libdir}/${PYTHON_DIR}/site-packages"
export PEP517_WHEEL_PATH="${PEP517_WHEEL_PATH}"
export USRBINPATH="${USRBINPATH}"
export PEP517_INSTALL_PYTHON="${PEP517_INSTALL_PYTHON}"
oe_runmake PREFIX=${exec_prefix} LIBDIR=${libdir} DESTDIR="${D}" PLUGINDIR="${localstatedir}/lib" FULL_PYTHON=${PYTHON} PYTHON=nativepython3 install
# python3's distutils has a feature of rewriting the interpeter on setup installed
# scripts. 'crit' is one of those scripts. The "executable" or "e" option to the
# setup call should fix it, but it is being ignored. So to avoid getting our native
# intepreter replaced in the script, we'll do an explicit update ourselves.
#
# we're building wheels now, so EGG-INFO need not apply
#sed -i 's%^\#\!.*%\#\!/usr/bin/env python3%' ${D}/usr/bin/crit ${D}${libdir}/python3*/site-packages/crit-*-py3*.egg/EGG-INFO/scripts/crit
# all the __pycache__ contains references to TMPDIR and these will be built the first time
# it runs on the target anyway
for pycachedir in $(find ${D} -name __pycache__); do
rm -rf $pycachedir
done
}
FILES:${PN} += "${systemd_unitdir}/ \
#${libdir}/python3*/site-packages/ \
#${libdir}/pycriu/ \
#${libdir}/crit-0.0.1-py3*.egg-info \
"
FILES:${PN}-staticdev += " \
${libexecdir}/compel/std.lib.a \
${libexecdir}/compel/fds.lib.a \
"