about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVika <kisik21@fireburn.ru>2019-08-29 17:12:06 +0300
committerVika <kisik21@fireburn.ru>2019-08-29 17:12:06 +0300
commit4b5fc2cfae20913472aceb0a08bda11c93d63578 (patch)
tree9959ef3e47ec56267ec9c701f07a40b314030006
parentff6b4b12b74c47786c2d8fab70e76a2212201a42 (diff)
downloadnixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.tar
nixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.tar.gz
nixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.tar.bz2
nixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.tar.lz
nixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.tar.xz
nixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.tar.zst
nixlib-4b5fc2cfae20913472aceb0a08bda11c93d63578.zip
redis: Try to fix cross-compilation
**Note**: This makes redis use libc malloc when cross-compiling to
ARM. This may or may not degrade performance.

The reason for this is vendored jemalloc with Redis' patches. The
makefile for deps has hardcoded configure flags for jemalloc, and as a
result, it is unable to cross-compile it.
-rw-r--r--pkgs/servers/nosql/redis/default.nix17
1 files changed, 15 insertions, 2 deletions
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
index 20a6321e0a80..118edb60156d 100644
--- a/pkgs/servers/nosql/redis/default.nix
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, lua }:
+{ stdenv, fetchurl, lua, jemalloc }:
 
 stdenv.mkDerivation rec {
   version = "5.0.5";
@@ -9,8 +9,21 @@ stdenv.mkDerivation rec {
     sha256 = "0xd3ak527cnkz2cn422l2ag9nsa6mhv7y2y49zwqy7fjk6bh0f91";
   };
 
+  # Cross-compiling fixes
+  configurePhase = ''
+    ${stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
+      # This fixes hiredis, which has the AR awkwardly coded.
+      # Probably a good candidate for a patch upstream.
+      makeFlagsArray+=('STLIB_MAKE_CMD=${stdenv.cc.targetPrefix}ar rcs $(STLIBNAME)')
+    ''}
+  '';
+
   buildInputs = [ lua ];
-  makeFlags = "PREFIX=$(out)";
+  # More cross-compiling fixes.
+  # Note: this enables libc malloc as a temporary fix for cross-compiling.
+  # Due to hardcoded configure flags in jemalloc, we can't cross-compile vendored jemalloc properly, and so we're forced to use libc allocator.
+  # It's weird that the build isn't failing because of failure to compile dependencies, it's from failure to link them!
+  makeFlags = "PREFIX=$(out)" + stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) " AR=${stdenv.cc.targetPrefix}ar RANLIB=${stdenv.cc.targetPrefix}ranlib MALLOC=libc";
 
   enableParallelBuilding = true;