Mailinglist Archive: opensuse-factory (1134 mails)

< Previous Next >
Re: [opensuse-factory] Build system solutions (was Re: Calling for a new openSUSE development model)
On 22 June 2012 12:21, Marcus Meissner <meissner@xxxxxxx> wrote:
On Fri, Jun 22, 2012 at 11:37:06AM +0100, Cristian Morales Vega wrote:
On 18 June 2012 20:38, Stephan Kulow <coolo@xxxxxxx> wrote:
Am 18.06.2012 21:28, schrieb Stefan Seyfried:
Am 18.06.2012 17:21, schrieb Greg KH:

Tumbleweed this weekend, update e2fsprogs and watch your whole distro
rebuild, that really shouldn't happen...)

One possible fix would be to only rebuild down the dependency chain, if
the binary rpms changed.

Example dependency list

  AAAA +------BBBB-----CCCC

You update AAAA -> rebuild of BBBB and DDDD gets triggered. Since BBBB
only uses a part of AAAA that did not change, BBBB produces identical
packages which build-compare catches -> CCCC (and everything
"downstream") is *not* rebuilt.
DDDD uses one of the new features of AAAA and produces different binary
RPMs => EEEE will be rebuilt.

I think right now everything is always rebuilt.

No, it's not. But if BBBB requires (subpackages of) AAAA for runtime ,
then a changed AAAA will also affect the rebuilding of CCCC, no matter
if BBBB is changed or not. It's pretty much insane, but you avoid the
manual rebuilds :)

I am correct in thinking rebuild="direct" is not the default just
because people may have forgotten some BuildRequires that are actually
added to the build environment through dependencies?
If so, couldn't rebuild="transitive" made more clever and only follow
requires through packages with "-devel" in it's name?

If my package "BuildRequires: libA-devel" and libA-devel "Requires:
libB-devel", a change in "libB" should trigger a rebuild of my
package. But if libA-devel requires libA, and libA requires libC, a
change in libC shouldn't trigger a rebuild of my package.

A transitive closure build is what OBS does by default.

But that transitive closure wouldn't be smaller (and equally safe
without manual rebuilds) if the binary relation would be "packages are
connected through a Requires: <anything>-devel" instead of "packages
are connected through a Requires: <anything>"?

Disclaimer: I just looked for "transitive closure" in the Wikipedia.
My original comment stays as main reference ;-)
To unsubscribe, e-mail: opensuse-factory+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-factory+owner@xxxxxxxxxxxx

< Previous Next >
This Thread