63e4a92217
Ever since the gmic 3.2.0 bump, it just does not build – it tries to use stub definitions for gmic_image from src/GmicQt.h, leading to errors like:
/build/source/src/GmicQt.cpp:344:11: error: 'struct gmic_library::gmic_image<unsigned char>' has no member named 'channels'
344 | img.channels(0, 3);
| ~~~~^~~~~~~~
gmic-qt 3.2.1 contains a supposed fix (f0d9d8acd1
) which might have actually fixed the gmic_image issue but it introduces another one with cimg.
gmic-3.2.1-dev/include/gmic.h:191:21: fatal error: gmic.cpp: No such file or directory
191 | #define cimg_plugin "gmic.cpp"
| ^~~~~~~~~~
I do not really understand qmake, deprecated build system which gmic author insists on using for gmic-qt, and the trio of libraries is convoluted enough (mutually including their various headers and source files) that I gave up on creating an usable CMake build script that supports system libraries. It does not help that the git history is obfuscated, making proper investigation annoying.
Marking it as broken will at least make gimp-with-plugins work.
118 lines
2.3 KiB
Nix
118 lines
2.3 KiB
Nix
{ lib
|
|
, mkDerivation
|
|
, variant ? "standalone"
|
|
, fetchFromGitHub
|
|
, cmake
|
|
, pkg-config
|
|
, ninja
|
|
, opencv3
|
|
, openexr
|
|
, graphicsmagick
|
|
, fftw
|
|
, zlib
|
|
, libjpeg
|
|
, libtiff
|
|
, libpng
|
|
, curl
|
|
, gimp ? null
|
|
, gmic
|
|
, cimg
|
|
, qtbase
|
|
, qttools
|
|
, writeShellScript
|
|
, common-updater-scripts
|
|
, gnugrep
|
|
, gnused
|
|
, coreutils
|
|
, jq
|
|
, nix-update-script
|
|
, gimpPlugins
|
|
}:
|
|
|
|
let
|
|
variants = {
|
|
gimp = {
|
|
extraDeps = [
|
|
gimp
|
|
gimp.gtk
|
|
];
|
|
description = "GIMP plugin for the G'MIC image processing framework";
|
|
};
|
|
|
|
standalone = {
|
|
description = "Versatile front-end to the image processing framework G'MIC";
|
|
};
|
|
};
|
|
|
|
in
|
|
|
|
assert lib.assertMsg (builtins.hasAttr variant variants) "gmic-qt variant “${variant}” is not supported. Please use one of ${lib.concatStringsSep ", " (builtins.attrNames variants)}.";
|
|
|
|
assert lib.assertMsg (builtins.all (d: d != null) variants.${variant}.extraDeps or []) "gmic-qt variant “${variant}” is missing one of its dependencies.";
|
|
|
|
mkDerivation rec {
|
|
pname = "gmic-qt${lib.optionalString (variant != "standalone") "-${variant}"}";
|
|
version = "3.2.1";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "c-koi";
|
|
repo = "gmic-qt";
|
|
rev = "v.${version}";
|
|
sha256 = "sha256-z+GtYLBcHVufXwdeSd8WKmPmU1+/EKMv26kNaEgyt5w=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
ninja
|
|
];
|
|
|
|
buildInputs = [
|
|
gmic
|
|
cimg
|
|
qtbase
|
|
qttools
|
|
fftw
|
|
zlib
|
|
libjpeg
|
|
libtiff
|
|
libpng
|
|
opencv3
|
|
openexr
|
|
graphicsmagick
|
|
curl
|
|
] ++ variants.${variant}.extraDeps or [];
|
|
|
|
cmakeFlags = [
|
|
"-DGMIC_QT_HOST=${if variant == "standalone" then "none" else variant}"
|
|
"-DENABLE_SYSTEM_GMIC:BOOL=ON"
|
|
];
|
|
|
|
postPatch = ''
|
|
patchShebangs \
|
|
translations/filters/csv2ts.sh \
|
|
translations/lrelease.sh
|
|
'';
|
|
|
|
postFixup = lib.optionalString (variant == "gimp") ''
|
|
echo "wrapping $out/${gimp.targetPluginDir}/gmic_gimp_qt/gmic_gimp_qt"
|
|
wrapQtApp "$out/${gimp.targetPluginDir}/gmic_gimp_qt/gmic_gimp_qt"
|
|
'';
|
|
|
|
passthru = {
|
|
tests = {
|
|
gimp-plugin = gimpPlugins.gmic;
|
|
};
|
|
|
|
updateScript = nix-update-script { };
|
|
};
|
|
|
|
meta = with lib; {
|
|
# Broken since 3.2.0 update, cannot handle system gmic and cimg.
|
|
broken = true;
|
|
description = variants.${variant}.description;
|
|
homepage = "http://gmic.eu/";
|
|
license = licenses.gpl3Plus;
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|