From Fedora Project Wiki
(Created page with "== Bootstrap plan == Plan for bootstrapping Gradle in Fedora. People involved: Mikolaj Izdebski Current state: during phase 2 === Phase 1 (initial bootst...")
 
m
Line 66: Line 66:
 
** Ivy resolvers are not supported in Gradle 2.x
 
** Ivy resolvers are not supported in Gradle 2.x
 
** custom resolvers are internal within Gradle (org.gradle.api.internal)
 
** custom resolvers are internal within Gradle (org.gradle.api.internal)
 +
** this used to work for Gradle 1.x:
 +
buildscript {
 +
    dependencies {
 +
        classpath files('/usr/share/java/xmvn/xmvn-connector-ivy.jar',
 +
                        '/usr/share/java/xmvn/xmvn-launcher.jar',
 +
                        '/usr/share/java/xmvn/xmvn-api.jar')
 +
    }
 +
}
 +
 +
repositories {
 +
    add(new org.fedoraproject.xmvn.connector.ivy.IvyResolver())
 +
}

Revision as of 13:07, 13 October 2014

Bootstrap plan

Plan for bootstrapping Gradle in Fedora.

People involved: Mikolaj Izdebski

Current state: during phase 2

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:
    • Gradle can be built in isolated environment without Internet access
    • new rpm packages can be created which use gradle as build system

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)

Blocker problems

  • there is no public API for providing custom resolver
    • Ivy resolvers are not supported in Gradle 2.x
    • custom resolvers are internal within Gradle (org.gradle.api.internal)
    • this used to work for Gradle 1.x:
buildscript {
    dependencies {
        classpath files('/usr/share/java/xmvn/xmvn-connector-ivy.jar',
                        '/usr/share/java/xmvn/xmvn-launcher.jar',
                        '/usr/share/java/xmvn/xmvn-api.jar')
    }
}

repositories {
    add(new org.fedoraproject.xmvn.connector.ivy.IvyResolver())
}