From Fedora Project Wiki
Line 14: Line 14:
* packaging
* packaging
** update to newer version
** update to newer version
*** groovy
*** groovy (1.8.x -> 2.3.x)
*** spock-core
*** spock-core
*** native-platform
*** native-platform (0.3 -> 0.10)
*** aqute-bndlib (1.x -> 2.x)
* patching Gradle
* patching Gradle
** port to apache-sshd 0.11.0 (uses 0.10.0, minor patch)
** port to apache-sshd 0.11.0 (uses 0.10.0, minor patch)
** port to jetty 9 (uses 6)
** port to jetty 9 (uses 6)
** port to aether-ant-tasks from maven-ant-tasks
** port to aether-ant-tasks from maven-ant-tasks
** port to bouncycastle 1.50 (uses 1.46)


== Bootstrap plan ==
== Bootstrap plan ==

Revision as of 14:47, 20 October 2014

Goals

  • package latest Gradle 2.x
  • implement local resolver so that packages can be built with Gradle
    • this includes Gradle itself
  • package older Gradle from 1.x line, if needed (optionall)
    • some projects won't compile with Gradle 2.x or even incompatible version from 1.x line

TODO

  • report usage of non-free JSON library (org.json:json)
    • "The Software shall be used for Good, not Evil."
    • android-json-org-java can be used as free replacement
  • packaging
    • update to newer version
      • groovy (1.8.x -> 2.3.x)
      • spock-core
      • native-platform (0.3 -> 0.10)
      • aqute-bndlib (1.x -> 2.x)
  • patching Gradle
    • port to apache-sshd 0.11.0 (uses 0.10.0, minor patch)
    • port to jetty 9 (uses 6)
    • port to aether-ant-tasks from maven-ant-tasks
    • port to bouncycastle 1.50 (uses 1.46)

Bootstrap plan

Plan for bootstrapping Gradle in Fedora.

People involved: Mikolaj Izdebski

Current state: during phase 3

Phase 1 (initial bootstrap)

Phase 2 (local mode)

  • implement local mode using XMvn
  • package all Gradle build dependencies in wrapper rpm
    • binaries taken from the Internet
    • XMvn metadata added
  • from now on:

Phase 3 (dependency refinement)

  • while wrapper rpm is not empty:
    • pick one artifact from wrapper rpm
    • if it is not yet available in fedora:
      • build it from source and package it as rpm
      • skip tests if there are too many missing test dependencies
      • add any missing build or test dependencies to wrapper rpm
    • rebuild Gradle and run tests to make sure everything keeps working
    • if there are build or test failures, debug them and create patches
  • get rid of wrapper rpm
  • from now on:
    • Gradle with all dependencies are free from prebuilt binaries
    • everything is patched to work with artifact versions available in Fedora

Phase 4 (push to Fedora)

  • request FPC bootstrap exception
  • for all new packages:
    • do review (licensing etc)
    • cleanup spec file
    • submit for review
    • someone else reviews the package
    • package is checked into Fedora git and built in Koji
  • from now on:
    • we have gradle in Fedora

Phase 5 (further improvements)

  • implement javapackages macros for Gradle
  • prepare packaging documentation
  • announce gradle availability
  • upstream patches
  • enable tests (if skipped)

Dependencies

Gradle 2.1 build and test dependencies.

