Svante Signell, le Wed 23 Sep 2015 15:45:13 +0200, a écrit : > This test fails with fakeroot-hurd on Hurd due to that /non-existant is > writable for faked nodes according to:
No. Check what happens in the testcase again. It fails due to / being announced as writable by fakeroot (see the recursive call to check_directory in the ENOENT case). > running it as real root of course returns *is_writable=1 and errno="No > such file or directory" on both Linux and Hurd. Take care that the errno value should not be looked at when the function succeeded. It may be just a leftover from a previous call, or even something else, it's really undefined. > Maybe even the tests should not be run under fakeroot at all as is > done now with fakeroot debian/rules binary? That is very questionable, yes. Checks should be done in the build target, not in the binary target. Running tests in fakeroot does not make much sense to me. All that being said, we should probably not let the programs inside fakeroot believe they can write to / (because they may then try to, while they can't actually). > The attached patch makes the behaviour the same as on Linux and > fakeroot-tcp. The question is which behaviour is the expected one. It is indeed tempting do do this change. > Index: hurd-0.6.git20150704/trans/fakeroot.c > =================================================================== > --- hurd-0.6.git20150704.orig/trans/fakeroot.c > +++ hurd-0.6.git20150704/trans/fakeroot.c > @@ -785,11 +785,7 @@ error_t > netfs_report_access (struct iouser *cred, struct node *np, int *types) > { > struct netnode *nn = netfs_node_netnode (np); > - if (!(nn->faked & FAKE_MODE)) > - return file_check_access (nn->file, types); > - else > - *types = O_RDWR|O_EXEC; > - return 0; > + return = file_check_access (nn->file, types); > } > > error_t I'm almost believing it's the right thing to do, I'm just afraid of corner cases. What reassures me is that in both attempt_mkfile and attempt_chmod, we always add RUSR and WUSR permissions on the real node (and XUSR when it makes sense), and so for files created inside the fakeroot session (i.e. those which have FAKE_MODE, for which we do change the code here), the behavior will be the same in the end. The only exception is /, which does have FAKE_MODE set in main(), but already exists and shouldn't be made writable. AIUI, this is exactly where your proposed change actually change a behavior, and is precisely what you intended to do. Could somebody else double-check my reasoning is correct? (we have to be careful with these permissions, we need to converge to something that just does has the right behavior in all cases) Perhaps for some reason it'd even fix the issues I reported on Mon, 7 Sep 2015 22:03:43 +0200, for instance the gpsd experimental package, Svante, could you check? Samuel