Commit 5678aa05 authored by Andrew Marshall's avatar Andrew Marshall
Browse files

gmic-qt: build from Git source to avoid mutable tarball

The previous tarball src sometimes gets mutated (see e.g. [this
comment][1]). This was changed from the Git src in
fd3e2b49 (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
parent 4a6b83b0
Loading
Loading
Loading
Loading
+15 −29
Original line number Diff line number Diff line
{ lib
, cimg
, cmake
, coreutils
, curl
, fetchzip
, fetchFromGitHub
, fftw
, gimp
, gimpPlugins
, gmic
, gnugrep
, gnused
, graphicsmagick
, libjpeg
, libpng
, libsForQt5
, libtiff
, ninja
, nix-update
, nix-update-script
, openexr
, pkg-config
, stdenv
, writeShellScript
, zlib
, variant ? "standalone"
}:
@@ -53,15 +49,15 @@ assert lib.assertMsg

stdenv.mkDerivation (finalAttrs: {
  pname = "gmic-qt${lib.optionalString (variant != "standalone") "-${variant}"}";
  version = "3.3.6";
  version = "3.3.5";

  src = fetchzip {
    url = "https://gmic.eu/files/source/gmic_${finalAttrs.version}.tar.gz";
    hash = "sha256-LZwAMLvQ+X6xkvnL+7LA/UmwDBGgapUtFHNJuV04F+Y=";
  src = fetchFromGitHub {
    owner = "c-koi";
    repo = "gmic-qt";
    rev = "v.${finalAttrs.version}";
    hash = "sha256-WApuIWqVgVJAM2WdfOiqoQ2U+9kIuq8fy6wvJ55KoIc=";
  };

  sourceRoot = "${finalAttrs.src.name}/gmic-qt";

  nativeBuildInputs = [
    cmake
    libsForQt5.wrapQtAppsHook
@@ -70,6 +66,7 @@ stdenv.mkDerivation (finalAttrs: {
  ];

  buildInputs = [
    cimg
    curl
    fftw
    gmic
@@ -88,6 +85,9 @@ stdenv.mkDerivation (finalAttrs: {
    patchShebangs \
      translations/filters/csv2ts.sh \
      translations/lrelease.sh

    mkdir ../src
    ln -s ${gmic.src}/src/gmic.cpp ../src/gmic.cpp
  '';

  cmakeFlags = [
@@ -108,23 +108,9 @@ stdenv.mkDerivation (finalAttrs: {
      inherit cimg gmic;
    };

    updateScript = writeShellScript "gmic-qt-update-script" ''
      set -euo pipefail

      export PATH="${lib.makeBinPath [ coreutils curl gnugrep gnused nix-update ]}:$PATH"

      latestVersion=$(curl 'https://gmic.eu/files/source/' \
                       | grep -E 'gmic_[^"]+\.tar\.gz' \
                       | sed -E 's/.+<a href="gmic_([^"]+)\.tar\.gz".+/\1/g' \
                       | sort --numeric-sort --reverse | head -n1)

      if [[ '${finalAttrs.version}' = "$latestVersion" ]]; then
          echo "The new version same as the old version."
          exit 0
      fi

      nix-update --version "$latestVersion"
    '';
    updateScript = nix-update-script {
      extraArgs = [ "--version-regex" "^v\\.(.*)" ];
    };
  };

  meta = {