1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
6
<meta name="generator" content="AsciiDoc 8.6.7" />
7
<title>Ben’s reference manual</title>
8
<style type="text/css">
9
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
13
font-family: Georgia,serif;
17
h1, h2, h3, h4, h5, h6,
18
div.title, caption.title,
19
thead, p.table.header,
21
#author, #revnumber, #revdate, #revremark,
23
font-family: Arial,Helvetica,sans-serif;
27
margin: 1em 5% 1em 5%;
32
text-decoration: underline;
48
h1, h2, h3, h4, h5, h6 {
56
border-bottom: 2px solid silver;
76
border: 1px solid silver;
87
ul > li { color: #aaa; }
88
ul > li > * { color: black; }
102
#revnumber, #revdate, #revremark {
107
border-top: 2px solid silver;
113
padding-bottom: 0.5em;
117
padding-bottom: 0.5em;
122
margin-bottom: 1.5em;
124
div.imageblock, div.exampleblock, div.verseblock,
125
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
126
div.admonitionblock {
128
margin-bottom: 1.5em;
130
div.admonitionblock {
132
margin-bottom: 2.0em;
137
div.content { /* Block element content. */
141
/* Block element titles. */
142
div.title, caption.title {
147
margin-bottom: 0.5em;
153
td div.title:first-child {
156
div.content div.title:first-child {
159
div.content + div.title {
163
div.sidebarblock > div.content {
165
border: 1px solid #dddddd;
166
border-left: 4px solid #f0f0f0;
170
div.listingblock > div.content {
171
border: 1px solid #dddddd;
172
border-left: 5px solid #f0f0f0;
177
div.quoteblock, div.verseblock {
181
border-left: 5px solid #f0f0f0;
185
div.quoteblock > div.attribution {
190
div.verseblock > pre.content {
191
font-family: inherit;
194
div.verseblock > div.attribution {
198
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
199
div.verseblock + div.attribution {
203
div.admonitionblock .icon {
207
text-decoration: underline;
209
padding-right: 0.5em;
211
div.admonitionblock td.content {
213
border-left: 3px solid #dddddd;
216
div.exampleblock > div.content {
217
border-left: 3px solid #dddddd;
221
div.imageblock div.content { padding-left: 0; }
222
span.image img { border-style: none; }
223
a.image:visited { color: white; }
227
margin-bottom: 0.8em;
240
list-style-position: outside;
243
list-style-type: decimal;
246
list-style-type: lower-alpha;
249
list-style-type: upper-alpha;
252
list-style-type: lower-roman;
255
list-style-type: upper-roman;
258
div.compact ul, div.compact ol,
259
div.compact p, div.compact p,
260
div.compact div, div.compact div {
262
margin-bottom: 0.1em;
274
margin-bottom: 0.8em;
277
padding-bottom: 15px;
279
dt.hdlist1.strong, td.hdlist1.strong {
285
padding-right: 0.8em;
291
div.hdlist.compact tr {
300
.footnote, .footnoteref {
304
span.footnote, span.footnoteref {
305
vertical-align: super;
309
margin: 20px 0 20px 0;
313
#footnotes div.footnote {
319
border-top: 1px solid silver;
328
padding-right: 0.5em;
329
padding-bottom: 0.3em;
337
#footer-badges { display: none; }
341
margin-bottom: 2.5em;
349
margin-bottom: 0.1em;
352
div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
369
span.aqua { color: aqua; }
370
span.black { color: black; }
371
span.blue { color: blue; }
372
span.fuchsia { color: fuchsia; }
373
span.gray { color: gray; }
374
span.green { color: green; }
375
span.lime { color: lime; }
376
span.maroon { color: maroon; }
377
span.navy { color: navy; }
378
span.olive { color: olive; }
379
span.purple { color: purple; }
380
span.red { color: red; }
381
span.silver { color: silver; }
382
span.teal { color: teal; }
383
span.white { color: white; }
384
span.yellow { color: yellow; }
386
span.aqua-background { background: aqua; }
387
span.black-background { background: black; }
388
span.blue-background { background: blue; }
389
span.fuchsia-background { background: fuchsia; }
390
span.gray-background { background: gray; }
391
span.green-background { background: green; }
392
span.lime-background { background: lime; }
393
span.maroon-background { background: maroon; }
394
span.navy-background { background: navy; }
395
span.olive-background { background: olive; }
396
span.purple-background { background: purple; }
397
span.red-background { background: red; }
398
span.silver-background { background: silver; }
399
span.teal-background { background: teal; }
400
span.white-background { background: white; }
401
span.yellow-background { background: yellow; }
403
span.big { font-size: 2em; }
404
span.small { font-size: 0.6em; }
406
span.underline { text-decoration: underline; }
407
span.overline { text-decoration: overline; }
408
span.line-through { text-decoration: line-through; }
410
div.unbreakable { page-break-inside: avoid; }
419
font-family: "Courier New", Courier, monospace;
426
margin-bottom: 1.5em;
428
div.tableblock > table {
429
border: 3px solid #527bbd;
431
thead, p.table.header {
438
/* Because the table frame attribute is overriden by CSS in most browsers. */
439
div.tableblock > table[frame="void"] {
442
div.tableblock > table[frame="hsides"] {
443
border-left-style: none;
444
border-right-style: none;
446
div.tableblock > table[frame="vsides"] {
447
border-top-style: none;
448
border-bottom-style: none;
458
font-family: "Courier New", Courier, monospace;
465
margin-bottom: 1.5em;
467
thead, p.tableblock.header {
478
border-color: #527bbd;
479
border-collapse: collapse;
481
th.tableblock, td.tableblock {
485
border-color: #527bbd;
488
table.tableblock.frame-topbot {
489
border-left-style: hidden;
490
border-right-style: hidden;
492
table.tableblock.frame-sides {
493
border-top-style: hidden;
494
border-bottom-style: hidden;
496
table.tableblock.frame-none {
497
border-style: hidden;
500
th.tableblock.halign-left, td.tableblock.halign-left {
503
th.tableblock.halign-center, td.tableblock.halign-center {
506
th.tableblock.halign-right, td.tableblock.halign-right {
510
th.tableblock.valign-top, td.tableblock.valign-top {
513
th.tableblock.valign-middle, td.tableblock.valign-middle {
514
vertical-align: middle;
516
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
517
vertical-align: bottom;
528
padding-bottom: 0.5em;
529
border-top: 2px solid silver;
530
border-bottom: 2px solid silver;
535
body.manpage div.sectionbody {
540
body.manpage div#toc { display: none; }
544
max-width: 50em; /* approximately 80 characters wide */
555
padding-bottom: 1.5em;
558
border-right: 3px solid #f8f8f8;
559
background-color: white;
577
<script type="text/javascript">
579
var asciidoc = { // Namespace.
581
/////////////////////////////////////////////////////////////////////
582
// Table Of Contents generator
583
/////////////////////////////////////////////////////////////////////
585
/* Author: Mihai Bazon, September 2002
586
* http://students.infoiasi.ro/~mishoo
588
* Table Of Content generator
591
* Feel free to use this script under the terms of the GNU General Public
592
* License, as long as you do not remove or alter this notice.
595
/* modified by Troy D. Hanson, September 2006. License: GPL */
596
/* modified by Stuart Rackham, 2006, 2009. License: GPL */
599
toc: function (toclevels) {
601
function getText(el) {
603
for (var i = el.firstChild; i != null; i = i.nextSibling) {
604
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
606
else if (i.firstChild != null)
612
function TocEntry(el, text, toclevel) {
615
this.toclevel = toclevel;
618
function tocEntries(el, toclevels) {
619
var result = new Array;
620
var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
621
// Function that scans the DOM tree for header elements (the DOM2
622
// nodeIterator API would be a better technique but not supported by all
624
var iterate = function (el) {
625
for (var i = el.firstChild; i != null; i = i.nextSibling) {
626
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
627
var mo = re.exec(i.tagName);
628
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
629
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
639
var toc = document.getElementById("toc");
644
// Delete existing TOC entries in case we're reloading the TOC.
645
var tocEntriesToRemove = [];
647
for (i = 0; i < toc.childNodes.length; i++) {
648
var entry = toc.childNodes[i];
649
if (entry.nodeName.toLowerCase() == 'div'
650
&& entry.getAttribute("class")
651
&& entry.getAttribute("class").match(/^toclevel/))
652
tocEntriesToRemove.push(entry);
654
for (i = 0; i < tocEntriesToRemove.length; i++) {
655
toc.removeChild(tocEntriesToRemove[i]);
658
// Rebuild TOC entries.
659
var entries = tocEntries(document.getElementById("content"), toclevels);
660
for (var i = 0; i < entries.length; ++i) {
661
var entry = entries[i];
662
if (entry.element.id == "")
663
entry.element.id = "_toc_" + i;
664
var a = document.createElement("a");
665
a.href = "#" + entry.element.id;
666
a.appendChild(document.createTextNode(entry.text));
667
var div = document.createElement("div");
669
div.className = "toclevel" + entry.toclevel;
670
toc.appendChild(div);
672
if (entries.length == 0)
673
toc.parentNode.removeChild(toc);
677
/////////////////////////////////////////////////////////////////////
678
// Footnotes generator
679
/////////////////////////////////////////////////////////////////////
681
/* Based on footnote generation code from:
682
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
685
footnotes: function () {
686
// Delete existing footnote entries in case we're reloading the footnodes.
688
var noteholder = document.getElementById("footnotes");
692
var entriesToRemove = [];
693
for (i = 0; i < noteholder.childNodes.length; i++) {
694
var entry = noteholder.childNodes[i];
695
if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
696
entriesToRemove.push(entry);
698
for (i = 0; i < entriesToRemove.length; i++) {
699
noteholder.removeChild(entriesToRemove[i]);
702
// Rebuild footnote entries.
703
var cont = document.getElementById("content");
704
var spans = cont.getElementsByTagName("span");
707
for (i=0; i<spans.length; i++) {
708
if (spans[i].className == "footnote") {
710
var note = spans[i].getAttribute("data-note");
712
// Use [\s\S] in place of . so multi-line matches work.
713
// Because JavaScript has no s (dotall) regex flag.
714
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
716
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
717
"' title='View footnote' class='footnote'>" + n + "</a>]";
718
spans[i].setAttribute("data-note", note);
720
noteholder.innerHTML +=
721
"<div class='footnote' id='_footnote_" + n + "'>" +
722
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
723
n + "</a>. " + note + "</div>";
724
var id =spans[i].getAttribute("id");
725
if (id != null) refs["#"+id] = n;
729
noteholder.parentNode.removeChild(noteholder);
731
// Process footnoterefs.
732
for (i=0; i<spans.length; i++) {
733
if (spans[i].className == "footnoteref") {
734
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
735
href = href.match(/#.*/)[0]; // Because IE return full URL.
738
"[<a href='#_footnote_" + n +
739
"' title='View footnote' class='footnote'>" + n + "</a>]";
745
install: function(toclevels) {
748
function reinstall() {
749
asciidoc.footnotes();
751
asciidoc.toc(toclevels);
755
function reinstallAndRemoveTimer() {
756
clearInterval(timerId);
760
timerId = setInterval(reinstall, 500);
761
if (document.addEventListener)
762
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
764
window.onload = reinstallAndRemoveTimer;
772
<body class="article">
774
<h1>Ben’s reference manual</h1>
775
<span id="author">Mehdi Dogguy and Stéphane Glondu</span><br />
776
<span id="revnumber">version 0.6,</span>
777
<span id="revdate">May 30, 2012</span>
779
<div id="toctitle">Table of Contents</div>
780
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
785
<div class="sectionbody">
786
<div class="paragraph"><p>This manual is free software; you may redistribute it and/or modify it
787
under the terms of the GNU General Public License as published by the
788
Free Software Foundation; either version 2, or (at your option) any
789
later version.</p></div>
790
<div class="paragraph"><p>This is distributed in the hope that it will be useful, but without
791
any warranty; without even the implied warranty of merchantability or
792
fitness for a particular purpose. See the GNU General Public License
793
for more details.</p></div>
794
<div class="paragraph"><p>A copy of the GNU General Public License is available as
795
/usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution
796
or on the World Wide Web at the GNU web site. You can also obtain it
797
by writing to the Free Software Foundation, Inc., 51 Franklin Street,
798
Fifth Floor, Boston, MA 02110-1301, USA.</p></div>
799
<div class="admonitionblock">
802
<img src="./images/icons/warning.png" alt="Warning" />
804
<td class="content">This document is still work in progress!</td>
810
<h2 id="_introduction">Introduction</h2>
811
<div class="sectionbody">
812
<div class="paragraph"><p><em>Ben</em> is the name of a set of utilities written in
813
<a href="http://caml.inria.fr">OCaml</a> and available through the <tt>ben</tt>
814
command. The major feature of <em>Ben</em> is to provide a full featured
815
transition tracker to follow the evolution of a set of packages in the
816
Debian archive.</p></div>
817
<div class="paragraph"><p>The aim of this document is to describe the features of <em>Ben</em> and its
818
configuration.</p></div>
822
<h2 id="_getting_the_source_code">1. Getting the source code</h2>
823
<div class="sectionbody">
824
<div class="paragraph"><p><em>Ben</em> is maintained in a Git repository available online at
825
<a href="http://anonscm.debian.org/gitweb/?p=collab-maint/ben.git">http://anonscm.debian.org/gitweb/?p=collab-maint/ben.git</a>. Getting the
826
sources is as simple as:</p></div>
827
<div class="listingblock">
828
<div class="content"><!-- Generator: GNU source-highlight 3.1.6
830
http://www.lorenzobettini.it
831
http://www.gnu.org/software/src-highlite -->
832
<pre><tt>git clone git<span style="color: #990000">:</span>//anonscm<span style="color: #990000">.</span>debian<span style="color: #990000">.</span>org/collab-maint/ben<span style="color: #990000">.</span>git</tt></pre></div></div>
833
<div class="paragraph"><p>The source tree has a <tt>debian/</tt> directory. It is a native
834
Debian package, so you can use the standard building tools in order to
839
<h2 id="_query_language">2. Query language</h2>
840
<div class="sectionbody">
841
<div class="paragraph"><p>The main feature of <em>Ben</em> is a transition tracker. The
842
transition tracker selects a set of affected packages and computes a
843
state for each of them. There exist already various ways to do
844
that. One solution would be to use the
845
<a href="http://packages.debian.org/sid/dctrl-tools">dctrl-tools</a>. We chose to
846
make our own language. This allows us to perform more fine-grained
847
queries, optimize queries and extend the query language easily.</p></div>
848
<div class="paragraph"><p>A ben query is decribed by the following
849
<a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form">BNF</a> formulae:</p></div>
850
<div class="literalblock">
851
<div class="content">
852
<pre><tt><query> ::= "true"
854
| "!" <query> /* Boolean negation */
855
| <query> "|" <query> /* Boolean OR operator */
856
| <query> "&" <query> /* Boolean AND operator */
857
| "(" <query> ")"
858
/*set 2*/ | <field> "~" "/" <regex> "/"
859
| <field> "~" '"' <string> '"'
861
| <comparison> '"' <string> '"'</tt></pre>
863
<div class="literalblock">
864
<div class="content">
865
<pre><tt><field> ::= '.' <string></tt></pre>
867
<div class="literalblock">
868
<div class="content">
869
<pre><tt><comparison> ::= '<<' | '<' | '>' | '>>' | '=' | '<=' | '>='</tt></pre>
871
<div class="paragraph"><p>The first rules are the usual boolean constants and operators. The
872
sixth rule is useful to group queries and override boolean operators'
874
<div class="paragraph"><p>The second set are the various type of queries implemented to match
875
against different criteria. It matches against a package field (in
876
lowercase).</p></div>
877
<div class="paragraph"><p>We believe the syntax of queries is easy to grasp. Nonetheless,
878
here are some exemples:</p></div>
879
<div class="ulist"><ul>
882
<tt>.build-depends ~ /lib.*ocaml-dev/</tt><br />
883
This query matches all packages that build-depend on a package
884
whose name matches the <a href="http://perldoc.perl.org/perlre.html">Perl
885
regular expression</a> <tt>lib.*ocaml-dev</tt>.
890
<tt>.depends ~ "libapt-pkg4.12"</tt><br />
891
This one is simpler than the first one in the sense that
892
<tt>libapt-pkg4.12</tt> is considered as a plain string and not a regular
897
<div class="admonitionblock">
900
<img src="./images/icons/important.png" alt="Important" />
902
<td class="content">Note the symbols around the selectors: /…/ for
903
regular expressions and "…" for plain strings.</td>
906
<div class="admonitionblock">
909
<img src="./images/icons/warning.png" alt="Warning" />
911
<td class="content">Packages fields may contain a list of values
912
comma-separated. <em>Ben</em> splits the list before looking with
913
"…" for a match.</td>
916
<div class="ulist"><ul>
919
<tt>>= "3.0"</tt><br />
920
The query <tt>>= "3.0"</tt> matches all packages with a version number
921
equal to or higher than "3.0".
926
<tt>source</tt><br />
927
This matches all source packages.
931
<div class="paragraph"><p>Now that the concept of query is explained, we will focus on other
932
parts of <em>Ben</em>. We will see how we can use the queries for each
937
<h2 id="_frontends">3. Frontends</h2>
938
<div class="sectionbody">
939
<div class="paragraph"><p><em>Ben</em> is a set of utilities available through the <tt>ben</tt> command. Each
940
utility is called a <em>frontend</em> and there are four:</p></div>
941
<div class="ulist"><ul>
963
<div class="paragraph"><p>All frontends share a set of options and each one defines its own
964
specific set. The shared set of command-line options is:</p></div>
965
<div class="tableblock">
969
cellspacing="0" cellpadding="4">
974
<th align="left" valign="top"> Option </th>
975
<th align="left" valign="top"> Action</th>
980
<td align="left" valign="top"><p class="table">--dry-run</p></td>
981
<td align="left" valign="top"><p class="table">Dry run</p></td>
984
<td align="left" valign="top"><p class="table">--quiet|-q</p></td>
985
<td align="left" valign="top"><p class="table">Quiet mode</p></td>
988
<td align="left" valign="top"><p class="table">--verbose</p></td>
989
<td align="left" valign="top"><p class="table">Verbose mode</p></td>
992
<td align="left" valign="top"><p class="table">--mirror uri</p></td>
993
<td align="left" valign="top"><p class="table">Package mirror to use</p></td>
996
<td align="left" valign="top"><p class="table">--mirror-binaries uri</p></td>
997
<td align="left" valign="top"><p class="table">Package mirror to use for binaries</p></td>
1000
<td align="left" valign="top"><p class="table">--mirror-sources uri</p></td>
1001
<td align="left" valign="top"><p class="table">Package mirror to use for sources</p></td>
1004
<td align="left" valign="top"><p class="table">--areas a,…</p></td>
1005
<td align="left" valign="top"><p class="table">Areas to consider (comma separated)</p></td>
1008
<td align="left" valign="top"><p class="table">--archs a,…</p></td>
1009
<td align="left" valign="top"><p class="table">Architectures to consider (comma separated)</p></td>
1012
<td align="left" valign="top"><p class="table">--suite a</p></td>
1013
<td align="left" valign="top"><p class="table">Suite</p></td>
1016
<td align="left" valign="top"><p class="table">--cache-dir d</p></td>
1017
<td align="left" valign="top"><p class="table">Path to cache dir</p></td>
1020
<td align="left" valign="top"><p class="table">--config|-c c</p></td>
1021
<td align="left" valign="top"><p class="table">Config file</p></td>
1026
<div class="paragraph"><p>The rest of this section describes each frontend.</p></div>
1028
<h3 id="_download">3.1. download</h3>
1029
<div class="paragraph"><p>This frontend is the simplest one as it has no command-line options,
1030
except the shared ones. It downloads all Sources.bz2 files and all
1031
Packages.bz2 files for selected architectures and areas. You may
1032
invoke it by running:</p></div>
1033
<div class="literalblock">
1034
<div class="content">
1035
<pre><tt>$ ben download [options]</tt></pre>
1037
<div class="paragraph"><p>The requested files will be downloaded in $BEN_CACHE_DIR, if set, or
1038
in the current directory.</p></div>
1039
<div class="admonitionblock">
1042
<img src="./images/icons/note.png" alt="Note" />
1044
<td class="content"><tt>ben download</tt> doesn’t read <tt>ben.cache</tt> files yet.</td>
1049
<h3 id="_query">3.2. query</h3>
1050
<div class="paragraph"><p>This utility is pretty much like
1051
<a href="http://man.cx/grep-dctrl(1)"><tt>grep-dctrl(1)</tt></a>. Given a list of Packages
1052
or Sources files, it performs a query and outputs the result.</p></div>
1053
<div class="paragraph"><p>Using it is as simple as shown below:</p></div>
1054
<div class="literalblock">
1055
<div class="content">
1056
<pre><tt>$ ben query ".package ~ /gentoo/" Packages</tt></pre>
1058
<div class="paragraph"><p>Unlike <tt>grep-dctrl(1)</tt>, <tt>ben query</tt> doesn’t have the necessary
1059
machinery to filter its output yet.</p></div>
1060
<div class="admonitionblock">
1063
<img src="./images/icons/note.png" alt="Note" />
1065
<td class="content"><tt>ben query</tt> doesn’t read .gz or .bz2 files or on its standard
1069
<div class="admonitionblock">
1072
<img src="./images/icons/note.png" alt="Note" />
1074
<td class="content"><tt>ben query</tt> doesn’t read <tt>ben.cache</tt> files yet.</td>
1079
<h3 id="_monitor">3.3. monitor</h3>
1080
<div class="paragraph"><p>The <tt>monitor</tt> fontend builds a monitoring page for a transition. A
1081
transition is decribed by three queries:</p></div>
1082
<div class="ulist"><ul>
1085
<tt>is_affected</tt>: matches source packages that are part of this
1086
transition; this query is evaluated against all source and binary
1087
packages and, for binary packages, their source package is picked;
1092
<tt>is_good</tt>: matches binary packages that are considered to be
1093
ready (fixed) for this transition;
1098
<tt>is_bad</tt>: matches binary packages that are considered to be broken
1099
(not fixed) for this transition.
1103
<div class="paragraph"><p>Not that some packages can be neither good nor bad. For example, there
1104
are many packages that build-depend on some library but do not link
1105
against it. Thus, they do not need any dependency on the library at
1107
<div class="paragraph"><p>An example of a complete description of a transition is:</p></div>
1108
<div class="literalblock">
1109
<div class="content">
1110
<pre><tt>is_affected = .build-depends ~ /libicu-dev/;
1111
is_good = .depends ~ /libicu44/;
1112
is_bad = .depends ~ /libicu42/;</tt></pre>
1114
<div class="paragraph"><p>There are other optional fields:</p></div>
1115
<div class="ulist"><ul>
1118
<tt>title</tt><br />
1119
This puts a nice title in the HTML page.
1124
<tt>notes</tt><br />
1125
This can be used to put
1126
remarks about the transition or notes about the status of some
1127
packages or the whole transition.<br />
1129
<em>Ben</em> recognizes some special texts and turns them into links.
1130
The following formats are recognized:
1134
<div class="tableblock">
1138
cellspacing="0" cellpadding="4">
1143
<th align="left" valign="top"> Original text </th>
1144
<th align="left" valign="top"> Result</th>
1149
<td align="left" valign="top"><p class="table">pts:ocaml</p></td>
1150
<td align="left" valign="top"><p class="table"><a href="http://packages.qa.debian.org/ocaml">pts:ocaml</a></p></td>
1153
<td align="left" valign="top"><p class="table">buildd:ocaml</p></td>
1154
<td align="left" valign="top"><p class="table"><a href="http://buildd.debian.org/ocaml">buildd:ocaml</a></p></td>
1157
<td align="left" valign="top"><p class="table">#123456</p></td>
1158
<td align="left" valign="top"><p class="table"><a href="http://bugs.debian.org/123456">#123456</a></p></td>
1161
<td align="left" valign="top"><p class="table"><msg-id></p></td>
1162
<td align="left" valign="top"><p class="table"><a href="http://lists.debian.org/msg-id">http://lists.debian.org/msg-id</a></p></td>
1165
<td align="left" valign="top"><p class="table">http://example.com</p></td>
1166
<td align="left" valign="top"><p class="table"><a href="http://example.com">http://example.com</a></p></td>
1171
<div class="paragraph"><p><tt>monitor</tt> understands the following list of command-line options:</p></div>
1172
<div class="tableblock">
1176
cellspacing="0" cellpadding="4">
1181
<th align="left" valign="top"> Option </th>
1182
<th align="left" valign="top"> Action</th>
1187
<td align="left" valign="top"><p class="table">--use-cache</p></td>
1188
<td align="left" valign="top"><p class="table">Use cache</p></td>
1191
<td align="left" valign="top"><p class="table">--run-debcheck</p></td>
1192
<td align="left" valign="top"><p class="table">Run edos-debcheck and add virtual <tt>.edos-debcheck</tt> field</p></td>
1195
<td align="left" valign="top"><p class="table">--use-projectb</p></td>
1196
<td align="left" valign="top"><p class="table">Get package lists from Projectb database</p></td>
1199
<td align="left" valign="top"><p class="table">--color</p></td>
1200
<td align="left" valign="top"><p class="table">Color if text output</p></td>
1203
<td align="left" valign="top"><p class="table">--text</p></td>
1204
<td align="left" valign="top"><p class="table">Select text output format</p></td>
1207
<td align="left" valign="top"><p class="table">--html</p></td>
1208
<td align="left" valign="top"><p class="table">Select HTML output format</p></td>
1215
<h3 id="_tracker">3.4. tracker</h3>
1216
<div class="paragraph"><p>This frontend uses <tt>monitor</tt> to generate a summary page about all
1217
known transitions. An example of such summary can be found at
1218
<a href="http://release.debian.org/transitions/">http://release.debian.org/transitions/</a>.</p></div>
1219
<div class="paragraph"><p><tt>tracker</tt> has a notion of <tt>profiles</tt> that gives a hint on the
1220
actual state of the transition. The default profiles are:</p></div>
1221
<div class="ulist"><ul>
1224
<tt>planned</tt> for known planned transitions or requested but not
1225
processed or acknowledged yet;
1230
<tt>permanent</tt> is a special profile made to keep an eye on some set of
1231
packages, not necessarily a transition;
1236
<tt>ongoing</tt> for the actual list of (known) on-going transitions;
1241
<tt>finished</tt> has a list of some transitions that are almost finished
1242
(e.g. new binary packages migrated but old binary packages left in
1243
testing to not decrease installability, or a finished transition
1244
with a number of still broken packages in testing).
1248
<div class="paragraph"><p>Technically, each <tt>profile</tt> is a sub-directory of the global config
1249
directory<span class="footnote"><br />[<a href="http://release.debian.org/transitions/config/">http://release.debian.org/transitions/config/</a>]<br /></span>. The
1250
latter can be specified by a command-line option.</p></div>
1251
<div class="paragraph"><p>By default, <tt>tracker</tt> looks for a directory named <tt>config</tt> which
1252
should contain a file named <tt>global.conf</tt>, unless otherwise told. It
1253
reads data (<tt>.ben</tt> files) from the <tt>config</tt> directory and outputs the
1254
result in the <tt>base</tt> directory.</p></div>
1255
<div class="paragraph"><p><tt>tracker</tt> has the following command-line options:</p></div>
1256
<div class="tableblock">
1260
cellspacing="0" cellpadding="4">
1265
<th align="left" valign="top"> Option </th>
1266
<th align="left" valign="top"> Action</th>
1271
<td align="left" valign="top"><p class="table">--base|-b [dir]</p></td>
1272
<td align="left" valign="top"><p class="table">Specifies the "base" directory</p></td>
1275
<td align="left" valign="top"><p class="table">--config-dir|-cd [dir]</p></td>
1276
<td align="left" valign="top"><p class="table">Location of ben trackers</p></td>
1279
<td align="left" valign="top"><p class="table">--transition|-t [profile/transition]</p></td>
1280
<td align="left" valign="top"><p class="table">Generate only that tracker page</p></td>
1283
<td align="left" valign="top"><p class="table">--update|-u</p></td>
1284
<td align="left" valign="top"><p class="table">Updates cache files</p></td>
1287
<td align="left" valign="top"><p class="table">--use-projectb</p></td>
1288
<td align="left" valign="top"><p class="table">Get package lists from Projectb database</p></td>
1297
<h2 id="_reporting_issues">4. Reporting issues</h2>
1298
<div class="sectionbody">
1299
<div class="paragraph"><p><em>Ben</em> doesn’t have a bug tracker yet. If you experience a bug or if
1300
you’re looking for some help, feel free to contact us directly.</p></div>
1304
<div id="footnotes"><hr /></div>
1306
<div id="footer-text">
1308
Last updated 2012-06-30 19:41:14 CEST