On 10/21/2013 05:11 PM, Michael Ekstrand wrote: > In bug #976330[1], there's been some discussion of the desire to > upgrade Gradle from 1.0 to a new version (currently 1.8), and that > there is significant hassle to actually do so. Some of this hassle I > see in the bugs blocking 976330 - upgrading to Aether, newer Plexus > containers, and maybe Polyglot Maven. > > What are the key issues that make it difficult to upgrade and maintain > Gradle in Fedora? The likely ones I see: > > - Incompatible dependencies (Gradle may require package versions no > longer shipped in Fedora) Gradle used to use (very) old versions of some dependencies, for example legacy pre-1.0 alpha version of Plexus, released ~10 years ago. It also used some Maven 2 APIs (Fedora ships Maven 3 only). This was improved recently IIRC. Gradle also uses Sonatype Aether, which is not in Fedora any longer. Porting it to Eclipse Aether should be fairly straightforward, but still, needs to be done. > - Bootstrapping problems (the Gradle 1.8 sources won't build with > Gradle 1.8, they seem to require 1.7) These are IMO two separate problems. 1. Gradle breaks compatibility between releases. If package builds with Gradle version X then it not necessarily builds with Gradle version Y, Y > X. This is a serious problem as Fedora may have to maintain multiple versions of Gradle to build different projects. Other build systems may have some incompatibilities too, but in case of Gradle they are causing more problems. Additionally, Gradle build scripts are written in fully-featured programming language and may not be so easy to port to different version of Gradle. 2. Gradle is built with itself (as many build systems are), so it needs bootstrapping. Upstream of majority of other build systems (including Ant or Maven) are maintaining secondary ways of building them (Ant can be built with javac, Maven can be built with Ant etc.), but Gradle upstream does not provide any way to bootstrap Gradle. Normally bootstrapping would need to be performed only once, but because of 1. bootstrapping may be required more often, worst case with every release. Fedora would probably need to create and maintain a separate build script for Gradle (for example using Ant or Maven) or obtain an exception from FPC to build using prebuilt binaries. Currently Fedora ships Ant build.xml for Gradle, but it requires substantial amount of manual work to synchronize it with upstream build. (I would prefer to use Maven here. It would not only ease dependency management, but also allow easier installation of Gradle artifacts.) > - Possibly library embedding (although the Gradle sources do seem to > pull in the dependencies from Maven) That's a generic problem and it's not really Gradle-specific. But yes, there are some version problems, most notably Objectweb ASM. Different Gradle dependencies use versions 3 and 4 (shaded to avoid namespace conflicts). Fedora does not allow bundled libraries, which causes conflict between ASM 3 and 4. (Porting from ASM 3 to ASM 4 is possible, but non-trivial as there were major changes. This would again require some work.) To sum up, Gradle maintainence requires substantial amount of work. Currently only few packages in Fedora are using Gradle which means that maintenance costs of Gradle outweight costs of porting other packages to different build systems. -- Mikolaj Izdebski IRC: mizdebsk PS. Integration of Gradle with Fedora is a completely different story... -- java-devel mailing list java-devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/java-devel