]> git.deb.at Git - deb/packages.git/commitdiff
Merge branch 'master' into ubuntu-master
authorFrank Lichtenheld <frank@lichtenheld.de>
Tue, 5 Aug 2008 21:09:28 +0000 (18:09 -0300)
committerFrank Lichtenheld <frank@lichtenheld.de>
Tue, 5 Aug 2008 21:09:28 +0000 (18:09 -0300)
Conflicts:

templates/html/foot.tmpl

46 files changed:
bin/parse-contents
bin/parse-packages
conf/apache.conf.sed.in
config.sh.sed.in
cron.d/100syncarchive
cron.d/100syncarchive_amd64 [deleted file]
cron.d/100syncarchive_backports [deleted file]
cron.d/100syncarchive_debports [deleted file]
cron.d/100syncarchive_m68k [deleted file]
cron.d/100syncarchive_maintainers [deleted file]
cron.d/100syncarchive_volatile [deleted file]
cron.d/300maintainerdb [deleted file]
lib/Deb/Versions.pm
lib/Packages/DoSearchContents.pm
lib/Packages/DoShow.pm
lib/Packages/Page.pm
lib/Packages/Search.pm
lib/Packages/SrcPage.pm
setup-site.conf
static/about/index.tmpl
static/debian.css
static/index.tmpl
static/packages.css.sed.in
static/ubuntu/footer-bg.jpg [new file with mode: 0644]
static/ubuntu/footer-bg.png [new file with mode: 0644]
static/ubuntu/footer-image.png [new file with mode: 0644]
static/ubuntu/footer-image2.png [new file with mode: 0644]
static/ubuntu/header-bg4.png [new file with mode: 0644]
static/ubuntu/header-image4.png [new file with mode: 0644]
static/ubuntu/little-u.gif [new file with mode: 0644]
static/ubuntu/masthead.css [new file with mode: 0644]
static/ubuntu/no-bullet.gif [new file with mode: 0644]
static/ubuntu/splash.jpg [new file with mode: 0644]
static/ubuntu/tab_off_ns1.gif [new file with mode: 0644]
static/ubuntu/tab_off_ns2.gif [new file with mode: 0644]
static/ubuntu/tab_on_ns1.gif [new file with mode: 0644]
static/ubuntu/tab_on_ns2.gif [new file with mode: 0644]
static/ubuntu/trans.gif [new file with mode: 0644]
static/ubuntu/ubuntu.css [new file with mode: 0644]
templates/config.tmpl
templates/config/archive_layout.tmpl
templates/config/mirrors.tmpl
templates/html/download.tmpl
templates/html/foot.tmpl
templates/html/head.tmpl
templates/html/show.tmpl

