diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2009-11-04 04:08:49 +0000 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2009-11-04 04:08:49 +0000 |
commit | 7e95cbce562e05e795c24ca3d0ea393cac93899d (patch) | |
tree | b551bd03728162358f7f9c36eb04afb6c97306d5 /sys-libs | |
parent | Update the libusb dep to point to virtual/libusb:0 as this should work fine w... (diff) | |
download | gentoo-2-7e95cbce562e05e795c24ca3d0ea393cac93899d.tar.gz gentoo-2-7e95cbce562e05e795c24ca3d0ea393cac93899d.tar.bz2 gentoo-2-7e95cbce562e05e795c24ca3d0ea393cac93899d.zip |
Fully wire up the upstream testsuite.
(Portage version: 2.2_rc48/cvs/Linux x86_64)
Diffstat (limited to 'sys-libs')
-rw-r--r-- | sys-libs/libhugetlbfs/ChangeLog | 6 | ||||
-rw-r--r-- | sys-libs/libhugetlbfs/files/libhugetlbfs-2.6-fixup-testsuite.patch | 49 | ||||
-rw-r--r-- | sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild | 127 |
3 files changed, 151 insertions, 31 deletions
diff --git a/sys-libs/libhugetlbfs/ChangeLog b/sys-libs/libhugetlbfs/ChangeLog index 08dc2b69f7b9..dd51d8435301 100644 --- a/sys-libs/libhugetlbfs/ChangeLog +++ b/sys-libs/libhugetlbfs/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for sys-libs/libhugetlbfs # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/libhugetlbfs/ChangeLog,v 1.3 2009/10/31 07:59:56 robbat2 Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/libhugetlbfs/ChangeLog,v 1.4 2009/11/04 04:08:48 robbat2 Exp $ + + 04 Nov 2009; Robin H. Johnson <robbat2@gentoo.org> + libhugetlbfs-2.6.ebuild, +files/libhugetlbfs-2.6-fixup-testsuite.patch: + Fully wire up the upstream testsuite. *libhugetlbfs-2.6 (31 Oct 2009) diff --git a/sys-libs/libhugetlbfs/files/libhugetlbfs-2.6-fixup-testsuite.patch b/sys-libs/libhugetlbfs/files/libhugetlbfs-2.6-fixup-testsuite.patch new file mode 100644 index 000000000000..de8fed17c475 --- /dev/null +++ b/sys-libs/libhugetlbfs/files/libhugetlbfs-2.6-fixup-testsuite.patch @@ -0,0 +1,49 @@ +diff -Nuar --exclude '*.S' --exclude Makefile libhugetlbfs-2.6.orig/tests/run_tests.py libhugetlbfs-2.6/tests/run_tests.py +--- libhugetlbfs-2.6.orig/tests/run_tests.py 2009-08-24 05:56:07.000000000 -0700 ++++ libhugetlbfs-2.6/tests/run_tests.py 2009-10-31 00:40:28.520387427 -0700 +@@ -56,6 +56,11 @@ + local_env["LD_LIBRARY_PATH"] = "../obj%d:obj%d:%s" \ + % (bits, bits, local_env.get("LD_LIBRARY_PATH", "")) + local_env["HUGETLB_DEFAULT_PAGE_SIZE"] = repr(pagesize) ++ if isinstance(cmd, types.StringType): ++ cmd = 'obj%d/%s' % (bits, cmd) ++ else: ++ s = 'obj%d/%s' % (bits, cmd[0]) ++ cmd = (s,)+(cmd[1:]) + + p = subprocess.Popen(cmd, env=local_env, stdout=subprocess.PIPE) + try: +@@ -523,10 +528,11 @@ + elfshare_test("linkshare") + elflink_and_share_test("linkhuge") + +- # elflink_rw tests +- elflink_rw_test("linkhuge_rw") +- # elflink_rw sharing tests +- elflink_rw_and_share_test("linkhuge_rw") ++ if 32 in wordsizes: ++ # elflink_rw tests ++ elflink_rw_test("linkhuge_rw") ++ # elflink_rw sharing tests ++ elflink_rw_and_share_test("linkhuge_rw") + + # Accounting bug tests + # reset free hpages because sharing will have held some +@@ -555,7 +561,7 @@ + """ + Run the set of stress tests. + """ +- iterations = 10 # Number of iterations for looping tests ++ iterations = 10 # Number of iterations for looping tests + + # Don't update NRPAGES every time like above because we want to catch the + # failures that happen when the kernel doesn't release all of the huge pages +@@ -570,7 +576,7 @@ + (rc, tot_pages) = total_hpages() + (rc, size) = hpage_size() + sysctls = setup_shm_sysctl(tot_pages * size) +- threads = 10 # Number of threads for shm-fork ++ threads = 10 # Number of threads for shm-fork + # Run shm-fork once using half available hugepages, then once using all + # This is to catch off-by-ones or races in the kernel allocated that + # can make allocating all hugepages a problem diff --git a/sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild b/sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild index c2e93af3b2de..f2bbe6ca177d 100644 --- a/sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild +++ b/sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild,v 1.2 2009/11/01 01:24:51 mr_bones_ Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/libhugetlbfs/libhugetlbfs-2.6.ebuild,v 1.3 2009/11/04 04:08:48 robbat2 Exp $ EAPI=2 inherit eutils multilib toolchain-funcs @@ -16,12 +16,9 @@ IUSE="" DEPEND="" -# testsuite requires specific kernel options, and LOTS of free memory. -# with 16GiB of RAM available, I hit swap :-) - robbat2 -RESTRICT=test - src_prepare() { epatch "${FILESDIR}"/${PN}-2.6-noexec-stack.patch + epatch "${FILESDIR}"/${PN}-2.6-fixup-testsuite.patch sed -i \ -e '/^PREFIX/s:/local::' \ -e '1iBUILDTYPE = NATIVEONLY' \ @@ -51,34 +48,104 @@ src_install() { rm "${D}"/usr/bin/oprofile* } +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() { - emake tests || die "Failed to build tests" + [[ $UID -eq 0 ]] || die "Need FEATURES=-userpriv to run this testsuite" + einfo "Building testsuite" + emake -j1 tests || die "Failed to build tests" + hugeadm='obj/hugeadm' - ${hugeadm} --create-mounts - PAGESIZES="$(${hugeadm} --page-sizes-all)" + allocated='' + rc=0 + # the testcases need 64MiB per pagesize. MIN_HUGEPAGE_RAM=$((64*1024*1024)) - ALLOCATED='' - for p in ${PAGESIZES} ; do - pagecount=$((${MIN_HUGEPAGE_RAM}/${p})) - ${hugeadm} \ - --pool-pages-min ${p}:+${pagecount} \ - --pool-pages-max ${p}:+${pagecount} \ - && ALLOCATED="${ALLOCATED} ${p}:${pagecount}" \ - || die "Failed to set pages" + + einfo "Planning allocation" + PAGESIZES="$(${hugeadm} --page-sizes-all)" + + # Need to do this before we can create the mountpoints. + 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 - cd "${S}"/tests - TESTOPTS="-t func" - case $ARCH in - amd64|ppc64) - TESTOPTS="${TESTOPTS} -b 64" - ;; - x86) - TESTOPTS="${TESTOPTS} -b 32" - ;; - esac - ./run_tests.py ${TESTOPTS} - # TODO: undo the allocation here. - for p in ${ALLOCATED} ; do - : + + einfo "Allocation status" + ${hugeadm} --pool-list + + if [[ -n "${allocated}" ]]; then + # All our allocations worked, so time to run. + einfo "Starting tests" + cd "${S}"/tests + 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}" + # 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 } |