diff options
author | Piotr Bogdan <ppbogdan@gmail.com> | 2017-06-17 11:36:39 +0200 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2017-06-17 11:36:39 +0200 |
commit | 0d4431cfe90b2242723ccb1ccc90714f2f68a609 (patch) | |
tree | 0208bef2315bbccfbc077aa606d373cd8ab7a3c4 /pkgs | |
parent | 05547dbcb419acb76126135bb51bf7cb1279ec72 (diff) |
fakeroot: apply patch to ignore EINVAL errors as well
Fixes #25901 the nixos.ova job. See the referred links.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/tools/system/fakeroot/default.nix | 5 | ||||
-rw-r--r-- | pkgs/tools/system/fakeroot/einval.patch | 47 |
2 files changed, 50 insertions, 2 deletions
diff --git a/pkgs/tools/system/fakeroot/default.nix b/pkgs/tools/system/fakeroot/default.nix index 5286b6b2cbc9a..eca3977f459f8 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 0000000000000..f8d4fb83d137f --- /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; |