index 82df0b87b74341795df60a232670cd17ded0b9fc..1f4f58d9aea8f414201bd6f894fd694d3ddf25d3 100755 (executable)
@@ -85,9 +85,11 @@ for my $suite (@suites) {
 
                open CONT, "zcat $filename|$what"
                    or die $!;
-               while (<CONT>) { last if /^FILE/mo; }
-               if (eof(CONT)) { # no header found
+               my $header_found = 0;
+               while (<CONT>) { /^FILE/mo && do { $header_found = 1; last };}
+               if (eof(CONT)) { # no header found or only header found
                    close CONT; # explicit close to reset $.
+                   next if $header_found;
                    open CONT, "zcat $filename|$what";
                }
                while (<CONT>) {
index 97edffcd19666bc4a438c7b1bfe1108a4ecfd132..15eae16c5fac1fe92eae311a28ff610f6fc673c0 100755 (executable)
@@ -68,11 +68,12 @@ for my $suite (@SUITES) {
 
     for my $archive (@ARCHIVES) {
        print "Reading $archive/$suite...\n";
-       if (!-d "$TOPDIR/archive/$archive/$suite/") {
+       my $suite_dir = "$TOPDIR/archive/$archive/$suite";
+       if (!-d $suite_dir) {
                 print "\tseems not to exist, skipping...\n";
                 next;
         }
-       open PKG, "zcat $TOPDIR/archive/$archive/$suite/$what/{,debian-installer/}binary-*/Packages.gz|";
+       open PKG, "zcat $suite_dir/$what/binary-*/Packages.gz $suite_dir/$what/debian-installer/binary-*/Packages.gz|";
        while (<PKG>) {
                next if /^\s*$/;
                my $data = "";
index 2067d8608d57c4c2e4024c9be1b2b78e8a0ea585..dfbefed44657fbca13783be2a0a191ad8c3d9d6b 100644 (file)
 </Directory>
 
 <VirtualHost *>
-   ServerAdmin webmaster@debian.org
+   ServerAdmin frank@lichtenheld.de
    DocumentRoot %TOPDIR%/www/
    ServerName %SITE%
    ErrorLog /var/log/apache2/%SITE%-error.log
    CustomLog /var/log/apache2/%SITE%-access.log combined
 
-   Alias /cgi-bin/ %TOPDIR%/cgi-bin/
+   ScriptAlias /cgi-bin/ %TOPDIR%/cgi-bin/
   
    PerlModule ModPerl::Registry
    PerlTaintCheck On
    RewriteRule ^/changelogs/ - [L]
    RewriteRule ^/Pics/ - [L]
    RewriteRule ^/about/ - [L]
+   RewriteRule ^/ubuntu/ - [L]
    RewriteRule ^/[^/]+\.css - [L]
    RewriteRule ^/[^/]+\.js - [L]
    RewriteRule ^/favicon.ico$ - [L]
 #   RewriteRule . /index.html
 
 </VirtualHost>
+
+<VirtualHost *>
+   ServerAdmin frank@lichtenheld.de
+   DocumentRoot %TOPDIR%/www/
+   ServerName packages.ubuntu.net
+   ServerAlias packages.ubuntulinux.org
+   ErrorLog /var/log/apache2/%SITE%-error.log
+   CustomLog /var/log/apache2/%SITE%-access.log combined
+
+   ScriptAlias /cgi-bin %TOPDIR%/cgi-bin/
+
+   RedirectMatch permanent (.*) http://%SITE%$1
+</VirtualHost>
+
index 9fddcb86a605d79d2d78744a11d3bd315f755346..48dd533d1a08b05844e9ef96a4ab167e763c9c75 100644 (file)
@@ -24,13 +24,9 @@ cachedir=${topdir}/cache
 # path to private ftp directory
 #ftproot=/org/ftp.root
 
-ftpsite=http://ftp.de.debian.org/debian
-security_ftpsite=http://security.debian.org/debian-security
-volatile_ftpsite=http://volatile.debian.org/debian-volatile
-backports_ftpsite=http://backports.org/debian
-amd64_ftpsite=http://amd64.debian.net/debian
-debports_ftpsite=http://ftp.debian-ports.org/debian
-ddtp_ftpsite=http://ddtp.debian.net/debian
+ftpsite=http://archive.ubuntu.com/ubuntu
+security_ftpsite=http://archive.ubuntu.com/ubuntu
+#ddtp_ftpsite=http://archive.ubuntu.com/ubuntu
 
 wget_cmd="wget --no-verbose --tries=2 --timeout=60"
 check_release_cmd="perl -I${libdir} ${bindir}/check-release --verbose --ignoremissing --keyring ${configdir}/trusted.gpg"
@@ -42,21 +38,29 @@ search_url="/search"
 # Architectures
 #
 polangs="de fi fr hu ja nl ru sv uk zh-cn"
-ddtplangs="ca cs da de eo es fi fr hu it ja km-kh ko nl pl pt pt-br ru sk sv uk zh-cn zh-tw"
-archives="us security amd64 debports backports volatile"
-sections="main contrib non-free"
+ddtplangs="ca cs da de eo es fi fr hu it ja ko nl pl pt pt-br ru sk sv uk zh-cn zh-tw"
+archives="us security"
+sections="main multiverse restricted universe"
 parts="$sections"
-suites="sarge sarge-volatile sarge-backports etch etch-m68k etch-volatile etch-backports lenny sid experimental"
-priorities="required important standard optional extra"
+suites="dapper dapper-updates dapper-backports feisty feisty-updates feisty-backports gutsy gutsy-updates gutsy-backports hardy hardy-updates hardy-backports intrepid"
 dists="$suites"
-architectures="alpha amd64 arm armel hppa hurd-i386 i386 ia64 kfreebsd-i386 kfreebsd-amd64 m68k mips mipsel powerpc s390 sparc"
-arch_sarge="alpha amd64 arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc"
-arch_etch="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"
-arch_lenny="${arch_etch} armel"
-arch_sid="${arch_sarge} armel hurd-i386 kfreebsd-i386 kfreebsd-amd64"
-arch_experimental="${arch_sid}"
-arch_lenny_proposed_updates="${arch_lenny}"
-arch_etch_proposed_updates="${arch_etch}"
+priorities="required important standard optional extra"
+architectures="i386 amd64 powerpc"
+arch_dapper="i386 amd64 powerpc"
+arch_dapper_updates="${arch_dapper}"
+arch_dapper_backports="${arch_dapper}"
+arch_feisty="${arch_dapper}"
+arch_feisty_updates="${arch_feisty}"
+arch_feisty_backports="${arch_feisty}"
+arch_gutsy="${arch_feisty}"
+arch_gutsy_updates="${arch_gutsy}"
+arch_gutsy_backports="${arch_gutsy}"
+arch_hardy="i386 amd64"
+arch_hardy_updates="${arch_hardy}"
+arch_hardy_backports="${arch_hardy}"
+arch_intrepid="${arch_hardy}"
+arch_intrepid_updates="${arch_intrepid}"
+arch_intrepid_backports="${arch_intrepid}"
 
 # Miscellaneous
 #
index cb6f18c2869067e794a6b69b9768b99217bfa8d5..3f2008a24cfde58564f4ad8bb42e4b1c50a2ca84 100755 (executable)
@@ -21,8 +21,6 @@ then
        foo=\$arch_${dist//-/_}
        for arch in `eval echo $foo`
        do
-           test ! "$arch" = "kfreebsd-i386" || continue
-           test ! "$arch" = "kfreebsd-amd64" || continue
            for part in ${parts}
            do
                echo retrieve Packages $dist/$part/$arch
@@ -30,8 +28,6 @@ then
                (cd us/${dist}/${part}/binary-${arch} &&
                    $wget_cmd -N ${ftpsite}/dists/${dist}/${part}/binary-${arch}/Packages.gz)
            done
-           #FIXME: no Contents files for p-u
-           test ! "$dist" = "experimental" || continue
            echo retrieve Contents $dist/$arch
            (cd us/${dist} &&
                $wget_cmd -N ${ftpsite}/dists/${dist}/Contents-${arch}.gz)
@@ -58,8 +54,6 @@ else
        foo=\$arch_${dist//-/_}
        for arch in `eval echo $foo`
        do
-           test ! "$arch" = "kfreebsd-i386" || continue
-           test ! "$arch" = "kfreebsd-amd64" || continue
            for part in ${parts}
            do
                echo retrieve Packages $dist/$part/$arch
@@ -67,8 +61,6 @@ else
                rsync -t ${localdir}/dists/${dist}/${part}/binary-${arch}/Packages.gz \
                    us/${dist}/${part}/binary-${arch}/Packages.gz
            done
-           #FIXME: no Contents files for p-u
-           test ! "$dist" = "experimental" || continue
            echo retrieve Contents $dist/$arch
            rsync -t ${localdir}/dists/${dist}/Contents-${arch}.gz \
                us/${dist}/Contents-${arch}.gz
@@ -87,23 +79,23 @@ fi
 
 # security archive
 #
-for dist in sarge etch lenny
+for dist in $dists
 do
     echo "retrieve Release(.gpg) $dist"
     test -d security/${dist} || mkdir -p security/${dist}
     (cd security/${dist} &&
-       $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/Release &&
-       $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/Release.gpg )
+       $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/Release &&
+       $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/Release.gpg )
         
     foo=\$arch_${dist//-/_}
     for arch in `eval echo $foo`
     do
       for part in ${parts}
       do
-       echo retrieve Packages $dist/$part/security/$arch
+       echo retrieve Packages $dist-security/$part/$arch
        test -d security/${dist}/${part}/binary-${arch} || mkdir -p security/${dist}/${part}/binary-${arch}
        (cd  security/${dist}/${part}/binary-${arch} &&
-           $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/${part}/binary-${arch}/Packages.gz)
+           $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/${part}/binary-${arch}/Packages.gz)
       done
     done
     for part in ${parts}
@@ -111,7 +103,7 @@ do
         echo retrieve Sources $dist/$part/security
         test -d security/${dist}/${part}/source || mkdir -p security/${dist}/${part}/source
         (cd security/${dist}/${part}/source &&
-            $wget_cmd -N ${security_ftpsite}/dists/${dist}/updates/${part}/source/Sources.gz)
+            $wget_cmd -N ${security_ftpsite}/dists/${dist}-security/${part}/source/Sources.gz)
     done
 
     $check_release_cmd $archivedir/security/${dist}/Release
diff --git a/cron.d/100syncarchive_amd64 b/cron.d/100syncarchive_amd64
deleted file mode 100755 (executable)
index 070e6d7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/bash
-
-. `dirname $0`/../config.sh
-
-test -d ${archivedir} || mkdir -p ${archivedir}
-cd ${archivedir}
-
-# Main archive
-#
-arch=amd64
-
-for dist in sarge
-  do
-  echo "retrieve Release(.gpg) $dist"
-  test -d amd64/${dist} || mkdir -p amd64/${dist}
-  (cd amd64/${dist} &&
-      $wget_cmd -N ${amd64_ftpsite}/dists/${dist}/Release &&
-      $wget_cmd -N ${amd64_ftpsite}/dists/${dist}/Release.gpg )
-
-  for part in ${parts} main/debian-installer
-    do
-    echo retrieve Packages $dist/$part/$arch
-    test -d amd64/${dist}/${part}/binary-${arch} || mkdir -p amd64/${dist}/${part}/binary-${arch}
-    (cd amd64/${dist}/${part}/binary-${arch} &&
-       $wget_cmd -N ${amd64_ftpsite}/dists/${dist}/${part}/binary-${arch}/Packages.gz)
-  done
-  echo retrieve Contents $dist/$arch
-  (cd amd64/${dist} &&
-      $wget_cmd -N ${amd64_ftpsite}/dists/${dist}/Contents-${arch}.gz)
-
-  $check_release_cmd $archivedir/amd64/${dist}/Release
-done
-
diff --git a/cron.d/100syncarchive_backports b/cron.d/100syncarchive_backports
deleted file mode 100755 (executable)
index 84820cb..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-
-. `dirname $0`/../config.sh
-
-test -d ${archivedir} || mkdir -p ${archivedir}
-cd ${archivedir}
-
-# backports archive
-#
-for dist in sarge etch
-do
-  echo "retrieve Release(.gpg) $dist-backports"
-  test -d backports/${dist}-backports || mkdir -p backports/${dist}-backports
-  (cd backports/${dist}-backports &&
-           $wget_cmd -N ${backports_ftpsite}/dists/${dist}-backports/Release &&
-           $wget_cmd -N ${backports_ftpsite}/dists/${dist}-backports/Release.gpg )
-
-    foo=\$arch_${dist//-/_}
-    for arch in `eval echo $foo`
-    do
-      for part in ${parts}
-      do
-       echo retrieve Packages $dist-backports/$part/$arch
-       test -d backports/${dist}-backports/${part}/binary-${arch} || mkdir -p backports/${dist}-backports/${part}/binary-${arch}
-       (cd backports/${dist}-backports/${part}/binary-${arch} &&
-           $wget_cmd -N ${backports_ftpsite}/dists/${dist}-backports/${part}/binary-${arch}/Packages.gz)
-      done
-      echo retrieve Contents $dist-backports/$arch
-      (cd backports/${dist}-backports &&
-         $wget_cmd -N ${backports_ftpsite}/dists/${dist}-backports/Contents-${arch}.gz)
-    done
-    for part in ${parts}
-    do
-        echo retrieve Sources $dist-backports/$part
-        test -d backports/${dist}-backports/${part}/source || mkdir -p backports/${dist}-backports/${part}/source
-        (cd backports/${dist}-backports/${part}/source &&
-            $wget_cmd -N ${backports_ftpsite}/dists/${dist}-backports/${part}/source/Sources.gz)
-    done
-
-    $check_release_cmd $archivedir/backports/${dist}-backports/Release
-done
diff --git a/cron.d/100syncarchive_debports b/cron.d/100syncarchive_debports
deleted file mode 100755 (executable)
index ba5986e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#! /bin/bash
-
-. `dirname $0`/../config.sh
-
-test -d ${archivedir} || mkdir -p ${archivedir}
-cd ${archivedir}
-
-# Main archive
-#
-architectures="kfreebsd-i386 kfreebsd-amd64"
-
-for dist in sid experimental
-  do
-  echo "retrieve Release(.gpg) $dist"
-  test -d debports/${dist} || mkdir -p debports/${dist}
-  (cd debports/${dist} &&
-           $wget_cmd -N ${debports_ftpsite}/dists/${dist}/Release &&
-           $wget_cmd -N ${debports_ftpsite}/dists/${dist}/Release.gpg )
-
-  for arch in $architectures
-    do
-    for part in ${parts} main/debian-installer
-      do
-      echo retrieve Packages $dist/$part/$arch
-      test -d debports/${dist}/${part}/binary-${arch} || mkdir -p debports/${dist}/${part}/binary-${arch}
-      (cd debports/${dist}/${part}/binary-${arch} &&
-         $wget_cmd -N ${debports_ftpsite}/dists/${dist}/${part}/binary-${arch}/Packages.gz)
-    done
-    echo retrieve Contents $dist/$arch
-    (cd debports/${dist} &&
-       $wget_cmd -N ${debports_ftpsite}/dists/${dist}/Contents-${arch}.gz)
-  done
-
-  $check_release_cmd $archivedir/debports/${dist}/Release
-done
diff --git a/cron.d/100syncarchive_m68k b/cron.d/100syncarchive_m68k
deleted file mode 100755 (executable)
index 00b01cf..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-#! /bin/bash
-
-. `dirname $0`/../config.sh
-
-test -d ${archivedir} || mkdir -p ${archivedir}
-cd ${archivedir}
-
-# Main archive
-#
-arch=m68k
-if [ -z "${localdir}" ]
-then
-    echo using remote mirror
-    for dist in etch
-    do
-        echo "retrieve Release(.gpg) $dist"
-       test -d us/${dist}-${arch} || mkdir -p us/${dist}-${arch}
-       (cd us/${dist} &&
-           $wget_cmd -N ${ftpsite}/dists/${dist}-${arch}/Release &&
-           $wget_cmd -N ${ftpsite}/dists/${dist}-${arch}/Release.gpg )
-        
-#      foo=\$arch_${dist//-/_}
-#      for arch in `eval echo $foo`
-#      do
-           for part in ${parts}
-           do
-               echo retrieve Packages $dist-${arch}/$part/$arch
-               test -d us/${dist}-${arch}/${part}/binary-${arch} || mkdir -p us/${dist}-${arch}/${part}/binary-${arch}
-               (cd us/${dist}-${arch}/${part}/binary-${arch} &&
-                   $wget_cmd -N ${ftpsite}/dists/${dist}-${arch}/${part}/binary-${arch}/Packages.gz)
-           done
-           #FIXME: no Contents files for p-u
-           test ! "$dist" = "experimental" || continue
-           echo retrieve Contents $dist/$arch
-           (cd us/${dist}-${arch} &&
-               $wget_cmd -N ${ftpsite}/dists/${dist}-${arch}/Contents-${arch}.gz)
-#      done
-       for part in ${parts}
-       do
-           echo retrieve Sources $dist-${arch}/$part
-           test -d us/${dist}-${arch}/${part}/source || mkdir -p us/${dist}-${arch}/${part}/source
-            (cd us/${dist}-${arch}/${part}/source &&
-                $wget_cmd -N ${ftpsite}/dists/${dist}-${arch}/${part}/source/Sources.gz)
-       done
-
-       $check_release_cmd $archivedir/us/${dist}-${arch}/Release
-    done
-else
-    echo using local mirror
-    for dist in etch
-    do
-        echo "retrieve Releases(.gpg) $dist"
-       test -d us/${dist}-${arch} || mkdir -p us/${dist}-${arch}
-       (cd us/${dist}-${arch} &&
-           rsync -t ${localdir}/dists/${dist}-${arch}/Release &&
-           rsync -t ${localdir}/dists/${dist}-${arch}/Release.gpg )
-
-#      foo=\$arch_${dist//-/_}
-#      for arch in `eval echo $foo`
-#      do
-           for part in ${parts}
-           do
-               echo retrieve Packages $dist-${arch}/$part/$arch
-               test -d us/${dist}-${arch}/${part}/binary-${arch} || mkdir -p us/${dist}-${arch}/${part}/binary-${arch}
-               rsync -t ${localdir}/dists/${dist}-${arch}/${part}/binary-${arch}/Packages.gz \
-                   us/${dist}-${arch}/${part}/binary-${arch}/Packages.gz
-           done
-           #FIXME: no Contents files for p-u
-           test ! "$dist" = "experimental" || continue
-           echo retrieve Contents $dist-${arch}/$arch
-           rsync -t ${localdir}/dists/${dist}-${arch}/Contents-${arch}.gz \
-               us/${dist}-${arch}/Contents-${arch}.gz
-#      done
-       for part in ${parts}
-        do
-           echo retrieve Sources $dist-${arch}/$part
-            test -d us/${dist}-${arch}/${part}/source || mkdir -p us/${dist}-${arch}/${part}/source
-            rsync -t ${localdir}/dists/${dist}-${arch}/${part}/source/Sources.gz \
-               us/${dist}-${arch}/${part}/source/Sources.gz
-       done
-       $check_release_cmd $archivedir/us/${dist}-${arch}/Release
-    done
-fi
-
diff --git a/cron.d/100syncarchive_maintainers b/cron.d/100syncarchive_maintainers
deleted file mode 100755 (executable)
index 9055606..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /bin/bash
-
-. `dirname $0`/../config.sh
-
-test -d ${archivedir} || mkdir -p ${archivedir}
-cd ${archivedir}
-
-# scp -q auric:/org/ftp.debian.org/ftp/indices/Maintainers .
-
-if [ -f /org/ftp.root/debian/indices/Maintainers ]
-then
-    if [ ! -s Maintainers -a -L Maintainers ]
-    then
-       ln -s /org/ftp.root/debian/indices/Maintainers .
-    fi
-else
-    if [ ! -L Maintainers ]
-    then
-       $wget_cmd -O Maintainers $ftpsite/indices/Maintainers
-    fi
-fi
diff --git a/cron.d/100syncarchive_volatile b/cron.d/100syncarchive_volatile
deleted file mode 100755 (executable)
index 567ebfb..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-
-. `dirname $0`/../config.sh
-
-test -d ${archivedir} || mkdir -p ${archivedir}
-cd ${archivedir}
-
-# volatile archive
-#
-for dist in sarge etch
-do
-  echo "retrieve Release(.gpg) $dist-volatile"
-  test -d volatile/${dist}-volatile || mkdir -p volatile/${dist}-volatile
-  (cd volatile/${dist}-volatile &&
-      $wget_cmd -N ${volatile_ftpsite}/dists/${dist}/volatile/Release &&
-      $wget_cmd -N ${volatile_ftpsite}/dists/${dist}/volatile/Release.gpg )
-
-    foo=\$arch_${dist//-/_}
-    for arch in `eval echo $foo`
-    do
-      for part in ${parts}
-      do
-       echo retrieve Packages $dist-volatile/$part/$arch
-       test -d volatile/${dist}-volatile/${part}/binary-${arch} || mkdir -p volatile/${dist}-volatile/${part}/binary-${arch}
-       (cd  volatile/${dist}-volatile/${part}/binary-${arch} &&
-           $wget_cmd -N ${volatile_ftpsite}/dists/${dist}/volatile/${part}/binary-${arch}/Packages.gz)
-      done
-      echo retrieve Contents $dist-volatile/$arch
-      (cd volatile/${dist}-volatile &&
-         $wget_cmd -N ${volatile_ftpsite}/dists/${dist}/volatile/Contents-${arch}.gz)
-
-    done
-    for part in ${parts}
-    do
-        echo retrieve Sources $dist-volatile/$part
-        test -d volatile/${dist}-volatile/${part}/source || mkdir -p volatile/${dist}-volatile/${part}/source
-        (cd volatile/${dist}-volatile/$part/source &&
-            $wget_cmd -N ${volatile_ftpsite}/dists/${dist}/volatile/${part}/source/Sources.gz)
-    done
-
-    $check_release_cmd $archivedir/volatile/${dist}-volatile/Release
-done
diff --git a/cron.d/300maintainerdb b/cron.d/300maintainerdb
deleted file mode 100755 (executable)
index 7d1bde8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/bash
-
-. `dirname $0`/../config.sh
-
-echo >&2 This script is disabled by default, since it is not useful without
-echo >&2 further setup and also some advertising of the actual addresses.
-echo >&2 Before you enable this you should have the consent of the people that
-echo >&2 this will send mail to!
-exit 1
-
-cd ${bindir}
-${bindir}/build-maintainerdb
index d8d8282a3fcd39d3324dc5536632ac203d310668..cde0001ec84710de439394cbff9a55b56a6c72ca 100644 (file)
@@ -155,7 +155,7 @@ sub _lcmp {
 our @SUITES_SORT = qw( woody oldstable sarge stable stable-proposed-updates
                       etch etch-m68k testing testing-proposed-updates lenny
                       sid unstable experimental
-                      warty hoary breezy breezy dapper edgy feisty gutsy );
+                      warty hoary breezy breezy dapper edgy feisty gutsy hardy );
 our @ARCHIVE_SORT = qw( non-US security updates volatile backports );
 our @PRIORITY_SORT = qw( required important standard optional extra );
 my $i = 1000;
index 2316706f6bbf2c5b29738f43e755518cc9e4ffb6..ca83dcbdcb25e38639415d50d142157af0e10d36 100644 (file)
@@ -33,7 +33,7 @@ sub do_search_contents {
     #FIXME: that's extremely hacky atm
     if ($params->{values}{suite}{no_replace}[0] eq 'default') {
        $params->{values}{suite}{no_replace} =
-           $params->{values}{suite}{final} = $opts->{suite} = [ 'etch' ];
+           $params->{values}{suite}{final} = $opts->{suite} = [ 'hardy' ];
     }
 
     if (@{$opts->{suite}} > 1) {
@@ -121,7 +121,7 @@ sub do_search_contents {
     $page_content->{suite} = $suite;
     $page_content->{archive} = $archive;
     $page_content->{all_architectures} = \@all_archs;
-    $page_content->{all_suites} = \@SUITES;
+    $page_content->{all_suites} = [ grep { $_ !~ /-(updates|backports)$/ } @SUITES ];
     $page_content->{mode} = $mode;
     $page_content->{search_architectures} = $opts->{arch};
     $page_content->{search_keywords} = $opts->{keywords};
index f40d1a21553eb5785eda35c072d9c6eaabb53dc6..846dda7820ee5775d89105a876e1e430b0d0980b 100644 (file)
@@ -231,7 +231,9 @@ sub do_show {
                            $d{version} = $versions->{$a} if $multiple_versions;
                            $d{archive} = $archives->{$a};
                            if ( ($suite ne "experimental")
-                                && ($subsection ne 'debian-installer')) {
+                                && ($subsection ne 'debian-installer')
+                                && ($suite !~ /-(backports|updates)$/)
+                                && ($suite !~ /(dapper|intrepid)/)) {
                                $d{contents_avail} = 1;
                            }
                            push @downloads, \%d;
@@ -384,12 +386,16 @@ sub moreinfo {
 
     if ($info{maintainers}) {
        my $uploaders = $page->get_src( 'uploaders' );
+       my $orig_uploaders = $page->get_src( 'orig_uploaders' );
        if ($uploaders && @$uploaders) {
            my @maintainers = map { { name => $_->[0], mail => $_->[1] } } @$uploaders;
            $contents->{maintainers} = \@maintainers;
        }
+       if ($orig_uploaders && @$orig_uploaders) {
+           my @orig_maintainers = map { { name => $_->[0], mail => $_->[1] } } @$orig_uploaders;
+           $contents->{original_maintainers} = \@orig_maintainers;
+       }
     }
-
 }
 
 sub providers {
index b9c41ee35dde6fb90f6b398a92004474e2fedcc7..4772f8355e6074ba08288e76d9773e31bbc36c20 100644 (file)
@@ -51,6 +51,82 @@ sub split_name_mail {
     return ($name, $email);
 }
 
+sub override_maint {
+    my ($self, $data) = @_;
+
+    return if $data->{'original-maintainer'};
+    return unless $data->{maintainer};
+
+    my ($name, $mail) = split_name_mail( $data->{maintainer} );
+
+    # taken from etc/pkgbinarymangler/maintainermangler.overrides
+    return if $mail =~ /\@(ubuntu\.com|canonical\.com|lists\.ubuntu\.com|lists\.canonical\.com|ubuntu\.com\.au|kubuntu\.org)^/o;
+    return if $mail =~ /^(lamont\@debian\.org|q-funk\@iki\.fi|cjwatson\@debian\.org|patrick\.matthaei\@web\.de)^/o;
+
+    if ($mail eq 'adconrad@0c3.net') {
+       $data->{maintainer} = 'Adam Conrad <adconrad@ubuntu.com>';
+       return 1;
+    }
+    if ($mail eq 'mpitt@debian.org') {
+       $data->{maintainer} = 'Martin Pitt <martin.pitt@ubuntu.com>';
+       return 1;
+    }
+
+    $data->{'original-maintainer'} = $data->{maintainer};
+    foreach ($data->{section}) {
+       /^(main|restricted)$/ && do {
+           $data->{maintainer} = 'Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>';
+           last;
+       };
+       /^(uni|multi)verse$/ && do {
+           $data->{maintainer} = 'Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>';
+           last;
+       };
+
+       die 'Huh?';
+    }
+
+    return 1;
+}
+
+sub handle_maintainer_fields {
+    my ($self, $data) = @_;
+    my (@uploaders, @orig_uploaders);
+
+    if ($data->{'original-maintainer'}) {
+       push @orig_uploaders, [ split_name_mail( $data->{'original-maintainer'} ) ];
+
+       $data->{uploaders} ||= '';
+       my @up_tmp = split( /\s*,\s*/,
+                           $data->{uploaders} );
+       foreach my $up (@up_tmp) {
+               push @orig_uploaders, [ split_name_mail( $up ) ];
+       }
+       if ($data->{maintainer} ||= '') {
+           push @uploaders, [ split_name_mail( $data->{maintainer} ) ];
+       }
+    } else {
+       if ($data->{maintainer} ||= '') {
+           if ($self->override_maint($data)) {
+               return $self->handle_maintainer_fields($data);
+           }
+
+           push @uploaders, [ split_name_mail( $data->{maintainer} ) ];
+       }
+       if ($data->{uploaders}) {
+           my @up_tmp = split( /\s*,\s*/,
+                               $data->{uploaders} );
+           foreach my $up (@up_tmp) {
+               if ($up ne $data->{maintainer}) { # weed out duplicates
+                   push @uploaders, [ split_name_mail( $up ) ];
+               }
+           }
+       }
+    }
+
+    return (\@uploaders, \@orig_uploaders);
+}
+
 sub add_src_data {
     my ($self, $src, $data) = @_;
 
@@ -63,20 +139,9 @@ sub add_src_data {
        $self->{src}{files} = \@files;
     }
     $self->{src}{directory} = $data{directory};
-    my @uploaders;
-    if ($data{maintainer} ||= '') {
-       push @uploaders, [ split_name_mail( $data{maintainer} ) ];
-    }
-    if ($data{uploaders}) {
-        my @up_tmp = split( /\s*,\s*/,
-                            $data{uploaders} );
-        foreach my $up (@up_tmp) {
-            if ($up ne $data{maintainer}) { # weed out duplicates
-                push @uploaders, [ split_name_mail( $up ) ];
-            }
-        }
-    }
-    $self->{src}{uploaders} = \@uploaders;
+    my ($uploaders, $orig_uploaders) = $self->handle_maintainer_fields(\%data);
+    $self->{src}{uploaders} = $uploaders;
+    $self->{src}{orig_uploaders} = $orig_uploaders if @$orig_uploaders;
 
     return 1;
 }
@@ -95,7 +160,7 @@ sub is_virtual {
 }
 
 our @TAKE_NEWEST = qw( description description-md5 essential priority section subsection tag
-                      archive source source-version homepage );
+                      archive source source-version homepage maintainer original-maintainer uploaders);
 our @STORE_ALL = qw( version source source-version installed-size size
                     filename md5sum sha1 sha256 task
                     origin bugs suite archive section );
@@ -133,7 +198,7 @@ sub merge_package {
     # packages from the central archive are preferred over all
     # others with the same version number but from other archives
     if ($is_newest = ($cmp > 0)
-               || (!$cmp && ($data->{archive} eq 'us') && ($self->{data}{archive} ne 'us'))) {
+       || (!$cmp && ($data->{archive} eq 'us') && ($self->{data}{archive} ne 'us'))) {
        $self->{newest} = $version;
        foreach my $key (@TAKE_NEWEST) {
            $self->{data}{$key} = $data->{$key};
index c33f1425322e0ddb10f0d18c51b2ef214919ea8b..2e5dee983b938ca3c1c8f1333337dcfe0ac7a2d3 100644 (file)
@@ -101,13 +101,14 @@ sub read_entry {
     read_entry_all( $hash, $key, $results, \@non_results, $opts );
 }
 
-#FIXME: make configurable
-my %fallback_suites = (
-                      'sarge-backports' => 'sarge',
-                      'sarge-volatile' => 'sarge',
-                      'etch-backports' => 'etch',
-                      'etch-volatile' => 'etch',
-                      experimental => 'sid' );
+sub fallback_suite {
+    my $suite = shift;
+    if ($suite =~ /^(\S+)-(?:updates|backports)/) {
+       return $1;
+    } else {
+       return undef;
+    }
+}
 
 sub read_entry_simple {
     my ($hash, $key, $archives, $suite) = @_;
@@ -127,7 +128,7 @@ sub read_entry_simple {
        debug( "use entry: @data", 2 ) if DEBUG && $data[1] eq $suite;
        return [ $virt{$suite}, @data ] if $data[1] eq $suite;
     }
-    if (my $fb_suite = $fallback_suites{$suite}) {
+    if (my $fb_suite = fallback_suite($suite)) {
        my $fb_result = read_entry_simple( $hash, $key, $archives, $fb_suite );
        my $fb_virt = shift(@$fb_result);
        $virt{$suite} .= $virt{$suite} ? " $fb_virt" : $fb_virt if $fb_virt;
index 62e8f7f62d289fd4c9f34c2f92c302d53bc8a549..101d6f2635523e8bb85f29a486c6b4d2b80273d7 100644 (file)
@@ -38,20 +38,9 @@ sub merge_package {
 
        $self->{data} = $data;
 
-       my @uploaders;
-       if ($data->{maintainer} ||= '') {
-           push @uploaders, [ split_name_mail( $data->{maintainer} ) ];
-       }
-       if ($data->{uploaders}) {
-           my @up_tmp = split( /\s*,\s*/,
-                               $data->{uploaders} );
-           foreach my $up (@up_tmp) {
-               if ($up ne $data->{maintainer}) { # weed out duplicates
-                   push @uploaders, [ split_name_mail( $up ) ];
-               }
-           }
-       }
-       $self->{uploaders} = \@uploaders;
+       my ($uploaders, $orig_uploaders) = $self->handle_maintainer_fields($data);
+       $self->{uploaders} = $uploaders;
+       $self->{orig_uploaders} = $orig_uploaders if @$orig_uploaders;
 
        if ($data->{files}) {
            my @files = split /\01/so, $data->{files};
index edaf9b67f8eabc3aa37f68f685f4cc8ef4420501..3537636dc92c5970ab75133e0ad78d5ba351f043 100644 (file)
@@ -1,2 +1,2 @@
-topdir=/srv/packages.debian.org
-site=packages.debian.net
+topdir=/srv/packages.ubuntu.com
+site=packages.ubuntu.com
index 78eb26a9a2178db7068c626f3404e5701aa69053..e81a856bedde7fc7a41eae795e871d6558c14ba2 100644 (file)
@@ -23,6 +23,9 @@ both over <tt>HTTP</tt> and the native git protocol.
        git clone git://source.djpig.de/git/packages.git
 </blockquote>
 
+<p>The modifications specific to Ubuntu can be found in the <tt>ubuntu-master</tt>
+branch.</p>
+
 <p>The older second generation code can be found in the Debian CVS
 at <a href="http://cvs.debian.org/packages/?cvsroot=webwml">cvs.debian.org</a>.
 
index fce9493b3312b7867ae98ff9905d14daba9eb389..d18bc878726edc11de40df2b7498f4faa05e748a 100644 (file)
@@ -1,38 +1,3 @@
-/* css file for debian web site - Jutta Wrage 2004 */
-
-/* all pages have a header, outer inner and footer
-leftcol and maincol can be omitted, there will be other boxes
-to replace later (eg. two content columns)
-normal page:
-<div id="header">
-  <div id="upperheader">
-     <div id="logo">
-     </div> <!-- end logo -->
-     <div id="serverselect">
-     </div> <!-- end serverselect -->
-  </div> <!-- end upperheader -->
-  <div id="navbar">
-  </div> <!-- end navbar -->
-</div> <!-- end header -->
-<div id="outer">
-  <div id="inner">
-    <div id="leftcol">
-      Leftcol is for menus - if omitted, maincol can be omitted, too
-    </div> <!-- end leftcol -->
-    <div id="maincol">
-      Maincol with margin left is for the content
-      But content may go directly to inner
-    </div> <!-- end maincol -->
-  </div> <!-- end inner -->
-  <div id="footer">
-    <hr class="hidecss"> This line is a divider for lynx
-  </div> <!-- end footer -->
-</div> <!-- end outer -->
-color logo #C60036
-cd-pages: bgcolor="#e09e86" - navbar
-*/
-
-/* { border: 1px solid yellow; } */
 html, body {
        color: #000000;
        background-color: #FFFFFF;
@@ -59,152 +24,15 @@ acronym {
 hr.hidecss {
        border: 0;
 }
+.hidecss {
+        display: none;
+}
 
 hr {
        border-bottom: 0;
        border-top: 1px solid #BFC3DC;
 }
 
-samp {
-       display: block;
-       margin-left: 2em;
-}
-div.sampleblock {
-       width: 80%;
-       margin: auto;
-       font-family:courier, serif;
-       font-size: 90%;
-}
-div.quoteblock {
-       width: 75%;
-       margin: auto;
-       font-size: 90%;
-       text-align: justify;
-}
-
-.quoteblock div.preimg {
-       float: left;
-       margin-top: 0.2em;
-}
-.quoteblock cite {
-       display: block;
-       text-align: right;
-}
-blockquote.question {
-       font-style: italic;
-}
-blockquote.question p span {
-       font-style: normal;
-       width: 10%;
-}
-#pagewidth {
-       width: 100%;
-       text-align: left;
-}
-
-/* now the header*/
-#header {
-       margin-left: -3px;
-       width: 100%;
-       height: auto;
-}
-
-/* upper nested header box*/
-#upperheader {
-       width: 100%;
-       margin-top: 11px;
-       height: auto;
-       /* height: 4.8em; */
-       background: #FFFFFF;
-}
-
-#logo {
-       float: left;
-       margin-left: 6px;
-       background: #FFFFFF;
-}
-
-#serverselect {
-       float: right;
-       display: block;
-       padding-top: 1px;
-       margin-right: 6px;
-       margin-left: auto;
-       text-align: right;
-       top: 0;
-       right: 0;
-}
-
-#serverselect:lang(de) {
-       width: 15em;
-}
-#serverselect:lang(en) {
-       width: 13em;
-}
-
-#serverselect p {
-       color: #990000;
-       font-size: 0.8em;
-       font-weight: normal;
-}
-
-#serverselect p select {
-       font-size: 88%;
-}
-
-#serverselect p input {
-       font-size: 88%;
-}
-.centerlogo {
-       margin-left: 260px;
-       margin-right: auto;
-       width: 125px;
-       text-align: center;
-       vertical-align: bottom;
-}
-#cdlogo {
-}
-
-#navbar {
-       /* margin-top: 1em; */
-       clear: both;
-       padding-left: 0px;
-       /* margin-top: 5px; */
-       padding-top: 6px;
-       padding-bottom: 4px;
-       width: 100%;
-       height: auto;
-       text-align: center;
-       background: #DF0451;
-}
-#navbar ul {
-       display: inline;
-       list-style-type: none; 
-       padding-left:  0px;
-       line-height: 1.5em;
-}
-#navbar ul li {
-       display: inline;
-       margin: 0;
-       white-space: nowrap;
-}
-#navbar a {
-       color: #FFFFFF;
-       text-decoration: none;
-       padding: 0.2em 0.4em 0.2em 0.4em;
-       background-color: #000084;
-       border: 1px solid #000084;
-       font-family: Arial, Helvetica, sans-serif;
-       font-weight: bold;
-       font-size: 0.9em;
-}
-#navbar a:hover {
-       background: #0000CC;
-}
-#navbar .hidecss, .hidecss {
-       display: none;
-}
-
 /* the rest of page out of two nested boxes around */
 
 #outer {
@@ -221,88 +49,6 @@ blockquote.question p span {
        /* overflow: auto; */
 }
 
-#leftcol {
-       float: left;
-       margin: 0em 0.4em 0 0;
-       padding-left: 0;
-       padding-bottom: 1em;
-       width: auto;
-       background: #BBDDFF;
-       font-size: 0.9em;
-       font-family: Arial, Helvetica, sans-serif;
-       border: 1px solid #BBDDFF;
-       /* overflow: auto; */
-}
-#leftcol a:link, #leftcol a:visited {
-       display: block;
-}
-#leftcol a:hover {
-       background-color: #DDEEFF;
-       /* background-color: #FFFFFF; */
-}
-#leftcol ul {
-       margin: 2px;
-       padding: 0;
-       list-style-type: none;
-       font-weight: bold;
-}
-#leftcol ul.votemenu {
-       width: 11em;
-}
-#leftcol ul.cdmenu {
-       width: 12em;
-}
-#leftcol ul.votemenu ul li, #leftcol ul.cdmenu ul li {
-       padding-bottom: 0.4em;
-}
-#leftcol li ul {
-       display: inline;
-}
-#leftcol ul li {
-       padding: 0.2em 0;
-}
-#leftcol ul ul {
-       font-size: 0.9em;
-       margin: 0;
-}
-#leftcol ul li a {
-       line-height: 1.2em;
-       padding-right: 0.5em;
-       /* padding: 0.2em 0 0.3em 0em; */
-}
-#leftcol ul ul li a {
-       font-weight: normal;
-       padding: 0.1em 0.5em;
-       line-height: 1.1em;
-}
-#leftcol ul ul li {
-       padding-top: 0;
-}
-#leftcol p {
-       margin-left: 2px;
-       margin-right: 2px;
-}
-#leftcol p a {
-       display: block;
-       margin: 0;
-}
-#leftcol p img {
-       margin-left: 1em;
-}
-
-#maincol {
-       background: #FFFFFF;
-       margin-left: 12em;
-       margin-right: 0.5em;
-       margin-bottom: 1em;
-}
-
-#maincol:lang(en), #maincol:lang(cz), #maincol:lang(ko),
-       #maincol:lang(no), #maincol:lang(sk), #maincol:lang(tr),
-       #maincol:lang(zh-CN), #maincol:lang(zh-HK), #maincol:lang(zh-TW) {
-       margin-left: 10em;
-}
-
 #lefthalfcol {
        float: left;
        margin-left: 0em;
