46387
Comment: add list of packages that are m-a: none in sid but not in ubuntu quantal
|
46511
add some more m-a: allowed packages
|
Deletions are marked like this. | Additions are marked like this. |
Line 95: | Line 95: |
The following packages are also Multi-Arch: allowed in Ubuntu Quantal but it's never made use of it: cpp, perlmagick |
This page serves as a resource for Debian maintainers and developers to identify how they can help to improve the situation of bootstrapping Debian.
Contents
- Decide on a stage build format
- Does arch:all mean M-A: foreign as a build dependency?
- Have apt resolve cross build dependencies correctly
- Improve Cross-Buildability
- Use Build-Depends-Indep
- Find more weak build dependencies
- Break dependency cycles using staged builds
- Break small dependency cycles
- Find better heuristics
Decide on a stage build format
Bug#661538 is so far the main place for discussion. The currently prefered solution is "build profiles", proposed by Guillem Jover. Other solutions are available in a document of his.
Build-Depends: huge (>= 1.0) [i386 arm] <!embedded !bootstrap>, tiny
If a build dependency is not used by one or more profiles than the names of those profiles follow that dependency in < and > "brackets" in a similar way that architectures are specified. Same applies for dependencies that are only required in one or more profiles. As with architecture specifications, it is not permitted for some profiles to be prepended with exclamation marks while others are not.
Patrick McDermott patched dpkg with support for this syntax while Johannes Schauer patched dose3. The patches show that implementing the above proposal is trivial and mostly borrows code from the existing architecture parsing.
We need to make this proposal either more official or need critique on it.
Does arch:all mean M-A: foreign as a build dependency?
Multiarch Spec says for runtime dependencies:
- Pre-multiarch, architecture-dependent packages may depend on Architecture: all packages and assume that the transitive dependencies will be resolved using packages of the same architecture or other packages that are Architecture: all. To avoid breaking this assumption, Architecture: all packages will, at least initially, be treated as equivalent to packages of the native architecture for all dependency resolution. This means that for an Architecture: all package to satisfy the dependencies of a foreign-architecture package, it must be marked Multi-Arch: foreign or Multi-Arch: allowed.
But for cross build dependencies Ubuntu apt assumes that architecture:all packages are implicitly Multi-Arch: foreign. Debian apt doesnt do this.
There is a discussion in bug#666772 about this.
Have apt resolve cross build dependencies correctly
It seems that dependencies on packages that are architecture:all and Multi-Arch:none are currently not properly resolved. See bug#683786.
Improve Cross-Buildability
See https://wiki.ubuntu.com/MultiarchCross.
Many packages would cross-build just fine if their cross-build-dependencies could be resolved using multiarch.
Test cross-build-dependency resolution with:
sudo apt-get --simulate --host-architecture=armel build-dep $yourpackage
It is most important that the following list of packages cross compiles:
- acl, attr, base-files, base-passwd, bash, binutils, bsdmainutils, build-essential, bzip2, coreutils, dash, db, debianutils, diffutils, dpkg, e2fsprogs, eglibc, file, findutils, gawk, gcc-4.7, gcc-defaults, gdbm, gettext, glib2.0, gmp, grep, groff, gzip, hostname, html2text, insserv, libcroco, libffi, liblocale-gettext-perl, libpipeline, libselinux, libsemanage, libsepol, libsigsegv, libtext-charwidth-perl, libtext-iconv-perl, libunistring, libxml2, linux, make-dfsg, man-db, mawk, mpclib, mpfr4, ncurses, pam, patch, pcre3, perl, pkg-config, readline6, sed, shadow, slang2, sysvinit, tar, texinfo, ustr, util-linux, xz-utils, zlib
The above packages must be cross compiled to provide a base system containing essential packages, build-essential and its dependencies and debhelper.
Here is a table of the currently unsatisfied cross-build-dependencies:
unsatisfied cross-build-dependency |
source packages failing because of it |
tcl-dev |
db |
autoconf |
acl, attr, binutils, gdbm, libsigsegv, make-dfsg, shadow, slang2, tar |
texlive-latex-base |
bash, mpfr4 |
python |
bsdmainutils, build-essential, file, glib2.0, linux |
dh-buildinfo |
coreutils |
po-debconf |
dash, insserv, sysvinit, util-linux |
texi2html |
diffutils, e2fsprogs |
libtimedate-perl |
dpkg |
perl-modules |
eglibc, gettext, libtext-charwidth-perl, libtext-iconv-perl, libxml2, xz-utils |
dejagnu |
findutils, libffi |
locales |
gawk |
gsfonts-x11 |
gcc-4.7 |
libgcj-common |
gcc-defaults |
mingw-w64 |
gzip |
gem2deb |
libselinux, libsemanage |
docbook-xml |
pam |
netbase |
perl |
Many of the cases in above table could be resolved by either making the binary package in the first column Multi-Arch: foreign or by making it Multi-Arch: allowed and adding the :any modifier to the source packages in the second column.
Out of the packages of above table, the following packages are marked Multi-Arch: foreign in Ubuntu Quantal, but not in Debian Sid:
- dh-buildinfo, po-debconf, texi2html, docbook-xml
Besides making the actual build system able to cross compile the sourcecode, the following measures will make the cross-build-dependencies resolvable for more packages:
Make lib*-dev packages Multi-Arch: same
Make lib*-dev packages Multi-Arch: same if applicable.
Mark build tools as Multi-Arch: allowed
Mark build tools as Multi-Arch: allowed if applicable.
- gettext: bug#683751
The following packages are also Multi-Arch: allowed in Ubuntu Quantal but it's never made use of it:
- cpp, perlmagick
Mark dependencies on Multi-Arch: allowed packages as :any
Mark dependencies on Multi-Arch: allowed packages as :any if applicable.
The following source packages depend on gettext but are missing the :any modifier.
- acl, apt, attr, bash, coreutils, cpio, dpkg, e2fsprogs, kbd, net-tools, popt, psmisc, shadow, tar, util-linux
The above packages all depend on gettext:any instead of just gettext in Ubuntu Quantal, so the :any modifier should be the right choice for them. There are no other packages in Ubuntu Quantal that use the :any modifier.
The following source packages depend on gettext but are missing the :any modifier as well. Though they were not found out by comparison with Ubuntu but by dose3:
- grep, texinfo
Mark dependencies as :native
Mark dependencies as :native if applicable.
< wookey> you only need :native for things that need a library of the build arch (very unusual)
More Multi-Arch
It is always useful for multiarch cross building to make more packages Multi-Arch aware. Here is a list of packages that are Multi-Arch: none in Debian Sid but not in Ubuntu Quantal:
package |
multiarch status in Quantal |
bash-completion |
foreign |
bsdmainutils |
foreign |
cpio |
foreign |
dh-buildinfo |
foreign |
docbook |
foreign |
docbook-dsssl |
foreign |
docbook-utils |
foreign |
docbook-xml |
foreign |
docbook-xsl |
foreign |
findutils |
foreign |
flex |
foreign |
gettext |
allowed |
gir1.2-farstream-0.1 |
same |
gperf |
foreign |
help2man |
foreign |
hicolor-icon-theme |
foreign |
initscripts |
foreign |
libao-common |
foreign |
libao-dbg |
same |
libao-dev |
same |
libao4 |
same |
libatkmm-1.6-1 |
same |
libatkmm-1.6-dbg |
same |
libatkmm-1.6-dev |
same |
libbonobo2-0 |
same |
libbonobo2-common |
foreign |
libbonobo2-dev |
same |
libbonoboui2-0 |
same |
libbonoboui2-common |
foreign |
libbonoboui2-dev |
same |
libcairomm-1.0-1 |
same |
libcairomm-1.0-dev |
same |
libdbusmenu-qt2 |
same |
libgdu-dev |
same |
libgdu0 |
same |
libgif4 |
same |
libglade2-0 |
same |
libglade2-dev |
same |
libgnomecanvas2-common |
foreign |
libgnomeui-0 |
same |
libgnomeui-common |
foreign |
libgnomeui-dev |
same |
libgtk-3-0-dbg |
same |
libgtkmm-2.4-1c2a |
same |
libgtkmm-2.4-dbg |
same |
libgtkmm-2.4-dev |
same |
libidl-dev |
same |
libidl0 |
same |
libiec61883-0 |
same |
libjpeg62-dbg |
same |
libmount1 |
same |
libnih-dbus-dev |
same |
libnih-dbus1 |
same |
libnih-dev |
same |
libnih1 |
same |
liborbit2 |
same |
libpango1.0-0-dbg |
same |
libpangomm-1.4-1 |
same |
libpangomm-1.4-dbg |
same |
libpangomm-1.4-dev |
same |
libppl0.11-dev |
same |
libspeechd2 |
same |
libstartup-notification0 |
same |
libstartup-notification0-dev |
same |
libtool |
foreign |
libwayland0 |
same |
lsb-core |
foreign |
makedev |
foreign |
module-init-tools |
foreign |
nih-dbus-tool |
foreign |
noweb |
foreign |
openjdk-6-demo |
same |
orbit2 |
foreign |
pkg-config |
foreign |
pkg-kde-tools |
foreign |
po-debconf |
foreign |
pulseaudio-utils |
foreign |
qt-at-spi |
same |
rsync |
foreign |
sharutils |
foreign |
sysv-rc |
foreign |
sysvinit-utils |
foreign |
texi2html |
foreign |
transfig |
foreign |
upstart |
foreign |
wireless-regdb |
foreign |
xfonts-encodings |
foreign |
Use Build-Depends-Indep
The control fields Build-Depends-Indep and Build-Conflicts-Indep mark dependencies or conflicts for building architecture:all packages from a source package. Building architecture:all packages is useless when bootstrapping Debian for a new architecture. One is only interested in the architecture dependent packages. Therfor, the Build-Depends-Indep dependencies can be dropped. This greatly helps to reduce the circular dependency situation.
The following source packages build at least one architecture:all package and have no Build-Depends-Indep field and also no binary-indep or build-indep target:
- alsa-lib, atlas, augeas, binutils-mingw-w64, blas, cluster-glue, corosync, dnsmasq, fftw, firebird2.5, gcc-mingw-w64, graphicsmagick, graphviz, gtk-sharp2, imagemagick, libdbi, libdc1394-22, libice, libidn, libraw1394, libsm, libvoikko, libx11, libxaw, libxext, libxtst, linuxdoc-tools, lm-sensors, lynx-cur, matplotlib, nas, openjdk-6, openmpi, openssl, parted, php5, python-qt4, qdbm, rrdtool, sip4, subversion, swig2.0, vala-0.16, webkit, wxwidgets2.8, xmlrpc-c, xorg-server, yajl
The following source packages build at least one architecture:all package and have no Build-Depends-Indep field and also no build-indep target but a binary-indep target:
- python-numpy, source-highlight
The following source packages build at least one architecture:all package and have no Build-Depends-Indep field and also no binary-indep target but a build-indep target:
- blt, boost1.49, cairo, iceweasel, lapack, libgsf, libvpx, libxmu, mono, openhpi, pygobject, pygobject-2, pygtk, python-imaging, redhat-cluster, vala-0.14
The following source packages build at least one architecture:all package and have no Build-Depends-Indep field but do have a binary-indep an well as a build-indep target:
- apache2, atkmm1.6, avahi, bluez, boost-defaults, cairomm, clutter-1.0, clutter-gtk, clutter-imcontext, cmake, cogl, cups, cyrus-sasl2, dbus, dbus-c++, dbus-glib, d-conf, dia, djvulibre, eet, evolution, evolution-data-server, exiv2, flac, flex, fontconfig, freetds, frei0r, gavl, gcj-4.6, gcj-4.7, gconf, gcr, gdb, gdk-pixbuf, ghostscript, glib-networking, gnome-desktop3, gnome-online-accounts, gnome-panel, gnutls26, gobject-introspection, gsettings-desktop-schemas, gtkhtml4.0, gtkmm2.4, guile-1.8, gvfs, heimdal, highlight, icu, iproute, java-atk-wrapper, json-glib, kde4libs, libbluray, libbonobo, libcanberra, libchamplain, libconfig, libffado, libgcrypt11, libgdata, libgnome-keyring, libgphoto2, libgtop2, libgusb, libgweather, libimobiledevice, libiptcdata, libnet, libnl, libnl3, libnotify, libpcap, libplist, libproxy, libpst, libquvi, librest, librsvg, libtheora, libunique3, libvirt, libwmf, libwnck3, libxt, llvm-2.9, metacity, mx, mysql-5.5, nautilus, net-snmp, ocaml, opencv, openssh, orc, pangomm, pkg-kde-tools, policykit-1, postgresql-9.1, py3cairo, pycairo, python-apt, qca2, qjson, qt4-x11, raptor, raptor2, rarian, rasqal, resource-agents, rpm, ruby1.8, ruby1.9.1, samba, soprano, telepathy-glib, tidy, tk8.4, tk8.5, tracker, udisks, upower, zenity
The following source packages possess a Build-Depends-Indep field and it could be checked if not more packages can be added to it:
- apt, atk1.0, cpio, dbus-python, dirac, doxygen, ecj, ecore, eina, esound, evas, fftw3, git, gmime, gnome-vfs, gnupg, gst-plugins-base0.10, gstreamer0.10, gtk+2.0, gtk+3.0, id3lib3.8.3, java-common, jinja2, krb5, libav, libbonoboui, libdatrie, libgnome, libgnomecanvas, libgnomeprint, libgnomeprintui, libgnomeui, libsoup2.4, libthai, libxcb, pango1.0, ppl, python2.6, python2.7, python3.2, schroedinger, speex, xen
Find more weak build dependencies
We call "weak" build dependencies those packages that have a high likelyhood of being droppable as dependencies from most source packages that need them. Can you extend this list?
- doxygen, gtk-doc-tools, texlive-latex-base, texlive-generic-recommended, texinfo
The following source packages build-depend on one of the above and could be modified to have them moved into Build-Depends-Indep or marked as not being needed for stage1 profile builds.
- alsa-lib, apr, apr-util, atk1.0, atlas, augeas, boost1.49, clutter-1.0, clutter-gesture, clutter-imcontext, cogl, cvs, dbus-c++, dbus-glib, eet, evolution-data-server, exiv2, flac, gavl, gconf, gcr, glib2.0, gnome-desktop3, gnome-disk-utility, gnome-keyring, gnome-vfs, gobject-introspection, gtk+2.0, gtk+3.0, gvfs, icu, iproute, jack-audio-connection-kit, json-glib, lapack, libasyncns, libbluray, libbluray, libbonobo, libcaca, libcanberra, libconfig, libdaemon, libdbusmenu-qt, libdc1394-22, libexif, libftdi, libgnome, libgnomecanvas, libgnome-keyring, libgnomeui, libgphoto2, libgweather, libnl, libnl, libnl3, libnl3, libnotify, libplist, librest, librsvg, libsoup2.4, libtheora, libtheora, libunique3, libusbx, libvpx, libwnck3, llvm-2.9, mysql-5.5, nautilus, network-manager, orbit2, orc, pango1.0, policykit-1, poppler, soprano, subversion, transfig, udev, udisks, webkit, yajl
Break dependency cycles using staged builds
When bootstrapping using native compilation, then the dependency graph contains one big strongly connected component of about 1000 vertices which means that each package in it is part of a multitude of dependency cycles. It also means that the dependency graph can neither easily be rendered using dot (will take hours of calculation) nor can it be visually inspected by a human.
The following 387 source packages are part of the main scc:
- acpica-unix, alsa-lib, apache2, apr, apr-util, apt, atk1.0, atkmm1.6, atlas, attica, audiofile, audit, augeas, automoc, avahi, bc, binfmt-support, blas, blt, bluez, boost1.49, boost-defaults, cairomm, cairo, cloog-ppl, cluster-glue, clutter-1.0, clutter-gesture, clutter-gtk, clutter-imcontext, cmake, cogl, colord, consolekit, corosync, cryptsetup, cups, curl, cvs, cyrus-sasl2, dbus-c++, dbus-glib, dbus-python, dbus, d-conf, devscripts, dia, directfb, djvulibre, dnsmasq, doxygen, dvipng, dwarves-dfsg, ecj, ecore, eet, enchant, esound, evas, evolution-data-server, evolution, exiv2, ffms2, fftw3, fftw, findlib, firebird2.5, flac, flex, fontconfig, freeglut, freetype, frei0r, gamin, gavl, gcj-4.7, gconf, gcr, gdb, gdk-pixbuf, geoclue, ghostscript, git, glib-networking, gmime, gnome-desktop3, gnome-disk-utility, gnome-keyring, gnome-menus, gnome-online-accounts, gnome-panel, gnome-vfs, gnupg, gobject-introspection, gpac, gpm, graphicsmagick, graphviz, gsettings-desktop-schemas, gst-plugins-base0.10, gstreamer0.10, gtk+2.0, gtk+3.0, gtkhtml4.0, gtkmm2.4, guile-1.8, gvfs, heartbeat, heimdal, highlight, iceweasel, icu, ijs, imagemagick, imlib2, iproute, iputils, jack-audio-connection-kit, jackd2, jasper, java-atk-wrapper, jbig2dec, jinja2, json-glib, kde4libs, keyutils, krb5, lapack, lcms2, lcms, libasyncns, libatasmart, libav, libbluray, libbonobo, libbonoboui, libcaca, libcanberra, libcap-ng, libchamplain, libconfig, libdaemon, libdbd-mysql-perl, libdbi, libdbusmenu-qt, libdc1394-22, libdmx, libdrm, libedit, libesmtp, libevent, libexif, libffado, libfontenc, libftdi, libgd2, libgdata, libgee, libglade2, libgnomecanvas, libgnomecups, libgnome-keyring, libgnomeprint, libgnomeprintui, libgnome, libgnomeui, libgphoto2, libgsf, libgtop2, libgusb, libgweather, libical, libice, libidl, libidn, libiec61883, libieee1284, libimobiledevice, libiodbc2, libiptcdata, liblqr, libmng, libnet, libnet-ssleay-perl, libnl3, libnl, libnotify, liboauth, libpcap, libplist, libprelude, libproxy, libpst, libquvi, libraw1394, librest, librsvg, libsamplerate, libsdl1.2, libsm, libsndfile, libsoup2.4, libtheora, libunique3, libusbx, libva, libvirt, libvisual, libvoikko, libvpx, libwmf, libwnck3, libx11, libxaw, libxcb, libxcomposite, libxcursor, libxdamage, libxdmcp, libxext, libxfixes, libxfont, libxinerama, libxi, libxkbfile, libxml-parser-perl, libxmu, libxpm, libxp, libxrandr, libxrender, libxres, libxslt, libxss, libxt, libxtst, libxvmc, libxv, libxxf86dga, libxxf86vm, linux-atm, linuxdoc-tools, lirc, llvm-2.9, lm-sensors, luatex, lvm2, lynx-cur, markupsafe, matplotlib, mesa, metacity, mpi-defaults, mscgen, mx, mysql-5.5, nas, nautilus, neon27, netcf, net-snmp, network-manager, ocaml, openais, opencv, openhpi, openipmi, open-iscsi, openjade1.3, openjade, openjdk-6, openjpeg, openldap, openmpi, opensp, openssh, openssl, orbit2, orc, pacemaker, pango1.0, pangomm, parted, patchutils, pcsc-lite, phonon-backend-gstreamer, phonon, php5, pkg-kde-tools, pmake, policykit-1, polkit-qt-1, poppler, postgresql-9.1, ppl, pulseaudio, py3cairo, pycairo, pygobject-2, pygobject, pygtk, python2.6, python2.7, python3.2, python-apt, python-imaging, python-numpy, python-qt4, python-stdlib-extensions, qca2, qdbm, qjson, qt4-x11, qt-assistant-compat, qtwebkit, qtzeitgeist, radvd, raptor2, raptor, rarian, rasqal, readline5, redhat-cluster, redland, resource-agents, rpm, rrdtool, ruby1.8, ruby1.9.1, samba, sane-backends, schroedinger, serf, shared-mime-info, sip4, soprano, source-highlight, startup-notification, strigi, stunnel4, subversion, swig2.0, swi-prolog, systemd, talloc, tdb, telepathy-glib, texlive-bin, tidy, tiff3, tk8.4, tk8.5, torque, totem-pl-parser, tracker, transfig, udev, udisks, upower, usbmuxd, usbutils, uw-imap, v4l-utils, vala-0.14, vala-0.16, w3m, webkit, wget, wxwidgets2.8, x11-utils, x11-xkb-utils, x11-xserver-utils, x264, xauth, xcb-util-image, xcb-util, xen, xfonts-utils, xft, xmlrpc-c, xmlstarlet, xmlto, xorg-server, xvidcore, yajl, yasm, zenity
Find source packages (top 100) that are only missing few build dependencies. Maybe these source package can be built without that dependency?
source package |
missing build dependencies |
src:acpica-unix |
flex |
src:atkmm1.6 |
libatk1.0-dev |
src:audiofile |
libasound2-dev |
src:augeas |
texlive-latex-base |
src:bc |
flex |
src:binfmt-support |
python |
src:blas |
texlive-latex-recommended |
src:boost-defaults |
libboost1.49-dev |
src:cairomm |
libcairo2-dev |
src:cloog-ppl |
libppl0.11-dev |
src:corosync |
groff |
src:dwarves-dfsg |
cmake |
src:fftw |
mpi-default-dev |
src:fftw3 |
mpi-default-dev |
src:flac |
doxygen |
src:flex |
autopoint |
src:fontconfig |
libfreetype6-dev |
src:freetds |
libgnutls-dev |
src:freetype |
libx11-dev |
src:fsplib |
scons |
src:gavl |
doxygen |
src:gpm |
texlive-base |
src:guile-1.8 |
flex |
src:icu |
doxygen |
src:iputils |
libssl-dev |
src:keyutils |
lsb-release |
src:lcms2 |
libtiff4-dev |
src:libasyncns |
doxygen |
src:libatasmart |
libudev-dev |
src:libconfig |
texlive-latex-base |
src:libdbd-mysql-perl |
libmysqlclient-dev |
src:libdbi |
jadetex |
src:libedit |
pmake |
src:libesmtp |
libssl-dev |
src:libevent |
libssl-dev |
src:libfontenc |
xfonts-utils |
src:libical |
cmake |
src:libidl |
flex |
src:libidn |
gcj-jdk |
src:libieee1284 |
python-all-dev |
src:libiodbc2 |
libgtk2.0-dev |
src:liblqr |
xsltproc |
src:libmng |
liblcms1-dev |
src:liboauth |
libcurl4-nss-dev |
src:libpcap |
flex |
src:libquvi |
libcurl4-nss-dev |
src:libraw1394 |
docbook-utils |
src:libssh2 |
libgcrypt11-dev |
src:libusbx |
doxygen |
src:libvisual |
autopoint |
src:libvoikko |
python |
src:libxfixes |
libx11-dev |
src:libxkbfile |
libx11-dev |
src:libxml-parser-perl |
libwww-perl |
src:libxrender |
libx11-dev |
src:linux-atm |
flex |
src:ocaml |
tk8.5-dev |
src:open-iscsi |
flex |
src:openipmi |
libsnmp-dev |
src:openjade |
libosp-dev |
src:openjade1.3 |
libosp-dev |
src:openjpeg |
libtiff4-dev |
src:openmpi |
libtorque2-dev |
src:openssl |
bc |
src:orc |
gtk-doc-tools |
src:parted |
libdevmapper-dev |
src:pkg-kde-tools |
cmake |
src:pmake |
groff |
src:ppl |
swi-prolog |
src:qt-assistant-compat |
libqt4-dev |
src:rarian |
xsltproc |
src:rasqal |
libraptor2-dev |
src:readline5 |
lsb-release |
src:rtmpdump |
libgnutls-dev |
src:schroedinger |
liborc-0.4-dev |
src:source-highlight |
libboost-regex-dev |
src:tidy |
xsltproc |
src:usbutils |
libusb-1.0-0-dev |
src:v4l-utils |
libqt4-dev |
src:xcb-util |
libxcb1-dev |
src:xmlrpc-c |
libcurl4-openssl-dev |
src:xmlstarlet |
libxslt1-dev |
src:xmlto |
xsltproc |
src:xvidcore |
yasm |
src:alsa-lib |
python-dev, doxygen |
src:apr |
python, doxygen |
src:apt |
xsltproc, libcurl4-gnutls-dev |
src:attica |
libqt4-dev, cmake |
src:autogen |
texlive, guile-1.8-dev |
src:automoc |
libqt4-dev, cmake |
src:blt |
tk8.5-dev, tk8.4-dev |
src:clutter-gesture |
libclutter-1.0-dev, gtk-doc-tools |
src:clutter-imcontext |
libclutter-1.0-dev, gtk-doc-tools |
src:dbus-glib |
libdbus-1-dev, gtk-doc-tools |
src:djvulibre |
libtiff4-dev, graphicsmagick-imagemagick-compat |
src:dnsmasq |
libidn11-dev, libdbus-1-dev |
src:eet |
libgnutls-dev, doxygen |
src:esound |
libaudiofile-dev, libasound2-dev |
src:firebird2.5 |
libicu-dev, libedit-dev |
src:gamin |
python-support, python-all-dev |
Find source packages (top 50) that build-depend on many others but are only needed by few binary packages which are in turn only needed buy a few source packages. Maybe the source packages that need those few binary packages can be built without them?
In other words: The source package in the first column draws in many binary packages as build dependencies (amount in the second column). But that source package must only be built because of few binary packages (third column) which in turn are only needed by few other source packages as build dependencies (fourth column). If the source packages in the fourth column could be built without the binary packages in the third column, then the source package of the first column would not be needed anymore and would therefor not draw in the amount of binary packages in the second column.
source package |
missing build dependencies |
source package is needed by |
those packages are build dependencies of |
src:evolution |
43 |
evolution-dev |
src:tracker |
src:gnome-panel |
28 |
libpanel-applet-4-dev |
src:tracker |
src:tracker |
26 |
libtracker-sparql-0.14-dev |
src:nautilus |
src:matplotlib |
25 |
python-matplotlib |
src:python-numpy |
src:iceweasel |
22 |
libmozjs-dev |
src:libproxy |
src:libvirt |
22 |
libvirt-dev |
src:redhat-cluster |
src:metacity |
21 |
metacity |
src:openjdk-6 |
src:pacemaker |
18 |
pacemaker-dev |
src:redhat-cluster |
src:imagemagick |
17 |
imagemagick |
src:iceweasel |
src:gpac |
15 |
libgpac-dev |
src:x264 |
src:subversion |
15 |
subversion, libsvn-perl |
src:git |
src:kde4libs |
27 |
kdelibs5-dev |
src:subversion, src:libproxy |
src:dia |
12 |
dia |
src:tracker |
src:libunique3 |
12 |
libunique-3.0-dev |
src:gnome-disk-utility |
src:gnome-keyring |
11 |
gnome-keyring |
src:libgnome-keyring |
src:heartbeat |
22 |
pacemaker-dev, libheartbeat2-dev |
src:pacemaker, src:redhat-cluster |
src:rrdtool |
11 |
librrd-dev |
src:lm-sensors |
src:upower |
11 |
libupower-glib-dev |
src:tracker |
src:opencv |
21 |
libopencv-dev, libhighgui-dev, libcvaux-dev, libcv-dev |
src:libav, src:frei0r |
src:libnl3 |
10 |
libnl-route-3-dev, libnl-genl-3-dev, libnl-3-dev |
src:network-manager |
src:python-qt4 |
20 |
python-qt4-dbus, python-qt4, pyqt4-dev-tools |
src:libffado, src:matplotlib |
src:telepathy-glib |
10 |
libtelepathy-glib-dev |
src:gnome-panel |
src:libwnck3 |
9 |
libwnck-3-dev |
src:gnome-panel |
src:redhat-cluster |
9 |
libdlm-dev, libcman-dev |
src:lvm2 |
src:x11-xserver-utils |
9 |
x11-xserver-utils |
src:libbonoboui |
src:elinks |
8 |
libdbus-glib-1-doc |
src:evolution-data-server |
src:lirc |
8 |
liblircclient-dev |
src:pulseaudio |
src:nautilus |
16 |
libnautilus-extension-dev |
src:tracker, src:gnome-disk-utility |
src:php5 |
24 |
php5-dev, php5-cli, php5-cgi |
src:swig2.0, src:libvpx, src:graphviz |
src:swi-prolog |
8 |
swi-prolog |
src:ppl |
src:totem-pl-parser |
8 |
libtotem-plparser-dev |
src:tracker |
src:vala-0.14 |
8 |
valac-0.14 |
src:telepathy-glib |
src:ecore |
15 |
libecore-dev, libdbus-c++-dev, libdbus-c++-bin |
src:libffado, src:dbus-c++ |
src:mx |
15 |
libmx-dev, evolution-dev |
src:tracker, src:evolution |
src:evolution-data-server |
21 |
libedataserverui-3.0-dev, libedataserver1.2-dev, libecal1.2-dev, libebook1.2-dev, libebackend1.2-dev, libcamel1.2-dev, evolution-dev, evolution-data-server-dev |
src:tracker, src:gnome-panel, src:evolution |
src:jack-audio-connection-kit |
7 |
libjack-dev |
src:pulseaudio |
src:libffado |
14 |
libffado-dev |
src:jackd2, src:jack-audio-connection-kit |
src:python-imaging |
7 |
python-imaging |
src:matplotlib |
src:evas |
12 |
libevas-dev, libecore-dev |
src:dbus-c++, src:ecore |
src:libchamplain |
12 |
libchamplain-gtk-0.12-dev, evolution-dev |
src:tracker, src:evolution |
src:libgnomeprintui |
6 |
libgnomeprintui2.2-dev |
src:wxwidgets2.8 |
src:linuxdoc-tools |
6 |
linuxdoc-tools |
src:iproute |
src:pygobject |
18 |
python3-gi, python-matplotlib, python-gobject, python-gi |
src:dbus-python, src:dbus, src:python-numpy |
src:openjdk-6 |
28 |
openjdk-6-jdk, default-jdk |
src:swig2.0, src:qdbm, src:java-atk-wrapper, src:swi-prolog, src:libbluray |
src:libgnomeui |
16 |
libgnomeui-dev |
src:iceweasel, src:graphviz, src:dia |
src:dbus-c++ |
5 |
libdbus-c++-dev, libdbus-c++-bin |
src:libffado |
src:ffms2 |
5 |
libffms2-dev |
src:x264 |
src:gtkmm2.4 |
5 |
libgtkmm-2.4-dev |
src:dbus-c++ |
src:llvm-2.9 |
5 |
llvm-2.9-dev |
src:mesa |
src:polkit-qt-1 |
5 |
libpolkit-qt-1-dev |
src:kde4libs |
Find binary packages (top 100) that are only needed by few source package but need many other source packages to be built to satisfy their runtime dependencies. Maybe the source package that needs this binary package can be built without it?
In other words: The binary package in the first column draws in many source packages (amount in the second column) because of its installation set. If the source package in the third column could be built without the binary package in the first column, then the binary package in the first column would not be needed anymore and would therefor not draw in the amount of source packages in the second column.
binary package |
needs source packages |
is build dependency of |
evolution-dev |
86 |
src:tracker |
libbonoboui2-dev |
76 |
src:libgnomeui |
metacity |
66 |
src:openjdk-6 |
zenity |
57 |
src:metacity |
libchamplain-gtk-0.12-dev |
55 |
src:evolution |
libmx-dev |
55 |
src:evolution |
libwebkitgtk-dev |
55 |
src:libproxy |
libcvaux-dev |
52 |
src:frei0r |
libhighgui-dev |
52 |
src:frei0r |
libopencv-dev |
52 |
src:libav |
libclutter-imcontext-0.1-dev |
50 |
src:mx |
libcluttergesture-dev |
50 |
src:mx |
libgtkhtml-4.0-dev |
50 |
src:evolution |
libgtkhtml-editor-4.0-dev |
50 |
src:evolution |
libpanel-applet-4-dev |
47 |
src:tracker |
libwnck-3-dev |
47 |
src:gnome-panel |
libcanberra-gtk3-dev |
46 |
src:evolution |
libunique-3.0-dev |
45 |
src:gnome-disk-utility |
python-matplotlib |
45 |
src:python-numpy |
gnome-keyring |
44 |
src:libgnome-keyring |
libgcr-3-dev |
44 |
src:gnome-keyring |
python-gtk2-dev |
44 |
src:matplotlib |
dia |
43 |
src:tracker |
libavahi-ui-gtk3-dev |
43 |
src:gnome-disk-utility |
libgnomeprintui2.2-dev |
42 |
src:wxwidgets2.8 |
mauve |
42 |
src:openjdk-6 |
libecore-dev |
41 |
src:dbus-c++ |
libgtkmm-2.4-dev |
41 |
src:dbus-c++ |
libcanberra-gtk-dev |
40 |
src:metacity |
python-wxgtk2.8 |
40 |
src:matplotlib |
libwxgtk2.8-dev |
38 |
src:gpac |
kdelibs5-dev |
73 |
src:subversion, src:libproxy |
dvipng |
36 |
src:matplotlib |
libiodbc2-dev |
35 |
src:soprano |
libgoa-1.0-dev |
60 |
src:evolution-data-server, src:evolution |
libebook1.2-dev |
29 |
src:evolution |
pacemaker-dev |
29 |
src:redhat-cluster |
libwebkitgtk-3.0-dev |
57 |
src:zenity, src:gnome-online-accounts |
pyqt4-dev-tools |
28 |
src:libffado |
x11-utils |
27 |
src:java-atk-wrapper |
libcogl-pango-dev |
26 |
src:clutter-1.0 |
libcv-dev |
52 |
src:libav, src:frei0r |
libedataserverui-3.0-dev |
52 |
src:gnome-panel, src:evolution |
libphononexperimental-dev |
26 |
src:phonon-backend-gstreamer |
libgnomeui-dev |
77 |
src:iceweasel, src:graphviz, src:dia |
libclutter-gtk-1.0-dev |
50 |
src:libchamplain, src:evolution |
libgnomeprint2.2-dev |
25 |
src:libgnomeprintui |
gir1.2-clutter-1.0 |
47 |
src:mx, src:libchamplain |
libtotem-plparser-dev |
23 |
src:tracker |
openjdk-6-jdk |
46 |
src:swi-prolog, src:libbluray |
libcogl-dev |
22 |
src:clutter-1.0 |
libnautilus-extension-dev |
44 |
src:tracker, src:gnome-disk-utility |
gcj-4.7-jdk |
42 |
src:openjdk-6, src:ecj |
latex-beamer |
21 |
src:transfig |
libevas-dev |
21 |
src:ecore |
libpolkit-qt-1-dev |
21 |
src:kde4libs |
texlive-font-utils |
21 |
src:transfig |
texlive-generic-recommended |
21 |
src:libgcrypt11 |
texlive-lang-cyrillic |
21 |
src:dia |
texlive-lang-german |
21 |
src:transfig |
librsvg2-bin |
41 |
src:imagemagick, src:iceweasel |
python-gtk2 |
41 |
src:dia, src:avahi |
libdbusmenu-qt-dev |
20 |
src:kde4libs |
libqca2-dev |
20 |
src:kde4libs |
libsoprano-dev |
20 |
src:kde4libs |
texlive-binaries |
20 |
src:linuxdoc-tools |
librdf0-dev |
19 |
src:soprano |
libgail-dev |
37 |
src:webkit, src:libgnomecanvas |
libnm-glib-dev |
18 |
src:geoclue |
texlive-fonts-extra |
18 |
src:opencv |
gir1.2-gtk-2.0 |
35 |
src:webkit, src:mx |
imagemagick |
17 |
src:iceweasel |
libgweather-3-dev |
51 |
src:gnome-panel, src:evolution-data-server, src:evolution |
libpangomm-1.4-dev |
17 |
src:gtkmm2.4 |
libpoppler-glib-dev |
17 |
src:tracker |
librrd-dev |
17 |
src:lm-sensors |
libvirt-dev |
17 |
src:redhat-cluster |
python-tk |
17 |
src:matplotlib |
python-tk-dbg |
17 |
src:python-imaging |
swi-prolog |
17 |
src:ppl |
x11-xserver-utils |
17 |
src:libbonoboui |
libgdata-dev |
31 |
src:evolution-data-server, src:evolution |
default-jdk |
46 |
src:swig2.0, src:qdbm, src:java-atk-wrapper |
gnome-common |
15 |
src:gnome-online-accounts |
libgnome-desktop-3-dev |
45 |
src:nautilus, src:gnome-panel, src:evolution |
libgnome2-dev |
60 |
src:libgnomeui, src:libbonoboui, src:iceweasel, src:dia |
librasqal3-dev |
15 |
src:redland |
libstreamanalyzer-dev |
15 |
src:kde4libs |
libcamel1.2-dev |
29 |
src:tracker, src:evolution |
apache2-prefork-dev |
14 |
src:php5 |
apache2-threaded-dev |
14 |
src:subversion |
libecal1.2-dev |
28 |
src:gnome-panel, src:evolution |
libffms2-dev |
14 |
src:x264 |
librest-dev |
14 |
src:gnome-online-accounts |
ocaml |
14 |
src:findlib |
python-qt4 |
28 |
src:matplotlib, src:libffado |
gnome-icon-theme |
41 |
src:pygtk, src:gtkhtml4.0, src:evolution |
libedataserver1.2-dev |
27 |
src:gnome-panel, src:evolution |
gir1.2-soup-2.4 |
13 |
src:webkit |
libgnomecanvas2-dev |
39 |
src:libgnomeui, src:libgnomeprintui, src:libbonoboui |
Break small dependency cycles
Big dependency situations cannot be resolved without the smaller cycles being resolved. Dependency cycles are always of even length as source vertices depend only on binary vertices and binary vertices depend only on source vertices.
Cycles with length 2:
src:atlas -> libblas-test src:atlas -> liblapack-pic src:avahi -> libgtk2.0-dev src:avahi -> libgtk-3-dev src:avahi -> python-gtk2 src:colord -> libgtk-3-dev src:cups -> ghostscript src:cyrus-sasl2 -> heimdal-multidev src:cyrus-sasl2 -> libldap2-dev src:cyrus-sasl2 -> libpq-dev src:dbus -> libdbus-glib-1-dev src:dbus -> python-dbus src:ecj -> gcj-4.7-jdk src:ecj -> gcj-jdk src:gconf -> libgtk-3-dev src:gnutls26 -> gtk-doc-tools src:ijs -> ghostscript src:java-atk-wrapper -> default-jdk src:libav -> libcv-dev src:libav -> libopencv-dev src:libfontenc -> xfonts-utils src:libproxy -> libwebkitgtk-dev src:libtasn1-3 -> gtk-doc-tools src:openldap -> heimdal-dev src:opensp -> openjade1.3 src:phonon-backend-gstreamer -> libphonon-dev src:python2.7 -> gdb src:python2.7 -> lsb-release src:python2.7 -> python src:python-numpy -> python-matplotlib src:vala-0.16 -> valac src:x264 -> libavformat-dev src:x264 -> libffms2-dev
Cycles with length 4:
src:atlas -> ghostscript -> src:avahi -> python-gtk2 src:avahi -> libgtk2.0-dev -> src:cups -> ghostscript src:avahi -> libgtk2.0-dev -> src:cups -> libavahi-client-dev src:avahi -> libgtk2.0-dev -> src:cups -> libavahi-common-dev src:avahi -> libgtk2.0-dev -> src:cups -> libavahi-compat-libdnssd-dev src:avahi -> libgtk2.0-dev -> src:gtk+2.0 -> libcups2-dev src:avahi -> libgtk-3-dev -> src:colord -> libsane-dev src:avahi -> libgtk-3-dev -> src:cups -> ghostscript src:avahi -> libgtk-3-dev -> src:cups -> libavahi-client-dev src:avahi -> libgtk-3-dev -> src:cups -> libavahi-common-dev src:avahi -> libgtk-3-dev -> src:cups -> libavahi-compat-libdnssd-dev src:avahi -> libgtk-3-dev -> src:gtk+3.0 -> libcups2-dev src:avahi -> libqt4-dev -> src:qt4-x11 -> libcups2-dev src:avahi -> libqt4-dev -> src:qt4-x11 -> libgtk2.0-dev src:avahi -> python-gtk2 -> src:cups -> ghostscript src:avahi -> python-gtk2 -> src:cups -> libavahi-client-dev src:avahi -> python-gtk2 -> src:cups -> libavahi-common-dev src:avahi -> python-gtk2 -> src:cups -> libavahi-compat-libdnssd-dev src:avahi -> python-gtk2 -> src:gtk+2.0 -> libcups2-dev src:avahi -> python-gtk2 -> src:pygtk -> gnome-icon-theme src:avahi -> python-gtk2 -> src:pygtk -> libglade2-dev src:avahi -> python-gtk2 -> src:pygtk -> libgtk2.0-dev src:avahi -> python-gtk2 -> src:python-numpy -> python-matplotlib src:colord -> libgtk-3-dev -> src:gtk+3.0 -> libcolord-dev src:cups -> ghostscript -> src:ghostscript -> libcups2-dev src:cups -> ghostscript -> src:ghostscript -> libcupsimage2-dev src:cups -> ghostscript -> src:libidn -> gcj-jdk src:cups -> libijs-dev -> src:ijs -> ghostscript src:cups -> poppler-utils -> src:poppler -> libgtk2.0-dev src:curl -> libgnutls-dev -> src:gnutls26 -> gtk-doc-tools src:curl -> libgnutls-dev -> src:libtasn1-3 -> gtk-doc-tools src:curl -> librtmp-dev -> src:gnutls26 -> gtk-doc-tools src:curl -> librtmp-dev -> src:libtasn1-3 -> gtk-doc-tools src:cyrus-sasl2 -> heimdal-multidev -> src:gnutls26 -> gtk-doc-tools src:cyrus-sasl2 -> heimdal-multidev -> src:heimdal -> libldap2-dev src:cyrus-sasl2 -> heimdal-multidev -> src:libtasn1-3 -> gtk-doc-tools src:cyrus-sasl2 -> heimdal-multidev -> src:openldap -> heimdal-dev src:cyrus-sasl2 -> heimdal-multidev -> src:openldap -> libsasl2-dev src:cyrus-sasl2 -> krb5-multidev -> src:krb5 -> libldap2-dev src:cyrus-sasl2 -> libldap2-dev -> src:gnutls26 -> gtk-doc-tools src:cyrus-sasl2 -> libldap2-dev -> src:libtasn1-3 -> gtk-doc-tools src:cyrus-sasl2 -> libldap2-dev -> src:openldap -> heimdal-dev src:cyrus-sasl2 -> libldap2-dev -> src:openldap -> libsasl2-dev src:cyrus-sasl2 -> libmysqlclient-dev -> src:mysql-5.5 -> cmake src:cyrus-sasl2 -> libpq-dev -> src:gnutls26 -> gtk-doc-tools src:cyrus-sasl2 -> libpq-dev -> src:krb5 -> libldap2-dev src:cyrus-sasl2 -> libpq-dev -> src:libtasn1-3 -> gtk-doc-tools src:cyrus-sasl2 -> libpq-dev -> src:openldap -> heimdal-dev src:cyrus-sasl2 -> libpq-dev -> src:openldap -> libsasl2-dev src:cyrus-sasl2 -> libpq-dev -> src:postgresql-9.1 -> libldap2-dev src:dbus -> doxygen -> src:doxygen -> libqt4-dev src:dbus -> libdbus-glib-1-dev -> src:dbus-glib -> libdbus-1-dev src:dbus -> libsystemd-daemon-dev -> src:systemd -> libdbus-1-dev src:dbus -> libsystemd-daemon-dev -> src:systemd -> libdbus-glib-1-dev src:dbus -> libsystemd-daemon-dev -> src:systemd -> libgtk2.0-dev src:dbus -> libsystemd-login-dev -> src:systemd -> libdbus-1-dev src:dbus -> libsystemd-login-dev -> src:systemd -> libdbus-glib-1-dev src:dbus -> libsystemd-login-dev -> src:systemd -> libgtk2.0-dev src:dbus -> python-dbus -> src:dbus-glib -> libdbus-1-dev src:dbus -> python-dbus -> src:dbus-python -> libdbus-1-dev src:dbus -> python-dbus -> src:dbus-python -> libdbus-glib-1-dev src:dbus -> python-gobject -> src:pygobject-2 -> dbus-x11 src:dbus -> python-gobject -> src:pygobject -> dbus-x11 src:dbus -> python-gobject -> src:pygobject -> gir1.2-gtk-3.0 src:ffms2 -> libavcodec-dev -> src:x264 -> libffms2-dev src:ffms2 -> libavformat-dev -> src:x264 -> libffms2-dev src:frei0r -> libcvaux-dev -> src:libav -> frei0r-plugins-dev src:frei0r -> libcv-dev -> src:libav -> frei0r-plugins-dev src:frei0r -> libhighgui-dev -> src:libav -> frei0r-plugins-dev src:gdb -> gcj-jdk -> src:python2.7 -> gdb src:gdb -> lsb-release -> src:python2.7 -> gdb src:gdb -> python-dev -> src:python2.7 -> gdb src:geoclue -> libsoup-gnome2.4-dev -> src:libproxy -> libwebkitgtk-dev src:ghostscript -> libijs-dev -> src:ijs -> ghostscript src:git -> libcurl4-gnutls-dev -> src:gnutls26 -> gtk-doc-tools src:git -> libcurl4-gnutls-dev -> src:libtasn1-3 -> gtk-doc-tools src:git -> libsvn-perl -> src:gnutls26 -> gtk-doc-tools src:git -> libsvn-perl -> src:libtasn1-3 -> gtk-doc-tools src:git -> subversion -> src:gnutls26 -> gtk-doc-tools src:git -> subversion -> src:libtasn1-3 -> gtk-doc-tools src:glib-networking -> libproxy-dev -> src:libproxy -> libwebkitgtk-dev src:gnutls26 -> gtk-doc-tools -> src:krb5 -> libldap2-dev src:gnutls26 -> gtk-doc-tools -> src:libidn -> gcj-jdk src:gnutls26 -> gtk-doc-tools -> src:openldap -> heimdal-dev src:gnutls26 -> gtk-doc-tools -> src:openldap -> libgnutls-dev src:gnutls26 -> gtk-doc-tools -> src:rtmpdump -> libgnutls-dev src:gnutls26 -> libtasn1-3-dev -> src:libtasn1-3 -> gtk-doc-tools src:gpac -> libavcodec-dev -> src:x264 -> libgpac-dev src:gpac -> libavformat-dev -> src:x264 -> libgpac-dev src:gpm -> texlive-base -> src:libice -> w3m src:gpm -> texlive-base -> src:libsm -> w3m src:gpm -> texlive-base -> src:libx11 -> w3m src:gpm -> texlive-base -> src:libxaw -> w3m src:gpm -> texlive-base -> src:libxdmcp -> w3m src:gpm -> texlive-base -> src:libxext -> w3m src:gpm -> texlive-base -> src:libxfont -> w3m src:gpm -> texlive-base -> src:libxmu -> w3m src:heimdal -> libldap2-dev -> src:openldap -> heimdal-dev src:krb5 -> libldap2-dev -> src:libtasn1-3 -> gtk-doc-tools src:libav -> libcv-dev -> src:opencv -> libavcodec-dev src:libav -> libcv-dev -> src:opencv -> libavformat-dev src:libav -> libcv-dev -> src:opencv -> libswscale-dev src:libav -> libcv-dev -> src:x264 -> libavformat-dev src:libav -> libcv-dev -> src:x264 -> libffms2-dev src:libav -> libopencv-dev -> src:opencv -> libavcodec-dev src:libav -> libopencv-dev -> src:opencv -> libavformat-dev src:libav -> libopencv-dev -> src:opencv -> libswscale-dev src:libav -> libopencv-dev -> src:x264 -> libavformat-dev src:libav -> libopencv-dev -> src:x264 -> libffms2-dev src:libav -> libx264-dev -> src:x264 -> libavformat-dev src:libav -> libx264-dev -> src:x264 -> libffms2-dev src:libfontenc -> xfonts-utils -> src:libxfont -> libfontenc-dev src:libfontenc -> xfonts-utils -> src:xfonts-utils -> libfontenc-dev src:libfontenc -> xfonts-utils -> src:xfonts-utils -> libxfont-dev src:libgcrypt11 -> texlive-generic-recommended -> src:libice -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libsm -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libx11 -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libxaw -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libxcb -> xsltproc src:libgcrypt11 -> texlive-generic-recommended -> src:libxdmcp -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libxext -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libxext -> xsltproc src:libgcrypt11 -> texlive-generic-recommended -> src:libxfont -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libxmu -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:libxt -> xmlto src:libgcrypt11 -> texlive-generic-recommended -> src:poppler -> gtk-doc-tools src:libgcrypt11 -> texlive-generic-recommended -> src:poppler -> libgtk2.0-dev src:libgcrypt11 -> texlive-latex-base -> src:libice -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libsm -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libx11 -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libxaw -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libxcb -> xsltproc src:libgcrypt11 -> texlive-latex-base -> src:libxdmcp -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libxext -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libxext -> xsltproc src:libgcrypt11 -> texlive-latex-base -> src:libxfont -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libxmu -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:libxt -> xmlto src:libgcrypt11 -> texlive-latex-base -> src:poppler -> gtk-doc-tools src:libgcrypt11 -> texlive-latex-base -> src:poppler -> libgtk2.0-dev src:libidn -> gcj-jdk -> src:libtasn1-3 -> gtk-doc-tools src:libidn -> gcj-jdk -> src:pango1.0 -> gtk-doc-tools src:libproxy -> libwebkitgtk-dev -> src:libsoup2.4 -> glib-networking src:libproxy -> libwebkitgtk-dev -> src:webkit -> gir1.2-soup-2.4 src:libproxy -> libwebkitgtk-dev -> src:webkit -> libsoup2.4-dev src:libtasn1-3 -> gtk-doc-tools -> src:openldap -> heimdal-dev src:libtasn1-3 -> gtk-doc-tools -> src:openldap -> libgnutls-dev src:libtasn1-3 -> gtk-doc-tools -> src:rtmpdump -> libgnutls-dev src:libtasn1-3 -> texlive-latex-base -> src:poppler -> gtk-doc-tools src:libtasn1-3 -> texlive-latex-base -> src:poppler -> libgtk2.0-dev src:libxcb -> python -> src:python2.7 -> blt-dev src:libxcb -> python -> src:python2.7 -> tk8.5-dev src:libxcb -> python -> src:python2.7 -> xauth src:libxcb -> python -> src:python2.7 -> xvfb src:libxcb -> python-xcbgen -> src:python2.7 -> blt-dev src:libxcb -> python-xcbgen -> src:python2.7 -> tk8.5-dev src:libxcb -> python-xcbgen -> src:python2.7 -> xauth src:libxcb -> python-xcbgen -> src:python2.7 -> xvfb src:libxdmcp -> w3m -> src:w3m -> libimlib2-dev src:libxext -> w3m -> src:w3m -> libimlib2-dev src:lvm2 -> libcman-dev -> src:redhat-cluster -> libvirt-dev src:lvm2 -> libdlm-dev -> src:redhat-cluster -> libvirt-dev src:matplotlib -> python-gtk2-dev -> src:python-numpy -> python-matplotlib src:matplotlib -> python-numpy-dbg -> src:python-numpy -> python-matplotlib src:matplotlib -> python-numpy -> src:python-numpy -> python-matplotlib src:nautilus -> libtracker-sparql-0.14-dev -> src:tracker -> libnautilus-extension-dev src:openjade1.3 -> libosp-dev -> src:opensp -> openjade1.3 src:opensp -> jadetex -> src:poppler -> gtk-doc-tools src:opensp -> poppler-utils -> src:poppler -> gtk-doc-tools src:poppler -> libgtk2.0-dev -> src:shared-mime-info -> docbook-utils src:python2.7 -> xvfb -> src:xorg-server -> lsb-release src:systemd -> valac -> src:vala-0.16 -> dbus-x11
There would be 958 cycles of length 6, 5566 cycles of length 8 and 37839 cycles of length 10. Therfor they are all not listed here.
Find better heuristics
Except for the "weak" build dependencies enumerated above there is no other way for the algorithm to know which build dependencies can easily be dropped. It is up to a human to find source packages that have build dependencies that can be dropped.
Dont hesitate to suggest more methods to solve a build dependency situation. What is your strategy to solve dependency cycles? What are you looking for?