{ stdenv , nosv , writeText }: let hello_c = writeText "hello.c" '' #include #include #include int main(int argc, char *argv[]) { int test = 1; #pragma omp parallel #pragma omp single #pragma omp task { if (nosv_self() == NULL) { printf("nosv_self() returned NULL\n"); exit(1); } else { printf("nosv_self() INSIDE TASK OK\n"); } test = 0; } return test; } ''; in stdenv.mkDerivation { pname = "openmp-test-nosv"; version = "1.0.0"; dontUnpack = true; dontConfigure = true; # nOS-V requires access to /sys/devices to request NUMA information. It will # fail to run otherwise, so we disable the sandbox for this test. __noChroot = true; buildInputs = [ nosv ]; buildPhase = '' set -x cp ${hello_c} hello.c clang -fopenmp=libompv ./hello.c -lnosv -o hello ./hello | grep "INSIDE TASK OK" set +x ''; installPhase = '' touch $out ''; }