public inbox for cygwin-apps@cygwin.com
 help / color / mirror / Atom feed
From: Lemures Lemniscati <lemures.lemniscati@gmail.com>
To: cygwin-apps@cygwin.com
Subject: Re: cygport: Request a new feature in order to set owner/group names in packaged tarballs.
Date: Sat, 08 Aug 2020 09:43:32 +0900	[thread overview]
Message-ID: <20200808094328.592C.50F79699@gmail.com> (raw)
In-Reply-To: <87bljm1dew.fsf@Otto.invalid>

On Fri, 07 Aug 2020 21:09:11 +0200, ASSI
> Lemures Lemniscati via Cygwin-apps writes:
> >> No, I was talking about things like XZ_OPT or ZSTD_CLEVEL.
> >
> > I think XZ_OPT or ZSTD_CLEVEL can be passed through environment.
> > And this should control xz or zstd..
> >
> > XZ_OPT="..." cygport foo.cygport package
> > ZSTD_CLEVEL="..." cygport foo.cygport package
> >
> > And cygport does not prevent from passing parameter through environment.
> > Maybe I understand you in a wrong way. Pardon me.
> 
> Maybe if you'd gone back to the post I sent on June 14 when I originally
> offered the patch you'd have seen:
> 
> >> This patch keeps the current defaults in place, but allows one to set up
> >> two environment variables to control how tar gets invoked during
> >> packaging.  You could do that from either the cygport file or the
> >> .cygport.conf file:
> >>
> >> CYGPORT_TAR_CMD="env ZSTD_CLEVEL=19 tar -I zstd --group nobody:65534 --owner nobody:65534"
> >> CYGPORT_TAR_EXT=".tar.zst"
> 
> I don't want to pollute the environment for any other command obviously…
> and really, I still think creating five new configuration variables to
> do what can be accomplished with two isn't a good trade-off.
> 
> Factoring out the command invocation into a function probably is a net
> win, though -- so I'd keep that part.  It'd probably be useful in some
> other instances to so a similar refactoring.

Thank you for your patience, Achim.
Now I've understood.

But I feel uneasy about the usase of CYGPORT_TAR_CMD, because we must
specify 'tar' in it. It is a redundancy.



The following is a thought experiment to avoid this redundancy.


Still, a work-around is to split it into two variables CYGPORT_TAR_ENV
and CYGPORT_TAR_OPTS, and do something like 

(1)  env ${CYGPORT_TAR_ENV} tar ${CYGPORT_TAR_OPTS} ...

or 

(2)  sh -c "env ${CYGPORT_TAR_ENV} tar ${CYGPORT_TAR_OPTS} ..."


The problem is that it is demanding more keystrokes when we use both of
them:

CYGPORT_TAR_ENV="..." CYGPORT_TAR_OPTS="..." cygport zzz.cygport package


But when specifying owner/group, we can do it simply,

CYGPORT_TAR_OPTS="--group=nobody:65534 --owner=nobody:65534" cygport zzz.cygport package

or by invoking tar as (2) you would be able to specify compression level
and multi-threading like this:

CYGPORT_TAR_OPTS="-I 'zstd -19 -T2' --group=nobody:65534 --owner=nobody:65534" cygport zzz.cygport package

This looks good enough to me.


And I've looked into the GNU tar source, and found that tar calls
a compression filter through execv 'sh' '-c' ...
https://git.savannah.gnu.org/cgit/tar.git/tree/src/system.c?h=release_1_32#n26
So, I guess it is not so bad to use 'sh' '-c' here in the script like 
(2).

Regards, 

Lem

  reply	other threads:[~2020-08-08  0:43 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200803205512.E3F1.50F79699@gmail.com>
     [not found] ` <87d047r0ro.fsf@Rainer.invalid>
2020-08-04 12:54   ` Lemures Lemniscati
2020-08-04 13:46     ` Thomas Wolff
2020-08-04 20:34       ` Lemures Lemniscati
2020-08-05 18:31         ` ASSI
2020-08-05 21:21           ` Lemures Lemniscati
2020-08-06 18:25             ` ASSI
2020-08-07  7:45         ` Thomas Wolff
2020-08-07 14:33           ` Lemures Lemniscati
2020-08-07 19:09             ` ASSI
2020-08-08  0:43               ` Lemures Lemniscati [this message]
2020-08-08  4:32                 ` ASSI
2020-08-08 11:14                   ` Lemures Lemniscati
2020-08-10  3:42                     ` Lemures Lemniscati
2020-08-10 19:51                       ` Achim Gratz
2020-08-10 21:45                         ` Lemures Lemniscati
2020-08-04 17:02     ` ASSI
2020-08-04 20:49       ` Lemures Lemniscati
2020-08-05 19:34         ` Jon Turney
2020-08-05 21:50           ` Lemures Lemniscati
2020-08-06 17:13             ` Jon Turney
2020-08-07 14:43               ` Lemures Lemniscati

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200808094328.592C.50F79699@gmail.com \
    --to=lemures.lemniscati@gmail.com \
    --cc=cygwin-apps@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).