about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/openexr/default.nix
blob: 9eef138c532e6dfe5aae954086f05621b129727d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{ lib, stdenv, buildPackages, fetchurl, autoconf, automake, libtool, pkgconfig, zlib, ilmbase, }:

let
  # Doesn't really do anything when not crosscompiling
  emulator = stdenv.hostPlatform.emulator buildPackages;
in

stdenv.mkDerivation rec {
  pname = "openexr";
  version = lib.getVersion ilmbase;

  src = fetchurl {
    url = "https://github.com/openexr/openexr/releases/download/v${version}/${pname}-${version}.tar.gz";
    sha256 = "19jywbs9qjvsbkvlvzayzi81s976k53wg53vw4xj66lcgylb6v7x";
  };

  patches = [
    ./bootstrap.patch
  ];

  outputs = [ "bin" "dev" "out" "doc" ];

  # Needed because there are some generated sources. Solution: just run them under QEMU.
  postPatch = ''
    for file in b44ExpLogTable dwaLookups
    do
      # Ecape for both sh and Automake
      emu=${lib.escapeShellArg (lib.replaceStrings ["$"] ["$$"] emulator)}
      before="./$file > $file.h"
      after="$emu $before"
      substituteInPlace IlmImf/Makefile.am \
        --replace "$before" "$after"
    done

    # Make sure the patch succeeded
    [[ $(grep "$emu" IlmImf/Makefile.am | wc -l) = 2 ]]
  '';

  preConfigure = ''
    patchShebangs ./bootstrap
    ./bootstrap
  '';

  nativeBuildInputs = [ pkgconfig autoconf automake libtool ];
  propagatedBuildInputs = [ ilmbase zlib ];

  enableParallelBuilding = true;
  doCheck = false; # fails 1 of 1 tests

  meta = with stdenv.lib; {
    homepage = https://www.openexr.com/;
    license = licenses.bsd3;
    platforms = platforms.all;
  };
}