[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: How to resolve circular build dependency?



Hi,

Quoting Ole Streicher (2014-09-13 15:20:36)
> Am 13.09.2014 um 15:09 schrieb Mattia Rizzolo:
> > On Sep 13, 2014 3:01 PM, "Ole Streicher" <debian-devel@liska.ath.cx> wrote:
> >> - the "casacore" needs the "casacore-data" package for unit tests
> >> - the "casacore-data" needs "casacore" to be build from the source data.
> > 
> > What's about upload casacore with the tests disabled, then upload
> > casacore-data, then re-upload casacore with the tests re-enabled?
> 
> Still, the packages would have a circular build dependency, which I think should be avoided, right?

It is indeed nice to bootstrappers if circular build dependencies are avoided.
This is especially the case if a package has many reverse (build-)dependencies.

But there are two bootstrapping scenarios to consider. One is the one where
somebody wants to bootstrap a new architecture. The casacore-data binary
package sounds as if it is Architecture:all? In that case you should not worry
about circular build dependencies during bootstrapping for a new architecture
because the bootstrapper can just take an existing casacore-data binary package
to build first src:casacore and then src:casacore-data.

The other scenario is bootstrapping from nothing just for the sake of checking
bootstrappability of the archive including bootstrapping Architecture:all
packages. To be nice to bootstrappers you have several options:

 1. split the source package as Alexander Wolf suggested so that the unit tests
    are in their own package and cascore can be built without cascore-data. You
    could still run tests by using the cascore-unit-tests package as a
    autopkgtest
 2. join src:casacore-data and src:casacore into a single source package and
    handle bootstrapping of both via debian/rules
 3. make it such that src:casacore can be cross compiled from an existing
    architecture so that src:casacore-data can be compiled natively after which
    src:casacore can be compiled natively
 4. use build profiles once Jessie is released. Once Jessie is released, you
    can 'tag' the build dependency of src:casacore on casacore-data with
    <!nocheck> and then the build dependency would not be required when being
    built with the nocheck profile active

Options 1-3 might make maintaining src:casacore and src:casacore-data very
difficult, so that together with the fact that neither is currently in Debian
and thus there are no reverse (build-)dependencies on it, you might want to
wait until Jessie is released and then use build profiles. Until you can use
build profiles, just write down in README.Source of both packages that this
build dependency cycle exists and how to best break it manually.

cheers, josch


Reply to: