On Sat, Nov 20, 2010 at 01:29:12PM -0600, Boyd Stephen Smith Jr. wrote: > In <20101120183255.gf12...@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: 1) Use the lintian lab on lintian.debian.org (/srv/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. 2) Directly patch dpkg-buildpackage and do a whole-archive rebuild. If you patch dpkg-buildpackage to require build-arch and build-indep in place of build, you can then build every source package and get success or failure. This can be done fairly trivially by scripting sbuild to build all sources with the new dpkg-buildpackage installed in the build chroot. There's also rebuildd for use with pbuilder/cowbuilder if you prefer that. This will take much longer, but should be 100% reliable bar FTBFS bugs. If there was a reliable way of getting make to tell you if a target rule exists or not, that would be much quicker than doing a full rebuild. Additionally, it could be added to lintian to warn people about the requirement. Totally agree with hmh about making it a SHOULD in Policy followed by MUST. Regards, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
signature.asc
Description: Digital signature