groupId artifactId extension classifier version Fedora package Fedora version
biz.aQute.bnd bndlib pom 2.1.0
biz.aQute.bnd bndlib jar 2.1.0
biz.aQute.bnd parent pom 2.1.0
cglib cglib-nodep pom 2.2
cglib cglib-nodep jar 2.2
com.typesafe.sbt compiler-interface pom 0.13.0
com.typesafe.sbt compiler-interface jar sources 0.13.0
com.typesafe.sbt incremental-compiler jar 0.13.0
com.typesafe.sbt incremental-compiler pom 0.13.0
com.typesafe.sbt sbt-interface jar 0.13.0
com.typesafe.sbt sbt-interface pom 0.13.0
com.typesafe.zinc zinc pom 0.3.0
com.typesafe.zinc zinc jar 0.3.0
docbook docbook-xsl zip 1.75.2
docbook docbook-xsl pom 1.75.2
jquery jquery.min js 1.11.0
junit junit pom 4.11
junit junit pom 4.12-beta-1
junit junit pom 4.12-beta-2
net.rubygrapefruit native-platform pom 0.10
net.rubygrapefruit native-platform jar 0.10
net.rubygrapefruit native-platform-freebsd-amd64 pom 0.10
net.rubygrapefruit native-platform-freebsd-amd64 jar 0.10
net.rubygrapefruit native-platform-freebsd-i386 pom 0.10
net.rubygrapefruit native-platform-freebsd-i386 jar 0.10
net.rubygrapefruit native-platform-linux-amd64 pom 0.10
net.rubygrapefruit native-platform-linux-amd64 jar 0.10
net.rubygrapefruit native-platform-linux-i386 pom 0.10
net.rubygrapefruit native-platform-linux-i386 jar 0.10
net.rubygrapefruit native-platform-osx-amd64 pom 0.10
net.rubygrapefruit native-platform-osx-amd64 jar 0.10
net.rubygrapefruit native-platform-osx-i386 jar 0.10
net.rubygrapefruit native-platform-osx-i386 pom 0.10
net.rubygrapefruit native-platform-windows-amd64 jar 0.10
net.rubygrapefruit native-platform-windows-amd64 pom 0.10
net.rubygrapefruit native-platform-windows-i386 pom 0.10
net.rubygrapefruit native-platform-windows-i386 jar 0.10
org.apache.maven maven-ant-tasks pom 2.1.3
org.apache.maven maven-ant-tasks jar 2.1.3
org.bouncycastle bcpg-jdk15 jar 1.46
org.bouncycastle bcpg-jdk15 pom 1.46
org.bouncycastle bcprov-jdk15 jar 1.46
org.bouncycastle bcprov-jdk15 pom 1.46
org.codehaus.groovy groovy pom 2.3.7
org.codehaus.groovy groovy pom 2.4.0-beta-1
org.codehaus.groovy groovy pom 2.4.0-beta-2
org.codehaus.groovy groovy pom 2.4.0-beta-3
org.codehaus.sonar-plugins parent pom 13
org.codehaus.sonar-plugins sonar-runner jar 2.0
org.codehaus.sonar-plugins sonar-runner pom 2.0
org.codehaus.sonar sonar pom 2.9
org.codehaus.sonar sonar-batch pom 2.9
org.codehaus.sonar sonar-batch jar 2.9
org.codehaus.sonar sonar-batch-bootstrapper pom 2.9
org.codehaus.sonar sonar-batch-bootstrapper jar 2.9
org.codehaus.sonar sonar-plugin-api jar 2.9
org.codehaus.sonar sonar-plugin-api pom 2.9
org.mortbay.jetty jetty pom 6.1.25
org.mortbay.jetty jetty jar 6.1.25
org.mortbay.jetty jetty-annotations jar 6.1.25
org.mortbay.jetty jetty-annotations pom 6.1.25
org.mortbay.jetty jetty-naming jar 6.1.25
org.mortbay.jetty jetty-naming pom 6.1.25
org.mortbay.jetty jetty-parent pom 10
org.mortbay.jetty jetty-parent pom 7
org.mortbay.jetty jetty-plus jar 6.1.25
org.mortbay.jetty jetty-plus pom 6.1.25
org.mortbay.jetty jetty-util jar 6.1.25
org.mortbay.jetty jetty-util pom 6.1.25
org.mortbay.jetty jsp-2.1 jar 6.1.14
org.mortbay.jetty jsp-2.1 pom 6.1.14
org.mortbay.jetty jsp-api-2.1 jar 6.1.14
org.mortbay.jetty jsp-api-2.1 pom 6.1.14
org.mortbay.jetty project pom 6.1.14
org.mortbay.jetty project pom 6.1.25
org.scala-lang.modules scala-xml_2.11 pom 1.0.2
org.scala-lang scala-library pom 2.11.3
org.scalatest scalatest_2.11 pom 2.2.2
org.scalatest scalatest_2.11 pom 2.2.3-SNAP1
org.scalatest scalatest_2.11 pom 2.2.3-SNAP2
org.scalatest scalatest_2.11 pom 3.0.0-SNAP1
org.sonatype.pmaven pmaven-common pom 0.8-20100325
org.sonatype.pmaven pmaven-common jar 0.8-20100325
org.sonatype.pmaven pmaven-groovy jar 0.8-20100325
org.sonatype.pmaven pmaven-groovy pom 0.8-20100325
xhtmlrenderer xhtmlrenderer jar R8rc1
xhtmlrenderer xhtmlrenderer pom R8rc1
xslthl xslthl jar 2.0.1
xslthl xslthl pom 2.0.1