Hello,

You know I use a very slightly adapted version of "base" to use MacPorts on 
Linux. This is about an intermittent issue I see there that happens in code 
which I think should be host/OS *independent*.

I have mentioned before that I sometimes get permissions errors during the 
destroot phase because directories created with xinstall don't have the 
intended umask. This happens episodically, and this morning I had one of those 
episodes, plus some time to look into it.

In the end, I had 2 commands that should give the same result:

%> strace -o strace.log port -nok destroot foo
%> strace port -nok destroot foo >& strace.log

The latter form succeeded, while the former failed because at loosely 
predictable some point a ${destroot}${prefix}/lib/pkgconfig received the umask 
0255 instead of 0755 or 0775. Loosely predictable here means that it occurred 
during a reinplace loop over the .pc files in the pkgconfig directory.

The episode stopped before I could run the destroot command through valgrind.

I've been looking at pextlib's install.c hoping to find a possibility that the 
mode (umask) variable could be used without proper initialisation, but that 
shouldn't be possible. Not in install.c in any case, but could there be a 
reason to assume that the argument parsing goes wrong somewhere?


I have been assuming that the issue might be a side-effect of running on ZFS, 
but that doesn't fit in with strace showing me a call to chmod(".../pkgconfig", 
0255).

Either way, I think that install.c's install_dir() really shouldn't ignore 
chmod() errors silently ...

Thoughts?

Thanks,
R.

Reply via email to