#use wml::templ::template title="Debian Developer's Packages Overview" author="Igor Genibel"
# +-------------------------------------------------------------------------+
# | Copyright (C) 2002 Igor Genibel |
# | |
# | 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. |
# +-------------------------------------------------------------------------+
# | This code is currently maintained and debugged by Igor Genibel, any |
# | questions or comments regarding this code should be directed to: |
# | - igor@genibel.org |
# +-------------------------------------------------------------------------+
# | - Igor Genibel - http://genibel.org/ |
# | $Id$
# +-------------------------------------------------------------------------+
$branch = array ("main",
"contrib",
"non-free",
"non-US/main",
"non-US/contrib",
"non-US/non-free" );
setlocale(LC_ALL, 'fr_FR');
$prefix="/org/qa.debian.org/data/ddpo/results";
#$prefix="/home/igenibel/qa.debian.org/data/ddpo/results";
function printBackLink() {
?>
Back to main page
}
function print_header_entries_top($keys, $name)
{
?>
Packages overview for
General information:
if ($keys == "NOID") {
?>
GPG key id not found!
(key id was not found neither in the Debian keyring
nor on a public keyserver)
}else{
foreach (explode(",", $keys) as $key) {
?>
GPG key id:
}
}
}
function print_header_entries_body($login, $key, $name)
{
$lintian = preg_replace("/[\s-\"í']/", "_", $name);
$buildd=urlencode("$name <$login> ");
?>
Non-fixed bugs, most recent first
All bugs related to <>
RC Bugs related to <>
All bugs submitted by <>
Lintian report
">Buildd report
Packages in blue are packages that are uploaded by developer (reference to Uploaders: field)
Packages version in red are NMUed
Packages where testing version in purple are those where the unstable version differs from the version in testing
}
#
# print info for not found developer
#
function print_notfound($login)
{
print "No information available for $login
";
}
#
# print the form because no login provided
#
function print_form()
{
?>
Debian Developer's Packages Overview
Use the following search forms to determine the Debian developer whose
packages overview you wish to see:
Search based on the Maintainer field in packages:
(if a single username is provided, @debian.org is automatically appended)
Search based on a GPG key ID:
Search based on a source package name:
}
function print_query_all()
{
?>
Do you want to see the complete, sorted list of developers?
(>200kb!)
}
function print_all()
{
global $prefix;
$fp = fopen("$prefix/extract", "r");
?>
Sorted developer list
|
Name and email
|
main
|
non-US
|
Other all contrib & non-free packages
|
Total
|
while(!feof($fp)) {
$line = fgets($fp, "10240");
if($line != "") {
$count = 0;
$line = preg_replace("/, /", ",", $line);
preg_match("/;(.+?);(.+?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*)$/", $line, $info_array);
print '';
print '| ';
print "$info_array[3] <$info_array[1]>";
print ' | ';
$main = 0;
$nonUS = 0;
$other = 0;
if($info_array[4] != "") {
$main += count(explode(" ", $info_array[4]));
$count += count(explode(" ", $info_array[4]));
}
if($info_array[5] != "") {
$other += count(explode(" ", $info_array[5]));
$count += count(explode(" ", $info_array[5]));
}
if($info_array[6] != "") {
$nonUS += count(explode(" ", $info_array[6]));
$count += count(explode(" ", $info_array[6]));
}
if($info_array[7] != "") {
$other += count(explode(" ", $info_array[7]));
$count += count(explode(" ", $info_array[7]));
}
if($info_array[8] != "") {
$other += count(explode(" ", $info_array[8]));
$count += count(explode(" ", $info_array[8]));
}
if($info_array[9] != "") {
$other += count(explode(" ", $info_array[9]));
$count += count(explode(" ", $info_array[9]));
}
?>
print $main?> |
print $nonUS?> |
print $other?> |
print $count?> |
}
}
print '
';
}
function get_rep($package_name)
{
if(preg_match("/^lib/", $package_name)) {
return substr($package_name, 0, 4);
}else{
return substr($package_name, 0, 1);
}
}
# Check whether there is a debcheck entry for that package
function debcheckavailable($branch, $package_name) {
$package = ereg_replace ("\.", "_", $package_name);
if (ereg ("[^a-zA-Z0-9+_-]", $package) ||
($branch != "oldstable" && $branch != "stable" && $branch != "testing" && $branch != "unstable")) {
return 0;
}
$BASEDIR='/org/qa.debian.org/data/debcheck/result/';
return file_exists($BASEDIR.'/'.$branch.'/packages/'.$package);
}
#
# This function print a package table information for specific branch
# given in argument
#
function print_package_entries($branch, $packages)
{
$packages = preg_replace ("/, /", ",", $packages);
$pack_array = split(" ", $packages);
?>
Packages in
| Source Name |
Bugs |
Version |
Security |
Binary Package Page |
Buildd |
Excuses |
Broken dependencies |
Section |
Priority |
Pool |
Uninstallable |
| All |
RC |
I&N |
M&W |
F&P |
Stable |
Testing |
Unstable |
Exp. |
Stable |
Testing |
Stable |
Testing |
Unstable |
Stable |
Testing |
Unstable |
foreach ($pack_array as $package)
{
global $prefix;
# print "<<< $package >>>";
# $upstream = $package[1];
preg_match("/(.+)\((.+)\)/", $package, $result);
$list = split (",", $result[2]);
$package_name = $result[1];
if(preg_match("/#/", $package)) {
$uploader = 1;
$package = preg_replace("/#/", "", $package);
}
if(preg_match("/%/", $package)) {
$all = 1;
$package = preg_replace("/%/", "", $package);
}
preg_match("/(.+?)\[(.+)\]\{(.+)\}\{(.+)\}\{(.+)\}\|(.+)\|:(.+):/", $package, $results);
$package = $package_name;
$version = $results[2];
$versions = explode (",", $version);
$version_stable = $versions[0];
$version_testing = $versions[1];
$version_unstable = $versions[2];
$version_experimental = $versions[3];
$security_stable = $versions[4];
$security_testing = $versions[5];
$uninstalable_stable = preg_replace("/,/", " ", $results[3]);
$uninstalable_testing = preg_replace("/,/", " ", $results[4]);
$uninstalable_unstable = preg_replace("/,/", " ", $results[5]);
$priority = $results[6];
$section = $results[7];
$fp = fopen("$prefix/bugs.txt", "r");
$bug_list = explode(" ", "0 0 0 0");
$temp = preg_replace("/\+/", "_", $package);
while(!feof($fp)) {
$line = fgets($fp, "512");
$line = preg_replace("/\+/", "_", $line);
if(preg_match("/^$temp\s+(\d+\s\d+\s\d+\s\d+)/", $line, $results)) {
$bug_list = explode(" ", $results[1]);
break;
}
}
fclose($fp);
if(strcmp($version_stable, "-") == 0 || !debcheckavailable('stable', $package)) {
$stable_dep = "-";
}else{
$stable_dep = 'Stable';
}
if(strcmp($version_testing, "-")== 0 || !debcheckavailable('testing', $package)) {
$testing_dep = "-";
}else{
$testing_dep = 'Testing';
}
$buildd = "http://buildd.debian.org/build.php?pkg=".$package;
if(preg_match("/non-US/", $branch)) {
$pool = "http://non-us.debian.org/debian-non-US/pool/". $branch . "/" .get_rep($package) . "/" . $package . "/";
}else{
$pool = "http://ftp.debian.org/debian/pool/". $branch . "/" .get_rep($package) . "/" . $package;
}
if(strcmp($version_unstable, "-")== 0 || !debcheckavailable('unstable', $package)) {
$sid_dep = "-";
}else{
$sid_dep = 'Unstable';
}
$char = substr($package, 0, 1);
if(file_exists("$prefix/excuses/$char/$package")) {
$excuse = "Excuses";
}else{
$excuse = "No";
}
if(strcmp($version_experimental, "-")) {
$version_experimental = '' . $version_experimental . '';
}
$experimental = '' . $version_experimental . ' | ';
if((strcmp ($version_stable, $version_testing) == 0) &&
(strcmp ($version_stable, "/") != 0)) {
if((strcmp ($version_unstable, $version_testing) == 0)) {
$version_print = '' . $version_stable . ' | ' .$experimental;
}else{
$version_print = '' . $version_stable . ' | ' . $version_unstable . ' | ' . $experimental;
}
$ver = explode("-", $version_unstable);
if((preg_match("/(.+\..+?)$/", $ver[count($ver) - 1], $toto)) && (count($ver) != 1))
{
$version_print = preg_replace("/$version_unstable/", "$version_unstable", $version_print);
}
}else if(strcmp ($version_testing, $version_unstable) == 0) {
if(strcmp($version_stable, "/") != 0) {
$version_stable = ''.$version_stable.'';
}
$version_print = ''.$version_stable.' | ' . $version_testing .' | ' .$experimental;
$ver = explode("-", $version_unstable);
if((preg_match("/(.+\..+?)$/", $ver[count($ver) - 1], $toto)) && (count($ver) != 1))
{
$version_print = preg_replace("/$version_unstable/", "$version_unstable", $version_print);
}
}else {
if(strcmp($version_stable, "/") != 0) {
$version_stable = ''.$version_stable.'';
}else{
$version_stable = ''.$version_stable.'';
}
$version_print = '' . $version_stable . ' | '.$version_testing . ' | '.$version_unstable.' | ' . $experimental;
$ver = explode("-", $version_unstable);
if((preg_match("/(.+\..+?)$/", $ver[count($ver) - 1], $toto)) && (count($ver) != 1))
{
$version_print = preg_replace("/$version_unstable/", "$version_unstable", $version_print);
}
}
?>
|
$package[pts]";
?> |
$bugs = "http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=". rawurlencode($package)."&repeatmerged=yes&archive=no&pend-exc=pending-fixed&pend-exc=fixed&pend-exc=done";
$bugs_all = "http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=". rawurlencode($package);
$bug_count = $bug_list[0] + $bug_list[1] + $bug_list[2] + $bug_list[3];
if($bug_count == 0) { ?>
0
}else{ ?>
print $bug_count; ?>
} ?>
|
if(!strcmp($bug_list[0], "0")) { ?>
0
}else{ ?>
print $bug_list[0]; ?>
} ?>
|
if(!strcmp($bug_list[1], "0")) { ?>
0
}else{ ?>
print $bug_list[1]; ?>
} ?>
|
if(!strcmp($bug_list[2], "0")) { ?>
0
}else{ ?>
print $bug_list[2]; ?>
} ?>
|
if(!strcmp($bug_list[3], "0")) { ?>
0
}else{ ?>
print $bug_list[3]; ?>
} ?>
|
print $version_print;
if(strcmp($security_stable,"-")) {
$security_stable = "$security_stable";
}
if(strcmp($security_testing,"-")) {
$security_testing = "$security_stable";
}
print ''.$security_stable.' | '.$security_testing.' | ';
?>
for ($i = 1; $i <= count($list); $i++) {
$url = rawurlencode("${list[$i -1]}");
print '';
print $i;
print "";
if(($i % 3 ) == 0) {
print " ";
}else{
print " ";
}
}
?>
|
if($all == 1) {
print "Arch. All";
$all = 0;
}else{
print "Buildd";
}
?>
|
print $excuse;
?>
|
|
|
|
print "$section";
?>
|
print "$priority";
?>
|
Pool
|
print "$uninstalable_stable";
?>
|
print "$uninstalable_testing";
?>
|
print "$uninstalable_unstable";
?>
|
}
?>
}
if($excuse != "") {
$char = substr($excuse, 0, 1);
if(file_exists("$prefix/excuses/$char/$excuse")) {
$fp = fopen("$prefix/excuses/$char/$excuse","r");
print fread ($fp, filesize ("$prefix/excuses/$char/$excuse"));
fclose($fp);
}else{
print "No excuse for $excuse
";
}
}else if($gpg_key != "") {
$contents = file("$prefix/extract");
$printed = 0;
$match = 0;
$gpg_key = preg_replace ("/0x/i", "", $gpg_key);
foreach ($contents as $line) {
if(preg_match("/;(.+?);(.*$gpg_key.*);(.+?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*)/i", $line, $pack_array)) {
$match += 1;
if($printed == 0) {
print_header_entries_top($pack_array[2], $pack_array[3]);
$printed = 1;
}else{
print "
";
}
print_header_entries_body($pack_array[1], $pack_array[2], $pack_array[3]);
$count = 4;
foreach ($branch as $value) {
if($pack_array[$count] != "") {
print_package_entries($value, $pack_array[$count]);
}
$count += 1;
}
}
}
if($match == 0) {
print_notfound($gpg_key);
}
printBackLink();
}else if($login != "") {
$fp = fopen("$prefix/extract", "r");
$contents = fread($fp, filesize ("$prefix/extract"));
if(! preg_match("/@/i", $login)) {
$login .= "@debian.org";
}
if(preg_match("/;$login;(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*)/i", $contents, $pack_array))
{
print_header_entries_top($pack_array[1], $pack_array[2]);
print_header_entries_body($login, $pack_array[1], $pack_array[2]);
$count = 3;
foreach ($branch as $value) {
if($pack_array[$count] != "") {
print_package_entries($value, $pack_array[$count]);
}
$count += 1;
}
}else{
print_notfound($login);
}
fclose($fp);
printBackLink();
}else if ($package != "") {
$fp = fopen("$prefix/extract", "r");
$found = 0;
if(preg_match("/\+\+/", $package)) {
$package_short = preg_replace("/\+/", "", $package);
$regexp="/[ ;]$package_short..\(/";
}elseif(preg_match("/\+/", $package)){
$package_short = preg_replace("/\+/", "", $package);
$regexp="/[ ;]$package_short.\(/";
}else{
$regexp="/[ ;]$package\(/";
}
while(!feof($fp)) {
$line = fgets($fp, "8192");
if(preg_match("$regexp", $line, $results)) {
$found = 1;
preg_match("/;(.+?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*)/i", $line, $pack_array);
print_header_entries_top($pack_array[2], $pack_array[3]);
print_header_entries_body($pack_array[1], $pack_array[2], $pack_array[3]);
$count = 4;
foreach ($branch as $value) {
if($pack_array[$count] != "") {
print_package_entries($value, $pack_array[$count]);
}
$count += 1;
}
}
}
if($found == 0) {
print_notfound($package);
}
fclose($fp);
printBackLink();
}else{
print_form();
if($all) {
print_all();
}else{
print_query_all();
}
}
$fp = fopen("$prefix/extract.date", "r");
$general = fgets($fp, "512");
fclose($fp);
$fp = fopen("$prefix/bugs.date", "r");
$bugs = fgets($fp, "512");
fclose($fp);
?>
Last updated:
General information: print $general; ?>
Bugs information: print $bugs; ?>