On Mon, May 18, 2020 at 01:46:38PM +0200, Klemens Nanni wrote:
> On Mon, May 18, 2020 at 12:17:01PM +0100, Stuart Henderson wrote:
> > I like it, can you work up something for the bsd.port.mk(5) manual please?
> Diff below tries to lay out the inner workings without being too
> specific; a bit tricky to prevent common pitfalls without explaining
> basic shell syntax/behaviour.
>
> > I agree the brace expansion is helpful for how this is used.
> Yup.
>
> Feedback?
>
> I'll also take OKs as the bsd.port.mk diff is a NOOP for every port not
> using EXTRACT_FILES.
>
>
> Index: share/man/man5/bsd.port.mk.5
> ===================================================================
> RCS file: /cvs/src/share/man/man5/bsd.port.mk.5,v
> retrieving revision 1.530
> diff -u -p -r1.530 bsd.port.mk.5
> --- share/man/man5/bsd.port.mk.5 20 Apr 2020 16:07:43 -0000 1.530
> +++ share/man/man5/bsd.port.mk.5 18 May 2020 11:30:05 -0000
> @@ -1697,21 +1697,21 @@ for archive in ${EXTRACT_ONLY}
> do
> case $$archive in
> *.tar.xz|*.tar.lzma)
> - xzcat ${FULLDISTDIR}/$$archive| tar xf -;;
> + xzcat ${FULLDISTDIR}/$$archive| tar -xf - -- ${EXTRACT_FILES};;
> *.tar.lz)
> - lunzip -c ${FULLDISTDIR}/$$archive| tar xf -;;
> + lunzip -c ${FULLDISTDIR}/$$archive| tar -xf - -- ${EXTRACT_FILES};;
> *.zip)
> - unzip -q ${FULLDISTDIR}/$$archive -d ${WRKDIR};;
> + unzip -q ${FULLDISTDIR}/$$archive -d ${WRKDIR} ${EXTRACT_FILES};;
> *.tar.bz2|*.tbz2|*.tbz)
> - bzip2 -dc ${FULLDISTDIR}/$$archive| tar xf -;;
> + bzip2 -dc ${FULLDISTDIR}/$$archive| tar -xf - -- ${EXTRACT_FILES};;
> *.shar.gz|*.shar.Z|*.sh.Z|*.sh.gz)
> gzcat ${FULLDISTDIR}/$$archive | /bin/sh;;
> *.shar|*.sh)
> /bin/sh ${FULLDISTDIR}/$$archive;;
> *.tar)
> - tar xf ${FULLDISTDIR}/$$archive;;
> + tar -xf ${FULLDISTDIR}/$$archive -- ${EXTRACT_FILES};;
> *)
> - gzip -dc ${FULLDISTDIR}/$$archive | tar xf -;;
> + gzip -dc ${FULLDISTDIR}/$$archive | tar -xf - -- ${EXTRACT_FILES};;
> esac
> done
> .Ed
> @@ -1726,6 +1726,9 @@ Used to set DISTFILES default value to $
> The decompression tool needed will be automatically added as
> .Ev BUILD_DEPENDS .
> Default value is .tar.gz.
> +.It Ev EXTRACT_FILES
> +Set to the list of files to actuall extract from distfiles.
> +Default is to extract all files.
> .It Ev FAKE_FLAGS
> Extra flags passed to ${MAKE_PROGRAM} during the
> fake invocation.
> Index: share/man/man5/bsd.port.mk.5
> ===================================================================
> RCS file: /cvs/src/share/man/man5/bsd.port.mk.5,v
> retrieving revision 1.530
> diff -u -p -r1.530 bsd.port.mk.5
> --- share/man/man5/bsd.port.mk.5 20 Apr 2020 16:07:43 -0000 1.530
> +++ share/man/man5/bsd.port.mk.5 18 May 2020 11:43:56 -0000
> @@ -1697,21 +1697,21 @@ for archive in ${EXTRACT_ONLY}
> do
> case $$archive in
> *.tar.xz|*.tar.lzma)
> - xzcat ${FULLDISTDIR}/$$archive| tar xf -;;
> + xzcat ${FULLDISTDIR}/$$archive| tar -xf - -- ${EXTRACT_FILES};;
> *.tar.lz)
> - lunzip -c ${FULLDISTDIR}/$$archive| tar xf -;;
> + lunzip -c ${FULLDISTDIR}/$$archive| tar -xf - -- ${EXTRACT_FILES};;
> *.zip)
> - unzip -q ${FULLDISTDIR}/$$archive -d ${WRKDIR};;
> + unzip -q ${FULLDISTDIR}/$$archive -d ${WRKDIR} ${EXTRACT_FILES};;
> *.tar.bz2|*.tbz2|*.tbz)
> - bzip2 -dc ${FULLDISTDIR}/$$archive| tar xf -;;
> + bzip2 -dc ${FULLDISTDIR}/$$archive| tar -xf - -- ${EXTRACT_FILES};;
> *.shar.gz|*.shar.Z|*.sh.Z|*.sh.gz)
> gzcat ${FULLDISTDIR}/$$archive | /bin/sh;;
> *.shar|*.sh)
> /bin/sh ${FULLDISTDIR}/$$archive;;
> *.tar)
> - tar xf ${FULLDISTDIR}/$$archive;;
> + tar -xf ${FULLDISTDIR}/$$archive -- ${EXTRACT_FILES};;
> *)
> - gzip -dc ${FULLDISTDIR}/$$archive | tar xf -;;
> + gzip -dc ${FULLDISTDIR}/$$archive | tar -xf - -- ${EXTRACT_FILES};;
> esac
> done
> .Ed
> @@ -1726,6 +1726,18 @@ Used to set DISTFILES default value to $
> The decompression tool needed will be automatically added as
> .Ev BUILD_DEPENDS .
> Default value is .tar.gz.
> +.It Ev EXTRACT_FILES
> +Set to the list of files to actually extract from distfiles.
> +Its content is subject to shell evaluation as part of
> +.Ev EXTRACT_CASES
> +and passed as
> +.Ar file ...
> +argument to
> +.Xr tar 1 ,
This lies, you also pass it to unzip.
I'm a bit queasy with the lack of -- in unzip
> +e.g., shell brace expansion may apply, but
> +.Xr glob 7
> +patterns must be escaped.
Use ${EXTRACT_FILES:Q} ?
> +Empty by default to extract all files.
> .It Ev FAKE_FLAGS
> Extra flags passed to ${MAKE_PROGRAM} during the
> fake invocation.
>
>