Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
139 lines
3.2 KiB
Nix
139 lines
3.2 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
fetchpatch,
|
|
cmake,
|
|
pkg-config,
|
|
libpng,
|
|
libtiff,
|
|
zlib,
|
|
lcms2,
|
|
jpipLibSupport ? false, # JPIP library & executables
|
|
jpipServerSupport ? false,
|
|
curl,
|
|
fcgi, # JPIP Server
|
|
jdk,
|
|
|
|
# for passthru.tests
|
|
ffmpeg,
|
|
gdal,
|
|
gdcm,
|
|
ghostscript,
|
|
imagemagick,
|
|
leptonica,
|
|
mupdf,
|
|
poppler,
|
|
python3,
|
|
vips,
|
|
}:
|
|
|
|
let
|
|
# may need to get updated with package
|
|
# https://github.com/uclouvain/openjpeg-data
|
|
test-data = fetchFromGitHub {
|
|
owner = "uclouvain";
|
|
repo = "openjpeg-data";
|
|
rev = "a428429db695fccfc6d698bd13b6937dffd9d005";
|
|
hash = "sha256-udUi7sPNQJ5uCIAM8SqMGee6vRj1QbF9pLjdpNTQE5k=";
|
|
};
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
pname = "openjpeg";
|
|
version = "2.5.2";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "uclouvain";
|
|
repo = "openjpeg";
|
|
rev = "v${version}";
|
|
hash = "sha256-mQ9B3MJY2/bg0yY/7jUJrAXM6ozAHT5fmwES5Q1SGxw=";
|
|
};
|
|
|
|
patches = [
|
|
(fetchpatch {
|
|
# https://github.com/uclouvain/openjpeg/issues/1564
|
|
name = "CVE-2024-56826_ISSUE1564.patch";
|
|
url = "https://github.com/uclouvain/openjpeg/commit/e492644fbded4c820ca55b5e50e598d346e850e8.patch";
|
|
hash = "sha256-v+odu4/MXRA+RKOlPO+m/Xk66BMH6mOcEN4ScHn3VAo=";
|
|
})
|
|
(fetchpatch {
|
|
# https://github.com/uclouvain/openjpeg/issues/1563
|
|
name = "CVE-2024-56826_ISSUE1563.patch";
|
|
url = "https://github.com/uclouvain/openjpeg/commit/98592ee6d6904f1b48e8207238779b89a63befa2.patch";
|
|
hash = "sha256-1ScnEZAPuvclyRME5kbeo7dBMG31Njs5CaYC4sGyx08=";
|
|
})
|
|
];
|
|
|
|
outputs = [
|
|
"out"
|
|
"dev"
|
|
];
|
|
|
|
cmakeFlags = [
|
|
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
|
|
"-DBUILD_CODEC=ON"
|
|
"-DBUILD_THIRDPARTY=OFF"
|
|
(lib.cmakeBool "BUILD_JPIP" jpipLibSupport)
|
|
(lib.cmakeBool "BUILD_JPIP_SERVER" jpipServerSupport)
|
|
"-DBUILD_VIEWER=OFF"
|
|
"-DBUILD_JAVA=OFF"
|
|
(lib.cmakeBool "BUILD_TESTING" doCheck)
|
|
]
|
|
++ lib.optional doCheck "-DOPJ_DATA_ROOT=${test-data}";
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
];
|
|
|
|
buildInputs = [
|
|
libpng
|
|
libtiff
|
|
zlib
|
|
lcms2
|
|
]
|
|
++ lib.optionals jpipServerSupport [
|
|
curl
|
|
fcgi
|
|
]
|
|
++ lib.optional jpipLibSupport jdk;
|
|
|
|
# tests did fail on powerpc64
|
|
doCheck = !stdenv.hostPlatform.isPower64 && stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
ctest -j $NIX_BUILD_CORES \
|
|
-E '.*jpylyser' --exclude-from-file ${./exclude-tests}
|
|
runHook postCheck
|
|
'';
|
|
|
|
passthru = {
|
|
incDir = "openjpeg-${lib.versions.majorMinor version}";
|
|
tests = {
|
|
ffmpeg = ffmpeg.override { withOpenjpeg = true; };
|
|
imagemagick = imagemagick.override { openjpegSupport = true; };
|
|
pillow = python3.pkgs.pillow;
|
|
|
|
inherit
|
|
gdal
|
|
gdcm
|
|
ghostscript
|
|
leptonica
|
|
mupdf
|
|
poppler
|
|
vips
|
|
;
|
|
};
|
|
};
|
|
|
|
meta = {
|
|
description = "Open-source JPEG 2000 codec written in C language";
|
|
homepage = "https://www.openjpeg.org/";
|
|
license = lib.licenses.bsd2;
|
|
maintainers = with lib.maintainers; [ codyopel ];
|
|
platforms = lib.platforms.all;
|
|
changelog = "https://github.com/uclouvain/openjpeg/blob/v${version}/CHANGELOG.md";
|
|
};
|
|
}
|