Bug#574721: edos-distcheck: Wrong output for | alternative?
- To: Ralf Treinen <treinen@free.fr>
- Cc: 574721@bugs.debian.org, 574380-quiet@bugs.debian.org
- Subject: Bug#574721: edos-distcheck: Wrong output for | alternative?
- From: Stefano Zacchiroli <zack@debian.org>
- Date: Wed, 24 Mar 2010 21:45:42 +0100
- Message-id: <20100324204542.GA6470@usha.takhisis.invalid>
- Reply-to: Stefano Zacchiroli <zack@debian.org>, 574721@bugs.debian.org
- In-reply-to: <20100321132750.GA3188@free.fr>
- References: <20100320083603.GB2774@free.fr> <1269074815.1382.2.camel@Nokia-N900-42-11> <20100320095703.GC2774@free.fr> <20100320164448.GA8078@usha.takhisis.invalid> <20100321132750.GA3188@free.fr>
tags 574721 + patch
thanks
On Sun, Mar 21, 2010 at 02:27:50PM +0100, Ralf Treinen wrote:
> > I would rather prefer installing a proper configuration file that will
> > then be parsed by add-sources.py (that would also permit easy editing by
> > the buildd admins). I can work on that but, as you know, not this
> > week-end. Nevertheless, if you want to work on that this week-end, I
> > suggest hereby a configuration file syntax which is really easy to
> > parse:
> >
> > [section]
> > key=value
> >
> > In our case we can use for instance one section for each architecture
> > and a single key "build-essential".
> >
> > What do you think of this proposal?
>
> I agree, that would be a better solution. In that case it should also be
> made possible to overwrite the system-wide setting: We should add an
> option that allows to specify an additional configuration files that
> overwrites system-wide setting.
>
> That would also solve #574721.
So, here is a patch implementing this (actually 2, read on). The
configuration file is expected to be /etc/edos-builddebcheck.conf and
can be generated using your get-buildessentials after it is patched with
the attached patch. In the end, I've chosen the following as sample
format (heading spaces to be removed):
[build-essentials]
amd64: foo, bar, baz
armel: quux, clan, toto
Note: the patch is only for get-buildessentials: I did not change
package building to actually install the configuration file under /etc.
The other attached patch fixes add-sources.py to actually read the
configuration files if it exists and to use the build-essentials defined
therein. I've left around the previous static list, which is used as a
fallback if no conffile is found or if it is found but does not contain
the needed architecture. The patch should be orthogonal to the other I
sent.
Cheers.
PS I've tested add-sources.py with a hand-written
/etc/edos-builddebcheck.conf, but not get-buildessentials (still on a
train, sorry)
--
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Dietro un grande uomo c'è ..| . |. Et ne m'en veux pas si je te tutoie
sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime
--- add-sources.py.bak 2010-03-24 21:06:55.000000000 +0100
+++ add-sources.py 2010-03-24 21:37:04.000000000 +0100
@@ -12,19 +12,21 @@
# $Id: add-sources.py 5957 2008-08-16 18:32:17Z zack $
-# build-essential packages. All build-dependencies and build-conflicts
-# to one of these packages is simply ignored.
-# TODO: this list should be obtained from the binary package file,
-# by grep-dctrl -F Build-Essential --pattern=yes -s Package -n
-# but then we have to change the way this command is called.
+# build-essential packages: all (unversioned) build-dependencies will be
+# ignored. This list is just the default fallback for when
+# /etc/edos-builddebcheck.conf is not available; when it is, per-arch
+# build-essential packages will be read from it
buildessentials = ['apt', 'binutils', 'cpio', 'cpp', 'dpkg-dev',
'g++', 'gcc', 'libc6-dev', 'make', 'patch',
'perl', 'perl-modules']
+CONFFILE = "/etc/edos-builddebcheck.conf"
+import os
import string
import sys
+from ConfigParser import ConfigParser
from optparse import OptionParser
from debian_bundle import deb822
@@ -39,6 +41,14 @@
sys.exit(2)
sources_file = args[0]
architecture = args[1]
+if os.path.isfile(CONFFILE):
+ conf = ConfigParser()
+ conf.read(CONFFILE)
+ if conf.has_option('build-essentials', architecture):
+ # overrire default with configured per-arch build-essentials
+ raw_b_e = conf.get('build-essentials', architecture)
+ buildessentials = map(lambda s: s.strip(), raw_b_e.split(','))
+
def pkg_of_src(src):
global architecture, options
diff --git a/debian/contrib/get-buildessentials b/debian/contrib/get-buildessentials
index 201fa56..57e8863 100755
--- a/debian/contrib/get-buildessentials
+++ b/debian/contrib/get-buildessentials
@@ -1,6 +1,6 @@
#!/usr/bin/perl
-$output = "buildessentials.py";
+$output = "edos-builddebcheck.conf";
$mirror="ftp://ftp.fr.debian.org/debian";
@arches=("alpha", "amd64", "armel", "hppa", "hurd-i386", "i386", "ia64",
"kfreebsd-amd64", "kfreebsd-i386", "mips", "mipsel", "powerpc",
@@ -8,17 +8,18 @@ $mirror="ftp://ftp.fr.debian.org/debian";
open(OUT,">$output");
select OUT;
+print "[build-essentials]\n";
foreach $arch (@arches) {
my($isfirst)=1;
- print "buildessentials[\'$arch\']=[";
+ print "$arch: ";
open(ESS,"wget -O - $mirror/dists/sid/main/binary-$arch/Packages.bz2 | bzcat | grep-dctrl -FBuild-Essential -ni yes -sPackage |");
while ($p=<ESS>) {
chop $p;
print ", " unless $isfirst;
- print "'$p\'";
+ print $p;
$isfirst=0;
}
- print "]\n";
+ print "\n";
close ESS;
}
close OUT;
Reply to: