This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit ff54d8b42da8d306c8fbcbd14d2ff605a64b3d35 Author: James McCoy <[email protected]> Date: Sun Oct 4 22:57:59 2015 -0400 dd-list: Read compressed sources files Add a new -z/--uncompress switch which can be used to indicate that the --dctrl input or sources files are compressed. This will automatically be handled for sources files with typical naming (i.e., *.gz or *.bz2). Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 4 ++++ scripts/dd-list.1 | 8 +++++++- scripts/dd-list.pl | 43 +++++++++++++++++++++++++++++++++++++++---- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 490bf1c..234012e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -41,6 +41,10 @@ devscripts (2.15.9) UNRELEASED; urgency=medium + Omit information from stanzas with “Extra-Source-Only: yes”. + Use only the information from the most recent version of a package within each sources file. (Closes: #788820) + + Enable reading sources data from gz or bzip2 compressed files. If the + --dctrl switch is being used, the -z switch is needed to enabled + decompression. Compressed files specified with the -s switch will + automatically be handled if using a .gz/.bz2 extension. [ Dominique Dumont ] * licensecheck: diff --git a/scripts/dd-list.1 b/scripts/dd-list.1 index b0d253e..dfda038 100644 --- a/scripts/dd-list.1 +++ b/scripts/dd-list.1 @@ -74,9 +74,15 @@ of each listed package. If no \fISource:\fP line is given, the \fIPackage:\fP name is used for output, which might be a binary package name. .TP +.BR \-z ", " \-\-uncompress +Try to uncompress the \-\-dctrl input before parsing. Supported compression +formats are gz and bzip2. +.TP \fB\-s\fR, \fB\-\-sources\fR \fISources_file\fR Read package information from the specified \fISources_file\fRs. This can be -given multiple times. +given multiple times. The files can be gz or bzip2 compressed. If the +filename does not end in \fI.gz\fR or \fI.bz2\fR, then the \fB-z\fR option +must be used. .IP If no \fISources_file\fRs are specified, any files matching \fI/var/lib/apt/lists/*_source_Sources\fR will be used. diff --git a/scripts/dd-list.pl b/scripts/dd-list.pl index 8c4d168..fb5721f 100755 --- a/scripts/dd-list.pl +++ b/scripts/dd-list.pl @@ -26,6 +26,16 @@ use FileHandle; use Getopt::Long qw(:config gnu_getopt); use Dpkg::Version; +my $uncompress; + +BEGIN { + $uncompress = eval { + require IO::Uncompress::AnyUncompress; + IO::Uncompress::AnyUncompress->import('$AnyUncompressError'); + 1; + }; +} + my $version='###VERSION###'; sub normalize_package { @@ -54,10 +64,14 @@ Usage: dd-list [options] [package ...] -d, --dctrl Read package list in Debian control data from standard input. + -z, --uncompress + Try to uncompress the --dctrl input before parsing. Supported + compression formats are gz and bzip2. + -s, --sources SOURCES_FILE Read package information from given SOURCES_FILE instead of all files matching /var/lib/apt/lists/*_source_Sources. Can be specified - multiple times. + multiple times. The files can be gz or bzip2 compressed. -u, --uploaders Also list Uploaders of packages, not only the listed Maintainers @@ -79,6 +93,7 @@ my $use_stdin=0; my $use_dctrl=0; my $source_files=[]; my $show_uploaders=1; +my $opt_uncompress=0; my $print_binary=0; GetOptions( "help|h" => sub { help(); exit }, @@ -86,6 +101,7 @@ GetOptions( "dctrl|d" => \$use_dctrl, "sources|s:s@" => \$source_files, "uploaders|u!" => \$show_uploaders, + 'z|uncompress' => \$opt_uncompress, "print-binary|b" => \$print_binary, "version" => sub { print "dd-list version $version\n" }) or do { @@ -93,6 +109,11 @@ or do { exit(1); }; +if ($opt_uncompress && !$uncompress) { + warn "You must have the libio-compress-perl package installed to use the -z option.\n"; + exit 1; +} + my %dict; my $errors=0; my %package_name; @@ -194,7 +215,15 @@ sub parsefh } if ($use_dctrl) { - parsefh(\*STDIN, 'STDIN'); + my $fh; + if ($uncompress) { + $fh = IO::Uncompress::AnyUncompress->new('-') + or die "E: Unable to decompress STDIN: $AnyUncompressError\n"; + } + else { + $fh = \*STDIN; + } + parsefh($fh, 'STDIN'); } else { my @packages; @@ -217,9 +246,15 @@ else { } foreach my $source (@{$source_files}) { - my $fh = FileHandle->new("<$source"); + my $fh; + if ($opt_uncompress || ($uncompress && $source =~ m/\.(?:gz|bz2)$/)) { + $fh = IO::Uncompress::AnyUncompress->new($source); + } + else { + $fh = FileHandle->new("<$source"); + } unless (defined $fh) { - warn "E: Couldn't open $fh\n"; + warn "E: Couldn't open $source\n"; $errors = 1; next; } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
