tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: EXTRACT_USING improvements: a concrete proposal



Jonathan Perkin <jperkin%joyent.com@localhost> writes:

> * On 2020-03-11 at 22:11 GMT, Roland Illig wrote:
>
>> On 11.03.2020 18:00, Greg Troxel wrote:
>> > I think this is ready to commit, and that if there are problems they
>> > will be easy to spot, not mysterious.
>> 
>> Looks good to me. I'm always in favor of cleaning up the wrong
>> documentation.
>
> FWIW (to both of you), checkperms + EXTRACT_USING is currently causing
> complete build failure on SunOS:
>
>   https://us-east.manta.joyent.com/pkgsrc/public/reports/trunk/tools/20200313.2102/meta/report.html
>
> It's not clear to me yet what's going on, EXTRACT_USING=gtar fixes it,
> but is that going to cause circular dependencies?

Multiple thoughts

  I don't understand why my changes would contribute to this, because
  the value of EXTRACT_USING on SunOS should continue to be nbtar, just
  as it was before.  And that should continue to point to base gtar.  It
  is merely that the redundant setting in defaults.mk is gone, except
  for NetBSD.

  It is good to set EXTRACT_USING=gtar in platform/SunOS.mk, if indeed
  you intend to rely on gtar being in Solaris base and
  tools/tools.SunOS.mk pointing at it.

  I don't follow the checkperms failure, because it should be using
  gtar on SunOS.

  I built checkperms on netbsd-8 with all 4 EXTRACT_USING values, and
  they all worked.

  Note that bsdtar is marked to skip checkperms.

Are you setting EXTRACT_USING explicitly when it fails?  If not, what
value happens from default?

Did you try EXTRACT_USING=bsdtar?

I think gtar will not cause circular dependencies, because in extract.mk

  .elif !empty(EXTRACT_USING:Mgtar)
  _EXTRACT_TAR=   ${TOOLS_PATH.gtar}

and tools/SunOS.mk:

  .if exists(/usr/bin/gtar)
  TOOLS_PLATFORM.gtar?=           /usr/bin/gtar
  TOOLS_PLATFORM.tar?=            /usr/bin/gtar
  .elif exists(/usr/sfw/bin/gtar)
  TOOLS_PLATFORM.gtar?=           /usr/sfw/bin/gtar
  TOOLS_PLATFORM.tar?=            /usr/sfw/bin/gtar
  .endif

Now, if there is no /usr/bin/gtar, it will cause a pkgsrc dependency on
gtar, and if that's really true, you should be using bsdtar which can be
unpacked without needing tar.  If gtar is truly not optional outside of
pkgsrc there should probably be an error branch on the if above.

I wonder if gtar can unpack the checkperms archive, but you say that
forcing gtar fixes it.  But that only causes TOOLS_PLATFORM.gtar to be
used instead of TOOLS_PLATFORM.tar, and they are set to the same value.

I wonder which packages built.

Hope this helps investigate the variables; I'm at a loss.




Home | Main Index | Thread Index | Old Index