Gentoo Archives: gentoo-commits

From: Lars Wendler <polynomial-c@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-libs/libhugetlbfs/
Date: Wed, 19 Sep 2018 09:37:04
Message-Id: 1537349750.6df00c69826babb358006a8ca5f6936385ca8a1c.polynomial-c@gentoo
1 commit: 6df00c69826babb358006a8ca5f6936385ca8a1c
2 Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
3 AuthorDate: Wed Sep 19 09:35:50 2018 +0000
4 Commit: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
5 CommitDate: Wed Sep 19 09:35:50 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6df00c69
7
8 sys-libs/libhugetlbfs: Bump to version 2.21
9
10 Package-Manager: Portage-2.3.49, Repoman-2.3.10
11
12 sys-libs/libhugetlbfs/Manifest | 1 +
13 sys-libs/libhugetlbfs/libhugetlbfs-2.21.ebuild | 157 +++++++++++++++++++++++++
14 2 files changed, 158 insertions(+)
15
16 diff --git a/sys-libs/libhugetlbfs/Manifest b/sys-libs/libhugetlbfs/Manifest
17 index 7184c0e8ae9..2d7527a8693 100644
18 --- a/sys-libs/libhugetlbfs/Manifest
19 +++ b/sys-libs/libhugetlbfs/Manifest
20 @@ -1,3 +1,4 @@
21 DIST libhugetlbfs-2.18.tar.gz 181275 BLAKE2B 1f0ca8d73d9bdf05eb08706be4854f110b8cbe5b0c7554fdddb437fc9644e69d0bc42d9d8bedf23bf2dda4901977f093d0f46ed039304f8b5184b2fcac157d47 SHA512 6dcdbf571d6a723a40c15e10b24533f16d65f67fe149aa2d25bee48a034d003419d4cf4b6e55fcd385e1214fc4f6b4dda72ba429b9eea9b38be9b1a393528746
22 DIST libhugetlbfs-2.19.tar.gz 181504 BLAKE2B 27d5e5729e48b82311d6f4317f8c0bb5a04054242bca6fd9745265e2590f18ec49de6a9cdfa7ea28be47f794e91e70c5fcecdb418bf8e8cb0cb5b78d0948e563 SHA512 d21781fe68736eb3bbafeb8f36f4f34d30f290f2f6744b52c1a40161caf2e28b823cd8e9b9c74ec4e6d11f7d398d909f80eb736cc39a64ecc7bf571018bfec7c
23 DIST libhugetlbfs-2.20.tar.gz 186750 BLAKE2B 758482a41254d6d14795efdfb2959248af2ff00bc6cafbae9b2002b7eaa50921a72ef928910bc0d2061a414e9c73346848eead108af077c96429870c734495aa SHA512 817fca3f8e3b127b9b877e0a03d0a94bf0c3ec481d3becf995986ce6ae0532629c5460100eb9f2ef3452ed59a3b9d3ac8362df8f87b387803c36d35ab7af0902
24 +DIST libhugetlbfs-2.21.tar.gz 173052 BLAKE2B a65fdeee3ed9ad8cb69f772847646befbf5deef0b82d6cb7338e5ff448d5c2461ceb1e381b9515e79f4243482589bb0203874cc52e5c8c6d98667df4eacffa8b SHA512 87fd95a826bedc2c53b1aa440f5db7ff3ece482d520545b597d4d1231cf84276103c312899b812166872444331bc7b6f1692f0d3b7cbff691efdcf9c2e99b1d0
25
26 diff --git a/sys-libs/libhugetlbfs/libhugetlbfs-2.21.ebuild b/sys-libs/libhugetlbfs/libhugetlbfs-2.21.ebuild
27 new file mode 100644
28 index 00000000000..e7aae65f605
29 --- /dev/null
30 +++ b/sys-libs/libhugetlbfs/libhugetlbfs-2.21.ebuild
31 @@ -0,0 +1,157 @@
32 +# Copyright 1999-2018 Gentoo Foundation
33 +# Distributed under the terms of the GNU General Public License v2
34 +
35 +EAPI=6
36 +
37 +PYTHON_COMPAT=( python2_7 )
38 +
39 +inherit multilib toolchain-funcs python-any-r1
40 +
41 +DESCRIPTION="easy hugepage access"
42 +HOMEPAGE="https://github.com/libhugetlbfs/libhugetlbfs"
43 +SRC_URI="https://github.com/libhugetlbfs/libhugetlbfs/archive/${PV}.tar.gz -> ${P}.tar.gz"
44 +
45 +LICENSE="GPL-2"
46 +SLOT="0"
47 +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~s390 ~x86"
48 +IUSE="static-libs test"
49 +
50 +DEPEND="test? ( ${PYTHON_DEPS} )"
51 +
52 +PATCHES=(
53 + "${FILESDIR}"/${PN}-2.6-fixup-testsuite.patch
54 +)
55 +
56 +src_prepare() {
57 + default
58 + sed -i \
59 + -e '/^PREFIX/s:/local::' \
60 + -e '1iBUILDTYPE = NATIVEONLY' \
61 + -e '1iV = 1' \
62 + -e '/gzip.*MANDIR/d' \
63 + -e "/^LIB\(32\)/s:=.*:= $(get_libdir):" \
64 + -e '/^CC\(32\|64\)/s:=.*:= $(CC):' \
65 + -e 's@^\(ARCH\) ?=@\1 =@' \
66 + Makefile || die "sed failed"
67 + if [ "$(get_libdir)" == "lib64" ]; then
68 + sed -i \
69 + -e "/^LIB\(32\)/s:=.*:= lib32:" \
70 + Makefile
71 + fi
72 +
73 + # Tarballs from github don't have the version set.
74 + # https://github.com/libhugetlbfs/libhugetlbfs/issues/7
75 + [[ -f version ]] || echo "${PV}" > version
76 +}
77 +
78 +src_compile() {
79 + tc-export AR
80 + emake CC="$(tc-getCC)" libs tools
81 +}
82 +
83 +src_install() {
84 + default
85 + use static-libs || rm -f "${ED%/}"/usr/$(get_libdir)/*.a
86 +}
87 +
88 +src_test_alloc_one() {
89 + hugeadm="$1"
90 + sign="$2"
91 + pagesize="$3"
92 + pagecount="$4"
93 + ${hugeadm} \
94 + --pool-pages-max ${pagesize}:${sign}${pagecount} \
95 + && \
96 + ${hugeadm} \
97 + --pool-pages-min ${pagesize}:${sign}${pagecount}
98 + return $?
99 +}
100 +
101 +# die is NOT allowed in this src_test block after the marked point, so that we
102 +# can clean up memory allocation. You'll leak at LEAST 64MiB per run otherwise.
103 +src_test() {
104 + [[ $UID -eq 0 ]] || die "Need FEATURES=-userpriv to run this testsuite"
105 + einfo "Building testsuite"
106 + emake -j1 tests || die "Failed to build tests"
107 +
108 + hugeadm='obj/hugeadm'
109 + allocated=''
110 + rc=0
111 + # the testcases need 64MiB per pagesize.
112 + MIN_HUGEPAGE_RAM=$((64*1024*1024))
113 +
114 + einfo "Planning allocation"
115 + PAGESIZES="$(${hugeadm} --page-sizes-all)"
116 +
117 + # Need to do this before we can create the mountpoints.
118 + for pagesize in ${PAGESIZES} ; do
119 + # The kernel depends on the location :-(
120 + mkdir -p /var/lib/hugetlbfs/pagesize-${pagesize}
121 + addwrite /var/lib/hugetlbfs/pagesize-${pagesize}
122 + done
123 + addwrite /proc/sys/vm/
124 + addwrite /proc/sys/kernel/shmall
125 + addwrite /proc/sys/kernel/shmmax
126 + addwrite /proc/sys/kernel/shmmni
127 +
128 + einfo "Checking HugeTLB mountpoints"
129 + ${hugeadm} --create-mounts || die "Failed to set up hugetlb mountpoints."
130 +
131 + # -----------------------------------------------------
132 + # --------- die is unsafe after this point. -----------
133 + # -----------------------------------------------------
134 +
135 + einfo "Starting allocation"
136 + for pagesize in ${PAGESIZES} ; do
137 + pagecount=$((${MIN_HUGEPAGE_RAM}/${pagesize}))
138 + einfo " ${pagecount} @ ${pagesize}"
139 + addwrite /var/lib/hugetlbfs/pagesize-${pagesize}
140 + src_test_alloc_one "$hugeadm" "+" "${pagesize}" "${pagecount}"
141 + rc=$?
142 + if [[ $rc -eq 0 ]]; then
143 + allocated="${allocated} ${pagesize}:${pagecount}"
144 + else
145 + eerror "Failed to add ${pagecount} pages of size ${pagesize}"
146 + fi
147 + done
148 +
149 + einfo "Allocation status"
150 + ${hugeadm} --pool-list
151 +
152 + if [[ -n "${allocated}" ]]; then
153 + # All our allocations worked, so time to run.
154 + einfo "Starting tests"
155 + cd "${S}"/tests
156 + TESTOPTS="-t func"
157 + case $ARCH in
158 + amd64|ppc64)
159 + TESTOPTS="${TESTOPTS} -b 64"
160 + ;;
161 + x86)
162 + TESTOPTS="${TESTOPTS} -b 32"
163 + ;;
164 + esac
165 + # This needs a bit of work to give a nice exit code still.
166 + ./run_tests.py ${TESTOPTS}
167 + rc=$?
168 + else
169 + eerror "Failed to make HugeTLB allocations."
170 + rc=1
171 + fi
172 +
173 + einfo "Cleaning up memory"
174 + cd "${S}"
175 + # Cleanup memory allocation
176 + for alloc in ${allocated} ; do
177 + pagesize="${alloc/:*}"
178 + pagecount="${alloc/*:}"
179 + einfo " ${pagecount} @ ${pagesize}"
180 + src_test_alloc_one "$hugeadm" "-" "${pagesize}" "${pagecount}"
181 + done
182 +
183 + # ---------------------------------------------------------
184 + # --------- die is safe again after this point. -----------
185 + # ---------------------------------------------------------
186 +
187 + return $rc
188 +}