]> git.deb.at Git - deb/packages.git/commitdiff
Merge commit 'origin/master' into ubuntu-master
authorFrank Lichtenheld <frank@lichtenheld.de>
Thu, 30 Oct 2008 20:05:11 +0000 (21:05 +0100)
committerFrank Lichtenheld <frank@lichtenheld.de>
Thu, 30 Oct 2008 20:05:11 +0000 (21:05 +0100)
Conflicts:
config.sh.sed.in
cron.d/100syncarchive
cron.d/100syncarchive_backports
cron.d/100syncarchive_debports
cron.d/100syncarchive_volatile
lib/Packages/Search.pm
static/index.tmpl
templates/config.tmpl
templates/config/archive_layout.tmpl
templates/config/mirrors.tmpl

1  2 
conf/apache.conf.sed.in
lib/Packages/DoShow.pm
templates/config.tmpl
templates/config/archive_layout.tmpl
templates/config/mirrors.tmpl
templates/html/show.tmpl

diff --combined conf/apache.conf.sed.in
index dfbefed44657fbca13783be2a0a191ad8c3d9d6b,8594aecc7c41d1429c629055fada41c060631b89..c1fc18607b89874b1a57e2f2737a363be7bdc803
  </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
     PerlSwitches -T
     <Location /cgi-bin/>
        SetHandler perl-script
-       # mod-perl etch
        PerlInitHandler Apache2::Reload
-       # mod-perl sarge
-       #PerlInitHandler Apache::Reload
        PerlHandler ModPerl::Registry
        Options +ExecCGI
        PerlSendHeader On
     RewriteRule ^/changelogs/ - [L]
     RewriteRule ^/Pics/ - [L]
     RewriteRule ^/about/ - [L]
 +   RewriteRule ^/ubuntu/ - [L]
     RewriteRule ^/[^/]+\.css - [L]
     RewriteRule ^/[^/]+\.js - [L]
     RewriteRule ^/favicon.ico$ - [L]
  #   RewriteRule ^/$ http://www.debian.org/distrib/packages
     RewriteRule ^/$                    /index.html [L]
     RewriteRule ^/([^/+]*)([+])([^/]*)$        "/$1%%{%}2B$3" [N]
-    RewriteRule ^/changelog:(.+)$      http://%SITE%/changelogs/${changelog-url:$1} [R,L,NE]
-    RewriteRule ^/src:([^/]+)$         http://%SITE%/search?searchon=sourcenames&keywords=$1 [R,L,NE]
-    RewriteRule ^/file:(.+)$           http://%SITE%/search?searchon=contents&keywords=$1 [R,L,NE]
+    RewriteRule ^/changelog:(.+)$      /changelogs/${changelog-url:$1} [R,L,NE]
+    RewriteRule ^/src:([^/]+)$         /search?searchon=sourcenames&keywords=$1 [R,L,NE]
+    RewriteRule ^/file:(.+)$           /search?searchon=contents&keywords=$1 [R,L,NE]
     RewriteCond %{REQUEST_URI} !^/search$ [OR]
     RewriteCond %{QUERY_STRING} ^$
-    RewriteRule ^/([^/]+)$             http://%SITE%/search?keywords=$1 [R,L,NE]
+    RewriteRule ^/([^/]+)$             /search?keywords=$1 [R,L,NE]
  
     RewriteCond %{QUERY_STRING} =""
     RewriteCond %TOPDIR%/www%{REQUEST_FILENAME} -f [OR]
  #   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>
 +
diff --combined lib/Packages/DoShow.pm
index 00bc8cdc161787359220be585900c79a26cfa130,9d6df68541f240871f633e7beeb48e66fd2e1ac2..983d290293f5a38ad58e938e4a666f453d0eeba7
@@@ -231,9 -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/)) {
                                $d{contents_avail} = 1;
                            }
                            push @downloads, \%d;
