"J. Lewis Muir" <jlmuir%imca-cat.org@localhost> writes: > Here's a patch to make EXTRACT_USING default to pax on Darwin: > > diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf > index e656f0b..1856dca 100644 > --- a/mk/defaults/mk.conf > +++ b/mk/defaults/mk.conf > @@ -525,10 +525,14 @@ PATCH_FUZZ_FACTOR?= -F0 > # Possible: any combination of packages > # Default: not set > > +.if ${OPSYS} == "Darwin" > +EXTRACT_USING?= pax > +.else > EXTRACT_USING?= nbtar > +.endif > # Use the specified tool to extract tar/ustar archives. > # Possible: bsdtar, gtar, nbtar, pax > -# Default: nbtar > +# Default: pax on Darwin; nbtar on all other operating systems > > #FAILOVER_FETCH= > # Perform a checksum at "make fetch" time. If the checksum doesn't Generally I would expect to see OS-specific variables in the per-OS config file, in mk/platform/Darwin.mk. But, I'm feeling that I don't quite grasp enough details. You've shown that the native Mac /usr/bin/tar creates writable files. We more or less agree that this is wrong, but tar is no longer specified by POSIX. (POSIX does specify pax, which I see you note below.) > where it says in the extract phase section about the EXTRACT_USING > variable: > > This variable can be set to bsdtar, gtar, nbtar (which is the default > value), pax, or an absolute pathname pointing to the command with > which tar archives should be extracted. It is preferred to choose > bsdtar over gtar if NetBSD's pax-as-tar is not good enough. pkgsrc distinguishes between a user-settable variable, a package-settable variable, and more or less per-OS infrastructure. EXTRACT_USING seems to be for pkgsrc makefiles. I think the real problem is that the Mac tar is broken and we need to avoid using it. You could try commenting out the TOOLS_PLATFORM.tar line in mk/tools/tools.Darwin.mk, and see what happens. > (If pax could be the default on all operating systems, then that would > be a simpler change and a simpler change to document. pax is part of > POSIX.1-2008 [1], whereas tar is not. But I didn't want to change the > default on all operating systems since I didn't know what the fallout > might be from that.) > > [1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html That seems preferable. One suggestion is that if you wrote a test for writable files as a PKG_DEVELOPER test, we could fine out how widespread this is. On NetBSD 7, www/serf unpacks without writable files, both as a regular user and as root. That's using /bin/tar, which is the same binary as pax an cpio. Sorry this is hard, but you've raised a messy issue (which is good...).
Attachment:
signature.asc
Description: PGP signature