about summary refs log tree commit diff
path: root/pkgs/tools/system/fakeroot
diff options
context:
space:
mode:
authorPiotr Bogdan <ppbogdan@gmail.com>2017-06-17 11:36:39 +0200
committerVladimír Čunát <vcunat@gmail.com>2017-06-17 11:36:39 +0200
commit0d4431cfe90b2242723ccb1ccc90714f2f68a609 (patch)
tree0208bef2315bbccfbc077aa606d373cd8ab7a3c4 /pkgs/tools/system/fakeroot
parent05547dbcb419acb76126135bb51bf7cb1279ec72 (diff)
downloadnixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.tar
nixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.tar.gz
nixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.tar.bz2
nixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.tar.lz
nixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.tar.xz
nixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.tar.zst
nixlib-0d4431cfe90b2242723ccb1ccc90714f2f68a609.zip
fakeroot: apply patch to ignore EINVAL errors as well
Fixes #25901 the nixos.ova job.  See the referred links.
Diffstat (limited to 'pkgs/tools/system/fakeroot')
-rw-r--r--pkgs/tools/system/fakeroot/default.nix5
-rw-r--r--pkgs/tools/system/fakeroot/einval.patch47
2 files changed, 50 insertions, 2 deletions
diff --git a/pkgs/tools/system/fakeroot/default.nix b/pkgs/tools/system/fakeroot/default.nix
index 5286b6b2cbc9..eca3977f459f 100644
--- a/pkgs/tools/system/fakeroot/default.nix
+++ b/pkgs/tools/system/fakeroot/default.nix
@@ -9,8 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0313xb2j6a4wihrw9gfd4rnyqw7zzv6wf3rfh2gglgnv356ic2kw";
   };
 
+  patches = stdenv.lib.optional stdenv.isLinux ./einval.patch
   # patchset from brew
-  patches = stdenv.lib.optionals stdenv.isDarwin [
+  ++ stdenv.lib.optionals stdenv.isDarwin [
     (fetchpatch {
       name = "0001-Implement-openat-2-wrapper-which-handles-optional-ar.patch";
       url = "https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;filename=0001-Implement-openat-2-wrapper-which-handles-optional-ar.patch;att=1;bug=766649";
@@ -26,7 +27,7 @@ stdenv.mkDerivation rec {
       url = "https://bugs.debian.org/cgi-bin/bugreport.cgi?att=2;bug=766649;filename=fakeroot-always-pass-mode.patch;msg=20";
       sha256 = "0i3zaca1v449dm9m1cq6wq4dy6hc2y04l05m9gg8d4y4swld637p";
     })
-    ];
+  ];
 
   buildInputs = [ getopt ]
     ++ stdenv.lib.optional (!stdenv.isDarwin) libcap
diff --git a/pkgs/tools/system/fakeroot/einval.patch b/pkgs/tools/system/fakeroot/einval.patch
new file mode 100644
index 000000000000..f8d4fb83d137
--- /dev/null
+++ b/pkgs/tools/system/fakeroot/einval.patch
@@ -0,0 +1,47 @@
+Ignore EINVAL errors.  This matters within user namespaces.
+
+See:
+https://github.com/NixOS/nixpkgs/issues/25901
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802612
+https://github.com/NixOS/nixpkgs/issues/10496
+
+diff --git a/libfakeroot.c b/libfakeroot.c
+index 68a95fb..70da8bc 100644
+--- a/libfakeroot.c
++++ b/libfakeroot.c
+@@ -792,7 +792,7 @@ int chown(const char *path, uid_t owner, gid_t group){
+     r=next_lchown(path,owner,group);
+   else
+     r=0;
+-  if(r&&(errno==EPERM))
++  if(r&&(errno==EPERM||errno==EINVAL))
+     r=0;
+
+   return r;
+@@ -819,7 +819,7 @@ int lchown(const char *path, uid_t owner, gid_t group){
+     r=next_lchown(path,owner,group);
+   else
+     r=0;
+-  if(r&&(errno==EPERM))
++  if(r&&(errno==EPERM||errno==EINVAL))
+     r=0;
+
+   return r;
+@@ -843,7 +843,7 @@ int fchown(int fd, uid_t owner, gid_t group){
+   else
+     r=0;
+
+-  if(r&&(errno==EPERM))
++  if(r&&(errno==EPERM||errno==EINVAL))
+     r=0;
+
+   return r;
+@@ -870,7 +870,7 @@ int fchownat(int dir_fd, const char *path, uid_t owner, gid_t group, int flags)
+   else
+     r=0;
+
+-  if(r&&(errno==EPERM))
++  if(r&&(errno==EPERM||errno==EINVAL))
+     r=0;
+
+   return r;