From 599d67b6a4bf96096352cc5fbc8fc28e54a1ca62 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Mon, 20 Jan 2020 12:22:18 +0000 Subject: [PATCH] app/test: remove meson dependency on file in /sys Meson versions 0.52 and 0.53 are being overly smart and detecting the path "/sys/devices/system/cpu/present" in the call to cat in app/test/meson.build and then adding it as a dependency to the build configuration. This causes issues on systems where the timestamp of that file always returns the current time, since it means that the build.ninja file is always out of date, and therefore needs to be rebuilt. We can fix this by just using a simple shell script to return the coremask appropriately for BSD and Linux, and removing that code logic from meson - thereby hiding the use of the /sys file. Fixes: c70622ac6f72 ("test: detect number of cores with meson") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson --- MAINTAINERS | 1 + app/test/get-coremask.sh | 13 +++++++++++++ app/test/meson.build | 16 ++-------------- 3 files changed, 16 insertions(+), 14 deletions(-) create mode 100755 app/test/get-coremask.sh diff --git a/MAINTAINERS b/MAINTAINERS index 8916ef9626..48fbaa043a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1446,6 +1446,7 @@ Unit tests framework F: app/test/Makefile F: app/test/autotest* F: app/test/commands.c +F: app/test/get-coremask.sh F: app/test/packet_burst_generator.c F: app/test/packet_burst_generator.h F: app/test/process.h diff --git a/app/test/get-coremask.sh b/app/test/get-coremask.sh new file mode 100755 index 0000000000..bb8cf404d2 --- /dev/null +++ b/app/test/get-coremask.sh @@ -0,0 +1,13 @@ +#! /bin/sh -e +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2019 Intel Corporation + +if [ "$(uname)" = "Linux" ] ; then + cat /sys/devices/system/cpu/present +elif [ "$(uname)" = "FreeBSD" ] ; then + ncpus=$(/sbin/sysctl -n hw.ncpu) + echo 0-$(expr $ncpus - 1) +else +# fallback + echo 0-3 +fi diff --git a/app/test/meson.build b/app/test/meson.build index fb49d804ba..22b0cefaa3 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -398,20 +398,8 @@ dpdk_test = executable('dpdk-test', timeout_seconds = 600 timeout_seconds_fast = 10 -# Retrieve the number of CPU cores, defaulting to 4. -num_cores = '0-3' -if host_machine.system() == 'linux' - num_cores = run_command('cat', - '/sys/devices/system/cpu/present' - ).stdout().strip() -elif host_machine.system() == 'freebsd' - snum_cores = run_command('/sbin/sysctl', '-n', - 'hw.ncpu').stdout().strip() - inum_cores = snum_cores.to_int() - 1 - num_cores = '0-@0@'.format(inum_cores) -endif - -num_cores_arg = '-l ' + num_cores +get_coremask = find_program('get-coremask.sh') +num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip() test_args = [num_cores_arg] foreach arg : fast_test_names -- 2.20.1