Author: François Trahay

    Fix accessing test tools

---
 .gitlab-ci.yml                    |   35 ++++++++++++++++++++++++++++-------
 cmake_modules/FindOTF2.cmake      |    1 +
 test/memory/run.sh                |    6 +++---
 test/memory/test_memory.sh        |    6 +++---
 test/mpi/run.sh                   |    6 +++---
 test/mpi/test_mpi_ping.sh         |    7 ++++---
 test/ompt/run.sh                  |    6 +++---
 test/ompt/test_lock.sh            |    7 ++++---
 test/ompt/test_parallel_for.sh    |    6 ++++--
 test/ompt/test_task.sh            |    5 +++--
 test/openmp/Makefile              |    5 +++--
 test/openmp/run.sh                |    6 +++---
 test/openmp/test_lock.sh          |    7 ++++---
 test/openmp/test_nest_lock.sh     |    7 ++++---
 test/openmp/test_openmp_simple.sh |    7 ++++---
 test/openmp/test_task.sh          |    7 ++++---
 test/posixio/run.sh               |    6 +++---
 test/posixio/test_my_cat.sh       |    6 +++---
 test/posixio/test_posixio.sh      |    7 ++++---
 test/pthread/run.sh               |    6 +++---
 test/pthread/test_dummy.sh        |    7 ++++---
 test/test_utils/test_utils.sh     |   18 +++++++++++++-----
 test/unit_tests/CMakeLists.txt    |   15 +++++++++++++++
 23 files changed, 123 insertions(+), 66 deletions(-)

--- a/test/memory/run.sh
+++ b/test/memory/run.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
-source ../test_utils/test_utils.sh
-
-check_dependencies eztrace eztrace_avail otf2-print || exit 1
+check_dependencies "$OTF2_PRINT_PATH" || exit 1
 check_module "memory" || exit 1
 
 check_compilation || exit 1
--- a/test/memory/test_memory.sh
+++ b/test/memory/test_memory.sh
@@ -1,9 +1,9 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="memory"
-run_and_check_command eztrace -t "memory" "./$name"
+run_and_check_command "$EZTRACE_PATH" -t "memory" "./$name"
 
 trace_filename="${name}_trace/eztrace_log.otf2"
 
--- a/test/mpi/run.sh
+++ b/test/mpi/run.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
-source ../test_utils/test_utils.sh
-
-check_dependencies eztrace eztrace_avail otf2-print  || exit 1
+check_dependencies "$OTF2_PRINT_PATH"  || exit 1
 [ -n "$MPI_MODULE_NAME" ] || MPI_MODULE_NAME=mpi
 check_module "$MPI_MODULE_NAME"  || exit 1
 
--- a/test/mpi/test_mpi_ping.sh
+++ b/test/mpi/test_mpi_ping.sh
@@ -1,14 +1,15 @@
 #!/bin/bash
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="mpi_ping"
 np="2"
 
 [ -n "$MPI_MODULE_NAME" ] || MPI_MODULE_NAME=mpi
-run_and_check_command mpirun $MPIRUN_CLI_OPTION -np $np eztrace -t $MPI_MODULE_NAME ./$name
+run_and_check_command mpirun $MPIRUN_CLI_OPTION -np $np "$EZTRACE_PATH" -t $MPI_MODULE_NAME ./$name
 
 trace_filename="${name}_trace/eztrace_log.otf2"
-if ! otf2-print "$trace_filename" 2>&1 > /dev/null ; then
+if ! "$OTF2_PRINT_PATH" "$trace_filename" 2>&1 > /dev/null ; then
     print_error "Cannot parse trace '$trace_filename'"
     exit 1
 fi
--- a/test/ompt/run.sh
+++ b/test/ompt/run.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
-source ../test_utils/test_utils.sh
-
-check_dependencies eztrace eztrace_avail otf2-print || exit 1
+check_dependencies "$OTF2_PRINT_PATH" || exit 1
 check_module "ompt" || exit 1
 
 # Building tests
--- a/test/ompt/test_lock.sh
+++ b/test/ompt/test_lock.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="lock"
-run_and_check_command eztrace -t "ompt" "./test_$name"
+
+run_and_check_command "$EZTRACE_PATH" -t "ompt" "./test_$name"
 
 trace_filename="test_${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename"
