Adding upstream version 2.25.15.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
10737b110a
commit
b543f2e88d
485 changed files with 191459 additions and 0 deletions
241
scripts/transition-check.pl
Executable file
241
scripts/transition-check.pl
Executable file
|
@ -0,0 +1,241 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# transition-check: Check whether a given source package is involved
|
||||
# in a current transition for which uploads have been blocked by the
|
||||
# Debian release team
|
||||
#
|
||||
# Copyright 2008 Adam D. Barratt
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
=head1 NAME
|
||||
|
||||
transition-check - check a package list for involvement in transitions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<transition-check> B<--help>|B<--version>
|
||||
|
||||
B<transition-check> [B<-f>|B<--filename=>I<FILENAME>] [I<source package list>]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
B<transition-check> checks whether any of the listed source packages
|
||||
are involved in a transition for which uploads to unstable are currently
|
||||
blocked.
|
||||
|
||||
If neither a filename nor a list of packages is supplied, B<transition-check>
|
||||
will use the source package name from I<debian/control>.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-f>, B<--filename=>I<filename>
|
||||
|
||||
Read a source package name from I<filename>, which should be a Debian
|
||||
package control file or I<.changes> file, and add that package to the list
|
||||
of packages to check.
|
||||
|
||||
=back
|
||||
|
||||
=head1 EXIT STATUS
|
||||
|
||||
The exit status indicates whether any of the packages examined were found to
|
||||
be involved in a transition.
|
||||
|
||||
=over 4
|
||||
|
||||
=item 0Z<>
|
||||
|
||||
Either B<--help> or B<--version> was used, or none of the packages examined
|
||||
was involved in a transition.
|
||||
|
||||
=item 1Z<>
|
||||
|
||||
At least one package examined is involved in a current transition.
|
||||
|
||||
=back
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>,
|
||||
all rights reserved.
|
||||
|
||||
This program comes with ABSOLUTELY NO WARRANTY.
|
||||
You are free to redistribute this code under the terms of the GNU
|
||||
General Public License, version 2 or later.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Adam D. Barratt <I<adam@adam-barratt.org.uk>>
|
||||
|
||||
=cut
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use Getopt::Long qw(:config bundling permute no_getopt_compat);
|
||||
use File::Basename;
|
||||
|
||||
my $progname = basename($0);
|
||||
|
||||
my ($opt_help, $opt_version, @opt_filename);
|
||||
|
||||
GetOptions(
|
||||
"help|h" => \$opt_help,
|
||||
"version|v" => \$opt_version,
|
||||
"filename|f=s" => sub { push(@opt_filename, $_[1]); },
|
||||
)
|
||||
or die
|
||||
"Usage: $progname [options] source_package_list\nRun $progname --help for more details\n";
|
||||
|
||||
if ($opt_help) { help(); exit 0; }
|
||||
if ($opt_version) { version(); exit 0; }
|
||||
|
||||
my ($lwp_broken, $yaml_broken);
|
||||
my $ua;
|
||||
|
||||
sub have_lwp() {
|
||||
return ($lwp_broken ? 0 : 1) if defined $lwp_broken;
|
||||
eval {
|
||||
require LWP;
|
||||
require LWP::UserAgent;
|
||||
};
|
||||
|
||||
if ($@) {
|
||||
if ($@ =~ m%^Can\'t locate LWP%) {
|
||||
$lwp_broken = "the libwww-perl package is not installed";
|
||||
} else {
|
||||
$lwp_broken = "couldn't load LWP::UserAgent: $@";
|
||||
}
|
||||
} else {
|
||||
$lwp_broken = '';
|
||||
}
|
||||
return $lwp_broken ? 0 : 1;
|
||||
}
|
||||
|
||||
sub have_yaml() {
|
||||
return ($yaml_broken ? 0 : 1) if defined $yaml_broken;
|
||||
eval { require YAML::XS; };
|
||||
|
||||
if ($@) {
|
||||
if ($@ =~ m%^Can\'t locate YAML%) {
|
||||
$yaml_broken = "the libyaml-libyaml-perl package is not installed";
|
||||
} else {
|
||||
$yaml_broken = "couldn't load YAML::XS: $@";
|
||||
}
|
||||
} else {
|
||||
$yaml_broken = '';
|
||||
}
|
||||
return $yaml_broken ? 0 : 1;
|
||||
}
|
||||
|
||||
sub init_agent {
|
||||
$ua = new LWP::UserAgent; # we create a global UserAgent object
|
||||
$ua->agent("LWP::UserAgent/Devscripts");
|
||||
$ua->env_proxy;
|
||||
}
|
||||
|
||||
if (@opt_filename or !@ARGV) {
|
||||
@opt_filename = ("debian/control") unless @opt_filename;
|
||||
|
||||
foreach my $filename (@opt_filename) {
|
||||
my $message;
|
||||
|
||||
if (!@ARGV) {
|
||||
$message = "No package list supplied and unable";
|
||||
} else {
|
||||
$message = "Unable";
|
||||
}
|
||||
|
||||
$message .= " to open $filename";
|
||||
open FILE, $filename or die "$progname: $message: $!\n";
|
||||
while (<FILE>) {
|
||||
if (/^(?:Source): (.*)/) {
|
||||
push(@ARGV, $1);
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
close FILE;
|
||||
}
|
||||
}
|
||||
|
||||
die "$progname: Unable to retrieve transition information: $lwp_broken\n"
|
||||
unless have_lwp;
|
||||
|
||||
init_agent() unless $ua;
|
||||
my $request = HTTP::Request->new('GET',
|
||||
'https://ftp-master.debian.org/transitions.yaml');
|
||||
my $response = $ua->request($request);
|
||||
if (!$response->is_success) {
|
||||
die "$progname: Failed to retrieve transitions list: $!\n";
|
||||
}
|
||||
|
||||
die "$progname: Unable to parse transition information: $yaml_broken\n"
|
||||
unless have_yaml();
|
||||
|
||||
my $yaml = YAML::XS::Load($response->content);
|
||||
my $packagelist = join("|", map { qq/\Q$_\E/ } @ARGV);
|
||||
my $found = 0;
|
||||
|
||||
foreach my $transition (keys(%{$yaml})) {
|
||||
my $data = $yaml->{$transition};
|
||||
|
||||
my @affected = grep /^($packagelist)$/, @{ $data->{packages} };
|
||||
|
||||
if (@affected) {
|
||||
print "\n\n" if $found;
|
||||
$found = 1;
|
||||
print
|
||||
"The following packages are involved in the $transition transition:\n";
|
||||
print map { qq( - $_\n) } @affected;
|
||||
|
||||
print "\nDetails of this transition:\n"
|
||||
. " - Reason: $data->{reason}\n"
|
||||
. " - Release team contact: $data->{rm}\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
print "$progname: No packages examined are currently blocked\n";
|
||||
}
|
||||
|
||||
exit $found;
|
||||
|
||||
sub help {
|
||||
print <<"EOF";
|
||||
Usage: $progname [options] source_package_list
|
||||
Valid options are:
|
||||
--help, -h Display this message
|
||||
--version, -v Display version and copyright info
|
||||
--filename, -f Read source package information from the specified
|
||||
filename (which should be a Debian package control
|
||||
file or changes file)
|
||||
EOF
|
||||
}
|
||||
|
||||
sub version {
|
||||
print <<"EOF";
|
||||
This is $progname, from the Debian devscripts package, version ###VERSION###
|
||||
Copyright (C) 2008 by Adam D. Barratt <adam\@adam-barratt.org.uk>,
|
||||
|
||||
This program comes with ABSOLUTELY NO WARRANTY.
|
||||
You are free to redistribute this code under the terms of the
|
||||
GNU General Public License, version 2, or (at your option) any
|
||||
later version.
|
||||
EOF
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue