about summary refs log tree commit diff
path: root/pkgs/development/libraries/opencolorio
diff options
context:
space:
mode:
authorTom Hall <tahall256@protonmail.ch>2018-08-27 14:05:25 +0100
committerTom Hall <tahall256@protonmail.ch>2018-08-30 18:03:21 +0000
commit43110d8af50ed3c1e1ed4f540a34499733c726a9 (patch)
treef98b68b34343fd49826dae2d121993249e339824 /pkgs/development/libraries/opencolorio
parentc2c13157bb4339069874206fa9588e75d106c808 (diff)
downloadnixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.tar
nixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.tar.gz
nixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.tar.bz2
nixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.tar.lz
nixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.tar.xz
nixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.tar.zst
nixlib-43110d8af50ed3c1e1ed4f540a34499733c726a9.zip
opencolorio: refactor to use system lcms2 and tinyxml
The version of LCMS bundled with opencolorio is too old to build on
aarch64, simply because its config files date from before aarch64
was announced. However, it can use the system lcms2 if it is found.

Also de-vendor tinyxml.

In addition, the version had been bumped to 1.1.0, but 1.0.9 was still
hard-coded in the fetch uri. Some changes were necessary for 1.1.0 to build.

As the sources are fetched from github, use fetchFromGitHub instead of
fetchurl.
Diffstat (limited to 'pkgs/development/libraries/opencolorio')
-rw-r--r--pkgs/development/libraries/opencolorio/default.nix31
1 files changed, 24 insertions, 7 deletions
diff --git a/pkgs/development/libraries/opencolorio/default.nix b/pkgs/development/libraries/opencolorio/default.nix
index 751d845f773e..42c0de4d493c 100644
--- a/pkgs/development/libraries/opencolorio/default.nix
+++ b/pkgs/development/libraries/opencolorio/default.nix
@@ -1,22 +1,39 @@
-{ stdenv, lib, fetchurl, cmake, unzip, boost }:
+{ stdenv, lib, fetchFromGitHub, cmake, boost, pkgconfig, lcms2, tinyxml, git }:
+
+with lib;
 
 stdenv.mkDerivation rec {
   name = "opencolorio-${version}";
   version = "1.1.0";
 
-  src = fetchurl {
-    url = "https://github.com/imageworks/OpenColorIO/archive/v1.0.9.zip";
-    sha256 = "1vi5pcgj7gv8fp6cdnhszwfh7lh38rl2rk4c5yzsvmgcb7xf48bx";
+  src = fetchFromGitHub {
+    owner = "imageworks";
+    repo = "OpenColorIO";
+    rev = "v${version}";
+    sha256 = "0cjsyn681xsg89lirlll5pqlsqg2vnk1278iiicmzjy2a2v8x7zq";
   };
 
   outputs = [ "bin" "out" "dev" ];
 
-  buildInputs = [ cmake unzip ] ++ lib.optional stdenv.isDarwin boost;
+  # TODO: Investigate whether git can be dropped: It's only used to apply patches
+  nativeBuildInputs = [ cmake pkgconfig git ];
+
+  buildInputs = [ lcms2 tinyxml ] ++ optional stdenv.isDarwin boost;
+
+  postPatch = ''
+    substituteInPlace src/core/CMakeLists.txt --replace "-Werror" ""
+    substituteInPlace src/pyglue/CMakeLists.txt --replace "-Werror" ""
+  '';
 
-  cmakeFlags = lib.optional stdenv.isDarwin "-DOCIO_USE_BOOST_PTR=ON";
+  cmakeFlags = [
+    "-DUSE_EXTERNAL_LCMS=ON"
+    "-DUSE_EXTERNAL_TINYXML=ON"
+    # External libyamlcpp 0.6.* not compatible: https://github.com/imageworks/OpenColorIO/issues/517
+    "-DUSE_EXTERNAL_YAML=OFF"
+  ] ++ optional stdenv.isDarwin "-DOCIO_USE_BOOST_PTR=ON"
+    ++ optional (!stdenv.hostPlatform.isi686 && !stdenv.hostPlatform.isx86_64) "-DOCIO_USE_SSE=OFF";
 
   postInstall = ''
-    rm $out/lib/*.a
     mkdir -p $bin/bin; mv $out/bin $bin/
   '';