From b5d27eb87c99a476460f5bec2a636848a4e7cef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20de=20Kok?= Date: Fri, 6 Nov 2020 09:56:13 +0100 Subject: [PATCH] mkl: Add a small test program The MKL pkg-config files often change and are then incorrect for our paths. pkg-config validation finds some issues, but not incorrect paths. So, add a small test program to test whether the generated pkg-config files can actually be used to build a functioning binary. Hopefully this catches future regressions. --- .../libraries/science/math/mkl/default.nix | 5 ++- .../science/math/mkl/test/default.nix | 33 +++++++++++++++++++ .../libraries/science/math/mkl/test/test.c | 12 +++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/libraries/science/math/mkl/test/default.nix create mode 100644 pkgs/development/libraries/science/math/mkl/test/test.c diff --git a/pkgs/development/libraries/science/math/mkl/default.nix b/pkgs/development/libraries/science/math/mkl/default.nix index 7cbc50bc5b3..7b91940033d 100644 --- a/pkgs/development/libraries/science/math/mkl/default.nix +++ b/pkgs/development/libraries/science/math/mkl/default.nix @@ -1,4 +1,5 @@ -{ stdenvNoCC +{ callPackage +, stdenvNoCC , fetchurl , rpmextract , undmg @@ -157,6 +158,8 @@ in stdenvNoCC.mkDerivation { dontStrip = true; dontPatchELF = true; + passthru.tests.pkg-config = callPackage ./test { }; + meta = with stdenvNoCC.lib; { description = "Intel Math Kernel Library"; longDescription = '' diff --git a/pkgs/development/libraries/science/math/mkl/test/default.nix b/pkgs/development/libraries/science/math/mkl/test/default.nix new file mode 100644 index 00000000000..688c0ec7c39 --- /dev/null +++ b/pkgs/development/libraries/science/math/mkl/test/default.nix @@ -0,0 +1,33 @@ +{ stdenv, pkg-config, mkl }: + +stdenv.mkDerivation { + pname = "mkl-test"; + version = mkl.version; + + src = ./.; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ mkl ]; + + doCheck = true; + + buildPhase = '' + # Check regular Nix build. + gcc $(pkg-config --cflags --libs mkl-dynamic-ilp64-seq) test.c -o test + + # Clear flags to ensure that we are purely relying on options + # provided by pkg-config. + NIX_CFLAGS_COMPILE="" \ + NIX_LDFLAGS="" \ + gcc $(pkg-config --cflags --libs mkl-dynamic-ilp64-seq) test.c -o test + ''; + + installPhase = '' + touch $out + ''; + + checkPhase = '' + ./test + ''; +} diff --git a/pkgs/development/libraries/science/math/mkl/test/test.c b/pkgs/development/libraries/science/math/mkl/test/test.c new file mode 100644 index 00000000000..9413ac0c68e --- /dev/null +++ b/pkgs/development/libraries/science/math/mkl/test/test.c @@ -0,0 +1,12 @@ +#include + +#include + +int main() { + float u[] = {1., 2., 3.}; + float v[] = {4., 5., 6.}; + + float dp = cblas_sdot(3, u, 1, v, 1); + + assert(dp == 32.); +}