dev-libs/libaio: add 0.3.113_p8

libaio is dead upstream and the state of it hasn't been great for a while.

After fixing bug #722672, I started to see one failure on just one machine
for ABI_X86_32:
```
test cases/20.t completed PASSED.
Completed cases/20.p with 0.
Starting cases/21.p
Expected 4096, got 4294967285
test cases/21.t completed FAILED.
Completed cases/21.p with 1 -- FAILED.
Starting cases/22.p
test cases/22.t completed PASSED.
Completed cases/22.p with 0.
Starting cases/23.p
test cases/23.t completed PASSED.
Completed cases/23.p with 0.
Pass: 18  Fail: 1  Skip: 0
Test run complete at Tue 26 Aug 12:09:10 BST 2025
make[1]: *** [Makefile:53: partcheck] Error 1
```

It's not clear to me why it's only there but given Debian have a tonne of
useful portability patches, let's switch to them (and drop our own x32
patch) and see if that helps. It also brings us HPPA support.

We also get LTO support as a bonus.

Bug: https://bugs.gentoo.org/453938
Bug: https://bugs.gentoo.org/722672
Bug: https://bugs.gentoo.org/855698
Bug: https://bugs.gentoo.org/933092
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James 2025-08-26 12:38:13 +01:00
parent 71f671aac4
commit dd197413c0
No known key found for this signature in database
GPG Key ID: 738409F520DF9190
3 changed files with 134 additions and 19 deletions

View File

@ -1 +1,2 @@
DIST libaio-0.3.113.tar.gz 49980 BLAKE2B 2379c88670310b36942563d10f29dfcba0f49391952ffe7fe18b0c917f33ef610405fe13297d1dbb34b7ad1d3066d4a32587a7fb20babba2f264cfc2ab289e57 SHA512 65c30a102433bf8386581b03fc706d84bd341be249fbdee11a032b237a7b239e8c27413504fef15e2797b1acd67f752526637005889590ecb380e2e120ab0b71
DIST libaio_0.3.113-8.debian.tar.xz 25244 BLAKE2B d65a0f5f7ec521754b8a4cc4da8160c24e8b7426210d72ad2cebb990ba71ee25e795916b72dfebb10578dba578b59137fc8a5e229a0f752aa6ecbeb6b0fdc88b SHA512 f17307895f9a485e60b708881b7352eaf4dfbf3a9b62583b84bf4cb18879669c5348f2af89ddde65686711833486a7632922370284e260fefd614bec8ecd0624

View File

