This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: genini: support multiple compression formats
On Wed, Mar 10, 2010 at 11:25:19PM -0500, Charles Wilson wrote:
>Christopher Faylor wrote:
>> On Wed, Mar 10, 2010 at 09:41:34PM -0500, Charles Wilson wrote:
>>> I'm working on adding .xz support to setup via mingw-liblzma. It's
>>> code-complete, but I still have a lot of testing to do. To that end, I
>>> found that genini needs to be taught about tarballs whose name ends in
>>> something other than ".bz2".
>>>
>>> upset will need something similar, I guess.
>>>
>>> 2010-03-10 Charles Wilson <...>
>>>
>>> * genini (parsedir): Support tarballs whose name ends in gz,
>>> lzma, and xz in addition to bz2.
>>> (filer): Test for existence of tarballs to determine which
>>> compression format/extension is used. If not found, default
>>> to .bz2.
>>> (addfiles): Ripple from changes to filer().
>>>
>>> --
>>> Chuck
>>
>>> Index: genini
>>> ===================================================================
>>> RCS file: /cvs/cygwin-apps/genini/genini,v
>>> retrieving revision 1.9
>>> diff -u -p -r1.9 genini
>>> --- genini 2 Mar 2010 00:23:04 -0000 1.9
>>> +++ genini 11 Mar 2010 02:37:41 -0000
>>> @@ -173,7 +173,7 @@ sub parsedir {
>>> }
>>>
>>> return if $explicit;
>>> - my @files = sort grep{!/-src\.tar.bz2/} glob("$d/*.tar.bz2");
>>> + my @files = sort grep{!/-src\.tar\.(gz|bz2|lzma|xz)/} glob("$d/*.tar.{gz,bz2,lzma,xz}");
>>
>> This is ok, but maybe it would be worth exploring putting all of the
>> extensions at the top of the file somewhere.
>
>Something like this, at the top of the file (untested)?
>
>my @cmp_fmts = qw(gz bz2 lzma xz);
>my $cmp_fmts_grep = join('|', @cmp_fmts);
>my $cmp_fmts_glob = join(',', @cmp_fmts);
Something like that, yes.
>Then:
>
>my @files = sort grep{!/-src\.tar\.($cmp_fmts_grep)/}
>glob("$d/*.tar.{$cmp_fmts_glob}");
>
>Dunno if that would work -- obviously you can interpolate $vars inside
>glob(), since $d works, but also inside grep{}?
>
>> Why not just pass the extensions as the final N arguments? Then there's
>> no need to pass a reference to an array...
>
>I don't think that would work, given the way -src is handled:
>
>>> - my $install = "$d/" . tarball($pname, $x->{'version'});
>>> - my $source = "$d/" . tarball($pname, $x->{'version'}, 'src');
>
>+my $install = tarball($d, $pname, $x->{'version'}, @cmp_fmts);
>+my $source = tarball($d, $pname, $x->{'version'}, 'src', @cmp_fmts);
my $install = tarball($d, $pname, $x->{'version'}, '', @cmp_fmts);
>Actually, if @cmp_fmts is set up at the top of the file, then we
>wouldn't have to pass it in via the argument list at all.
Oh, right. Nevermind.
>>>
>>> sub tarball {
>>> - return join('-', @_) . '.tar.bz2';
>>> + my $d = shift;
>>> + my @c = @{(shift)};
>>> + my $b = join('-', @_) . '.tar.';
>>> + my $f;
>>> + for my $e (@c) {
>>
>> ...then you just iterate over @_ here.
>
>See above. Is there are real problem with array references? I'm no perl
>guru (obviously)...
No, no problem at all except that I tend to avoid references since it
reduces stuff like the @{(shift)} line noise. But, who knows, in your
previous case it might even be faster to pass a reference since you
aren't pushing multiple values on the stack.
cgf