summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorNiklas Hambüchen <mail@nh2.me>2020-11-10 20:26:18 +0100
committerNiklas Hambüchen <mail@nh2.me>2020-11-10 20:26:18 +0100
commitb972ca801db35ff30839aa28255fcd3685433028 (patch)
treeb7c2c8d8bb85319cf72397e6866ff9fba5f5e3e6 /pkgs
parent1c460c0a5c72942ef1914c028d8758e48f2b21b4 (diff)
downloadnixpkgs-b972ca801db35ff30839aa28255fcd3685433028.tar
nixpkgs-b972ca801db35ff30839aa28255fcd3685433028.tar.gz
nixpkgs-b972ca801db35ff30839aa28255fcd3685433028.tar.bz2
nixpkgs-b972ca801db35ff30839aa28255fcd3685433028.tar.lz
nixpkgs-b972ca801db35ff30839aa28255fcd3685433028.tar.xz
nixpkgs-b972ca801db35ff30839aa28255fcd3685433028.tar.zst
nixpkgs-b972ca801db35ff30839aa28255fcd3685433028.zip
libe57format: Fix dependents not finding its cmake config
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/libe57format/default.nix33
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/development/libraries/libe57format/default.nix b/pkgs/development/libraries/libe57format/default.nix
index 6bb48c9530c..137c73990f6 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