From 3bcea1441cc608fc7e0913c5b8c30b39c5eef3aa Mon Sep 17 00:00:00 2001 From: Roy Li Date: Fri, 18 Jul 2014 16:50:02 +0800 Subject: numctl: add recipe It consists of a numactl program to run other programs with a specific NUMA policy and a libnuma to do allocations with NUMA policy in applications. Signed-off-by: Roy Li Signed-off-by: Martin Jansa --- .../numactl/Fix-the-test-output-format.patch | 59 ++++++++++++++++++++++ meta-oe/recipes-support/numactl/numactl/Makefile | 7 +++ .../numactl/numactl/fix-null-pointer.patch | 28 ++++++++++ meta-oe/recipes-support/numactl/numactl/run-ptest | 9 ++++ meta-oe/recipes-support/numactl/numactl_2.0.9.bb | 43 ++++++++++++++++ 5 files changed, 146 insertions(+) create mode 100644 meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch create mode 100644 meta-oe/recipes-support/numactl/numactl/Makefile create mode 100644 meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch create mode 100755 meta-oe/recipes-support/numactl/numactl/run-ptest create mode 100644 meta-oe/recipes-support/numactl/numactl_2.0.9.bb (limited to 'meta-oe/recipes-support/numactl') diff --git a/meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch b/meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch new file mode 100644 index 0000000000..8c309a4b5c --- /dev/null +++ b/meta-oe/recipes-support/numactl/numactl/Fix-the-test-output-format.patch @@ -0,0 +1,59 @@ +[PATCH] Fix the test output format + +Upstream-Status: Pending + +Signed-off-by: Roy Li +--- + test/regress | 6 +++--- + test/regress2 | 9 ++++----- + 2 files changed, 7 insertions(+), 8 deletions(-) + +diff --git a/test/regress b/test/regress +index 05eff5b..10d72f7 100755 +--- a/test/regress ++++ b/test/regress +@@ -73,6 +73,7 @@ probe_hardware() + if [ $numnodes -lt 2 ] ; then + echo "need at least two nodes with at least $NEEDPAGES each of" + echo "free memory for mempolicy regression tests" ++ echo "FAIL: numa regress" + exit 1 + fi + } +@@ -206,10 +207,9 @@ main() + rm A B + + if [ "$EXIT" = 0 ] ; then +- echo '========SUCCESS' ++ echo 'PASS: numactl regress' + else +- echo '========FAILURE' +- exit 1 ++ echo 'FAIL: numactl regress' + fi + } + +diff --git a/test/regress2 b/test/regress2 +index 6a254fa..9c97943 100755 +--- a/test/regress2 ++++ b/test/regress2 +@@ -6,12 +6,11 @@ VALGRIND=${VALGRIND:-} + export LD_LIBRARY_PATH=`pwd`/.. + + T() { +- echo "$@" +- if ! $VALGRIND "$@" ; then +- echo $1 FAILED!!!! +- exit 1 ++ if ! $VALGRIND "$@" 2>&1 1>/dev/null; then ++ echo "FAIL: $1" ++ else ++ echo "PASS: $1" + fi +- echo + } + + # various tests +-- +1.7.10.4 + diff --git a/meta-oe/recipes-support/numactl/numactl/Makefile b/meta-oe/recipes-support/numactl/numactl/Makefile new file mode 100644 index 0000000000..9a5134c3f2 --- /dev/null +++ b/meta-oe/recipes-support/numactl/numactl/Makefile @@ -0,0 +1,7 @@ +.PHONY: regress1 regress2 + +regress1: + cd test ; ./regress + +regress2: + cd test ; ./regress2 diff --git a/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch b/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch new file mode 100644 index 0000000000..53952aef95 --- /dev/null +++ b/meta-oe/recipes-support/numactl/numactl/fix-null-pointer.patch @@ -0,0 +1,28 @@ +[PATCH] return 0 if distance_table is NULL + +Upstream-Status: Pending + +read_distance_table() maybe return 0, but distance_table is not set, +if distance_table is used, and will lead to SEGFAULT + +Signed-off-by: Roy Li +--- + distance.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/distance.c b/distance.c +index 4a26972..c6ca021 100755 +--- a/distance.c ++++ b/distance.c +@@ -113,6 +113,8 @@ int numa_distance(int a, int b) + int err = read_distance_table(); + if (err < 0) + return 0; ++ if (!distance_table) ++ return 0; + } + return distance_table[a * distance_numnodes + b]; + } +-- +1.7.10.4 + diff --git a/meta-oe/recipes-support/numactl/numactl/run-ptest b/meta-oe/recipes-support/numactl/numactl/run-ptest new file mode 100755 index 0000000000..215f7c25b9 --- /dev/null +++ b/meta-oe/recipes-support/numactl/numactl/run-ptest @@ -0,0 +1,9 @@ +#!/bin/sh +make regress1 +make regress2 +if numademo -t -e 10M; then + echo "PASS: numademo" +else + echo "FAIL: numademo" +fi + diff --git a/meta-oe/recipes-support/numactl/numactl_2.0.9.bb b/meta-oe/recipes-support/numactl/numactl_2.0.9.bb new file mode 100644 index 0000000000..bbb3393a4a --- /dev/null +++ b/meta-oe/recipes-support/numactl/numactl_2.0.9.bb @@ -0,0 +1,43 @@ +SUMMARY = "Development package for building Applications that use numa" +DESCRIPTION = "Simple NUMA policy support. It consists of a numactl program \ +to run other programs with a specific NUMA policy and a libnuma to do \ +allocations with NUMA policy in applications." +LICENSE = "GPL-2.0 & LGPL-2.1" +SECTION = "apps" +RDEPENDS_${PN} = "perl" + +inherit autotools-brokensep ptest + +LIC_FILES_CHKSUM = "file://README;beginline=19;endline=32;md5=5644cc3851cb2499f6c48e52fe198bd9" +SRC_URI[md5sum] = "136685c8eaf9d6569c351fe1d453b30c" +SRC_URI[sha256sum] = "9ca033e6c14c0f26c20379b0cf9299429fd5a354a79c3c7880fd41ef69f7751c" + +SRC_URI = "ftp://oss.sgi.com/www/projects/libnuma/download/${BPN}-${PV}.tar.gz \ + file://fix-null-pointer.patch \ + file://Fix-the-test-output-format.patch \ + file://Makefile \ + file://run-ptest \ + " + +# ARM does not currently support NUMA +COMPATIBLE_HOST = "^((?!arm).*)$" + +do_install() { + oe_runmake DESTDIR=${D} prefix=${D}/usr libdir=${D}/${libdir} install + #remove the empty man2 directory + rm -r ${D}${mandir}/man2 +} + +do_install_ptest() { + #install tests binaries + local test_binaries="checkaffinity checktopology distance \ + ftok mbind_mig_pages migrate_pages move_pages mynode \ + nodemap pagesize prefered printcpu randmap realloc_test \ + regress regress2 runltp shmtest tbitmap tshared" + + [ ! -d ${D}/${PTEST_PATH}/test ] && mkdir -p ${D}/${PTEST_PATH}/test + for i in $test_binaries; do + install -m 0755 ${B}/test/$i ${D}${PTEST_PATH}/test + done + install -m 0755 ${WORKDIR}/Makefile ${D}${PTEST_PATH}/ +} -- cgit 1.2.3-korg