--- a/test/ompt/test_parallel_for.sh
+++ b/test/ompt/test_parallel_for.sh
@@ -1,8 +1,10 @@
 #!/bin/bash
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="parallel_for"
-run_and_check_command eztrace -t "ompt" "./test_$name"
+
+run_and_check_command "$EZTRACE_PATH" -t "ompt" "./test_$name"
 
 trace_filename="test_${name}_trace/eztrace_log.otf2"
 
--- a/test/openmp/run.sh
+++ b/test/openmp/run.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
-source ../test_utils/test_utils.sh
-
-check_dependencies eztrace eztrace_avail otf2-print || exit 1
+check_dependencies "$OTF2_PRINT_PATH" || exit 1
 check_module "ompt" || exit 1
 
 # Building tests
--- a/test/openmp/test_lock.sh
+++ b/test/openmp/test_lock.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="lock"
-run_and_check_command eztrace -t "openmp" "./test_$name" || ((nb_fail++))
+
+run_and_check_command "$EZTRACE_PATH" -t "openmp" "./test_$name" || ((nb_fail++))
 
 trace_filename="test_${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename" || return 1
--- a/test/openmp/test_nest_lock.sh
+++ b/test/openmp/test_nest_lock.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="nest_lock"
-run_and_check_command eztrace -t "openmp" "./test_$name" || ((nb_fail++))
+
+run_and_check_command "$EZTRACE_PATH" -t "openmp" "./test_$name" || ((nb_fail++))
 
 trace_filename="test_${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename" || return 1
--- a/test/openmp/test_openmp_simple.sh
+++ b/test/openmp/test_openmp_simple.sh
@@ -1,10 +1,11 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="openmp_simple"
 export OMP_NUM_THREADS=4
-run_and_check_command eztrace -t "openmp" "./$name" || ((nb_fail++))
+
+run_and_check_command "$EZTRACE_PATH" -t "openmp" "./$name" || ((nb_fail++))
 
 trace_filename="${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename" || exit 1
--- a/test/openmp/test_task.sh
+++ b/test/openmp/test_task.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="task"
-run_and_check_command eztrace -t "openmp" "./test_$name" || ((nb_fail++))
+
+run_and_check_command "$EZTRACE_PATH" -t "openmp" "./test_$name" || ((nb_fail++))
 
 trace_filename="test_${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename" || exit 1
--- a/test/posixio/run.sh
+++ b/test/posixio/run.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
-source ../test_utils/test_utils.sh
-
-check_dependencies eztrace eztrace_avail otf2-print || exit 1
+check_dependencies "$OTF2_PRINT_PATH" || exit 1
 check_module "posixio"  || exit 1
 
 # Building tests
--- a/test/posixio/test_my_cat.sh
+++ b/test/posixio/test_my_cat.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="my_cat"
 input_file="input_file.tmp"
@@ -8,7 +8,7 @@ output_file="output_file.tmp"
 size=1000
 dd if=/dev/random of="$input_file" count=1000 bs=1
 
-run_and_check_command eztrace -t "posixio" "./$name" "${input_file}" "$output_file"
+run_and_check_command "$EZTRACE_PATH" -t "posixio" "./$name" "${input_file}" "$output_file"
 
 trace_filename="${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename"
--- a/test/posixio/test_posixio.sh
+++ b/test/posixio/test_posixio.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="posixio"
-run_and_check_command eztrace -t "posixio" "./$name"
+
+run_and_check_command "$EZTRACE_PATH" -t "posixio" "./$name"
 
 trace_filename="${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename"
--- a/test/pthread/run.sh
+++ b/test/pthread/run.sh
@@ -1,8 +1,8 @@
 #!/bin/bash
