Self Cycles in Debian Sid as of 2013-01-01
List of self cycles during a bootstrapping of Debian. This list takes into account an existing minimal build system containing essential:yes, build-essential and debhelper. It takes into account architecture:all and otherwise available packages during a bootstrapping scenario. Multiarch, package provides, dependency resolution and strong dependency generation are natively handled by dose3.
These lists were generated for amd64 and therefor miss out on binary packages which exist on other architectures. Most notably they do not contain packages which are i386 only but still in a self-cycle like cmucl, mit-scheme or oaklisp. But since existing architectures are not relevant for bootstrapping this is not an issue.
The first list shows the class of self cycles where a source package build depends on a binary package it builds itself.
source packackage |
strongly depends on |
because of the source package build depending on |
alex |
alex |
alex |
fpc |
fp-utils-2.6.0, fp-units-rtl-2.6.0, fp-units-fcl-2.6.0, fp-units-base-2.6.0, fp-compiler-2.6.0 |
fp-utils-2.6.0, fp-utils, fp-units-fcl-2.6.0, fp-units-fcl, fp-units-base-2.6.0, fp-units-base, fp-compiler-2.6.0, fp-compiler |
gforth |
gforth-lib, gforth |
gforth |
ghc |
ghc |
ghc |
happy |
happy |
happy |
mlton |
mlton-tools, mlton-runtime-x86-64-linux-gnu, mlton-compiler |
mlton |
sbcl |
sbcl |
sbcl |
The second list shows the class of self cycles where a source package A build depends on a binary package B which needs another binary package C to be installable. But C is built by A and therefor leads to a cycle. The first column contains the source package A. The second column contains the binary package(s) C. The third column shown the binary package(s) B on which A directly depends. There are three ways to break the cycles:
- allow to build the source package in the first column without the dependency on the binary package(s) in the third column through build profiles
- cross compile either the source package in the first column or all source packages that build the binary packages in the installation set of the binary package(s) in the third column
- change some binary dependencies in the installation set of the binary package(s) in the third columns (most unlikely to be possible or disirable)
If you wonder how the source package in the first column ends up depending on the binary package it builds in the second column through its dependencies in the third column, consider using apt-rdepends on the binary packages in the third column.
source packackage |
strongly depends on |
because of the source package build depending on |
avahi |
libavahi-common3, libavahi-common-data, libavahi-client3 |
python-gtk2, libgtk2.0-dev, libgtk-3-dev |
colord |
libcolord1 |
libgtk-3-dev |
cups |
libcupsimage2, libcups2 |
ghostscript |
cyrus-sasl2 |
libsasl2-2 |
libpq-dev, libldap2-dev, heimdal-multidev |
dbus |
libdbus-1-dev, libdbus-1-3 |
python-dbus, libdbus-glib-1-dev |
ecj |
libecj-java-gcj, ecj-gcj, ecj |
gcj-jdk, gcj-4.7-jdk |
gnat-4.6 |
libgnatvsn4.6, libgnatprj4.6, libgnat-4.6, gnat-4.6-base, gnat-4.6 |
gnat |
gnutls26 |
libgnutls26 |
gtk-doc-tools |
hscolour |
hscolour |
haskell-devscripts |
ijs |
libijs-0.35 |
ghostscript, docbook-utils |
java-atk-wrapper |
libatk-wrapper-java-jni |
default-jdk |
libav |
libswscale2, libswscale-dev, libavutil51, libavutil-dev, libavformat53, libavformat-dev, libavcodec-extra-53, libavcodec-dev |
libopencv-dev, libcv-dev |
libfontenc |
libfontenc1 |
xfonts-utils |
libgcrypt11 |
libgcrypt11 |
texlive-latex-base, texlive-generic-recommended |
libproxy |
libproxy0 |
libwebkitgtk-dev |
libtasn1-3 |
libtasn1-3 |
texlive-latex-base, gtk-doc-tools |
openldap |
libldap-2.4-2 |
heimdal-dev |
opensp |
libosp5 |
openjade1.3, openjade |
pkg-config |
pkg-config |
libglib2.0-dev |
python2.7 |
python2.7-minimal, python2.7, libpython2.7 |
python, lsb-release, gdb |
python-numpy |
python-numpy |
python-matplotlib |
x264 |
libx264-123 |
libffms2-dev, libavformat-dev |
The following table shows build dependency cycles which are not strong. The dependency cycles can be broken by choosing a different installation set. Unfortunately, during bootstrapping, this might not always be possible as the alternative package selection might not be available at the time.
source package |
in a not-strong cycle with |
d-conf |
libdconf0, dconf-service, dconf-gsettings-backend |
original-awk |
original-awk |
phonon-backend-gstreamer |
phonon-backend-gstreamer |
vala-0.16 |
valac-0.16, libvala-0.16-0 |