Differences between revisions 8 and 9
Revision 8 as of 2012-08-03 23:15:41
Size: 41095
Editor: josch
Comment: add notice about bug#683786
Revision 9 as of 2012-08-04 07:43:15
Size: 43536
Editor: josch
Comment: restructure crossbuilding section and add more info
Deletions are marked like this. Additions are marked like this.
Line 43: Line 43:
Many packages would cross-build just fine if their cross-dependencies could be resolved using multiarch.

 * make lib*-dev packages Multi-Arch: same if applicable
 * mark dependencies on Multi-Arch: allowed packages as :any if applicable
 * mark dependencies as :native if applicable
 * mark build tools as Multi-Arch: allowed if applicable (example gettext: [[http://bugs.debian.org/683751|bug#683751]])

Test with:
Many packages would cross-build just fine if their cross-build-dependencies could be resolved using multiarch.

Test cross-build-dependency resolution with:
Line 61: Line 56:

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: [[http://bugs.debian.org/683751|bug#683751]]

== 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)

This page serves as a resource for Debian maintainers and developers to identify how they can help to improve the situation of bootstrapping Debian.

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.

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)

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?