OK, I've just tried to calculate the build-time dependencies for debian-policy, and here are some thoughts.
It's not easy. In fact it's *really* not easy. I first tried running strace on the build process, but due to the presence of a vfork, I missed most of the interesting stuff. So strace is not a particularly useful way of figuring out dependencies. I then tried looking through the debian/rules file, noting every command used, running dpkg -S on it to locate the containing package, sort | uniq on the result, and then examining what I had by hand. The list of packages used is as follows: Essential/Required packages: dpkg, fileutils, grep, gzip, sed, shellutils, tar As these are essential, they do not need listing in the build dependencies. Standard packages: dpkg-dev, lynx, make Now these should need listing, as they are not marked essential. Optional packages: Package: debiandoc-sgml Depends: perl5, sgml-base, sgml-data, sp, sgmlspm Suggests: debiandoc-sgml-doc, liburi-perl, libpaperg, tetex-bin, tetex-extra, lout, psutils Package: sp Depends: libc6 (>= 2.1), libstdc++2.10, libsp1 (>= 1.3.2-1.2-1), sgml-base Suggests: doc-base, sgml-data Now I can assume that apt-get will be used to install any dependent packages, so it should be sufficient to list debiandoc-sgml and sp in the Build-Depends-Indep field to pull in perl5, sgml-base, etc. But hey! debiandoc-sgml itself depends on sp, so I could optimise and not list sp. This would, however, be dangerous, as what happened if the dependencies (maybe not in this example, but elsewhere) changed? So I'll still list both of these. And I would think that I was done. Except that I have noticed, following the build process, that debiandoc2latexps is called. So I must manually examine the Suggests: list for debiandoc-sgml. (For sp, I notice that doc-base and sgml-data are suggested. But sgml-data is a dependency of debiandoc-sgml and doc-base is only used at configure time by the postinst. So I may ignore these.) So let's go through the suggestions one-by-one: debiandoc-sgml-doc: obviously unnecessary liburi-perl: well, it turns out that debian/rules uses debiandoc2html which uses/usr/lib/debiandoc-sgml/\ lib/DebianDoc_SGML/Format/HTML.pm uses URI::URL, so this is needed libpaperg: I don't think it's used, but who would know? tetex-bin: latex and pdflatex are needed from here for debiandoc2latex{ps,pdf} tetex-extra: Hmm. I don't know about this one either lout: No, debiandoc2lout is not used psutils: I don't think this one is used either So at the end of it, I'm still confused. Some more careful experimentation using strace on individual commands leads to the conclusion that I actually need the extra packages: latex2html: for url.sty, used by the debiandoc2latex* programs and there were no hints of this! libgdbmg1: but hey: that's a pre-dependency of perl-5.00x-base, so it should be required, not standard. So I don't need to list it. libpaperg: paperconf called from /usr/lib/debiandoc-sgml/lib/DebianDoc_SGML/Format/LaTeX.pm tetex-extra: lots of fonts and hyperref And I may still have missed some. Thus my Build-Depends-Indep would list: dpkg-dev, lynx, make, debiandoc-sgml, sp, liburi-perl, libpaperg, tetex-bin, tetex-extra, latex2html ------- What are my thoughts after all of this? Firstly, that if we are now demanding build-time dependencies, we are asking maintainers to do a *lot* of work. (This took me about 2 hours, maybe a little bit more.) We ought to think of a better way of performing this task if we want maintainers to take it seriously. Secondly, the chances of getting it right are small; although this does not matter so much given that errors can just be filed as bug reports. Thirdly, of the packages listed, dpkg-dev and make are needed by every package build, so should not be needed to be listed. I wonder whether we can have a tag "Build-Essential: yes" for a small number of packages which are assumed to be present on any builder, and that do not need to be listed? Finally, a small point. It may be worth stating that if a package is required to satisfy an (install-time) dependency of a listed dependency, then it does not need to be listed itself. Although, having said this, I think this is obvious. Julian =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Julian Gilbey, Dept of Maths, QMW, Univ. of London. [EMAIL PROTECTED] Debian GNU/Linux Developer, see http://www.debian.org/~jdg