From 42256835f74c6385d941e262dcdbfa816af5f01e Mon Sep 17 00:00:00 2001 From: Sam James Date: Wed, 12 Apr 2023 08:56:26 +0100 Subject: dev-util/rr: drop epoll_pwait2 backport I only chucked it in because I (wrongly) thought it was needed for the GCC 13 workaround to cleanly apply, but it isn't. I was just confused by the spelling commit thing. We could keep this but as jubalh points out, there's a bunch of subsequent commits that fixup and enhance epoll_pwait2 support, so let's just leave it for now & drop it. I've also asked upstream if there's a release forthcoming & such, so let's see what happens with that. Bug: https://github.com/rr-debugger/rr/issues/3494 Fixes: f5e0ac5711c94279073106adf04977cb07db37c7 Signed-off-by: Sam James --- dev-util/rr/files/rr-5.6.0-epoll_pwait2.patch | 78 ----------------------- dev-util/rr/rr-5.6.0-r3.ebuild | 89 --------------------------- dev-util/rr/rr-5.6.0-r4.ebuild | 88 ++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 167 deletions(-) delete mode 100644 dev-util/rr/files/rr-5.6.0-epoll_pwait2.patch delete mode 100644 dev-util/rr/rr-5.6.0-r3.ebuild create mode 100644 dev-util/rr/rr-5.6.0-r4.ebuild diff --git a/dev-util/rr/files/rr-5.6.0-epoll_pwait2.patch b/dev-util/rr/files/rr-5.6.0-epoll_pwait2.patch deleted file mode 100644 index 02d90d36e7dc..000000000000 --- a/dev-util/rr/files/rr-5.6.0-epoll_pwait2.patch +++ /dev/null @@ -1,78 +0,0 @@ -https://github.com/rr-debugger/rr/commit/7d1b31dd76d18e9e810455f4abd804e76b0a6c1f - -From 7d1b31dd76d18e9e810455f4abd804e76b0a6c1f Mon Sep 17 00:00:00 2001 -From: Robert O'Callahan -Date: Sun, 26 Mar 2023 23:52:44 +1300 -Subject: [PATCH] Support epoll_pwait2 - -Resolves #3462 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -933,6 +933,7 @@ set(BASIC_TESTS - epoll_edge - epoll_many - epoll_pwait_eintr_sigmask -+ epoll_pwait2 - eventfd - exec_flags - exec_no_env ---- a/src/record_syscall.cc -+++ b/src/record_syscall.cc -@@ -4841,6 +4841,7 @@ static Switchable rec_prepare_syscall_arch(RecordTask* t, - sizeof(typename Arch::epoll_event))); - return ALLOW_SWITCH; - -+ case Arch::epoll_pwait2: - case Arch::epoll_pwait: { - syscall_state.reg_parameter( - 2, ParamSize::from_syscall_result(sizeof(typename Arch::epoll_event) * regs.arg3_signed(), ---- a/src/syscalls.py -+++ b/src/syscalls.py -@@ -1729,7 +1729,7 @@ def __init__(self, **kwargs): - openat2 = UnsupportedSyscall(x86=437, x64=437, generic=437) - pidfd_getfd = UnsupportedSyscall(x86=438, x64=438, generic=438) - process_madvise = UnsupportedSyscall(x86=440, x64=440, generic=440) --epoll_pwait2 = UnsupportedSyscall(x86=441, x64=441, generic=441) -+epoll_pwait2 = IrregularEmulatedSyscall(x86=441, x64=441, generic=441) - mount_setattr = UnsupportedSyscall(x86=442, x64=442, generic=442) - quotactl_fd = UnsupportedSyscall(x86=443, x64=443, generic=443) - landlock_create_ruleset = UnsupportedSyscall(x86=444, x64=444, generic=444) ---- /dev/null -+++ b/src/test/epoll_pwait2.c -@@ -0,0 +1,35 @@ -+/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */ -+ -+#include "util.h" -+ -+static void handle_sig(__attribute__((unused)) int sig) { -+ /* Don't do anything, just go through the signal handler motions */ -+} -+ -+int main(void) { -+ int pipe_fd[2]; -+ int epfd; -+ struct timespec ts = { 5, 0 }; -+ struct epoll_event ev; -+ sigset_t sigmask; -+ sigemptyset(&sigmask); -+ sigaddset(&sigmask, SIGCHLD); -+ -+ signal(SIGALRM, handle_sig); -+ -+ test_assert(0 == pipe(pipe_fd)); -+ test_assert(0 <= (epfd = epoll_create(1 /*num events*/))); -+ -+ ev.events = EPOLLIN; -+ ev.data.fd = pipe_fd[0]; -+ test_assert(0 == epoll_ctl(epfd, EPOLL_CTL_ADD, ev.data.fd, &ev)); -+ -+ // Make sure something will wake us from the epoll_pwait2. -+ alarm(1); -+ // But also use the epoll_pwait to modify the signal mask. -+ epoll_pwait2(epfd, &ev, 1, &ts, &sigmask); -+ test_assert(errno == EINTR || errno == ENOSYS); -+ -+ atomic_puts("EXIT-SUCCESS"); -+ return 0; -+} - diff --git a/dev-util/rr/rr-5.6.0-r3.ebuild b/dev-util/rr/rr-5.6.0-r3.ebuild deleted file mode 100644 index bdd724733aaa..000000000000 --- a/dev-util/rr/rr-5.6.0-r3.ebuild +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{9..11} ) -CMAKE_BUILD_TYPE=Release - -inherit cmake linux-info python-single-r1 - -DESCRIPTION="Record and Replay Framework" -HOMEPAGE="https://rr-project.org/" -SRC_URI="https://github.com/rr-debugger/${PN}/archive/${PV}.tar.gz -> mozilla-${P}.tar.gz" - -LICENSE="MIT BSD-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="multilib test" -REQUIRED_USE="${PYTHON_REQUIRED_USE}" - -DEPEND=" - ${PYTHON_DEPS} - dev-libs/capnproto:= - sys-libs/zlib:= -" -RDEPEND=" - ${DEPEND} - sys-devel/gdb[xml] -" -# Add all the deps needed only at build/test time. -DEPEND+=" - test? ( - $(python_gen_cond_dep ' - dev-python/pexpect[${PYTHON_USEDEP}] - ') - sys-devel/gdb[xml] - )" - -QA_FLAGS_IGNORED=" - usr/lib.*/rr/librrpage.so - usr/lib.*/rr/librrpage_32.so -" - -RESTRICT="test" # toolchain and kernel version dependent - -PATCHES=( - "${FILESDIR}"/${P}-linux-headers-6.0.patch - "${FILESDIR}"/${P}-tests-clang16.patch - "${FILESDIR}"/${P}-gcc13.patch - "${FILESDIR}"/${P}-epoll_pwait2.patch - "${FILESDIR}"/${P}-gcc13-workaround.patch -) - -pkg_setup() { - if use kernel_linux; then - CONFIG_CHECK="SECCOMP" - linux-info_pkg_setup - fi - python-single-r1_pkg_setup -} - -src_prepare() { - cmake_src_prepare - - sed -i 's:-Werror::' CMakeLists.txt || die #609192 -} - -src_test() { - if has usersandbox ${FEATURES} ; then - ewarn "Test suite fails under FEATURES=usersandbox (bug #632394). Skipping." - return 0 - fi - - cmake_src_test -} - -src_configure() { - local mycmakeargs=( - -DBUILD_TESTS=$(usex test) - -Ddisable32bit=$(usex !multilib) #636786 - ) - - cmake_src_configure -} - -src_install() { - cmake_src_install - python_fix_shebang "${ED}"/usr/bin/rr-collect-symbols.py -} diff --git a/dev-util/rr/rr-5.6.0-r4.ebuild b/dev-util/rr/rr-5.6.0-r4.ebuild new file mode 100644 index 000000000000..559533e754a6 --- /dev/null +++ b/dev-util/rr/rr-5.6.0-r4.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +CMAKE_BUILD_TYPE=Release + +inherit cmake linux-info python-single-r1 + +DESCRIPTION="Record and Replay Framework" +HOMEPAGE="https://rr-project.org/" +SRC_URI="https://github.com/rr-debugger/${PN}/archive/${PV}.tar.gz -> mozilla-${P}.tar.gz" + +LICENSE="MIT BSD-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="multilib test" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +DEPEND=" + ${PYTHON_DEPS} + dev-libs/capnproto:= + sys-libs/zlib:= +" +RDEPEND=" + ${DEPEND} + sys-devel/gdb[xml] +" +# Add all the deps needed only at build/test time. +DEPEND+=" + test? ( + $(python_gen_cond_dep ' + dev-python/pexpect[${PYTHON_USEDEP}] + ') + sys-devel/gdb[xml] + )" + +QA_FLAGS_IGNORED=" + usr/lib.*/rr/librrpage.so + usr/lib.*/rr/librrpage_32.so +" + +RESTRICT="test" # toolchain and kernel version dependent + +PATCHES=( + "${FILESDIR}"/${P}-linux-headers-6.0.patch + "${FILESDIR}"/${P}-tests-clang16.patch + "${FILESDIR}"/${P}-gcc13.patch + "${FILESDIR}"/${P}-gcc13-workaround.patch +) + +pkg_setup() { + if use kernel_linux; then + CONFIG_CHECK="SECCOMP" + linux-info_pkg_setup + fi + python-single-r1_pkg_setup +} + +src_prepare() { + cmake_src_prepare + + sed -i 's:-Werror::' CMakeLists.txt || die #609192 +} + +src_test() { + if has usersandbox ${FEATURES} ; then + ewarn "Test suite fails under FEATURES=usersandbox (bug #632394). Skipping." + return 0 + fi + + cmake_src_test +} + +src_configure() { + local mycmakeargs=( + -DBUILD_TESTS=$(usex test) + -Ddisable32bit=$(usex !multilib) #636786 + ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + python_fix_shebang "${ED}"/usr/bin/rr-collect-symbols.py +} -- cgit v1.2.3-65-gdbad