@@ -322,6 +68,7 @@ blockquote.question p span {
        margin-right: 0.2em;
 }
 
+
 #footer {
        clear: both;
        width: 100%;
@@ -329,7 +76,7 @@ blockquote.question p span {
        bottom: 0;
        text-align: center;
        margin: 1em 0 0 0;
-       border-top: 1px solid #BFC3DC;
+       border-top: 1px solid #000;
 }
 
 #fineprint {
@@ -339,7 +86,7 @@ blockquote.question p span {
        font-size: 0.85em;
 }
 
-.bordertop { border-top: 1px solid #BFC3DC; }
+.bordertop { border-top: 1px solid #000; }
 
 dl.gloss dt {
        font-weight: bold;
@@ -362,13 +109,7 @@ dl.gloss dt {
        margin: 0px;
 }
 
-#main {
-       background: #bbddff;
-       padding: 1em 0; /* have some padding to get rid of collapsed margins */
-}
-
 /* classes for cards */
-
 .cardleft {
        margin: 0 0 1em;
        float: left;
@@ -406,20 +147,6 @@ dl.gloss dt {
        /* the next two lines xpand the div to heigth of left inner div */
        overflow: auto;
 }
-
-div.lefthalf {
-       float: left;
-       width: 49%;
-       border: 0;
-       margin: 0; 
-       padding: 0;
-}
-
-div.righthalf {
-       border: 0;
-       margin: 0;
-       padding: 0;
-}
 /* colors for packages, warnings and news in ports */
 .warning, dt.new, .no {
        color: red; /* FF0000 */
@@ -441,13 +168,6 @@ table.ridgetable, table.reltable {
        border-style: ridge;
        border-collapse: collapse;
 }
-table.vote {
-       margin: 0 auto;
-       border-width: 3px;
-       border-color: gray;
-       border-style: ridge;
-       border-collapse: collapse;
-}
 #pcontentsres col, #pcontentsres th, #pdownload th, #pdownload td, table.ridgetable th, table.ridgetable td,
        table.reltable td, table.reltable th {
        border: 2px #BFC3DC;
@@ -457,137 +177,12 @@ table.vote {
 table.reltable th {
        background-color: #44CCCC;
 }
-table.vote th {
-       border: 1px solid gray;
-       background-color: #DDDDDD;
-}
-table.vote td {
-       border: 1px solid gray;
-       padding: 4px;
-}
 table.reltable tr.odd {
        background-color: #FFFFFF;
 }
 table.reltable tr.even {
        background-color: #DDDDDD;
 }
-table.stattrans {
-       margin: 0 auto;
-       width: 95%;
-       border: 1px solid black;
-       background-color: #cdc9c9;
-}
-table.stattrans th {
-       text-align: center;
-       padding: 2px;
-}
-table.stattrans td {
-       text-align: right;
-       padding: 2px;
-}
-table.stattrans tbody th {
-       text-align: left;
-       font-weight: normal;
-}
-
-/* partners */
-.partnertype {
-       background-color: #DD0000;
-       padding: 0.2em 0 0.2em 1em;
-       color: #FFFFFF;
-
-}
-div.partnerlogo {
-       display: table-cell;
-       vertical-align: middle;
-       text-align: center;
-       width: 30%;
-}
-div.partnerdesc {
-       display: table-cell;
-       font-size: 85%;
-}
-div.cdflash {
-       background-color: #E09E86;
-       width: 80%;
-       margin: auto;
-       text-align: center;
-}
-.cdrsync {
-       color: #6B1300;
-}
-/* debian installer */
-
-.dierror {
-       background-color: #FF6060;
-}
-.dibad {
-       background-color: #F7FF60;
-}
-.digood {
-       background-color: #7AFF71;
-}
-
-/* useful classes */
-
-th.eventheader {
-       background-color: #BBDDFF;
-}
-.center {
-       text-align: center;
-}
-.right {
-       text-align: right;
-}
-ul.circlelist {
-       list-style-type: circle;
-}
-.centerdiv table {
-       margin-left: auto;
-       margin-right: auto;
-}
-ul.discless {
-       list-style-type: none;
-}
-.top, img.ico {
-       vertical-align: top;
-}
-img.ico {
-       float: left;
-       margin: 0 0.2em 0 0;
-}
-img.rightico {
-       float: right;
-       vertical-align: top;
-       margin: 0 0 0 0.2em;
-}
-img.cve {
-       vertical-align: -25px;
-}
-.y2kok, .yes {
-       color: #00BB00;
-}
-.y2kok2 {
-       color: #00BBBB;
-}
-.bluehead {
-       color: #0000FF !important;
-}
-span.halfsize {
-       font-size: 80%;
-}
-span.ddpbooktitle, span.merchtitle {
-       font-size: larger;
-}
-a:link { color: #0000FF; }
-a:visited { color: #800080; }
-a:hover { color: #F000FF; }
-a:active { color: #FF0000; }
-
-.navpara a, col.y2k {
-       white-space: nowrap;
-       /* this is to keep from breaking at whitespace in anchors */
-}
 
 /* language dependent stuff */
 /* quotes */
@@ -630,9 +225,3 @@ html[lang|="zh"] strong {
        direction: rtl;
        text-align: right;
 }
-
-#leftcol, #navbar, #navbar a {
-       -moz-border-radius: 15px;
-       /* this goes to the end as the css validator does not like it
-       will be replaced by border-radius with css3 */
-}
index 4d2b38a744fea147157d183625afe2e8d70e6ace..da74ff63b66bf8c6c1c65d34fa3647bbfae86d9c 100644 (file)
@@ -2,18 +2,21 @@
        title_tag = "$organisation Packages Search"
        page_title = "$organisation Packages Search"
        keywords = "$organisation, Packages"
+       html_meta = '<meta name="verify-v1" content="Rg2bDR1kWPGd8k8v9NOgnmtUQHO6UaKX2glZWVDptok=">'
 -%]
 [%-
-    all_suites = [ 'sarge', 'sarge-volatile', 'sarge-backports',
-                  'etch', 'etch-m68k', 'etch-volatile', 'etch-backports',
-                  'lenny', 'sid' ]
-    version_numbers = { sarge => '3.1',
-                       etch   => '4.0' }
-    current_release = 'etch'
-    all_sections = [ 'main', 'contrib', 'non-free' ]
-    all_architectures = [ 'alpha', 'arm', 'armel', 'amd64', 'hppa', 'i386',
-                         'ia64', 'kfreebsd-amd64', 'kfreebsd-i386', 'mips',
-                         'mipsel', 'powerpc', 's390', 'sparc' ]
+    all_suites = [ 'dapper', 'dapper-updates', 'dapper-backports',
+                  'feisty', 'feisty-updates', 'feisty-backports',
+                  'gutsy', 'gutsy-updates', 'gutsy-backports',
+                  'hardy', 'hardy-updates', 'hardy-backports',
+                  'intrepid' ]
+    version_numbers = { dapper => '6.06LTS',
+                       feisty => '7.04',
+                       gutsy  => '7.10',
+                       hardy  => '8.04LTS'}
+    current_release = 'hardy'
+    all_sections = [ 'main', 'multiverse', 'restricted', 'universe' ]
+    all_architectures = [ 'i386', 'amd64', 'powerpc' ]
 -%]
 
 <p>This site provides you with information about all the packages
@@ -124,6 +127,210 @@ Display:
 </select>
 </form>
 
+<hr>
+<h2>News</h2>
+<dl>
+<dt>2008-06-10</dt>
+<dd>
+<p>Removed edgy</p>
+</dd>
+<dt>2008-04-28</dt>
+<dd>
+<p>Added intrepid</p>
+</dt>
+<dt>2008-04-26</dt>
+<dd>
+<p>Adapted for hardy release. Removed the obsolete powerpc data for hardy. I'm currently evaluation if and how I should
+include information about <tt>ports.ubuntu.com</tt> packages here. Since <tt>archive.ubuntu.com</tt> is currently unusable
+I use <tt>nl.archive.ubuntu.com</tt> as source for the data until the situation normalizes again.</p>
+</dd>
+<dt>2008-02-21</dt>
+<dd>
+<p>The downtime today was caused by some yet undiagnosed kernel troubles after
+a faulty hard disk was exchanged. Sorry for any inconvenience.
+</dd>
+<dt>2008-02-19</dt>
+<dd>
+<p>Switched packages.ubuntu.com to the newer codebase that also runs
+on packages.debian.org. The two most important changes for users
+are that most pages are now generated dynamically (which makes
+for faster updates and more flexibility) and that the search
+functions should be much faster now.
+<p>Still waiting for a volunteer that optimizes the used stylesheets,
+I myself have not much talent in this area...
+</dd>
+<dt>2007-10-21</dt>
+<dd>
+Add hardy.
+</dd>
+<dt>2007-10-18</dt>
+<dd>
+Change default release to gutsy.
+</dd>
+<dt>2007-07-28</dt>
+<dd>
+Drop old releases since they also got dropped from archive.ubuntu.com.
+</dd>
+<dt>2007-04-29</dt>
+<dd>
+Feisty is released. Pages updated accordingly.
+</dd>
+<dt>2006-11-20</dt>
+<dd>
+<ul>
+<li>The hard drive of the server was replaced today after it began to act
+up. Most stuff should be up and running again. I accidentally deleted the
+info about new packages though, so that will be not reliable for the next
+few days.
+<li>Added edgy-backports to the homepage and the search forms
+</ul>
+</dd>
+<dt>2006-10-29</dt>
+<dd>
+<ul>
+<li>Add feisty. The changes for the edgy release were already done some days ago.
+</ul>
+</dd>
+<dt>2006-10-18</dt>
+<dd>
+<ul>
+<li>The "Bug reports" links now correctly point to Launchpad for all packages.
+Thanks to all the people that reported this error to me.
+<li>I added an <code>robots.txt</code> to ban some people trying to
+mirror the site by means of <code>wget -r</code>. If forever reason
+you need to mirror the site please contact me by mail so we can do
+this by other means that won't stress the server as much.
+</ul>
+</dd>
+<dt>2006-06-12</dt>
+<dd>
+Finally make dapper the default for searches and add edgy. Sorry for the delay.
+</dd>
+<dt>2006-01-17</dt>
+<dd>
+I hope everyone had a good start into the new year. Some small status
+updates:
+<ul>
+<li>While looking at the log statistics I noticed that apparently
+<code>packages.ubuntulinux.org</code> also points to my server
+without me knowing. I fixed the apache configuration so that it now
+knows about that and handles it correctly.</li>
+<li>Linking to a CSS file on the official Ubuntu homepage
+was a bad idea and the page had some glitches when it disappeared.
+Most of the issues should be fixed by now.</li>
+<li>Sorry for any performance issues with the site. My little server
+is not always able to handle the many hits of this site (close to
+2,000,000 per month). I guess I will have to search for another
+hosting solution in the near future.</li>
+</ul>
+</dd>
+<dt>2005-10-13</dt>
+<dd>
+Changed all defaults to point to breezy
+</dd>
+<dt>2005-09-28</dt>
+<dd>
+<ul>
+<li>The contents files are updated again, so I removed any warnings
+and added the appropriate links back</li>
+<li>The "Check for bug reports" links now point to Launchpad for
+universe/multiverse packages. Suggested by
+<tt>j -at- bootlab -dot- org</tt>.
+<li>Finally, I migrated to the "new" layout. Comments and Patches
+about the remaining quirks welcome.
+</ul>
+</dd>
+<dt>2005-09-25</dt>
+<dd>
+I've merged the new changelog to HTML conversion code from the Debian
+branch. I still have no idea how to handle the requests to link Ubuntu
+bugs to the Ubuntu BTS and Debian bugs to the Debian BTS. Suggestions
+welcome.
+</dd>
+<dt>2005-08-30</dt>
+<dd>
+<ul>
+<li>I've added a warning to this site about the outdated Contents
+files in the Ubuntu archive which make the contents search completely
+useless for anything after warty. I've actually no idea whom to ask
+about this since I don't seem to be able to find out on the Ubuntu
+web site who is ftp-master in Ubuntu?</li>
+<li>You can now also browse the packages from
+<a href="hoary-backports/">hoary-backports</a></li>
+</ul>
+</dd>
+<dt>2005-06-10</dt>
+<dd>
+I have begun to work on integrating the current Ubuntu web design with
+my pages. There are still some issues to work out but as a teaser I
+already converted the front page. Feel free to mail me with comments
+on how I could use the new layout better.
+</dd>
+<dt>2005-04-14</dt>
+<dd>
+hoary is released and now this fact is also beginning to show on this
+page. Please report all errors you find with the new breezy pages.
+</dd>
+<dt>2005-04-06</dt>
+<dd>
+The transition should be completed by now and I've installed some
+rewrite rules so that old URLs should also point to the new location.
+The changelog extraction script is still running so there are still
+some (more) broken links. Please report all other problems you might
+encounter.
+</dd>
+<dt>2005-04-05</dt>
+<dd>
+From tomorrow on this site will be available at <a
+href="http://packages.ubuntu.com/">packages.ubuntu.com</a>.
+The necessary setup is done on both my side and on the side of the
+ubuntu people but I will use the occasion for some configuration
+clean-up and a full rebuild. Stay tuned <tt>;)</tt>
+</dd>
+<dt>2005-04-02</dt>
+<dd>
+<ul>
+<li>On request of the MOTUs I've added links to the build logs for
+hoary packages.</li>
+<li>Also, the Portuguese LoCoTeam (hmm, Ubuntu teams have
+all very l33t names ;) asked me
+how to translate the pages. Here my answer:
+
+<blockquote style="font-family: monospace">
+<p>At http://cvs.infodrom.org/packages.debian.org/po/?cvsroot=debian.de
+you can find some .pot files. Please translate them and send them back
+to me (You may want to take a look at the translations available at
+http://cvs.debian.org/webwml/portuguese/po/?cvsroot=webwml
+especially for files like langs.pot). This will ensure that at least
+the constant strings on all the pages are translated (Some of the
+strings in these file are only needed on packages.debian.org)</p>
+
+<p>The translations of package descriptions I took from the DDTP (Debian
+Descriptions Translation Project) which seems to be rather inactive
+lately. Unless this is fully revived or another similar project is
+created there is little I can do on this front.</p>
+</blockquote>
+</li>
+<li>Thanks to all people that provided me with positive feedback about
+these pages.</li>
+</ul>
+</dd>
+<dt>2005-03-02</dt>
+<dd>I talked briefly with Daniel Silverstone of Canonical at
+<a href="http:://www.fosdem.org">FOSDEM</a>. He said that Ubuntu
+will get his own Packages page, but <q>It will be a while</q>.</dd>
+<dt>2005-01-24</dt>
+<dd>In the last two days there were several reboots of the server
+needed (kernel upgrades, activation and testing of a new rescue
+system). Sorry for any inconviences this caused.</dd>
+<dt>2005-01-11</dt>
+<dd>There are changelogs and copyright files available now. I also
+added links to the Ubuntu bugzilla, but I'm not sure yet that they
+work completly. Feedback welcome. (Changelogs and copyright files
+may be missing for some packages since I can only mirror the
+i386 and powerpc debs due to space constraints)</dd>
+</dl>
+
 [% PROCESS 'html/foot.tmpl'
        langs.size = 0
        copyright.years = '1997 - 2007' %]
index 0e5ae372f5983f252f5f56b6059c181b8dd3b42e..f60f4a46261acef24a778ce7cd89f11c3a894e8b 100644 (file)
@@ -44,13 +44,21 @@ h1 {
              font-size: smaller;
              margin-left: 1em;
              float: right;
-             background-color: #BBDDFF;
-             border: thin solid #BFC3DC;
+             background-color: white;
+            color: #5B4832;
+             border: thin solid #5B4832;
              padding: 1em .5em;
              width: auto;
+             max-width: 20%;
+}
+#pmoreinfo h2 {
+             border-bottom: none;
+            color: #5B4832;
 }
 #pmoreinfo h3 {
              border-top: thin solid black;
+            border-bottom: none;
+            color: #5B4832;
 }
 
 /*
@@ -250,7 +258,8 @@ table#pdeplegend, #pdownload table {
        padding: .3em;
        border-top: solid gray thin;
        border-bottom: solid gray thin;
-       background-color: #bdf;
+        background-color: #dbba75;
+       color: #5B4832;
 }
 #psearchres li {
        margin-top: 1em;
@@ -303,8 +312,9 @@ table#pdeplegend, #pdownload table {
        padding-bottom: 4px;
        height: auto;
        text-align: left;
-       background: #DF0451;
-       color: yellow;
+        background-color: white;
+       color: #5B4832;
+        border-bottom: thin solid #5B4832;
        font-size: smaller;
        font-weight: bold;
 }
@@ -319,9 +329,8 @@ table#pdeplegend, #pdownload table {
        margin: 0;
        white-space: nowrap;
 }
-#pnavbar a {
-       color: yellow;
-       text-decoration: none;
+#pnavbar a, #pmoreinfo a {
+       color: #5B4832;
 }
 #pnavbar a:hover {
 }
@@ -364,7 +373,7 @@ table#pdeplegend, #pdownload table {
 .pvcslink { 
 }
 
-#pnavbar, .pconstantnag, #psitewidemsg {
+.pconstantnag, #psitewidemsg {
        -moz-border-radius: 15px;
        /* this goes to the end as the css validator does not like it
        will be replaced by border-radius with css3 */
diff --git a/static/ubuntu/footer-bg.jpg b/static/ubuntu/footer-bg.jpg
new file mode 100644 (file)
index 0000000..2126160
Binary files /dev/null and b/static/ubuntu/footer-bg.jpg differ
diff --git a/static/ubuntu/footer-bg.png b/static/ubuntu/footer-bg.png
new file mode 100644 (file)
index 0000000..f314901
Binary files /dev/null and b/static/ubuntu/footer-bg.png differ
diff --git a/static/ubuntu/footer-image.png b/static/ubuntu/footer-image.png
new file mode 100644 (file)
index 0000000..81b170e
Binary files /dev/null and b/static/ubuntu/footer-image.png differ
diff --git a/static/ubuntu/footer-image2.png b/static/ubuntu/footer-image2.png
new file mode 100644 (file)
index 0000000..f045980
Binary files /dev/null and b/static/ubuntu/footer-image2.png differ
diff --git a/static/ubuntu/header-bg4.png b/static/ubuntu/header-bg4.png
new file mode 100644 (file)
index 0000000..4344bdb
Binary files /dev/null and b/static/ubuntu/header-bg4.png differ
diff --git a/static/ubuntu/header-image4.png b/static/ubuntu/header-image4.png
new file mode 100644 (file)
index 0000000..1c577fe
Binary files /dev/null and b/static/ubuntu/header-image4.png differ
diff --git a/static/ubuntu/little-u.gif b/static/ubuntu/little-u.gif
new file mode 100644 (file)
index 0000000..ef56baf
Binary files /dev/null and b/static/ubuntu/little-u.gif differ
diff --git a/static/ubuntu/masthead.css b/static/ubuntu/masthead.css
new file mode 100644 (file)
index 0000000..b574af2
--- /dev/null
@@ -0,0 +1,115 @@
+#mastWrapper {
+background: url(header-bg4.png) bottom left repeat-x #fff;
+}
+
+#masthead
+{
+position:relative;
+background: url(header-image4.png) no-repeat transparent;
+border-style: solid;
+border-width: 0;
+color: #000;
+height: 90px;
+}
+
+#masthead h1
+{
+       text-indent: -10000px;
+       margin:0;
+}
+
+#search 
+{
+position:absolute;
+top:10px;
+right:20px;              
+}
+#masthead #search a {
+       color: #5B4832;
+       text-decoration: underline;
+}
+#nav 
+{
+position:absolute;
+bottom:0px;
+right:10px;
+}
+                 
+#nav ul 
+{
+margin:0;
+padding:10px 10px 0 20px;
+list-style:none;
+}
+                 
+#nav li 
+{
+float:left;
+background:url("tab_off_ns1.gif") no-repeat left top;
+margin:0;
+padding:0 0 0 5px;
+}
+
+#nav a 
+{
+float:left;
+font-size:105%;
+display:block;
+background:url("tab_off_ns2.gif") no-repeat right top;
+padding:10px 15px 3px 8px;
+text-decoration:none;
+font-weight:bold;
+color:#444;
+}
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+#nav a {float:none;}
+/* End IE5-Mac hack */
+#nav a:hover {
+color:#333;
+}
+
+#nav li:hover, #nav li:hover a 
+{
+background-position:0% -163px;
+color:#000;
+}
+
+#nav li:hover a 
+{
+background-position:100% -163px;
+color:#000;
+}
+
+#nav #current 
+{
+background:url("tab_on_ns1.gif") no-repeat left top;             
+}
+
+#nav #current a 
+{
+background:url("tab_on_ns2.gif") no-repeat right top;            
+padding-bottom:4px;
+color:#000;
+}
+
+.portalMessagehead,
+.system-messagehead,  /* These two last ones are reST error indicators */
+#error-handling {
+    background-color: #ffce7b;
+    border: 1px solid #ffa500;
+    color: #6d4c07;
+    font-size: 10px;
+    font-weight: bold;
+    margin: 1em 0em 0em 0em;
+    padding: 0.5em 1em 0.5em 3em;
+    vertical-align: middle;
+    background-image: url(http://www.ubuntulinux.org/testing_area/info_icon.gif);
+    background-repeat: no-repeat;
+    background-position: 5px center ;
+
+}
+.portalMessagehead a {
+    color: #6d4c07;
+    text-decoration: underline;
+}
diff --git a/static/ubuntu/no-bullet.gif b/static/ubuntu/no-bullet.gif
new file mode 100644 (file)
index 0000000..1ea396b
Binary files /dev/null and b/static/ubuntu/no-bullet.gif differ
diff --git a/static/ubuntu/splash.jpg b/static/ubuntu/splash.jpg
new file mode 100644 (file)
index 0000000..0a3df97
Binary files /dev/null and b/static/ubuntu/splash.jpg differ
diff --git a/static/ubuntu/tab_off_ns1.gif b/static/ubuntu/tab_off_ns1.gif
new file mode 100644 (file)
index 0000000..9510406
Binary files /dev/null and b/static/ubuntu/tab_off_ns1.gif differ
diff --git a/static/ubuntu/tab_off_ns2.gif b/static/ubuntu/tab_off_ns2.gif
new file mode 100644 (file)
index 0000000..14135c9
Binary files /dev/null and b/static/ubuntu/tab_off_ns2.gif differ
diff --git a/static/ubuntu/tab_on_ns1.gif b/static/ubuntu/tab_on_ns1.gif
new file mode 100644 (file)
index 0000000..fce415a
Binary files /dev/null and b/static/ubuntu/tab_on_ns1.gif differ
diff --git a/static/ubuntu/tab_on_ns2.gif b/static/ubuntu/tab_on_ns2.gif
new file mode 100644 (file)
index 0000000..28bf458
Binary files /dev/null and b/static/ubuntu/tab_on_ns2.gif differ
diff --git a/static/ubuntu/trans.gif b/static/ubuntu/trans.gif
new file mode 100644 (file)
index 0000000..2799b45
Binary files /dev/null and b/static/ubuntu/trans.gif differ
diff --git a/static/ubuntu/ubuntu.css b/static/ubuntu/ubuntu.css
new file mode 100644 (file)
index 0000000..c8e9fd9
--- /dev/null
@@ -0,0 +1,195 @@
+
+.hiddenStructure {
+       display: none;
+}
+
+.imageLink {
+       text-decoration: none;
+}
+
+hr {
+    height: 1px;
+    color: #6d4c07;
+    background-color: transparent;
+}
+
+body
+{
+       background-color: #fff;
+       color: #000;
+       font-size: 100.1%;
+       margin: 0;
+       padding: 0;
+}
+#pageWrapper
+{
+       border-style: solid;
+       border-width: 0;                /* layout's side borders */
+       font-family: arial, helvetica, sans-serif;
+       font-size: 80%;                 /* arial looks better with a smaller size */
+       margin: 0;
+       min-width: 500px;               /* IE doens't understand this property */
+       width: auto;
+}
+* html #pageWrapper
+{
+       word-wrap: break-word;          /* invalid CSS but keeps IE from breaking 
+                                       horribly under narrow viewports */
+}
+
+html[xmlns] .mozclear
+{
+       /* this selector should be valid CSS, but Opera 7.5 (and above) will pick
+        * this up as well. Shouldn't be a problem, Opera should handle this fine,
+        * but it's a Mozilla-targeted hack, and it should probably only affect
+        * mozilla. You can do that by replacing the INVALID CSS selector
+        * :root .mozclear for what's give here.
+        */
+       border-bottom: 1px solid;
+       border-color: transparent;
+       margin-bottom: -1px;
+}
+#content
+{
+       margin: 0 -1px 0 0;             /* required to get the negative margin-based
+                                       layout to work. if #contentColumn does not
+                                       overlap the left and right columns, then
+                                       the whole layout will break */
+       width: 100%;
+       font-family: Verdana, arial, helvetica, sans-serif; 
+}
+
+#footWrapper {
+       background-color: #dbba75;
+       border-bottom: 2px solid #000;
+}
+
+#footer
+{
+       position: relative;
+       text-align: center;
+       padding: 10px;
+}
+
+#fineprint
+{
+       color: #5B4832;
+       background-color: #dbba75; 
+}
+
+html>body #footer
+{
+       padding-bottom: 1.01em;         /* attempt to fix Gecko engine's rounding errors
+                                       which can disrupt the layout. */
+}
+#footer a
+{
+       color: #5B4832;
+}
+
+p, h1, h2, h3, h4, h5, h6
+{
+       margin: .6em 0 .4em 0;                  /* for better consistency across platforms */
+}
+
+.clear
+{
+       clear: both;
+}
+.inside
+{
+       padding: 0 1.5em;               /* glitch in IE caused by vertical padding in
+                                       this class, so 0 padding is set here and
+                                       those blocks that need the vertical padding
+                                       must be applied to the parent element.
+                                       the purpose of this class is to provide 
+                                       horizontal padding without using hacks to
+                                       get around IE's broken box model. so it's
+                                       okay to apply vertical padding to the parent
+                                       element, just not horizontal padding. */
+}
+#contentColumn, #rightColumn
+{
+       padding-top: 3.0em;
+       padding-bottom: 1.0em;          /* this is the vert padding talked about in the
+                                       .inside selector comment. */
+}
+#footer
+{
+        margin-top: 1em;
+       padding: .3em;                  /* ditto from above */
+}
+#pageWrapper, #masthead, #footer
+{
+       border-color: #000;             /* one-stop control of border color used within
+                                       the layout */
+}
+
+/* body styles */
+#content a
+{
+       color: black;
+}
+
+#content p
+{
+       font-size: 100%;
+       font-family: Verdana, arial, helvetica, sans-serif;
+}
+
+
+/* header styles */
+h1, h2, h3, h4, h5, h6
+{
+       width: 100%;
+       color: #6D4C07;
+       padding-bottom: .0em;
+       padding-top: 0.4em;
+       font-family: Verdana, arial, helvetica, sans-serif; 
+}
+
+h1
+{
+       font-size: 170%;
+/*     border-bottom: 2px solid #6D4C07; */
+}
+
+h2
+{
+       font-size: 160%;
+       border-bottom: 2px solid #6D4C07;
+}
+h3
+{
+       margin-top: 20px;
+       font-size: 130%;
+       border-bottom: 2px solid #6D4C07;
+        
+}
+h4
+{
+       font-size: 120%;
+       border-bottom: 1px solid #6D4C07;
+}
+h5
+{
+       font-size: 110%;
+}
+h6 {
+       font-size: 100%;
+}
+
+.featured {
+       font-size: 125%;
+       font-style: italic;
+}
+       
+dt
+{
+/*     margin-top: 20px; */
+/*     margin-bottom: 8px; */
+       font-size: 120%;
+/*     border-bottom: 1px solid #6D4C07; */
+}
+
+img { border: 0; }
index 98525ebc247c768350cbe924871bc599a8fc23f7..d6e9bd6938310a7b374cff1aa4ff470673ee6332 100644 (file)
@@ -3,48 +3,49 @@
    po_lang = 'en'
    ddtp_lang = 'en'
 
-   organisation = 'Debian'
-   project_homepage = 'http://www.debian.org/'
-   packages_homepage = 'http://packages.debian.net/'
+   organisation = 'Ubuntu'
+   project_homepage = 'http://www.ubuntu.com/'
+   packages_homepage = 'http://packages.ubuntu.com/'
    searchformurl = packages_homepage
    search_url = '/search'
    tags_url = 'http://debtags.alioth.debian.org/'
    bugs_url = 'http://bugs.debian.org/'
+   launchpad_url = 'https://launchpad.net/distros/ubuntu/+source/'
    pts_url = 'http://packages.qa.debian.org/'
    ddpo_url = 'http://qa.debian.org/developer.php?login='
    src_bugs_url = bugs_url _ 'src:'
-   mirror_url = 'http://ftp.debian.org/'
-   security_mirror = 'security.debian.org'
-   security_mirror_url = security_mirror _ '/debian-security'
-   security_suite_suffix = '/updates'
-   changelogs_url = 'http://packages.debian.org/changelogs/'
+   mirror_url = 'http://archive.ubuntu.com/'
+   security_mirror = 'security.ubuntu.com'
+   security_mirror_url = security_mirror _ '/ubuntu'
+   security_suite_suffix = '-security'
+   changelogs_url = 'http://changelogs.ubuntu.com/changelogs/'
    policy_url = 'http://www.debian.org/doc/debian-policy/'
-   cn_help_url = project_homepage _ 'intro/cn'
+#   cn_help_url = project_homepage _ 'intro/cn'
    logo = {
        url => project_homepage,
         src => '/Pics/openlogo-nd-25.png',
         alt => organisation,
    }
    copyright = {
-       url => 'http://www.spi-inc.org/',
-        name => 'SPI Inc.',
-        years => '1997 - ' _ timestamp.year,
+       url => 'http://www.canonical.com/',
+        name => 'Canonical Ltd.',
+        years => timestamp.year,
    }
    license = {
-       url => project_homepage _ 'license'
+       url => project_homepage _ 'legal'
    }
    trademark = {
        name => copyright.name,
-       url => project_homepage _ 'trademark'
+       url => project_homepage _ 'aboutus/trademarkpolicy'
    }
    contact = {
-       name => g('Debian Web Mailinglist'),
-       mail => 'debian-www@lists.debian.org',
-        url => project_homepage _ 'contact',
+       name => 'Frank Lichtenheld',
+       mail => 'frank@lichtenheld.de',
+        url => project_homepage _ 'support',
    }
    admin = {
-       name => g('%s Webmaster', organisation),
-       mail => 'webmaster@debian.org',
+       name => 'Frank Lichtenheld',
+       mail => 'frank@lichtenheld.de',
    }
    trademarknotes = g('%s is a <a href="%s">trademark</a> of %s', organisation, trademark.url, trademark.name)
 #   sponsor = {
@@ -54,8 +55,8 @@
 -%]
 [%-
    # possible values for importance: high, normal, low
-   sitewidemsg = { importance => "high",
-                  txt => g('Please note that this is an experimental version of <a href="http://%s/">%s</a>. Errors and obsolete information should be expected', 'packages.debian.org', 'packages.debian.org') }
+#   sitewidemsg = { importance => "high",
+#                 txt => g('Please note that this is an experimental version of <a href="http://%s/">%s</a>. Errors and obsolete information should be expected', 'packages.ubuntu.com', 'packages.ubuntu.com') }
 -%]
 [%# @translators: . = decimal_point , = thousands_sep, see Number::Format %]
 [%- USE num = Number.Format( decimal_point => g('.'),
index 6e501c7ababaf3983d2b0c7f1cb8f3d506a1b00c..1eacb1600baa34d49bb5a2ea5bae290d4623d9f8 100644 (file)
@@ -2,11 +2,4 @@
    main_section = 'main'
    main_archive = 'us'
    standard_priority = 'optional'
-
-   suite_aliases = {
-               sarge => 'oldstable', 
-               etch => 'stable',
-               lenny => 'testing',
-               sid => 'unstable',
-                  }
 %]
index 9547482fd7efd93b79684422489c4d688471f861..5cc7daa17f10eebb7dd8a34eb4273346353cfea7 100644 (file)
 [%
 
-# TODO: find a way to get the U.S. mirror list from a more authoritive
-# location automatically. might not be overly smart to automatize it
-# completely, since I hand pick sites that are up-to-date, fast, and
-# have HTTP on a reasonably short URL
-#   -- Joy
-
-# hint:
-# grep-dctrl -F Site,Alias -e '(udel|bigfoot|kernel|crosslink|internap|cerias|lcs.mit|progeny)' Mirrors.masterlist | timestamps/archive_mirror_check.py
 mirrors = {
        us => {
-               mirror_list => 'http://www.debian.org/mirror/list',
-               north_america => [
-#only amd64,i386                       "ftp.us.debian.org/debian",
-                       "http.us.debian.org/debian",
-#only amd64,i386                       "ftp.debian.org/debian",
-                       "ftp.egr.msu.edu/debian",
-                       "mirrors.kernel.org/debian",
-#not amd64                     "ftp-mirror.internap.com/pub/debian",
-#only amd64,i386                       "ftp.cerias.purdue.edu/pub/os/debian",
-                       "debian.lcs.mit.edu/debian",
-                       "debian.oregonstate.edu/debian",
-               ],
-               europa => [
-                       "ftp.de.debian.org/debian",
-                       "ftp.at.debian.org/debian",
-#no amd64                      "ftp.bg.debian.org/debian",
-                       "ftp.ch.debian.org/debian",
-                       "ftp.cz.debian.org/debian",
-                       "ftp.dk.debian.org/debian",
-                       "ftp.ee.debian.org/debian",
-                       "ftp.es.debian.org/debian",
-                       "ftp.fi.debian.org/debian",
-                       "ftp.fr.debian.org/debian",
-                       "ftp.hr.debian.org/debian",
-                       "ftp.hu.debian.org/debian",
-                       "ftp.ie.debian.org/debian",
-                       "ftp.is.debian.org/debian",
-                       "ftp.it.debian.org/debian",
-                       "ftp.nl.debian.org/debian",
-                       "ftp.no.debian.org/debian",
-                       "ftp.pl.debian.org/debian",
-#only amd64,i386                       "ftp.ru.debian.org/debian",
-                       "ftp.se.debian.org/debian",
-#only some arches                      "ftp.si.debian.org/debian",
-                       "ftp.tr.debian.org/debian",
-                       "ftp.uk.debian.org/debian",
-               ],
-               south_america => [
-                       "ftp.br.debian.org/debian",
-                       "ftp.cl.debian.org/debian",
-               ],
-               australia => [
-                       "ftp.au.debian.org/debian",
-                       "ftp.wa.au.debian.org/debian",
-                       "ftp.nz.debian.org/debian",
-               ],
-               asia => [
-                       "ftp.jp.debian.org/debian",
-                       "ftp2.jp.debian.org/debian",
-                       "ftp.kr.debian.org/debian",
-#no amd64                      "ftp.hk.debian.org/debian",
-                       "ftp.tw.debian.org/debian",
-#only amd64,i386                       "linux.csie.nctu.edu.tw/debian",
-                       "debian.linux.org.tw/debian",
-                       "linux.cdpa.nsysu.edu.tw/debian",
-               ],
-       },
-
-       volatile => {
-               mirror_list => 'http://www.debian.org/devel/debian-volatile/volatile-mirrors',
-               europa => [
-                       "volatile.debian.net/debian-volatile",
-                       "ftp2.de.debian.org/debian-volatile",
-                       "ftp.sk.debian.org/debian-volatile",
-               ],
-               north_america => [
-                       "debian.domainmail.org/debian-volatile",
-               ],
-               south_america => [
-                       "sft.if.usp.br/debian-volatile",
-               ],
-               asia => [
-                       "ftp2.jp.debian.org/debian-volatile",
-               ],
-               australia => [
-                       "ftp.nz.debian.org/debian-volatile",
-               ],
-       },
-
-       backports => {
-               mirror_list => 'http://www.backports.org/debian/README.mirrors.html',
-               europa => [
-                       "www.backports.org/debian",
-                       "debian.sil.at/backports.org/",
-                       "backports.debian.or.at/backports.org",
-                       "mirror.realroute.net/backports.org",
-                       "backports.cisbg.com",
-                       "backports.linuxdediziert.de/backports.org",
-                       "debian.netcologne.de/debian-backports",
-                       "ftp.de.debian.org/backports.org",
-                       "mirror.buildd.net/backports.org",
-                       "ftp.estpak.ee/backports.org",
-                       "debian.acantho.net/backports.org",
-                       "backports.essentkabel.com/backports.org",
-                       "backports.sipo.nl",
-                       "ftp.tuke.sk",
-               ],
-               asia => [
-                       "backports.mithril-linux.org",
-               ],
-               australia => [
-                       "mirror.linux.org.au/backports.org",
-                       "mirror.pacific.net.au/linux/debian-backports",
-               ],
-       },
-
-       amd64 => {
-               mirror_list => 'http://amd64.debian.net/README.mirrors.html',
-               unofficial_port => {
-                       amd64 => {
-                               url_name => 'amd64',
-                               name => 'AMD64',
-                       }
-               },
-               europa => [
-                       "amd64.debian.net/debian",
-                       "ftp.de.debian.org/debian-amd64/debian",
-                       "ftp.es.debian.org/debian-amd64/debian",
-                       "ftp.nl.debian.org/debian-amd64/debian",
-                       "ftp.sk.debian.org/debian-amd64/debian",
-                       "bytekeeper.as28747.net/debian-amd64/debian",
-                       "mirror.switch.ch/debian-amd64/debian",
-               ],
-               asia => [
-                       "ftp.jp.debian.org/debian-amd64/debian/",
-                       "hanzubon.jp/debian-amd64/debian",
-               ],
-               north_america => [
-                       "mirror.espri.arizona.edu/debian-amd64/debian",
-                       "debian.csail.mit.edu/debian-amd64/debian",
-               ],
-               australia => [
-                       "public.planetmirror.com/pub/debian-amd64/debian",
-               ],
-       },
-
-       debports => {
-               mirror_list => 'http://wiki.debian.org/DebianPorts/Mirrors',
-               unofficial_port => {
-                       'kfreebsd-amd64' => {
-                               url_name => 'kfreebsd-gnu',
-                               name => 'GNU/kFreeBSD',
-                       },
-                       'kfreebsd-i386' => {
-                               url_name => 'kfreebsd-gnu',
-                               name => 'GNU/kFreeBSD',
-                       },
-               },
-               north_america => [
-                       "www.gtlib.gatech.edu/pub/gnuab/debian",
-                       "www.superunprivileged.org/debian",
-               ],
-               europa => [
-                       "ftp.debian-ports.org/debian",
-                       "ftp.de.debian.org/debian-ports",
-                       "ftp.ch.debian.org/debian-ports",
-                       "ftp.easynet.be/ftp/gnuab/debian",
+               mirror_list => 'https://wiki.ubuntu.com/Mirrors',
+               north_america = [
+       "mirrors.kernel.org/ubuntu",
+       "ftp.cs.umn.edu/pub/ubuntu",
+       "lug.mtu.edu/ubuntu",
+       "mirror.clarkson.edu/pub/distributions/ubuntu",
+       "ubuntu.mirrors.tds.net/ubuntu",
+       "www.opensourcemirrors.org/ubuntu",
+       "ftp.ale.org/pub/mirrors/ubuntu",
+       "ubuntu.secs.oakland.edu",
+       "mirror.mcs.anl.gov/pub/ubuntu",
+       "mirrors.cat.pdx.edu/ubuntu",
+       "ubuntu.cs.utah.edu/ubuntu",
+       "ftp.ussg.iu.edu/linux/ubuntu",
+       "mirrors.xmission.com/ubuntu",
+       "ftp.osuosl.org/pub/ubuntu",
+       "mirrors.cs.wmich.edu/ubuntu",
+       "mirror.cpsc.ucalgary.ca/mirror/ubuntu.com",
+       "mirror.arcticnetwork.ca/pub/ubuntu/packages",
+       "gulus.USherbrooke.ca/pub/distro/ubuntu",
+                               ],
+               europa = [
+       "fr.archive.ubuntu.com/ubuntu",
+       "ge.archive.ubuntu.com/ubuntu",
+       "nl.archive.ubuntu.com/ubuntu",
+       "no.archive.ubuntu.com/ubuntu",
+       "yu.archive.ubuntu.com/ubuntu",
+       "ubuntu.inode.at/ubuntu",
+       "ubuntu.uni-klu.ac.at/ubuntu",
+       "gd.tuwien.ac.at/opsys/linux/ubuntu/archive",
+       "ftp.belnet.be/pub/mirror/ubuntu.com",
+       "ubuntu.mirrors.skynet.be/pub/ubuntu.com",
+       "ubuntu.ipacct.com/ubuntu",
+       "ubuntu-hr.org/ubuntu",
+       "archive.ubuntu.cz/ubuntu",
+       "mirrors.dk.telia.net/ubuntu",
+       "mirrors.dotsrc.org/ubuntu",
+       "klid.dk/homeftp/ubuntu",
+       "ftp.estpak.ee/pub/ubuntu",
+       "www.nic.funet.fi/pub/mirrors/archive.ubuntu.com",
+       "mir1.ovh.net/ubuntu",
+       "ftp.u-picardie.fr/pub/ubuntu/ubuntu",
+       "ftp.oleane.net/pub/ubuntu",
+       "debian.charite.de/ubuntu",
+       "ftp.inf.tu-dresden.de/os/linux/dists/ubuntu",
+       "www.artfiles.org/ubuntu.com/archive",
+       "ftp.rz.tu-bs.de/pub/mirror/ubuntu-packages",
+       "ftp.join.uni-muenster.de/pub/mirrors/ftp.ubuntu.com/ubuntu",
+       "www.ftp.uni-erlangen.de/pub/mirrors/ubuntu",
+       "ftp.ntua.gr/pub/linux/ubuntu",
+       "ftp.kfki.hu/linux/ubuntu",
+       "ubuntu.odg.cc",
+       "ubuntu.lhi.is",
+       "ftp.esat.net/mirrors/archive.ubuntu.com",
+       "ftp.heanet.ie/pub/ubuntu",
+       "ftp.linux.it/ubuntu",
+       "na.mirror.garr.it/mirrors/ubuntu-archive",
+       "mirrors.linux.edu.lv/ftp.ubuntu.com",
+       "ftp.litnet.lt/pub/ubuntu",
+       "ubuntu.synssans.nl",
+       "ubuntulinux.mainseek.com/ubuntu",
+       "ubuntu.task.gda.pl/ubuntu",
+       "darkstar.ist.utl.pt/ubuntu/archive",
+       "ubuntu.dcc.fc.up.pt",
+       "ftp.iasi.roedu.net/mirrors/ubuntulinux.org/ubuntu",
+       "ftp.gui.uva.es/sites/ubuntu.com/ubuntu",
+       "ftp.acc.umu.se/mirror/ubuntu",
+       "mirror.switch.ch/ftp/mirror/ubuntu",
+       "www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu",
+       "ubuntu.blueyonder.co.uk/archive",
+       "ubuntu.snet.uz/ubuntu",
+                       ],
+       south_americas = [
+       "cl.archive.ubuntu.com/ubuntu",
+       "espelhos.edugraf.ufsc.br/ubuntu",
+       "ubuntu.interlegis.gov.br/archive",
+       "ubuntu.c3sl.ufpr.br/ubuntu",
+       "ftp.ucr.ac.cr/ubuntu",
+       "www.computacion.uni.edu.ni/iso/ubuntu",
+                       ],
+       australia = [
+       "ftp.iinet.net.au/pub/ubuntu",
+       "mirror.optus.net/ubuntu",
+       "mirror.isp.net.au/ftp/pub/ubuntu",
+       "www.planetmirror.com/pub/ubuntu",
+       "ftp.filearena.net/pub/ubuntu",
+       "mirror.pacific.net.au/linux/ubuntu",
+               ],
+       asia = [
+       "archive.ubuntu.org.cn/ubuntu",
+       "debian.cn99.com/ubuntu",
+       "mirror.lupaworld.com/ubuntu",
+       "komo.vlsm.org/ubuntu",
+       "kambing.vlsm.org/ubuntu",
+       "ubuntu.mithril-linux.org/archives",
+       "ubuntu.csie.ntu.edu.tw/ubuntu",
+       "mirror.letsopen.com/os/ubuntu",
+       "ftp.kaist.ac.kr/pub/ubuntu",
+       "apt.ubuntu.org.tw/ubuntu",
+       "apt.nc.hcc.edu.tw/pub/ubuntu",
+       "mirror.in.th/ubuntu",
+               ],
+       africa = [
+       "za.archive.ubuntu.com/ubuntu",
                ],
        },
 }
 
-ports_url = 'http://www.debian.org/ports/'
-
 continents = {
                north_america => g('North America'),
                south_america => g('South America'),
index 97ef81e054d9d9ecb77499d944facfddbde14e5e..0326a146af92890c8454f2da06daac6beb6dd9cf 100644 (file)
@@ -54,7 +54,7 @@ deb http://<em>[% mirrors.$archive.europa.0 %]</em> [% suite %] main [% section
   <p>[% g('You can download the requested file from the <tt>%s</tt> subdirectory at any of these sites:',
        filename.directory) %]</p>
   <div class="cardleft">
-  [% FOREACH continent IN [ 'north_america', 'south_america', 'asia', 'africa' ] %]
+  [% FOREACH continent IN [ 'north_america', 'south_america', 'asia', 'africa', 'australia' ] %]
     [% IF a.$continent %]
        <p><em>[% continents.$continent %]</em></p>
        <ul>
@@ -65,7 +65,7 @@ deb http://<em>[% mirrors.$archive.europa.0 %]</em> [% suite %] main [% section
     [% END %]
   [% END %]
   </div><div class="cardright">
-  [% FOREACH continent IN [ 'europa','australia' ] %]
+  [% FOREACH continent IN [ 'europa' ] %]
     [% IF a.$continent %]
        <p><em>[% continents.$continent %]</em></p>
        <ul>
index cbabd66a1b25a1d05841300ed8f942e9e3510590..580e280f6cae5523673e1d989dee6070e33737f6 100644 (file)
@@ -1,14 +1,15 @@
 [%- IF benchmark && debug -%]
 Total page evaluation took [% benchmark %]<br>
 [%- END -%]
-</div> <!-- end inner -->
+</div></div></div>
 
+<div class=\"clear mozclear\"></div><div id=\"prefooter\">
 <div id="footer">
 
 [% IF langs.size > 0 %]
 <hr class="hidecss">
 <!--UdmComment-->
-<p>[% g('This page is also available in the following languages (How to set <a href="%s">the default document language</a>):', cn_help_url) %]</p>
+<p>[% g('This page is also available in the following languages:') %]</p>
 <p class="navpara">
 [% FOREACH l IN langs %]
 <a href="[% IF keyword_esc;
@@ -42,6 +43,6 @@ Total page evaluation took [% benchmark %]<br>
 [% END %]
 </div> <!-- end fineprint -->
 </div> <!-- end footer -->
-</div> <!-- end outer -->
+</div> <!-- end pageWrapper -->
 </body>
 </html>
index f8d520bedd8bf74f95ff953283b9c30cb8f0d276..1a4b8d907242692c2a32833667b4b2ea460f56a6 100644 (file)
@@ -12,6 +12,8 @@
 <link href="/debian.css" rel="stylesheet" type="text/css" media="all">
 <link href="/packages.css" rel="stylesheet" type="text/css" media="all">
 <link href="/packages-site.css" rel="stylesheet" type="text/css" media="all">
+<link href="/ubuntu/ubuntu.css" rel="stylesheet" type="text/css" media="all">
+<link href="/ubuntu/masthead.css" rel="stylesheet" type="text/css" media="all">
 [% IF rss_alternate %]
 <link rel="alternate" type="application/rss+xml" title="RSS" href="[% rss_alternate %]">
 [% END %]
 [% sitewidemsg.txt %]
 </div>
 [%- END -%]
-<div id="header">
-   <div id="upperheader">
+    <div id="pageWrapper">
+      <div id="mastWrapper">
+        <div id="masthead">
+          <a class="imageLink"
+             href="[% homepage %]">&nbsp;</a>
 
-   <div id="logo">
-  <!-- very Debian specific use of the logo stuff -->
-  <a href="[% logo.url %]"><img src="[% logo.src %]" alt=""></a>
-  <a href="[% logo.url %]"><img src="/Pics/debian-small.png" alt="[% logo.alt %]" width="90" height="31"></a>
-</div> <!-- end logo -->
+          <a class="hiddenStructure"
+             href="[% homepage %]/#documentContent">Skip
+             to content</a>
 
 [%- IF print_search_field %]
 [% checked = 'checked="checked"'
    selected = 'selected="selected"' %]
+<div id="search">
 <form method="GET" action="[% search_url %]">
 <div id="hpacketsearch">
 [% IF search_field_values.mode %]<input type="hidden" name="mode" value="[% search_field_values.mode %]">[% END %]
 <span style="font-size: 60%"><a href="[% searchformurl %]">[% g('all options') %]</a></span>
 </div> <!-- end hpacketsearch -->
 </form>
+</div>
 [% END %]
 
-</div> <!-- end upperheader -->
+     <!-- masthead content begin -->
+    <h5 class="hiddenStructure">Sections</h5>    
+    <div id="nav">
+      <ul>        
+      </ul>
+    </div> <!-- nav -->
+    <!-- masthead content end -->
+    </div> <!-- masthead -->
+   </div>  <!-- mastWrapper -->
 
-<p class="hidecss"><a href="#inner">[% g('skip the navigation') %]</a></p>
+<div class="visualClear"></div>
 <div id="pnavbar">
  &gt;&gt; <a href="[% project_homepage %]" title="[% g('%s Homepage', organisation) %]">[% organisation %]</a>
  &gt;&gt; <a href="[% packages_homepage %]" title="[% g('%s Packages Homepage', organisation) %]">[% g('Packages') %]</a>
 [% END %]
 </div> <!-- end navbar -->
 
-</div> <!-- end header -->
-<div id="outer">
-<div id="inner">
+<div class="inside">
+<div id="content" class="">
+<div class="documentContent" id="region-content">
 
 [%- IF page_title %]
-  <h1>[% page_title %]</h1>
+  <h1 class="documentFirstHeading">[% page_title %]</h1>
   [%- PROCESS 'html/messages.tmpl' -%]
 [% END -%]
index ef049a5b41196e79e2ce7290fbdb67ab08e78196..b1098e7999a431525fe39be309cccb9c7b8ab382 100644 (file)
 <h2>[% g('Links for %s', pkg) %]</h2>
 <h3>[% g('%s Resources:', organisation) %]</h3>
 <ul>
-<li><a href="[% (is_source ? src_bugs_url : bugs_url) _ pkg %]">[% g('Bug Reports') %]</a></li>
-
-[% IF src.pkg -%]
-<li><a href="[% pts_url _ src.pkg %]">[% g('Developer Information (PTS)') %]</a></li>
-[% ELSIF is_source %]
-<li><a href="[% pts_url _ pkg %]">[% g('Developer Information (PTS)') %]</a></li>
-[%- END %]
+<li><a href="[% launchpad_url _ (is_source ? pkg : src.pkg) _ '/+bugs' %]">[% g('Bug Reports') %]</a></li>
 
 [% IF files && (!archive or archive == main_archive or archive == 'security') %]
 <li><a href="[% changelogs_url _ files.changelog.path %]">[% g('%s Changelog', organisation) %]</a></li>
   [% END %]
 [% END %]
 
-[% IF maintainers.size == 1 -%]
-  <h3>[% g('Maintainer:') %]</h3>
-[%- ELSE -%]
-  <h3>[% g('Maintainers:') %]</h3>
-[%- END %]
-[%- FOREACH maintainers;
+[%- BLOCK handle_maintainer;
   mailarchiveurl = '';
   IF (matches = mail.match('^(.*)@lists\.debian\.org$'));
        mailarchiveurl = 'http://lists.debian.org/' _ uri_escape(matches.0) _ '/';
   ELSIF (matches = mail.match('^(.*)@lists\.ubuntu\.com$'));
        mailarchiveurl = 'http://lists.ubuntu.com/archives/' _ uri_escape(matches.0) _ '/';
   END -%]
-  [%- '<ul>' IF loop.first -%]
+  [% IF hide_mail %]
+       <li>[% name | html %]
+  [% ELSE %]
        <li><a href="mailto:[% mail | html %]">[% name | html %]</a>
-       (<a href="[% ddpo_url %][% uri_escape(mail) %]" title="[% g("An overview over the maintainer's packages and uploads") %]">[% g('QA&nbsp;Page') %]</a>
-       [%- IF mailarchiveurl %], <a href="[% mailarchiveurl %]" title="[% g('Archive of the Maintainer Mailinglist') %]">[% g('Mail&nbsp;Archive') %]</a>[% END %])
+  [% END %]
+       [%- IF mailarchiveurl %] (<a href="[% mailarchiveurl %]" title="[% g('Archive of the Maintainer Mailinglist') %]">[% g('Mail&nbsp;Archive') %]</a>)[% END %]
        </li>
-  [%- '</ul>' IF loop.last -%]
+[% END -%]
+
+[%- IF maintainers.size -%]
+[% IF maintainers.size == 1 -%]
+  <h3>[% g('Maintainer:') %]</h3>
+[%- ELSE -%]
+  <h3>[% g('Maintainers:') %]</h3>
+[%- END %]
+[%- FOREACH m IN maintainers;
+   '<ul>' IF loop.first;
+   PROCESS handle_maintainer name=m.name mail=m.mail;
+   '</ul>' IF loop.last;
+ END -%]
+<p>[% g('Please consider <a href="%s">filing a bug</a> or <a href="%s">asking a question</a> via Launchpad before contacting the maintainer directly.',
+        "https://bugs.launchpad.net/ubuntu/+source/$src.pkg/+filebug",
+        "https://answers.launchpad.net/ubuntu/+source/$src.pkg/+addquestion") %]</p>
+[%- END -%]
+
+[%- IF original_maintainers.size -%]
+[% IF original_maintainers.size == 1 -%]
+  <h3>[% g('Original Maintainer (usually from Debian):') %]</h3>
+[%- ELSE -%]
+  <h3>[% g('Original Maintainers (usually from Debian):') %]</h3>
+[%- END %]
+[%- FOREACH m IN original_maintainers;
+   '<ul>' IF loop.first;
+   PROCESS handle_maintainer name=m.name mail=m.mail hide_mail=1;
+   '</ul>' IF loop.last;
+ END -%]
+<p>[% g('It should generally not be necessary for users to contact the original maintainer.') %]</p>
 [%- END -%]
 
 [% url = page.get_newest('url');