[opensuse-factory] Build cycles versus rebuild="local"

Hallo all, as a Java package maintainer I did a lot of work to avoid bootstrapping issues (aka build cycles) in openSUSE. That ends in a situation we have been never able to submit maven into build service, because it creates a **huge** list of dependencies, so with rebuild="transitive" it will kill any cluster we will find a budget for ;-) However with a newly introduced Scheduling Strategies feature, collo have used rebuild="local" for Factory, so now we have the cycles in Factory [2]. But probably because of the changed scheduling strategy, coolo did not blame me as in a past for cycles I've introduced in a past. But maybe both are tiny comparing to acl->zlib. Did we changed the approach here? Especially Java packages, where cycles exists in upstream and no one other takes a care it will be a huge step forward. And in this case it even do not block the bootstrapping to an another architecture, as packages are mostly noarch, so can be used everywhere. BTW: for Java packages we can be even more relaxed and use rebuild="manual" and did it only on major jdk change as we did yet jdk6->jdk7. [1] http://enstage.opensuse.org/openSUSE:Build_Service_Concept_build_scheduling_... [2] https://build.opensuse.org/project/repository_state?project=openSUSE%3AFacto... Regards Michal Vyskocil

On 27.06.2012 10:01, Michal Vyskocil wrote:
Hallo all,
as a Java package maintainer I did a lot of work to avoid bootstrapping issues (aka build cycles) in openSUSE. That ends in a situation we have been never able to submit maven into build service, because it creates a **huge** list of dependencies, so with rebuild="transitive" it will kill any cluster we will find a budget for ;-)
However with a newly introduced Scheduling Strategies feature, collo have used rebuild="local" for Factory, so now we have the cycles in Factory [2]. But probably because of the changed scheduling strategy, coolo did not blame me as in a past for cycles I've introduced in a past. But maybe both are tiny comparing to acl->zlib.
Did we changed the approach here? Especially Java packages, where cycles exists in upstream and no one other takes a care it will be a huge step forward. And in this case it even do not block the bootstrapping to an another architecture, as packages are mostly noarch, so can be used everywhere.
BTW: for Java packages we can be even more relaxed and use rebuild="manual" and did it only on major jdk change as we did yet jdk6->jdk7.
I do care for cycles as they are a problem. Not for factory, but for staging project(s). But I basically gave up on java, that's true. I spent so many hours trying to find a solution for it, that it's just not worth it ;( But unless we leave java stuff out of factory, we have to find a way to build it in projects with transitive rebuilds. Greetings, Stephan -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org

On Wed, 27 Jun 2012, Stephan Kulow wrote:
On 27.06.2012 10:01, Michal Vyskocil wrote:
Hallo all,
as a Java package maintainer I did a lot of work to avoid bootstrapping issues (aka build cycles) in openSUSE. That ends in a situation we have been never able to submit maven into build service, because it creates a **huge** list of dependencies, so with rebuild="transitive" it will kill any cluster we will find a budget for ;-)
However with a newly introduced Scheduling Strategies feature, collo have used rebuild="local" for Factory, so now we have the cycles in Factory [2]. But probably because of the changed scheduling strategy, coolo did not blame me as in a past for cycles I've introduced in a past. But maybe both are tiny comparing to acl->zlib.
Did we changed the approach here? Especially Java packages, where cycles exists in upstream and no one other takes a care it will be a huge step forward. And in this case it even do not block the bootstrapping to an another architecture, as packages are mostly noarch, so can be used everywhere.
BTW: for Java packages we can be even more relaxed and use rebuild="manual" and did it only on major jdk change as we did yet jdk6->jdk7.
I do care for cycles as they are a problem. Not for factory, but for staging project(s). But I basically gave up on java, that's true. I spent so many hours trying to find a solution for it, that it's just not worth it ;(
But unless we leave java stuff out of factory, we have to find a way to build it in projects with transitive rebuilds.
Well - we do have another rather big cycle already - you can view it inside Base:build. It's the cycle that contains GCC. Obviously there is some existing magic in obs or the project configs that ignore selected edges in the build dependency graph ... why not add appropriate java-cycle-edges here? (oh yes, Base:build uses rebuild=local - so much better than to never finish building ... ;)) Richard. -- Richard Guenther <rguenther@suse.de> SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org

On 27.06.2012 13:22, Richard Guenther wrote:
Well - we do have another rather big cycle already - you can view it inside Base:build. It's the cycle that contains GCC. Obviously there is some existing magic in obs or the project configs that ignore selected edges in the build dependency graph ... why not add appropriate java-cycle-edges here?
(oh yes, Base:build uses rebuild=local - so much better than to never finish building ... ;))
Aehm, you say yourself that cycles never finish building - so I don't understand your first suggestion. OBS simply breaks cycles, but still compiles packages from cycles more often than packages in a dependency chain. I already said, that I ignore java cycles as I know how hard they are to break - and as long as they are not in the chain to libreoffice, I don't mind too much. tomcat and netbeans can turn around forever, they will never beak libreoffice :) Greetings, Stephan -- To unsubscribe, e-mail: opensuse-factory+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-factory+owner@opensuse.org

On Wed, Jun 27, 2012 at 01:27:26PM +0200, Stephan Kulow wrote:
On 27.06.2012 13:22, Richard Guenther wrote:
Well - we do have another rather big cycle already - you can view it inside Base:build. It's the cycle that contains GCC. Obviously there is some existing magic in obs or the project configs that ignore selected edges in the build dependency graph ... why not add appropriate java-cycle-edges here?
I don't know about cycle-edge cutting. Do you talk about the Support directive in Factory prjconf? I won't say that's applicable for java/maven/eclise/...
(oh yes, Base:build uses rebuild=local - so much better than to never finish building ... ;))
Aehm, you say yourself that cycles never finish building - so I don't understand your first suggestion.
OBS simply breaks cycles, but still compiles packages from cycles more often than packages in a dependency chain. I already said, that I ignore java cycles as I know how hard they are to break - and as long as they are not in the chain to libreoffice, I don't mind too much. tomcat and netbeans can turn around forever, they will never beak libreoffice :)
I was thinking about build openjdk dependencies via openjdk itself and drop gcc-java completelly, but that's probably not what you wanted, so I won't touch on it. But ... knowing the fact Java cycles can and will be ignored helps me a lot. I've already changed the strategy to rebuild="local" in Java:packages and Java:openjdk6:Factory (with an exception of openSUSE_Factory repo) to save the build power and will work on packaging stuff again. Regards Michal Vyskocil
participants (3)
-
Michal Vyskocil
-
Richard Guenther
-
Stephan Kulow