+CUR_PATH=$(dirname  $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
-source ../test_utils/test_utils.sh
-
-check_dependencies eztrace eztrace_avail otf2-print || exit 1
+check_dependencies "$OTF2_PRINT_PATH" || exit 1
 check_module "pthread" || exit 1
 
 # Building tests
--- a/test/pthread/test_dummy.sh
+++ b/test/pthread/test_dummy.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="dummy_thread"
-run_and_check_command eztrace -t "pthread" "./dummy_thread"
+[ -n "$EZTRACE_PATH" ] || EZTRACE_PATH=eztrace
+run_and_check_command "$EZTRACE_PATH" -t "pthread" "./dummy_thread"
 
 trace_filename="${name}_trace/eztrace_log.otf2"
 trace_check_integrity "$trace_filename"
--- a/test/test_utils/test_utils.sh
+++ b/test/test_utils/test_utils.sh
@@ -1,4 +1,11 @@
 #!/bin/bash
+
+[ -n "$OTF2_PRINT_PATH" ]    || OTF2_PRINT_PATH=otf2-print
+[ -n "$EZTRACE_PATH" ]       || EZTRACE_PATH=eztrace
+[ -n "$EZTRACE_AVAIL_PATH" ] || EZTRACE_AVAIL_PATH=eztrace_avail
+[ -n "$EZTRACE_CC_PATH" ]    || EZTRACE_CC_PATH=eztrace_cc
+
+
 C_BLACK='\033[0;30m'
 C_DGRAY='\033[1;30m'
 C_LGRAY='\033[0;37m'
@@ -68,7 +75,8 @@ function check_dependencies {
 function check_module {
     module=$1
     echo "> Checking for eztrace module '$module'..."
-    if  eztrace_avail | grep "^$module[[:space:]]" > /dev/null ; then
+    [ -n "$EZTRACE_AVAIL_PATH" ] || EZTRACE_AVAIL_PATH=eztrace_avail
+    if  "$EZTRACE_AVAIL_PATH" | grep "^$module[[:space:]]" > /dev/null ; then
 	print_ok
     else
 	print_error "Module '$module' not found"
@@ -123,7 +131,7 @@ function trace_get_nb_event_of_type {
     trace_filename=$1
     event_type=$2
 
-    otf2-print "$trace_filename" 2>/dev/null |grep "^$event_type[[:space:]]"|wc -l
+    "$OTF2_PRINT_PATH" "$trace_filename" 2>/dev/null |grep "^$event_type[[:space:]]"|wc -l
 }
 
 function trace_check_integrity {
@@ -131,7 +139,7 @@ function trace_check_integrity {
 
     ((nb_test++))
     echo " > Checking for trace integrity"
-    if ! otf2-print "$trace_filename" > /dev/null 2>&1 ; then
+    if ! "$OTF2_PRINT_PATH" "$trace_filename" > /dev/null 2>&1 ; then
 	print_error "Cannot parse trace '$trace_filename'"
 	((nb_failed++))
 	return 1
@@ -186,7 +194,7 @@ function trace_check_nb_enter {
 
     ((nb_test++))
     echo " > Checking the number of ENTER $event_type events"
-    actual_nb=$(otf2-print "$trace_filename" 2>/dev/null |grep "^ENTER[[:space:]]"|awk -vFPAT='([^ ]+)|("[^"]+")' '{print $5}' | grep "\"$event_type\""| wc -l)
+    actual_nb=$("$OTF2_PRINT_PATH" "$trace_filename" 2>/dev/null |grep "^ENTER[[:space:]]"|awk -vFPAT='([^ ]+)|("[^"]+")' '{print $5}' | grep "\"$event_type\""| wc -l)
     if [ $expected_nb -ne $actual_nb ]; then
 	print_error "$actual_nb events (expected: $expected_nb)"
 	((nb_failed++))
@@ -205,7 +213,7 @@ function trace_check_nb_leave {
     
     ((nb_test++))
     echo " > Checking the number of LEAVE $event_type events"
-    actual_nb=$(otf2-print "$trace_filename" 2>/dev/null |grep "^LEAVE[[:space:]]"|awk  -vFPAT='([^ ]+)|("[^"]+")'  '{print $5}' | grep "\"$event_type\""| wc -l)
+    actual_nb=$("$OTF2_PRINT_PATH" "$trace_filename" 2>/dev/null |grep "^LEAVE[[:space:]]"|awk  -vFPAT='([^ ]+)|("[^"]+")'  '{print $5}' | grep "\"$event_type\""| wc -l)
     if [ $expected_nb -ne $actual_nb ]; then
 	print_error "$actual_nb events (expected: $expected_nb)"
 	((nb_failed++))
--- a/test/ompt/test_task.sh
+++ b/test/ompt/test_task.sh
@@ -1,9 +1,10 @@
 #!/bin/bash
-source ../test_utils/test_utils.sh
+CUR_PATH=$(dirname $(realpath $0))
+source "$CUR_PATH/../test_utils/test_utils.sh"
 
 name="task"
 
-nb_tasks=$(eztrace -t "ompt" ./test_$name 2>&1 | grep "Number of executed tasks" | cut -d' ' -f5)
+nb_tasks=$("$EZTRACE_PATH" -t "ompt" ./test_$name 2>&1 | grep "Number of executed tasks" | cut -d' ' -f5)
 
 trace_filename="test_${name}_trace/eztrace_log.otf2"
 
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -39,8 +39,11 @@ test:ompt:
   - build:mpich
   script:
     # Run tests for ompt module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - cd $CI_PROJECT_DIR/test/ompt/
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
 
 test:openmp:
@@ -50,8 +53,11 @@ test:openmp:
   - build:mpich
   script:
     # Run tests for openmp module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - cd $CI_PROJECT_DIR/test/openmp
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
 
 test:mpich:
@@ -61,8 +67,11 @@ test:mpich:
   - build:mpich
   script:
     # Run tests for mpi module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - cd $CI_PROJECT_DIR/test/mpi/
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
 
 test:openmpi:
@@ -72,9 +81,12 @@ test:openmpi:
   - build:openmpi
   script:
     # Run tests for mpi module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - export MPIRUN_CLI_OPTION='--allow-run-as-root --oversubscribe'
     - cd $CI_PROJECT_DIR/test/mpi/
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
 
 test:pthread:
@@ -84,9 +96,12 @@ test:pthread:
   - build:mpich
   script:
     # Run tests for the pthread module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - export MPIRUN_CLI_OPTION='--allow-run-as-root --oversubscribe'
     - cd $CI_PROJECT_DIR/test/pthread
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
 
 test:memory:
@@ -96,9 +111,12 @@ test:memory:
   - build:mpich
   script:
     # Run tests for the memory module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - export MPIRUN_CLI_OPTION='--allow-run-as-root --oversubscribe'
     - cd $CI_PROJECT_DIR/test/memory
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
 
 test:posixio:
@@ -108,7 +126,10 @@ test:posixio:
   - build:mpich
   script:
     # Run tests for the posixio module
-    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin:$CI_PROJECT_DIR/eztrace/bin"
+    - export PATH="$PATH:/opt/opari2/bin:/opt/otf2/bin"
     - export MPIRUN_CLI_OPTION='--allow-run-as-root --oversubscribe'
     - cd $CI_PROJECT_DIR/test/posixio
+    - export EZTRACE_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace"
+    - export EZTRACE_AVAIL_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_avail"
+    - export EZTRACE_CC_PATH="$CI_PROJECT_DIR/eztrace/bin/eztrace_cc"
     - ./run.sh
--- a/test/openmp/Makefile
+++ b/test/openmp/Makefile
@@ -1,5 +1,6 @@
-CC=eztrace_cc cc
-CXX=eztrace_cc g++
+EZTRACE_CC_PATH ?= eztrace_cc
+CC=$(EZTRACE_CC_PATH) cc
+CXX=$(EZTRACE_CC_PATH) g++
 CFLAGS=-fopenmp
 LDFLAGS=-fopenmp -lm
 
--- a/test/unit_tests/CMakeLists.txt
+++ b/test/unit_tests/CMakeLists.txt
@@ -21,3 +21,12 @@ target_include_directories(htable
 add_test (ompt_tests bash ${CMAKE_CURRENT_SOURCE_DIR}/../ompt/run.sh)
 endif()
 
+# Get the list of tests, and set environment variables
+get_property(test_list DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY TESTS)
+set_property(TEST ${test_list}
+  PROPERTY ENVIRONMENT
+  "EZTRACE_AVAIL_PATH=${CMAKE_INSTALL_PREFIX}/bin/eztrace_avail"
+  "EZTRACE_CC_PATH=${CMAKE_INSTALL_PREFIX}/bin/eztrace_cc"
+  "EZTRACE_PATH=${CMAKE_INSTALL_PREFIX}/bin/eztrace"
+  "OTF2_PRINT_PATH=${OTF2_PRINT}"
+)
--- a/cmake_modules/FindOTF2.cmake
+++ b/cmake_modules/FindOTF2.cmake
@@ -7,6 +7,7 @@
 
 
 find_program(OTF2_CONFIG otf2-config REQUIRED)
+find_program(OTF2_PRINT otf2-print REQUIRED)
 
 IF(NOT OTF2_CONFIG OR NOT EXISTS ${OTF2_CONFIG})
   MESSAGE(STATUS "Cannot find otf2-config")
