summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJulian Stecklina <js@alien8.de>2021-07-31 15:38:15 +0200
committerJulian Stecklina <js@alien8.de>2021-08-02 21:38:34 +0200
commit41d6e94bdf9f9122e1d911446521edc15500e6d6 (patch)
tree8fe7fa29e9267725ad5fcaa9371510da2c07645f /pkgs
parentc649b93603f3ee9ab6787e9fbaf319378474726a (diff)
downloadnixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.tar
nixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.tar.gz
nixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.tar.bz2
nixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.tar.lz
nixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.tar.xz
nixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.tar.zst
nixpkgs-41d6e94bdf9f9122e1d911446521edc15500e6d6.zip
djv: init at 2.0.8-unstable-2021-07-31
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/graphics/djv/default.nix152
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 154 insertions, 0 deletions
diff --git a/pkgs/applications/graphics/djv/default.nix b/pkgs/applications/graphics/djv/default.nix
new file mode 100644
index 00000000000..95a29f243e4
--- /dev/null
+++ b/pkgs/applications/graphics/djv/default.nix
@@ -0,0 +1,152 @@
+{ stdenv
+, cmake
+, fetchFromGitHub
+, lib
+, alsa-lib
+, libGL
+, libX11
+, libXinerama
+, libXi
+, zlib
+, rtaudio
+, rapidjson
+, ilmbase
+, glm
+, glfw3
+, libpng
+, opencolorio_1
+, freetype
+}:
+
+let
+
+  # The way third-party dependencies are packaged has changed
+  # significantly from the 2.0.8 release. This means any packaging
+  # effort for the 2.0.8 release would have to be redone for the next
+  # release. Hence we package the git version for now and can easily
+  # jump onto the next release once it's available.
+  djvVersion = "2.0.8-unstable-2021-07-31";
+
+  djvSrc = fetchFromGitHub {
+    owner = "darbyjohnston";
+    repo = "djv";
+    rev = "ae31712c4f2802a874217ac194bde26287993934";
+    sha256 = "1qgia6vqb6fhyfj8w925xl6k6zidrp2gj5f32bpi94lwwhi6p9pd";
+  };
+
+  # DJV's build system tries to automatically pull in FSeq, another
+  # library by the DJV author.
+  #
+  # When updating, check the following file in the DJV source:
+  # etc/SuperBuild/cmake/Modules/BuildFSeq.cmake
+  #
+  # If there is revision or tag specified, DJV wants to use the most
+  # recent master version
+  fseqSrc = fetchFromGitHub {
+    owner = "darbyjohnston";
+    repo = "fseq";
+    rev = "545fac6018100f7fca474b8ee4f1efa7cbf6bf45";
+    sha256 = "0qfhbrzji05hh5kwgd1wvq2lbf81ylbi7v7aqk28aws27f8d2hk0";
+  };
+
+  djv-deps = stdenv.mkDerivation rec {
+    pname = "djv-dependencies";
+    version = djvVersion;
+
+    src = djvSrc;
+
+    sourceRoot = "source/etc/SuperBuild";
+
+    nativeBuildInputs = [ cmake ];
+    buildInputs = [
+      libGL
+    ];
+
+    postPatch = ''
+      chmod -R +w .
+
+      sed -i 's,GIT_REPOSITORY https://github.com/darbyjohnston/FSeq.git,SOURCE_DIR ${fseqSrc},' \
+          cmake/Modules/BuildFSeq.cmake
+
+      # We pull these projects in as normal Nix dependencies. No need
+      # to build them again here.
+
+      sed -i CMakeLists.txt \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS RapidJSON)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS RtAudio)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS IlmBase)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS GLM)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS GLFW)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS ZLIB)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS PNG)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS FreeType)/d' \
+          -e '/list(APPEND DJV_THIRD_PARTY_DEPS OCIO)/d'
+
+      # The "SuperBuild" wants to build DJV right here. This is
+      # inconvenient, because then the `make install` target is not generated
+      # by CMake. We build DJV in its own derivation below. This also makes
+      # the build a bit more modular.
+
+      sed -i '/include(BuildDJV)/d' \
+          CMakeLists.txt
+    '';
+
+    cmakeFlags = [
+      "-DDJV_THIRD_PARTY_OpenEXR:BOOL=False"
+      "-DDJV_THIRD_PARTY_JPEG:BOOL=False"
+      "-DDJV_THIRD_PARTY_TIFF:BOOL=False"
+    ];
+
+    dontInstall = true;
+    doCheck = true;
+  };
+
+in
+stdenv.mkDerivation rec {
+  pname = "djv";
+  version = djvVersion;
+
+  src = djvSrc;
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [
+    alsa-lib
+    libGL
+    libX11
+    libXinerama
+    libXi
+    rapidjson
+    rtaudio
+    ilmbase
+    glm
+    glfw3
+    zlib.dev
+    libpng
+    freetype
+    opencolorio_1
+    djv-deps
+  ];
+
+  postPatch = ''
+    chmod -R +w .
+
+    # When linking opencolorio statically this results in failing to
+    # pull in opencolorio's dependencies (tixml and yaml libraries). Avoid
+    # this by linking it statically instead.
+
+    sed -i cmake/Modules/FindOCIO.cmake \
+        -e 's/PATH_SUFFIXES static//' \
+        -e '/OpenColorIO_STATIC/d'
+  '';
+
+  # GLFW requires a working X11 session.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A professional review software for VFX, animation, and film production";
+    homepage = "https://darbyjohnston.github.io/DJV/";
+    platforms = platforms.linux;
+    maintainers = [ maintainers.blitz ];
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 63c64bb3e3b..6dada82c444 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2551,6 +2551,8 @@ in
 
   dino = callPackage ../applications/networking/instant-messengers/dino { };
 
+  djv = callPackage ../applications/graphics/djv { };
+
   dlx = callPackage ../misc/emulators/dlx { };
 
   dgen-sdl = callPackage ../misc/emulators/dgen-sdl { };