diff options
author | Anderson Torres <torres.anderson.85@protonmail.com> | 2023-10-09 10:36:45 -0300 |
---|---|---|
committer | Anderson Torres <torres.anderson.85@protonmail.com> | 2023-10-09 19:01:25 -0300 |
commit | e04c25f55833810faae94c9f7732c73e3e0176bb (patch) | |
tree | 9b16ab07a15aad1d0a45cebb2f0c57bf543b192f /pkgs/by-name/gm | |
parent | ba10489eae3b2b2f665947b516e7043594a235c8 (diff) |
gmic: migrate to by-name
Diffstat (limited to 'pkgs/by-name/gm')
-rw-r--r-- | pkgs/by-name/gm/gmic/package.nix | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/pkgs/by-name/gm/gmic/package.nix b/pkgs/by-name/gm/gmic/package.nix new file mode 100644 index 0000000000000..59022bcca5057 --- /dev/null +++ b/pkgs/by-name/gm/gmic/package.nix @@ -0,0 +1,124 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchurl +, cimg +, cmake +, common-updater-scripts +, coreutils +, curl +, fftw +, gmic-qt +, gnugrep +, gnused +, graphicsmagick +, jq +, libjpeg +, libpng +, libtiff +, ninja +, opencv +, openexr +, pkg-config +, writeShellScript +, zlib +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "gmic"; + version = "3.2.6"; + + outputs = [ "out" "lib" "dev" "man" ]; + + src = fetchFromGitHub { + owner = "GreycLab"; + repo = "gmic"; + rev = "v.${finalAttrs.version}"; + hash = "sha256-kaI5rcAz3Cw/xzWgJhMRu/cQwVrvLRAPiB5BhzPMOHY="; + }; + + # TODO: build this from source + # Reference: src/Makefile, directive gmic_stdlib.h + gmic_stdlib = fetchurl { + name = "gmic_stdlib.h"; + url = "http://gmic.eu/gmic_stdlib${lib.replaceStrings ["."] [""] finalAttrs.version}.h"; + hash = "sha256-7JzFU4HvAtC5Nz5vusKCnJ8VMuKfSi1yFmjj0Hh+vA4="; + }; + + nativeBuildInputs = [ + cmake + ninja + pkg-config + ]; + + buildInputs = [ + cimg + fftw + graphicsmagick + libjpeg + libpng + libtiff + opencv + openexr + zlib + ]; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_LIB_STATIC" false) + (lib.cmakeBool "ENABLE_CURL" false) + (lib.cmakeBool "ENABLE_DYNAMIC_LINKING" true) + (lib.cmakeBool "USE_SYSTEM_CIMG" true) + ]; + + postPatch = '' + cp -r ${finalAttrs.gmic_stdlib} src/gmic_stdlib.h + + # CMake build files were moved to subdirectory. + mv resources/CMakeLists.txt resources/cmake . + '' + + lib.optionalString stdenv.isDarwin '' + substituteInPlace CMakeLists.txt \ + --replace "LD_LIBRARY_PATH" "DYLD_LIBRARY_PATH" + ''; + + passthru = { + tests = { + # Needs to update them all in lockstep. + inherit cimg gmic-qt; + }; + + updateScript = writeShellScript "gmic-update-script" '' + set -o errexit + PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused jq ]} + + 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 + + for component in src gmic_stdlib; do + # The script will not perform an update when the version attribute is + # up to date from previous platform run; we need to clear it before + # each run + update-source-version "--source-key=$component" "gmic" 0 "${lib.fakeHash}" + update-source-version "--source-key=$component" "gmic" $latestVersion + done + ''; + }; + + meta = { + homepage = "https://gmic.eu/"; + description = "Open and full-featured framework for image processing"; + license = lib.licenses.cecill21; + maintainers = [ + lib.maintainers.AndersonTorres + lib.maintainers.lilyinstarlight + ]; + platforms = lib.platforms.unix; + }; +}) |