diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2020-09-09 23:31:51 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2020-09-09 23:43:09 +0200 |
commit | 39fc2ebd4d6f9a7f866485735704745e2c1e88a9 (patch) | |
tree | 2882d898ea412cb92f592befbc0bee52840028c7 /sys-libs/libhugetlbfs | |
parent | dev-java/pdf-renderer: keyworded 1.0.5 for ppc64 (diff) | |
download | gentoo-39fc2ebd4d6f9a7f866485735704745e2c1e88a9.tar.gz gentoo-39fc2ebd4d6f9a7f866485735704745e2c1e88a9.tar.bz2 gentoo-39fc2ebd4d6f9a7f866485735704745e2c1e88a9.zip |
sys-libs/libhugetlbfs: bump to v2.23
Package-Manager: Portage-3.0.6, Repoman-3.0.1
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'sys-libs/libhugetlbfs')
-rw-r--r-- | sys-libs/libhugetlbfs/Manifest | 1 | ||||
-rw-r--r-- | sys-libs/libhugetlbfs/libhugetlbfs-2.23.ebuild | 159 |
2 files changed, 160 insertions, 0 deletions
diff --git a/sys-libs/libhugetlbfs/Manifest b/sys-libs/libhugetlbfs/Manifest index 64af61835b8f..a5167aec9e32 100644 --- a/sys-libs/libhugetlbfs/Manifest +++ b/sys-libs/libhugetlbfs/Manifest @@ -1 +1,2 @@ DIST libhugetlbfs-2.22.tar.gz 175099 BLAKE2B e67a6a678065b10492d510b733b7c6e2926f4f01dd741d49f6e76cedde002fa81d7dad6a6fd8922443c6aacd527c9b3df35f84b8da7332c04e3fcf8c52e23084 SHA512 7f38f9fa576841f36c7cd5192a9ee3f79b275b7b64d7e2a838a43636489cf88627bdba3a045d6b3302a4a509cf64627972b569b4c2c3c4fe05d5aa4ae1d66fd8 +DIST libhugetlbfs-2.23.tar.gz 175459 BLAKE2B f469ff9a65364e9f0e04c11c8010c958855ebd4d50e1dd719576cda7c280586623404304be64a794907a5fb1d97bd9c0620a91d7a2492577e04fa40ff432b4c7 SHA512 fc9a7d59bcda9d3ca9c9e43a3a348f989c9cbdbbb77f21a43a06e71eacd05bbe5a7b2b51e20ae9ea00da9f1c4d1130da529bbfb702e8c9d11cab6efadd3dc168 diff --git a/sys-libs/libhugetlbfs/libhugetlbfs-2.23.ebuild b/sys-libs/libhugetlbfs/libhugetlbfs-2.23.ebuild new file mode 100644 index 000000000000..255bcb160f23 --- /dev/null +++ b/sys-libs/libhugetlbfs/libhugetlbfs-2.23.ebuild @@ -0,0 +1,159 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8,9} ) + +inherit multilib toolchain-funcs python-any-r1 + +DESCRIPTION="easy hugepage access" +HOMEPAGE="https://github.com/libhugetlbfs/libhugetlbfs" +SRC_URI="https://github.com/libhugetlbfs/libhugetlbfs/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~s390 ~x86" +IUSE="static-libs test" +RESTRICT="!test? ( test )" + +DEPEND="test? ( ${PYTHON_DEPS} )" + +PATCHES=( + "${FILESDIR}"/${PN}-2.6-fixup-testsuite.patch +) + +src_prepare() { + default + sed -i \ + -e '/^PREFIX/s:/local::' \ + -e '1iBUILDTYPE = NATIVEONLY' \ + -e '1iV = 1' \ + -e '/gzip.*MANDIR/d' \ + -e "/^LIB\(32\)/s:=.*:= $(get_libdir):" \ + -e '/^CC\(32\|64\)/s:=.*:= $(CC):' \ + -e 's@^\(ARCH\) ?=@\1 =@' \ + Makefile || die "sed failed" + if [ "$(get_libdir)" == "lib64" ]; then + sed -i \ + -e "/^LIB\(32\)/s:=.*:= lib32:" \ + Makefile + fi + + # Tarballs from github don't have the version set. + # https://github.com/libhugetlbfs/libhugetlbfs/issues/7 + [[ -f version ]] || echo "${PV}" > version +} + +src_compile() { + tc-export AR + emake CC="$(tc-getCC)" libs tools +} + +src_install() { + default + use static-libs || rm -f "${ED}"/usr/$(get_libdir)/*.a +} + +src_test_alloc_one() { + hugeadm="$1" + sign="$2" + pagesize="$3" + pagecount="$4" + ${hugeadm} \ + --pool-pages-max ${pagesize}:${sign}${pagecount} \ + && \ + ${hugeadm} \ + --pool-pages-min ${pagesize}:${sign}${pagecount} + return $? +} + +# die is NOT allowed in this src_test block after the marked point, so that we +# can clean up memory allocation. You'll leak at LEAST 64MiB per run otherwise. +src_test() { + [[ $UID -eq 0 ]] || die "Need FEATURES=-userpriv to run this testsuite" + einfo "Building testsuite" + emake -j1 tests + + local hugeadm='obj/hugeadm' + local allocated='' + local rc=0 + # the testcases need 64MiB per pagesize. + local MIN_HUGEPAGE_RAM=$((64*1024*1024)) + + einfo "Planning allocation" + local PAGESIZES="$(${hugeadm} --page-sizes-all)" + + # Need to do this before we can create the mountpoints. + local pagesize pagecount + for pagesize in ${PAGESIZES} ; do + # The kernel depends on the location :-( + mkdir -p /var/lib/hugetlbfs/pagesize-${pagesize} + addwrite /var/lib/hugetlbfs/pagesize-${pagesize} + done + addwrite /proc/sys/vm/ + addwrite /proc/sys/kernel/shmall + addwrite /proc/sys/kernel/shmmax + addwrite /proc/sys/kernel/shmmni + + einfo "Checking HugeTLB mountpoints" + ${hugeadm} --create-mounts || die "Failed to set up hugetlb mountpoints." + + # ----------------------------------------------------- + # --------- die is unsafe after this point. ----------- + # ----------------------------------------------------- + + einfo "Starting allocation" + for pagesize in ${PAGESIZES} ; do + pagecount=$((${MIN_HUGEPAGE_RAM}/${pagesize})) + einfo " ${pagecount} @ ${pagesize}" + addwrite /var/lib/hugetlbfs/pagesize-${pagesize} + src_test_alloc_one "${hugeadm}" "+" "${pagesize}" "${pagecount}" + rc=$? + if [[ ${rc} -eq 0 ]]; then + allocated="${allocated} ${pagesize}:${pagecount}" + else + eerror "Failed to add ${pagecount} pages of size ${pagesize}" + fi + done + + einfo "Allocation status" + ${hugeadm} --pool-list + + if [[ -n "${allocated}" ]]; then + # All our allocations worked, so time to run. + einfo "Starting tests" + cd "${S}"/tests || die + local TESTOPTS="-t func" + case ${ARCH} in + amd64|ppc64) + TESTOPTS="${TESTOPTS} -b 64" + ;; + x86) + TESTOPTS="${TESTOPTS} -b 32" + ;; + esac + # This needs a bit of work to give a nice exit code still. + ./run_tests.py ${TESTOPTS} + rc=$? + else + eerror "Failed to make HugeTLB allocations." + rc=1 + fi + + einfo "Cleaning up memory" + cd "${S}" || die + # Cleanup memory allocation + for alloc in ${allocated} ; do + pagesize="${alloc/:*}" + pagecount="${alloc/*:}" + einfo " ${pagecount} @ ${pagesize}" + src_test_alloc_one "$hugeadm" "-" "${pagesize}" "${pagecount}" + done + + # --------------------------------------------------------- + # --------- die is safe again after this point. ----------- + # --------------------------------------------------------- + + return ${rc} +} |