gentoo/dev-libs/libaio/libaio-9999.ebuild
Sam James dd197413c0
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>
2025-08-26 12:43:12 +01:00

104 lines
2.5 KiB
Bash

# 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')
}