[oe] [PATCH v2][meta-oe] numctl: add recipe

rongqing.li at windriver.com rongqing.li at windriver.com
Fri Jul 18 08:50:02 UTC 2014


From: Roy Li <rongqing.li at windriver.com>

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 <rongqing.li at windriver.com>
---
 .../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

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 0000000..8c309a4
--- /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 <rongqing.li at windriver.com>
+---
+ 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 0000000..9a5134c
--- /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 0000000..53952ae
--- /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 <rongqing.li at windriver.com>
+---
+ 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 0000000..215f7c2
--- /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 0000000..bbb3393
--- /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}/
+}
-- 
1.7.10.4




More information about the Openembedded-devel mailing list