summary refs log tree commit diff
path: root/pkgs/tools/filesystems/xfsprogs
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-02-26 07:40:51 -0500
committerShea Levy <shea@shealevy.com>2018-03-17 21:58:14 -0400
commitcd843345ffbd48241fd3928f14ace4af56b8d283 (patch)
treedf7c96d3ec3c32b9d1aec660926e77c8ead1de60 /pkgs/tools/filesystems/xfsprogs
parent2929a2c1faee6736bf13025e085d6b17328724be (diff)
downloadnixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.tar
nixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.tar.gz
nixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.tar.bz2
nixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.tar.lz
nixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.tar.xz
nixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.tar.zst
nixpkgs-cd843345ffbd48241fd3928f14ace4af56b8d283.zip
xfsprogs: Fix build on glibc-2.27
Diffstat (limited to 'pkgs/tools/filesystems/xfsprogs')
-rw-r--r--pkgs/tools/filesystems/xfsprogs/default.nix1
-rw-r--r--pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch37
2 files changed, 38 insertions, 0 deletions
diff --git a/pkgs/tools/filesystems/xfsprogs/default.nix b/pkgs/tools/filesystems/xfsprogs/default.nix
index 5321fd8a830..cc2bbad1680 100644
--- a/pkgs/tools/filesystems/xfsprogs/default.nix
+++ b/pkgs/tools/filesystems/xfsprogs/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
     (gentooPatch "xfsprogs-4.12.0-sharedlibs.patch" "1i081749x91jvlrw84l4a3r081vqcvn6myqhnqbnfcfhd64h12bq")
     (gentooPatch "xfsprogs-4.7.0-libxcmd-link.patch" "1lvy1ajzml39a631a7jqficnzsd40bzkca7hkxv1ybiqyp8sf55s")
     (gentooPatch "xfsprogs-4.9.0-underlinking.patch" "1r7l8jphspy14i43zbfnjrnyrdm4cpgyfchblascxylmans0gci7")
+    ./glibc-2.27.patch
   ];
 
   preConfigure = ''
diff --git a/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch b/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch
new file mode 100644
index 00000000000..757ea81c927
--- /dev/null
+++ b/pkgs/tools/filesystems/xfsprogs/glibc-2.27.patch
@@ -0,0 +1,37 @@
+diff -Naur a/io/copy_file_range.c b/io/copy_file_range.c
+--- a/io/copy_file_range.c	1969-12-31 19:00:01.000000000 -0500
++++ b/io/copy_file_range.c	2018-02-26 07:39:21.533535821 -0500
+@@ -42,24 +42,6 @@
+ "));
+ }
+ 
+-static loff_t
+-copy_file_range(int fd, loff_t *src, loff_t *dst, size_t len)
+-{
+-	loff_t ret;
+-
+-	do {
+-		ret = syscall(__NR_copy_file_range, fd, src, file->fd, dst, len, 0);
+-		if (ret == -1) {
+-			perror("copy_range");
+-			return errno;
+-		} else if (ret == 0)
+-			break;
+-		len -= ret;
+-	} while (len > 0);
+-
+-	return 0;
+-}
+-
+ static off64_t
+ copy_src_filesize(int fd)
+ {
+@@ -130,7 +112,7 @@
+ 		copy_dst_truncate();
+ 	}
+ 
+-	ret = copy_file_range(fd, &src, &dst, len);
++	ret = copy_file_range(fd, &src, file->fd, &dst, len, 0);
+ 	close(fd);
+ 	return ret;
+ }