On 18 June 2012 20:38, Stephan Kulow
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. I'm missing something? It would not save all the unneeded triggers but should continue being 99.99% safe, and work even for interpreted languages (I don't really know a lot about python packaging, but I see python-gstreamer-0_10 vs python-gstreamer-0_10-devel packages). -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org