Re: Build-Depends-Indep, please review
Roger Leigh <firstname.lastname@example.org> writes:
> On Sat, Nov 20, 2010 at 08:23:59PM +0000, Roger Leigh wrote:
>> On Sat, Nov 20, 2010 at 01:29:12PM -0600, Boyd Stephen Smith Jr. wrote:
>> > In <20101120183255.GF12640@khazad-dum.debian.net>, Henrique de Moraes Holschuh
>> > wrote:
>> > >On Fri, 19 Nov 2010, Boyd Stephen Smith Jr. wrote:
>> > >> >But hey, all the maintainer has to do is add 1, in words ONE, char to
>> > >> >debian/rules. Just change "build:" to "build%:" and dpkg-buildpackage
>> > >> >could use build-arch/indep targets instead of build. Aparently that is
>> > >> >too much to ask.
>> > >>
>> > >> I volunteer to make /this/ fix to any package that is unmaintained or
>> > >> whose maintainer is unresponsive, *if* Debian will change policy to
>> > >> /require/ build- arch/indep and make dpkg-buildpackage use them instead
>> > >> of build sometime after the Squeeze release and before the Wheezy freeze.
>> > >
>> > >It can be done, but it must be done in at least two steps:
>> > >
>> > >1. Make it SHOULD, start fixing packages. You don't have to wait for the
>> > > SHOULD to start fixing packages, either.
>> > I'm not willing to manually test random packages for this breakage. What's
>> > the best way to get an automated process to report on the PTS or BTS the
>> > existence of build-arch and build-indep? Could it simply be a lintian test?
>> > Also, I thought it was already a SHOULD.
>> > >2. When almost everything is fixed, make it MUST. Whatever doesn't get
>> > > fixed after that, gets axed from the next stable.
>> > My time was volunteered (in my last posting) *after* it becomes a MUST, but
>> > with some help I might be willing to put some time in as part of a DEP.
>> Two suggestions:
>>r 1) Use the lintian lab on lintian.debian.org
>> (/v/lintian.debian.org/laboratory) which contains all 15796 unpacked
>> source packages. Alternatively, download and unpack them all on your
>> own machine 
>> You can write a script to check for the presence of build-arch:
>> and/or build-indep:
>> Note: this won't pick out make pattern rules which don't have
>> (directly) those named rules, so you might want to check for build%
>> etc. There are other special cases such as included Makefiles when
>> packages use cdbs etc., so you will get false positives that need
>> manual review.
>> Example: find . -type f -name rules | grep 'debian/rules$' | while read rule; do egrep -H '^(build(.*%)?|build-(arch|indep)):' "$rule"; done
>> gives you somewhere to start.
> Output at http://people.debian.org/~rleigh/build-rule-check.bz2
> I haven't had time to analyse this, if someone else wants to,
> that would be cool.
> Done on lintian.debian.org using the following:
> cd /srv/lintian.debian.org/laboratory/source
> find . -type f -name rules | grep 'debfiles/rules$' | while read rule
> egrep -H '^(build(.*%)?|build-(arch|indep)):' "$rule"
Now why does it only list 8k sources if it matches the required
"build:" target? Are 50% of all sources already dropping through that
grep because they use dh ('%:') or include files?
Anyway, grepping for sources that (probably) have build-arch/indep:
% bzcat build-rule-check.bz2 | egrep '/rules:(build(.*%)+|build-(arch|indep)):' | cut -d":" -f1 | sort -u | wc -l
Lots of work to do.