@@@ -358,6 -356,7 +358,7 @@@ sub moreinfo 
      if ($info{sourcedownload}) {
        $contents->{src}{url} = make_url($source,'',{source=>'source'});
        $contents->{src}{pkg} = $source;
+       $contents->{src}{version} = $source_version;
  
        my @downloads;
        my $files = $page->get_src( 'files' );
  
      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 {
diff --combined templates/config.tmpl
index d6e9bd6938310a7b374cff1aa4ff470673ee6332,5ce7cc736eddbc6501d8432c58ccf1b19f09d081..3526f5e707cf7fc0ae779f4d5bb953bdf191ad8f
@@@ -3,49 -3,49 +3,50 @@@
     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'
 -   patch_tracking_url = 'http://patch-tracking.debian.net/package'
 +#   cn_help_url = project_homepage _ 'intro/cn'
++#   patch_tracking_url = 'http://patch-tracking.debian.net/package'
     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 = {
@@@ -55,8 -55,8 +56,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 1eacb1600baa34d49bb5a2ea5bae290d4623d9f8,30c28501fa39671a1774c9998cbc7d54a034dfc5..6adae92c7c59e7eb79d8cc47ce7724df74ab7fd5
@@@ -2,4 -2,18 +2,10 @@@
     main_section = 'main'
     main_archive = 'us'
     standard_priority = 'optional'
 -   suite_aliases = {
 -              sarge => 'oldstable', 
 -              etch => 'stable',
 -              lenny => 'testing',
 -              sid => 'unstable',
 -                 }
 -
 -
+    section_titles = {
+                 main => g('packages that meet the Debian Free Software Guidelines'),
+                 contrib => g('packages that meet the Debian Free Software Guidelines but need software not in Debian main'),
+                 'non-free' => g('packages that do not meet the Debian Free Software Guidelines'),
+         }
  %]
index 5cc7daa17f10eebb7dd8a34eb4273346353cfea7,d10f12499594622cec81ecfb1e137eff0d380ae5..10df62adf413c50b64723d21283ab6fd8d4cf0ff
  [%
  
 -# 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 => {
 -              title => g('volatile packages that need major changes during the life of a stable release'),
 -              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",
 +              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 => [
 -                      "ftp2.jp.debian.org/debian-volatile",
 +      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",
                ],
 -              australia => [
 -                      "ftp.nz.debian.org/debian-volatile",
 -              ],
 -      },
 -
 -      backports => {
 -              title => g('newer packages that have been adapted to stable releases of Debian'),
 -              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",
 -              ],
 -      },
 -
 -      debports => {
 -              title => g('ports of packages to architectures not yet available in Debian'),
 -              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",
 +      africa = [
 +      "za.archive.ubuntu.com/ubuntu",
                ],
        },
  }
  
 -ports_url = 'http://www.debian.org/ports/'
 -
  continents = {
                north_america => g('North America'),
                south_america => g('South America'),
                europa        => g('Europe'),
                africa        => g('Africa'),
        }
  %]
diff --combined templates/html/show.tmpl
index b1098e7999a431525fe39be309cccb9c7b8ab382,936d3b4ca583e13fc54fe74fdad842d3656addd9..ec7f2d7deec38950d6e8a6b1cb20f02c19144544
  [% ELSE %]
  <h1>[% g('Package: %s (%s)', pkg, versions.short) %]
  [% END %]
- [%- PROCESS marker text=archive IF archive && archive != main_archive %]
- [%- PROCESS marker text=section IF section && section != main_section %]
- [%- PROCESS marker text=g('essential') IF page.get_newest('essential') == 'yes' %]</h1>
+ [%- PROCESS marker text=archive title=mirrors.$archive.title IF archive && archive != main_archive %]
+ [%- PROCESS marker text=section title=section_titles.$section IF section && section != main_section %]
+ [%- PROCESS marker text=g('essential') title=g('package manager will refuse to remove this package by default') IF page.get_newest('essential') == 'yes' %]</h1>
  
  [% UNLESS is_virtual %]
  <div id="pmoreinfo">
  <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>
        SET vcs_info = page.get_newest("x-vcs-$vcs_id") UNLESS vcs_info;
     IF vcs_info %]
   (<a href="[% vcs_info %]" class="pvcslink">[% vcs_name %]</a>)
- [% END; END %]
+ [% END; END -%]
  </li>
- [% END %]
+ [% END -%]
+ [% IF patch_tracking_url && src %]
+   [% FOREACH src.downloads %]
+     [% IF name.match('\.diff\.(gz|bz2|lzma)$') %]
+     <li><a href="[% "$patch_tracking_url/$src.pkg/$src.version" %]">[% g("%s Patch Tracking", organisation) %]</a></li>
+     [% END -%]
+   [% END -%]
+ [% ELSIF patch_tracking_url && is_source %]
+   [% FOREACH srcfiles %]
+     [% IF filename.match('\.diff\.(gz|bz2|lzma)$') %]
+     <li><a href="[% "$patch_tracking_url/$pkg/$version" %]">[% g("%s Patch Tracking", organisation) %]</a></li>
+     [% END -%]
+   [% END -%]
+ [% END -%]
  
  </ul>
  
    [% 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');
    [%- END %]
  
    <ul class="ul[% id %]">
-   [% FOREACH terms %]
-     [% '<li>' UNLESS is_old_pkgs %]
-     [% FOREACH alternatives %]
+   [% FOREACH t IN terms %]
+     [% '<li>' UNLESS t.is_old_pkgs %]
+     [% FOREACH a IN t.alternatives %]
        [% '<dl>' IF loop.first %]
        <dt>[% IF loop.first %]<span class="nonvisual">[% id %]:</span>[% ELSE %][% g('or ') %][% END %]
-       [% IF suite %]<a href="[% make_url(name,'','suite',suite,'source','') %]">[% name %]</a>[% ELSE %][% name %][% END %]
-       [% ' (' _ version _ ')' IF version %]
-         [% ' [' _ arch_str _ ']' IF arch_str %]</dt>
-       [%- IF !is_old_pkgs -%]
-         [% PROCESS desc_i18n_dd no_end_tag=1 trans_desc=trans_desc desc=desc -%]
-         [%- IF providers.pkgs.size > 0 -%]
-         [% IF providers.also;
+       [% IF a.suite %]<a href="[% make_url(a.name,'','suite',a.suite,'source','') %]">[% a.name %]</a>[% ELSE %][% a.name %][% END %]
+       [% ' (' _ a.version _ ')' IF a.version %]
+         [% ' [' _ a.arch_str _ ']' IF a.arch_str %]</dt>
+       [%- IF !t.is_old_pkgs -%]
+         [% PROCESS desc_i18n_dd no_end_tag=1 trans_desc=a.trans_desc desc=a.desc -%]
+         [%- IF a.providers.pkgs && a.providers.pkgs.size > 0 -%]
+         [% IF a.providers.also;
                '<br>' _ g('also a virtual package provided by');
             ELSE;
                g('virtual package provided by');
             END; %]
-         [% js_id = name %]
-           <span id="js_[% js_id %]" class="p_js_elem"></span> <span id="html_[% js_id %]">[% FOREACH provider IN providers.pkgs.sort %]<a href="[% make_url(provider,'','suite',suite,'source','') %]">[% provider %]</a>[% ', ' UNLESS loop.last %][% END %]</span>
-       [% IF providers.pkgs.size > 10 %]
-       <script type="text/javascript">init_toggle_elem("[% js_id %]","[% g('show %u providing packages', providers.pkgs.size) %]", "[% g('hide %u providing packages', providers.pkgs.size) %]")</script>
+         [% js_id = a.name %]
+           <span id="js_[% js_id %]" class="p_js_elem"></span> <span id="html_[% js_id %]">[% FOREACH provider IN a.providers.pkgs.sort %]<a href="[% make_url(provider,'','suite',a.suite,'source','') %]">[% provider %]</a>[% ', ' UNLESS loop.last %][% END %]</span>
+       [% IF a.providers.pkgs.size > 10 %]
+       <script type="text/javascript">init_toggle_elem("[% js_id %]","[% g('show %u providing packages', a.providers.pkgs.size) %]", "[% g('hide %u providing packages', a.providers.pkgs.size) %]")</script>
        [% END %]
          [% END %]
          </dd>