From da65c302a18a59c48111bdf219de09cd4b314ce9 Mon Sep 17 00:00:00 2001 From: Reno Dakota Date: Mon, 11 Nov 2024 20:55:56 -0800 Subject: [PATCH] openjpeg: fix up tests tests were failing with clang-19 due to vendoring an old zlib. However, even with the compile error fixed the tests would report success even with the majority of them failing due to a missing data directory. download the data directory to run the tests and just run tests by cmake. 8% of the tests do fail and are excluded --- pkgs/by-name/op/openjpeg/exclude-tests | 52 +++++++++++++++++++++++++ pkgs/by-name/op/openjpeg/package.nix | 54 ++++++++++++++++---------- 2 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 pkgs/by-name/op/openjpeg/exclude-tests diff --git a/pkgs/by-name/op/openjpeg/exclude-tests b/pkgs/by-name/op/openjpeg/exclude-tests new file mode 100644 index 000000000000..060c48e8fe85 --- /dev/null +++ b/pkgs/by-name/op/openjpeg/exclude-tests @@ -0,0 +1,52 @@ +NR-C1P0-p0_04.j2k-compare2base +NR-C1P0-p0_05.j2k-compare2base +NR-C1P0-p0_06.j2k-compare2base +NR-C1P1-p1_02.j2k-compare2base +NR-C1P1-p1_03.j2k-compare2base +NR-C1P1-p1_04.j2k-compare2base +NR-C1P1-p1_05.j2k-compare2base +NR-JP2-file2.jp2-compare2base +NR-RIC-subsampling_1.jp2-compare2base +NR-RIC-subsampling_2.jp2-compare2base +NR-RIC-zoo1.jp2-compare2base +NR-RIC-zoo2.jp2-compare2base +NR-DEC-_00042.j2k-2-decode-md5 +NR-DEC-buxI.j2k-9-decode-md5 +NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 +NR-DEC-Marrin.jp2-18-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 +NR-DEC-file409752.jp2-40-decode-md5 +NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 +NR-DEC-issue206_image-000.jp2-42-decode-md5 +NR-DEC-issue205.jp2-43-decode-md5 +NR-DEC-issue228.j2k-60-decode-md5 +NR-DEC-issue142.j2k-66-decode-md5 +NR-DEC-issue134.jp2-67-decode-md5 +NR-DEC-issue135.j2k-68-decode-md5 +NR-DEC-issue208.jp2-69-decode-md5 +NR-DEC-issue211.jp2-70-decode-md5 +NR-DEC-issue226.j2k-74-decode +NR-DEC-issue226.j2k-74-decode-md5 +NR-DEC-p1_04.j2k-124-decode-md5 +NR-DEC-p1_04.j2k-125-decode-md5 +NR-DEC-p1_04.j2k-126-decode-md5 +NR-DEC-p1_04.j2k-127-decode-md5 +NR-DEC-p1_04.j2k-128-decode-md5 +NR-DEC-p1_04.j2k-129-decode-md5 +NR-DEC-p1_04.j2k-131-decode-md5 +NR-DEC-p1_04.j2k-138-decode-md5 +NR-DEC-p1_04.j2k-140-decode-md5 +NR-DEC-p0_04.j2k-166-decode-md5 +NR-DEC-p0_04.j2k-167-decode-md5 +NR-DEC-p0_04.j2k-168-decode-md5 +NR-DEC-p0_04.j2k-172-decode-md5 +NR-DEC-issue205.jp2-253-decode-md5 +NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5 +NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 +NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 +NR-DEC-db11217111510058.jp2-306-decode-md5 +NR-DEC-tnsot_zero.jp2-307-decode-md5 +NR-DEC-Bretagne1_ht_lossy.j2k-311-decode-md5 +Found-But-No-Test-issue1472-bigloop.j2k +Found-But-No-Test-small_world_non_consecutive_tilepart_tlm.jp2 diff --git a/pkgs/by-name/op/openjpeg/package.nix b/pkgs/by-name/op/openjpeg/package.nix index 0bfa1067a7f7..618a251ce515 100644 --- a/pkgs/by-name/op/openjpeg/package.nix +++ b/pkgs/by-name/op/openjpeg/package.nix @@ -1,5 +1,5 @@ { lib, stdenv, fetchFromGitHub, cmake, pkg-config -, libpng, libtiff, zlib, lcms2, jpylyzer +, libpng, libtiff, zlib, lcms2 , jpipLibSupport ? false # JPIP library & executables , jpipServerSupport ? false, curl, fcgi # JPIP Server , jdk @@ -17,33 +17,42 @@ , vips }: -let - mkFlag = optSet: flag: "-D${flag}=${if optSet then "ON" else "OFF"}"; -in - stdenv.mkDerivation rec { pname = "openjpeg"; version = "2.5.2"; - src = fetchFromGitHub { - owner = "uclouvain"; - repo = "openjpeg"; - rev = "v${version}"; - hash = "sha256-mQ9B3MJY2/bg0yY/7jUJrAXM6ozAHT5fmwES5Q1SGxw="; - }; + srcs = [ + (fetchFromGitHub { + owner = "uclouvain"; + repo = "openjpeg"; + rev = "v${version}"; + hash = "sha256-mQ9B3MJY2/bg0yY/7jUJrAXM6ozAHT5fmwES5Q1SGxw="; + }) + # data for tests. may need to get updated with package + # https://github.com/uclouvain/openjpeg-data + (fetchFromGitHub { + name = "data"; + owner = "uclouvain"; + repo = "openjpeg-data"; + rev = "a428429db695fccfc6d698bd13b6937dffd9d005"; + hash = "sha256-udUi7sPNQJ5uCIAM8SqMGee6vRj1QbF9pLjdpNTQE5k="; + }) + ]; + + sourceRoot = "source"; outputs = [ "out" "dev" ]; cmakeFlags = [ - "-DCMAKE_INSTALL_NAME_DIR=\${CMAKE_INSTALL_PREFIX}/lib" - "-DBUILD_SHARED_LIBS=ON" + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) "-DBUILD_CODEC=ON" "-DBUILD_THIRDPARTY=OFF" - (mkFlag jpipLibSupport "BUILD_JPIP") - (mkFlag jpipServerSupport "BUILD_JPIP_SERVER") + (lib.cmakeBool "BUILD_JPIP" jpipLibSupport) + (lib.cmakeBool "BUILD_JPIP_SERVER" jpipServerSupport) "-DBUILD_VIEWER=OFF" "-DBUILD_JAVA=OFF" - (mkFlag doCheck "BUILD_TESTING") + "-DOPJ_DATA_ROOT=../../data" + (lib.cmakeBool "BUILD_TESTING" doCheck) ]; nativeBuildInputs = [ cmake pkg-config ]; @@ -52,12 +61,15 @@ stdenv.mkDerivation rec { ++ lib.optionals jpipServerSupport [ curl fcgi ] ++ lib.optional (jpipLibSupport) jdk; - doCheck = (!stdenv.hostPlatform.isAarch64 && !stdenv.hostPlatform.isPower64); # tests fail on aarch64-linux and powerpc64 - nativeCheckInputs = [ jpylyzer ]; + # tests fail on aarch64-linux and powerpc64 + doCheck = !stdenv.hostPlatform.isPower64 + && stdenv.buildPlatform.canExecute stdenv.hostPlatform; + checkPhase = '' - substituteInPlace ../tools/ctest_scripts/travis-ci.cmake \ - --replace "JPYLYZER_EXECUTABLE=" "JPYLYZER_EXECUTABLE=\"$(command -v jpylyzer)\" # " - OPJ_SOURCE_DIR=.. ctest -S ../tools/ctest_scripts/travis-ci.cmake + runHook preCheck + ctest -j $NIX_BUILD_CORES \ + -E '.*jpylyser' --exclude-from-file ${./exclude-tests} + runHook postCheck ''; passthru = {