@ -0,0 +1,103 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit multilib-minimal toolchain-funcs flag-o-matic
DESCRIPTION="Asynchronous input/output library that uses the kernels native interface"
HOMEPAGE="https://pagure.io/libaio"
if [[ ${PV} == 9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://pagure.io/libaio.git"
else
SRC_URI="https://releases.pagure.org/${PN}/${P%_p*}.tar.gz"
# Take Debian's patchset as upstream is dead and there's a lot of valuable
# portability fixes in there.
if [[ ${PV} == *_p* ]] ; then
SRC_URI+=" mirror://debian/pool/main/liba/${PN}/${PN}_${PV/_p/-}.debian.tar.xz"
fi
S="${WORKDIR}"/${P%_p*}
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
fi
LICENSE="LGPL-2"
SLOT="0"
IUSE="static-libs test"
RESTRICT="!test? ( test )"
src_prepare() {
if [[ ${PV} == *_p* ]] ; then
local i
# Exclude patches from Debian which add time64 APIs which
# aren't yet merged upstream.
for i in $(sed \
-e '/^#/d' \
-e '/gitignore/d' \
-e '/SONAME/d' \
-e '/time64/d' \
-e '/Fix-io_pgetevents-syscall-wrapper/d' "${WORKDIR}"/debian/patches/series) ; do
PATCHES+=( "${WORKDIR}"/debian/patches/${i} )
done
fi
default
local sed_args=(
-e 's:-Werror ::'
)
if ! use static-libs; then
sed_args+=( -e '/\tinstall .*\/libaio.a/d' )
# Tests require the static library to be built.
use test || sed_args+=( -e '/^all_targets +=/s/ libaio.a//' )
fi
sed -i "${sed_args[@]}" src/Makefile harness/Makefile Makefile || die
multilib_copy_sources
}
multilib_src_configure() {
if use arm ; then
# When building for thumb, we can't allow frame pointers.
# http://crbug.com/464517
if $(tc-getCPP) ${CFLAGS} ${CPPFLAGS} - <<<$'#ifndef __thumb__\n#error\n#endif' >&/dev/null ; then
append-flags -fomit-frame-pointer
fi
fi
}
_emake() {
emake \
CC="$(tc-getCC)" \
AR="$(tc-getAR)" \
RANLIB="$(tc-getRANLIB)" \
CFLAGS_WERROR= \
prefix="${EPREFIX}/usr" \
libdir="${EPREFIX}/usr/$(get_libdir)" \
"$@"
}
multilib_src_compile() {
_emake
}
multilib_src_test() {
mkdir -p testdir || die
# 'make check' breaks with sandbox, 'make partcheck' works
_emake partcheck prefix="${S}/src" libdir="${S}/src"
}
multilib_src_install() {
_emake install DESTDIR="${D}"
}
multilib_src_install_all() {
doman man/*
dodoc ChangeLog TODO
# This lib is a bare minimal shim on top of kernel syscalls.
export QA_DT_NEEDED=$(find "${ED}" -type f -name 'libaio.so.*' -printf '/%P\n')
}

View File

@ -12,7 +12,14 @@ if [[ ${PV} == 9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://pagure.io/libaio.git"
else
SRC_URI="https://releases.pagure.org/${PN}/${P}.tar.gz"
SRC_URI="https://releases.pagure.org/${PN}/${P%_p*}.tar.gz"
# Take Debian's patchset as upstream is dead and there's a lot of valuable
# portability fixes in there.
if [[ ${PV} == *_p* ]] ; then
SRC_URI+=" mirror://debian/pool/main/liba/${PN}/${PN}_${PV/_p/-}.debian.tar.xz"
fi
S="${WORKDIR}"/${P%_p*}
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
fi
@ -21,19 +28,24 @@ SLOT="0"
IUSE="static-libs test"
RESTRICT="!test? ( test )"
PATCHES=(
"${FILESDIR}"/${PN}-0.3.112-cppflags.patch
"${FILESDIR}"/${PN}-0.3.113-respect-LDFLAGS.patch
"${FILESDIR}"/${PN}-0.3.113-32-bit-tests.patch
"${FILESDIR}"/${PN}-0.3.113-x32.patch
)
src_prepare() {
if [[ ${PV} == *_p* ]] ; then
local i
# Exclude patches from Debian which add time64 APIs which
# aren't yet merged upstream.
for i in $(sed \
-e '/^#/d' \
-e '/gitignore/d' \
-e '/SONAME/d' \
-e '/time64/d' \
-e '/Fix-io_pgetevents-syscall-wrapper/d' "${WORKDIR}"/debian/patches/series) ; do
PATCHES+=( "${WORKDIR}"/debian/patches/${i} )
done
fi
default
local sed_args=(
-e "/^prefix=/s:/usr:${EPREFIX}/usr:"
-e '/^libdir=/s:lib$:$(ABI_LIBDIR):'
-e 's:-Werror ::'
)
if ! use static-libs; then
@ -47,9 +59,6 @@ src_prepare() {
}
multilib_src_configure() {
# Upstream aren't interested in fixing: bug #855698
filter-lto
if use arm ; then
# When building for thumb, we can't allow frame pointers.
# http://crbug.com/464517
@ -60,12 +69,14 @@ multilib_src_configure() {
}
_emake() {
CC="$(tc-getCC)" \
AR="$(tc-getAR)" \
RANLIB="$(tc-getRANLIB)" \
ABI_LIBDIR="$(get_libdir)" \
CFLAGS_WERROR= \
emake "$@"
emake \
CC="$(tc-getCC)" \
AR="$(tc-getAR)" \
RANLIB="$(tc-getRANLIB)" \
CFLAGS_WERROR= \
prefix="${EPREFIX}/usr" \
libdir="${EPREFIX}/usr/$(get_libdir)" \
"$@"
}
multilib_src_compile() {