diff --git a/pkgs/development/libraries/openexr/default.nix b/pkgs/development/libraries/openexr/default.nix index 5815db813528..54b617fdc014 100644 --- a/pkgs/development/libraries/openexr/default.nix +++ b/pkgs/development/libraries/openexr/default.nix @@ -1,4 +1,9 @@ -{ lib, stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, zlib, ilmbase }: +{ 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 { name = "openexr-${version}"; @@ -15,6 +20,22 @@ stdenv.mkDerivation rec { 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