mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-26 14:53:52 +00:00
5678aa0521
The previous tarball src sometimes gets mutated (see e.g. [this
comment][1]). This was changed from the Git src in
fd3e2b49f4
(see also [upstream
discussion][2]). However the delta seems simple; it had error:
```
In file included from /build/source/src/GmicProcessor.cpp:48:
/nix/store/jk1dp7v01pisw0flybqwyjg63in6r9fp-gmic-3.3.5-dev/include/gmic.h:191:21: fatal error: gmic.cpp: No such file or directory
191 | #define cimg_plugin "gmic.cpp"
```
workaround this by linking `gmic.cpp` into the expected location as it
appears in the tarball.
cimg is now needed in buildInputs as it is bundled in the tarball, but
not the Git src.
Change the updateScript to simpler one that can use the Git tags.
This may appear to be downgrading, but this is only because the previous
drv used the gmic version, not the gmic-qt version.
[1]: https://github.com/NixOS/nixpkgs/pull/311734#issuecomment-2118663822
[2]: https://github.com/c-koi/gmic-qt/pull/175
125 lines
2.6 KiB
Nix
125 lines
2.6 KiB
Nix
{ lib
|
|
, cimg
|
|
, cmake
|
|
, curl
|
|
, fetchFromGitHub
|
|
, fftw
|
|
, gimp
|
|
, gimpPlugins
|
|
, gmic
|
|
, graphicsmagick
|
|
, libjpeg
|
|
, libpng
|
|
, libsForQt5
|
|
, libtiff
|
|
, ninja
|
|
, nix-update-script
|
|
, openexr
|
|
, pkg-config
|
|
, stdenv
|
|
, zlib
|
|
, variant ? "standalone"
|
|
}:
|
|
|
|
let
|
|
variants = {
|
|
gimp = {
|
|
extraDeps = [
|
|
gimp
|
|
gimp.gtk
|
|
];
|
|
description = "GIMP plugin for the G'MIC image processing framework";
|
|
};
|
|
|
|
standalone = {
|
|
extraDeps = []; # Just to keep uniformity and avoid test-for-null
|
|
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)
|
|
"gmic-qt variant \"${variant}\" is missing one of its dependencies.";
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "gmic-qt${lib.optionalString (variant != "standalone") "-${variant}"}";
|
|
version = "3.3.5";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "c-koi";
|
|
repo = "gmic-qt";
|
|
rev = "v.${finalAttrs.version}";
|
|
hash = "sha256-WApuIWqVgVJAM2WdfOiqoQ2U+9kIuq8fy6wvJ55KoIc=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
libsForQt5.wrapQtAppsHook
|
|
ninja
|
|
pkg-config
|
|
];
|
|
|
|
buildInputs = [
|
|
cimg
|
|
curl
|
|
fftw
|
|
gmic
|
|
graphicsmagick
|
|
libjpeg
|
|
libpng
|
|
libtiff
|
|
openexr
|
|
zlib
|
|
] ++ (with libsForQt5; [
|
|
qtbase
|
|
qttools
|
|
]) ++ variants.${variant}.extraDeps;
|
|
|
|
postPatch = ''
|
|
patchShebangs \
|
|
translations/filters/csv2ts.sh \
|
|
translations/lrelease.sh
|
|
|
|
mkdir ../src
|
|
ln -s ${gmic.src}/src/gmic.cpp ../src/gmic.cpp
|
|
'';
|
|
|
|
cmakeFlags = [
|
|
(lib.cmakeBool "ENABLE_DYNAMIC_LINKING" true)
|
|
(lib.cmakeBool "ENABLE_SYSTEM_GMIC" true)
|
|
(lib.cmakeFeature "GMIC_QT_HOST" (if variant == "standalone" then "none" else variant))
|
|
];
|
|
|
|
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 = {
|
|
# They need to be update in lockstep.
|
|
gimp-plugin = gimpPlugins.gmic;
|
|
inherit cimg gmic;
|
|
};
|
|
|
|
updateScript = nix-update-script {
|
|
extraArgs = [ "--version-regex" "^v\\.(.*)" ];
|
|
};
|
|
};
|
|
|
|
meta = {
|
|
homepage = "http://gmic.eu/";
|
|
inherit (variants.${variant}) description;
|
|
license = lib.licenses.gpl3Plus;
|
|
mainProgram = "gmic_qt";
|
|
maintainers = with lib.maintainers; [ AndersonTorres lilyinstarlight ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
})
|