[ David, beside the posting problem, are you subscribed to d-o-m? If yes let us know, so that we can drop the explicit Cc. On Debian lists the explicit Cc is opt-in ] On Tue, Sep 30, 2008 at 07:38:51PM +0200, Stefano Zacchiroli wrote: > Hello, For a fault of mine in the forward, the patches where not attached, they are now. > I've tried to adapt the web page showing status of OCaml packages on > Debian to Ubuntu. I've tried two approaches: > > 1. A page with only Ubuntu packages. This is patch > ocaml-debian-status-ubuntu-only.patch attached. This is reasonable, but has 0-synergy with Debian, as it keep resources separate. > 2. A page with mixed Debian and Ubuntu packages. This is patch > ocaml-debian-status-mixed.patch attached[1]. This is not reasonable and will break. The reason is that the code generating that page is meant to prefer newer versions over older one (if you want to see it that way, the reason is an implicit assumption of a single underlying distribution, which was Debian). In fact, this is exactly what you observe here: > The mixed approach offers comparison between Debian and Ubuntu packages, > but the policy "only the "best" version, i.e. the one nearest to a > release, is reported" makes most of Intrepid packages masked by testing. ... so I don't like it. > I'm wondering if it would not be better to represent quintuplets > (source, ocaml_version, version, distro, sub_distro) in some ways. E.g. > (ara, v3.10.0, 1.0.22, hardy, backports) > (ara, v3.10.2, 1.0.25, debian, testing) Are you talking about the underlying code or about the user interface? I don't remember the details of that code, but it is very likely that moving to a "multiple distribution" paradigm there is something that can (and should) be generalized in the implementation. By all means go for it. > Any comment is welcomed. First comment is about the user interface I would love to see, which is basically a merge of (1) and (2). Basically I imagine 2 distinct sets of columns, shown side by side (of course with rows aligned for homonyms packages). This way one can look only at the set of Debian packages (e.g., on the left), only at Ubuntu's (e.g, on the right), and even compare the status for the very same package (e.g., reading whole lines from left to right). Bonus points can be gained offering the ability to show/hide columns on the flight (no need to make everything dynamic, that can be done via Javascript, with maybe some cookie magic). Of course this is just a desiderata, I haven't thought about how hard is to achieve it starting from the current code base :) Second comment is about available tools. At DebConf8 I discovered PET, the tool used by the pkg-perl team (and many others now) to have an overview of large set of packages. I don't think it is applicable to our needs, as I don't think it support multiple distributions. But at least I suggest investigating whether this is actually the case or not. Cheers. -- Stefano Zacchiroli -*- PhD in Computer Science \ PostDoc @ Univ. Paris 7 zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/ I'm still an SGML person,this newfangled /\ All one has to do is hit the XML stuff is so ... simplistic -- Manoj \/ right keys at the right time
Index: debian-ocaml-status.py =================================================================== --- debian-ocaml-status.py (révision 5996) +++ debian-ocaml-status.py (copie de travail) @@ -1,4 +1,5 @@ #!/usr/bin/python +# -*- coding: latin-1 -*- # # Copyright (C) 2007, Stefano Zacchiroli <zack@debian.org> # @@ -94,9 +95,9 @@ return status def ocaml_status(files, log): - sources = filter(lambda fname: re.search(r'-Sources\b', fname), files) - packages = filter(lambda fname: re.search(r'-Packages\b', fname), files) - distro_of_fname = lambda fname: os.path.basename(fname).split('-')[0] + sources = filter(lambda fname: re.search(r'\.Sources\b', fname), files) + packages = filter(lambda fname: re.search(r'\.Packages\b', fname), files) + distro_of_fname = lambda fname: os.path.basename(fname).split('.')[0].split('-')[0] def add_status_entry(status, pkg_entry): ocaml_versions, pkg_status = status Index: ocaml-status.css =================================================================== --- ocaml-status.css (révision 5996) +++ ocaml-status.css (copie de travail) @@ -47,6 +47,18 @@ .inIncoming:after { content: " [i]"; } +.inHardy { + background: #ff6; +} +.inHardy:after { + content: " [h]"; +} +.inIntrepid { + background: #ff3; +} +.inIntrepid:after { + content: " [int]"; +} .version { } div.status th span.version:before { Index: retrieve-data.sh =================================================================== --- retrieve-data.sh (révision 5996) +++ retrieve-data.sh (copie de travail) @@ -9,11 +9,28 @@ cd data/ for distro in $distributions ; do for comp in $components ; do - fname="$distro-$comp-Sources.bz2" + fname="$distro.$comp.Sources.bz2" curl -s -o $fname -z $fname $base/$distro/$comp/source/Sources.bz2 for arch in $architectures ; do - fname="$distro-$comp-binary-$arch-Packages.bz2" + fname="$distro.$comp.binary-$arch.Packages.bz2" curl -s -o $fname -z $fname $base/$distro/$comp/binary-$arch/Packages.bz2 done done done + +mirror="http://ftp.ubuntu.com/ubuntu" +distributions="hardy hardy-backports hardy-proposed hardy-security hardy-updates intrepid" +components="main universe multiverse restricted" +architectures="i386 amd64" + +base="$mirror/dists" +for distro in $distributions ; do + for comp in $components ; do + fname="$distro.$comp.Sources.bz2" + curl -s -o $fname -z $fname $base/$distro/$comp/source/Sources.bz2 + for arch in $architectures ; do + fname="$distro.$comp.binary-$arch.Packages.bz2" + curl -s -o $fname -z $fname $base/$distro/$comp/binary-$arch/Packages.bz2 + done + done +done Index: debian-ocaml-status.genshi =================================================================== --- debian-ocaml-status.genshi (révision 5996) +++ debian-ocaml-status.genshi (copie de travail) @@ -7,11 +7,11 @@ xml:lang="en" > <head> <link type="text/css" rel="stylesheet" href="ocaml-status.css" /> - <title>OCaml Packages Status in Debian</title> + <title>OCaml Packages Status in Debian and Ubuntu</title> </head> <body> - <h1>Status of OCaml in Debian</h1> + <h1>Status of OCaml in Debian and Ubuntu</h1> <div id="navbar"> <ul> @@ -30,7 +30,9 @@ <span class="inTesting">in testing</span>, <span class="inUnstable">in unstable</span>, <span class="inExperimental">in experimental</span>, - <span class="inIncoming">in incoming</span>. + <span class="inIncoming">in incoming</span>, + <span class="inHardy">in hardy</span>, + <span class="inIntrepid">in intrepid</span>. </p> <p> <small> <strong>Note:</strong> the tables below look at packages along @@ -81,6 +83,12 @@ <td py:when="versions.has_key('incoming')" class="inIncoming"> <span py:content="versions['incoming']">x.y.z (incoming)</span> </td> + <td py:when="versions.has_key('hardy')" class="inHardy"> + <span py:content="versions['hardy']">x.y.z (hardy)</span> + </td> + <td py:when="versions.has_key('intrepid')" class="inIntrepid"> + <span py:content="versions['intrepid']">x.y.z (intrepid)</span> + </td> <td py:otherwise="" class="error">(?)</td> </py:for> </tr> @@ -131,6 +139,12 @@ <td py:when="versions.has_key('incoming')" class="inIncoming"> <span py:content="versions['incoming']">x.y.z (incoming)</span> </td> + <td py:when="versions.has_key('hardy')" class="inHardy"> + <span py:content="versions['hardy']">x.y.z (hardy)</span> + </td> + <td py:when="versions.has_key('intrepid')" class="inIntrepid"> + <span py:content="versions['intrepid']">x.y.z (intrepid)</span> + </td> <td py:otherwise="" class="error">(?)</td> </py:for> </tr>
Index: debian-ocaml-status.py =================================================================== --- debian-ocaml-status.py (révision 5996) +++ debian-ocaml-status.py (copie de travail) @@ -1,4 +1,5 @@ #!/usr/bin/python +# -*- coding: latin-1 -*- # # Copyright (C) 2007, Stefano Zacchiroli <zack@debian.org> # Index: ocaml-status.css =================================================================== --- ocaml-status.css (révision 5996) +++ ocaml-status.css (copie de travail) @@ -23,28 +23,16 @@ font-size: 60%; } -.inTesting { - background: #89f; +.inHardy { + background: #ff6; } -.inTesting:after { - content: " [t]"; +.inHardy:after { + content: " [h]"; } -.inUnstable { - background: #2f2; +.inIntrepid { + background: #fc6; } -.inUnstable:after { - content: " [u]"; -} -.inExperimental { - background: #8f8; -} -.inExperimental:after { - content: " [e]"; -} -.inIncoming { - background: #cfc; -} -.inIncoming:after { +.inIntrepid:after { content: " [i]"; } .version { Index: retrieve-data.sh =================================================================== --- retrieve-data.sh (révision 5996) +++ retrieve-data.sh (copie de travail) @@ -1,8 +1,8 @@ #!/bin/sh -mirror="http://ftp.debian.org/debian" -distributions="testing unstable experimental" -components="main contrib non-free" -architectures="i386 amd64 powerpc" +mirror="http://ftp.ubuntu.com/ubuntu" +distributions="hardy hardy-backports hardy-proposed hardy-security hardy-updates intrepid intrepid-backports intrepid-proposed intrepid-security intrepid-updates" +components="main universe multiverse restricted" +architectures="i386 amd64" base="$mirror/dists" test -d data/ || mkdir data/ Index: debian-ocaml-status.genshi =================================================================== --- debian-ocaml-status.genshi (révision 5996) +++ debian-ocaml-status.genshi (copie de travail) @@ -7,11 +7,11 @@ xml:lang="en" > <head> <link type="text/css" rel="stylesheet" href="ocaml-status.css" /> - <title>OCaml Packages Status in Debian</title> + <title>OCaml Packages Status in Ubuntu</title> </head> <body> - <h1>Status of OCaml in Debian</h1> + <h1>Status of OCaml in Ubuntu</h1> <div id="navbar"> <ul> @@ -27,10 +27,8 @@ <div class="legend"> <p> Legend: - <span class="inTesting">in testing</span>, - <span class="inUnstable">in unstable</span>, - <span class="inExperimental">in experimental</span>, - <span class="inIncoming">in incoming</span>. + <span class="inHardy">in hardy</span>, + <span class="inIntrepid">in intrepid</span>. </p> <p> <small> <strong>Note:</strong> the tables below look at packages along @@ -61,26 +59,18 @@ <tr py:for="(src, ocaml_versions) in packages['bin']" py:choose=""> <td> - <a href="http://packages.qa.debian.org/${src}"><span + <a href="https://launchpad.net/ubuntu/+source/${src}"><span class="package" py:content="src">pkg</span></a> <br /> - <small>[<a href="http://buildd.debian.org/pkg.cgi?pkg=${src}">buildd</a>]</small> +<!-- FIXME <small>[<a href="http://buildd.debian.org/pkg.cgi?pkg=${src}">buildd</a>]</small> --> </td> <py:for each="versions in ocaml_versions" py:choose=""> <td py:when="versions is None" class="none"></td> - <td py:when="versions.has_key('testing')" class="inTesting"> - <span py:content="versions['testing']">x.y.z (testing)</span> + <td py:when="versions.has_key('hardy')" class="inHardy"> + <span py:content="versions['hardy']">x.y.z (hardy)</span> </td> - <td py:when="versions.has_key('unstable')" class="inUnstable"> - <span py:content="versions['unstable']">x.y.z (unstable)</span> - <br /> - <small>[<a href="http://release.debian.org/migration/testing.pl?package=${src}">excuses</a>]</small> + <td py:when="versions.has_key('intrepid')" class="inIntrepid"> + <span py:content="versions['intrepid']">x.y.z (intrepid)</span> </td> - <td py:when="versions.has_key('experimental')" class="inExperimental"> - <span py:content="versions['experimental']">x.y.z (experimental)</span> - </td> - <td py:when="versions.has_key('incoming')" class="inIncoming"> - <span py:content="versions['incoming']">x.y.z (incoming)</span> - </td> <td py:otherwise="" class="error">(?)</td> </py:for> </tr> @@ -111,26 +101,18 @@ <tr py:for="(src, ocaml_versions) in packages['src']" py:choose=""> <td> - <a href="http://packages.qa.debian.org/${src}"><span + <a href="https://launchpad.net/ubuntu/+source/${src}"><span class="package" py:content="src">pkg</span></a> <br /> - <small>[<a href="http://buildd.debian.org/pkg.cgi?pkg=${src}">buildd</a>]</small> +<!-- FIXME <small>[<a href="http://buildd.debian.org/pkg.cgi?pkg=${src}">buildd</a>]</small> --> </td> <py:for each="versions in ocaml_versions" py:choose=""> <td py:when="versions is None" class="none"></td> - <td py:when="versions.has_key('testing')" class="inTesting"> - <span py:content="versions['testing']">x.y.z (testing)</span> + <td py:when="versions.has_key('hardy')" class="inHardy"> + <span py:content="versions['hardy']">x.y.z (hardy)</span> </td> - <td py:when="versions.has_key('unstable')" class="inUnstable"> - <span py:content="versions['unstable']">x.y.z (unstable)</span> - <br /> - <small>[<a href="http://release.debian.org/migration/testing.pl?package=${src}">excuses</a>]</small> + <td py:when="versions.has_key('intrepid')" class="inIntrepid"> + <span py:content="versions['intrepid']">x.y.z (intrepid)</span> </td> - <td py:when="versions.has_key('experimental')" class="inExperimental"> - <span py:content="versions['experimental']">x.y.z (experimental)</span> - </td> - <td py:when="versions.has_key('incoming')" class="inIncoming"> - <span py:content="versions['incoming']">x.y.z (incoming)</span> - </td> <td py:otherwise="" class="error">(?)</td> </py:for> </tr>
Attachment:
signature.asc
Description: Digital signature