On Fri, Jun 22, 2012 at 11:37:06AM +0100, Cristian Morales Vega wrote:
On 18 June 2012 20:38, Stephan Kulow
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 | +------DDDD-----EEEE
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. However coolo operates factory in a "source changed" + "manual" rebuild strategy, mostly for the reason to keep the RPM count you need to download for factory updates small. Ciao, Marcus -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org