diff --git a/pkgs/development/libraries/libe57format/default.nix b/pkgs/development/libraries/libe57format/default.nix index 6bb48c9530c8..137c73990f6a 100644 --- a/pkgs/development/libraries/libe57format/default.nix +++ b/pkgs/development/libraries/libe57format/default.nix @@ -5,6 +5,9 @@ boost, xercesc, icu, + + dos2unix, + fetchpatch, }: stdenv.mkDerivation rec { @@ -25,9 +28,39 @@ stdenv.mkDerivation rec { buildInputs = [ boost icu + ]; + + propagatedBuildInputs = [ + # Necessary for projects that try to find libE57Format via CMake + # due to the way that libe57format's CMake config is written. xercesc ]; + # TODO: Remove CMake patching when https://github.com/asmaloney/libE57Format/pull/60 is available. + + # GNU patch cannot patch `CMakeLists.txt` that has CRLF endings, + # see https://unix.stackexchange.com/questions/239364/how-to-fix-hunk-1-failed-at-1-different-line-endings-message/243748#243748 + # so convert it first. + prePatch = '' + ${dos2unix}/bin/dos2unix CMakeLists.txt + ''; + patches = [ + (fetchpatch { + name = "libE57Format-cmake-Fix-config-filename.patch"; + url = "https://github.com/asmaloney/libE57Format/commit/279d8d6b60ee65fb276cdbeed74ac58770a286f9.patch"; + sha256 = "0fbf92hs1c7yl169i7zlbaj9yhrd1yg3pjf0wsqjlh8mr5m6rp14"; + }) + ]; + # It appears that while the patch has + # diff --git a/cmake/E57Format-config.cmake b/cmake/e57format-config.cmake + # similarity index 100% + # rename from cmake/E57Format-config.cmake + # rename to cmake/e57format-config.cmake + # GNU patch doesn't interpret that. + postPatch = '' + mv cmake/E57Format-config.cmake cmake/e57format-config.cmake + ''; + # The build system by default builds ONLY static libraries, and with # `-DE57_BUILD_SHARED=ON` builds ONLY shared libraries, see: # https://github.com/asmaloney/libE57Format/issues/48