summary refs log tree commit diff
path: root/pkgs/tools/filesystems/glusterfs/default.nix
diff options
context:
space:
mode:
authorNiklas Hambüchen <mail@nh2.me>2017-05-14 19:18:07 +0200
committerNiklas Hambüchen <mail@nh2.me>2017-05-19 16:56:30 +0200
commit833acf9ff1aad07193c405e934d8c4982a45837f (patch)
treeb0bfaf5dbe476fc31089afe330b3d0f1bc3d1a30 /pkgs/tools/filesystems/glusterfs/default.nix
parent2f7152f997feca9261a67fd9368dc3547d676c5b (diff)
downloadnixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.tar
nixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.tar.gz
nixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.tar.bz2
nixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.tar.lz
nixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.tar.xz
nixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.tar.zst
nixpkgs-833acf9ff1aad07193c405e934d8c4982a45837f.zip
glusterfs: Use github instead of download.gluster.org to obtain source.
This is because the source tarball available on
  https://download.gluster.org/pub/gluster/glusterfs/3.10/3.10.1/glusterfs-3.10.1.tar.gz
has different contents than the v3.10.1 tag;
for example, it lacks the file `xlators/features/ganesha/src/Makefile.am`,
which the tag has.
This is because GluserFS's release process removes some unused files.

This made impossible to apply patches written by or for upstream, as those
are written against what's in upstream's git.

As a nice side effect, we no longer have to hardcode the "3.10" in the
`3.10/${version}` part of the URL.
Diffstat (limited to 'pkgs/tools/filesystems/glusterfs/default.nix')
-rw-r--r--pkgs/tools/filesystems/glusterfs/default.nix20
1 files changed, 15 insertions, 5 deletions
diff --git a/pkgs/tools/filesystems/glusterfs/default.nix b/pkgs/tools/filesystems/glusterfs/default.nix
index 0eeff408d07..6d6f0f3b1c8 100644
--- a/pkgs/tools/filesystems/glusterfs/default.nix
+++ b/pkgs/tools/filesystems/glusterfs/default.nix
@@ -2,14 +2,14 @@
  autoconf, automake, libtool, pkgconfig, zlib, libaio, libxml2, acl, sqlite
  , liburcu, attr, makeWrapper, coreutils, gnused, gnugrep, which
 }:
-let 
+let
   s =
   rec {
     baseName="glusterfs";
     version = "3.10.1";
     name="${baseName}-${version}";
-    url="http://download.gluster.org/pub/gluster/glusterfs/3.10/${version}/glusterfs-${version}.tar.gz";
-    sha256 = "05qmn85lg3d1gz0fhn1v2z7nwl2qwbflvjc8nvkfyr4r57rkvhnk";
+    url="https://github.com/gluster/glusterfs/archive/v${version}.tar.gz";
+    sha256 = "0gmb3m98djljcycjggi1qv99ai6k4cvn2rqym2q9f58q8n8kdhh7";
   };
   buildInputs = [
     fuse bison flex_2_5_35 openssl python2 ncurses readline
@@ -26,7 +26,17 @@ rec {
   inherit (s) name version;
   inherit buildInputs propagatedBuildInputs;
 
-  preConfigure = ''
+   # Note that the VERSION file is something that is present in release tarballs
+   # but not in git tags (at least not as of writing in v3.10.1).
+   # That's why we have to create it.
+   # Without this, gluster (at least 3.10.1) will fail very late and cryptically,
+   # for example when setting up geo-replication, with a message like
+   #   Staging of operation 'Volume Geo-replication Create' failed on localhost : Unable to fetch master volume details. Please check the master cluster and master volume.
+   # What happens here is that the gverify.sh script tries to compare the versions,
+   # but fails when the version is empty.
+   # See upstream GlusterFS bug https://bugzilla.redhat.com/show_bug.cgi?id=1452705
+   preConfigure = ''
+     echo "v${s.version}" > VERSION
     ./autogen.sh
     '';
 
@@ -52,7 +62,7 @@ rec {
     maintainers = [
       stdenv.lib.maintainers.raskin
     ];
-    platforms = with stdenv.lib.platforms; 
+    platforms = with stdenv.lib.platforms;
       linux ++ freebsd;
   };
 }