Author: jawi
Date: Tue Jan 26 11:46:12 2016
New Revision: 1726775
URL: http://svn.apache.org/viewvc?rev=1726775&view=rev
Log:
ACE-492 - Upgrade to latest Bndtools
- applied patch from @brampouwelse after some minor corrections;
- upgraded to Bndtools 3.1.1 and Gradle 2.10.
Added:
ace/trunk/build.gradle
ace/trunk/build/README
ace/trunk/build/build.gradle
ace/trunk/build/check_staged_ace_release.sh
ace/trunk/build/rat.gradle
ace/trunk/cnf/gradle/
ace/trunk/cnf/gradle/biz.aQute.bnd.gradle-3.1.0.jar (with props)
ace/trunk/gradle/
ace/trunk/gradle.properties
ace/trunk/gradle/wrapper/
ace/trunk/gradle/wrapper/gradle-wrapper.jar (with props)
ace/trunk/gradle/wrapper/gradle-wrapper.properties
ace/trunk/gradlew (with props)
ace/trunk/gradlew.bat
ace/trunk/settings.gradle
Modified:
ace/trunk/ (props changed)
ace/trunk/build/ (props changed)
ace/trunk/cnf/bnd.bnd
ace/trunk/org.apache.ace.gogo.servlet/bnd.bnd
ace/trunk/run-develop/bnd.bnd
Propchange: ace/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Jan 26 11:46:12 2016
@@ -3,4 +3,5 @@ bin_test
generated
.metadata
.recommenders
-
+.gradle
+rat-report.xml
Propchange: ace/trunk/build/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Jan 26 11:46:12 2016
@@ -4,4 +4,5 @@ generated
store
bundle-cache
felix-cache
+staging
.settings
Added: ace/trunk/build.gradle
URL: http://svn.apache.org/viewvc/ace/trunk/build.gradle?rev=1726775&view=auto
==============================================================================
--- ace/trunk/build.gradle (added)
+++ ace/trunk/build.gradle Tue Jan 26 11:46:12 2016
@@ -0,0 +1,48 @@
+/*
+ * Master Gradle build script
+ *
+ * Depends on bndPlugin property set by settings.gradle.
+ * and bnd_* values from gradle.properties.
+ */
+
+import aQute.bnd.build.Workspace
+import aQute.bnd.osgi.Constants
+
+/* Add bnd gradle plugin as a script dependency */
+buildscript {
+ dependencies {
+ classpath bndPlugin
+ }
+}
+
+/* Initialize the bnd workspace */
+Workspace.setDriver(Constants.BNDDRIVER_GRADLE)
+Workspace.addGestalt(Constants.GESTALT_BATCH, null)
+ext.bndWorkspace = new Workspace(rootDir, bnd_cnf)
+if (bndWorkspace == null) {
+ throw new GradleException("Unable to load workspace ${rootDir}/${bnd_cnf}")
+}
+
+ext.cnf = rootProject.project(bnd_cnf)
+
+/* Configure the subprojects */
+subprojects {
+ def bndProject = bndWorkspace.getProject(name)
+ if (bndProject != null) {
+ plugins.apply 'biz.aQute.bnd'
+
+ dependencies {
+ testCompile files("${rootDir}/cnf/lib/testng/testng-6.5.2.jar");
+ }
+ test {
+ useTestNG()
+ }
+
+ tasks.withType(Javadoc) {
+ options.addStringOption('Xdoclint:none', '-quiet')
+ }
+ }
+
+
+}
+
Added: ace/trunk/build/README
URL: http://svn.apache.org/viewvc/ace/trunk/build/README?rev=1726775&view=auto
==============================================================================
--- ace/trunk/build/README (added)
+++ ace/trunk/build/README Tue Jan 26 11:46:12 2016
@@ -0,0 +1,118 @@
+
+
+
+Apache Ace Release Guide
+This document describes how to do a source release. It is based on the Release
FAQ [1]
+
+Prerequisites
+=============
+
+To create a release you must:
+
+* Have Subversion installed on your system;
+* Have gpg installed on your system;
+* Have a public key added to the keys file, and committed to [2]
+* If you are using an http proxy, configure the following:
+
+ export GRADLE_OPTS="-Dhttps.proxyHost=www.somehost.org
-Dhttps.proxyPort=8080"
+
+Before you can start staging a release candidate, you must:
+
+* make sure there are no dependencies on snapshots/unreleased versions;
+* increment the version parameter in build/build.gradle, if not already done,
and commit.
+* under bndtools, release (only) the bundles that needs to be released (using
"Release workspace bundles" menu).
+* create a tagged version of the sources in preparation of the release
candidate.
+
+Release only the necessary bundles
+===================================
+
+Click on the bndtools "Release workspace bundles", and release the bundles
that have been modified and need to be released.
+Don't release other unmodified bundles.
+Once done, under the shell prompt, go to the "cnf/releaserepo/" directory, svn
remove the previous old released bundles,
+and svn add the new released bundles.
+refresh the repositories under bndtools, and commit.
+
+Create a tagged version
+=======================
+
+Creating a tagged version of the sources can be done directly through svn
(replace r<n> by the actual release number, like "r1"):
+
+svn copy https://svn.apache.org/repos/asf/ace/trunk
https://svn.apache.org/repos/asf/ace/releases/<version> -m "Release of Apache
Ace <version>"
+
+Staging a release candidate
+===========================
+
+Staging a release starts by checking out a tagged version of the sources
(replace <version> by the actual release version, like "2.0.0"):
+
+svn co https://svn.apache.org/repos/asf/ace/releases/<version>
apache-ace-<version>
+
+The next step is to build/test the software and create the release/staging/
directory (where the source/jars will be packaged):
+(replace <version> by the actual release number, like "2.0.0")
+
+Use a Java6 JDK
+
+$ cd apache-ace-<version>
+$ ./gradlew rat
+$ ./gradlew build
+
+create the staging:
+
+$ ./gradlew makeStaging (this will create ./build/staging/ directory
containing the signed release archives)
+
+You can upload the archives and the signatures to our development area, which
we use to stage this release candidate. This development area can be found at
+https://dist.apache.org/repos/dist/dev/ace and adding files to it can be done
using "svnpubsub" which is taken care of by the following target:
+
+$ ./gradlew commitToStaging
+
+Voting on the release
+=====================
+
+Start a vote on the [email protected] list, for example (be sure to replace
<version> with the correct release number, like "1.0.0"):
+
+>>>
+To: "Ace Developers List" <[email protected]>
+Subject: [VOTE] Release of Apache Ace release r<n>
+
+Hi,
+
+We solved N issues in this release:
+http://issues.apache.org/jira/...
+
+There are still some outstanding issues:
+http://issues.apache.org/jira/...
+
+Staging repository:
+https://dist.apache.org/repos/dist/dev/ace/apache-ace-<version>/
+
+You can use this UNIX script to download the release and verify the signatures:
+http://svn.apache.org/repos/asf/ace/trunk/build/check_staged_release.sh
+
+Usage:
+sh check_staged_ace_release.sh <version> /tmp/ace-staging
+
+This script, unlike the original Felix check_staged_release.sh, will download
staging from https://dist.apache.org/repos/dist/dev/ace instead of
http://repository.apache.org/content/repositories.
+
+
+Please vote to approve this release:
+
+[ ] +1 Approve the release
+[ ] -1 Veto the release (please provide specific comments)
+
+This vote will be open for 72 hours.
+<<<
+
+Promoting the release:
+=====================
+
+Move the artifacts from the development area to the final release location at
+https://dist.apache.org/repos/dist/release/ace by invoking the following
target:
+
+$ ./gradlew promoteToRelease
+
+Cancelling the release
+======================
+
+$ ./gradlew deleteFromStaging
+
+[1] http://www.apache.org/dev/release.html
+[2] http://www.apache.org/dist/ace/KEYS
Added: ace/trunk/build/build.gradle
URL:
http://svn.apache.org/viewvc/ace/trunk/build/build.gradle?rev=1726775&view=auto
==============================================================================
--- ace/trunk/build/build.gradle (added)
+++ ace/trunk/build/build.gradle Tue Jan 26 11:46:12 2016
@@ -0,0 +1,305 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Gradle script used to perform Ace releases (really similar to Apache Ace
build.gradle)
+ */
+import aQute.bnd.build.Workspace
+
+// Our release number, which has to be monotonically incremented each time we
make a new release.
+version = '2.0.1'
+
+// Base name for release archives Full name will be
${archivesBaseName}-${version}-${classifier} (e.g. apache-ace-2.0.1-src)
+archivesBaseName = "apache-ace"
+
+// Our Apache svn Staging repo
+ext.svnStagingPath = "https://dist.apache.org/repos/dist/dev/ace"
+
+// Our Apache svn Release repo
+ext.svnReleasePath = "https://dist.apache.org/repos/dist/release/ace"
+
+apply plugin: 'java'
+apply from: file("rat.gradle")
+
+// Configure RAT plugin to ignore some files
+rat {
+ excludes = [
+ 'rat-report.xml',
+ '**/.git/**',
+ '**/.gradle/**',
+ '**/.project',
+ '**/.settings/**',
+ '**/*.iml',
+ '**/*.iws',
+ '**/*.ipr',
+ '**/.classpath',
+ 'cnf/**',
+ 'gradle/wrapper/**',
+ 'release/**',
+ 'gradlew',
+ 'README',
+ '**/DEPENDENCIES',
+ '**/README',
+ '**/.gitignore',
+ '**/generated/**',
+ 'doc/**',
+ '**/packageinfo',
+ '**/*.txt',
+ 'docs/**',
+ '.metadata/**'
+ ]
+}
+
+// Setup the workspace
+Workspace workspace
+workspace = Workspace.getWorkspace(".")
+
+task stageSrc(type: Zip) {
+ description = 'Create a source archive in the local staging folder'
+
+ classifier = 'src'
+ destinationDir = file('staging')
+
+ with([
+ copySpec {
+ from '..'
+ include('*/.project',
+ '*/.classpath',
+ '*/.settings/**',
+ '*/src/**',
+ '*/test/**',
+ '*/resources/**',
+ '*/*.bnd',
+ '*/*.bndrun',
+ '*/*build*.xml',
+ 'run-*/conf/**',
+ 'cnf/ext/**',
+ 'build.gradle',
+ 'settings.gradle',
+ 'gradle.properties')
+ }
+ ] as CopySpec[])
+ into "${archivesBaseName}-${version}-src"
+}
+
+task stageDeps(type: Zip) {
+ description = 'Create a deps archive in the local staging folder'
+
+ classifier = 'deps'
+ destinationDir = file('staging')
+
+ with([
+ // LICENSE, NOTICE, README
+ copySpec {
+ from 'resources/deps'
+ },
+ // cnf
+ copySpec {
+ from '../cnf'
+ into 'cnf'
+ include('buildrepo/**',
+ 'localrepo/**',
+ 'releaserepo/**',
+ 'lib/**',
+ 'plugins/**',
+ 'ecj/**')
+ }
+ ] as CopySpec[]);
+ into "${archivesBaseName}-${version}-src"
+}
+
+def aceLauncherCopySpec = copySpec {
+ from
'../org.apache.ace.agent.launcher/generated/org.apache.ace.agent.launcher.felix.jar'
+ rename('org.apache.ace.agent.launcher.felix.jar',
'ace-launcher.jar')
+ }
+
+def obrContentsCopySpec = [
+ aceLauncherCopySpec,
+ copySpec {
+ from
'../cnf/localrepo/org.apache.felix.deployment.rp.autoconf/org.apache.felix.deployment.rp.autoconf-0.1.5.jar'
+ }
+ ] as CopySpec[];
+
+task stageBin(type: Zip) {
+ description = 'Create a binary release archive in the local staging
folder'
+ classifier = 'bin'
+ destinationDir = file('staging')
+ with([
+ // LICENSE, NOTICE, README
+ copySpec {
+ from 'resources/bin'
+ },
+ // server-allinone
+ copySpec {
+ from
'../run-server-allinone/generated/distributions/executable/server-allinone.jar'
+ into 'server-allinone'
+ },
+ copySpec {
+ from '../run-server-allinone/conf'
+ into 'server-allinone/conf'
+ },
+ copySpec {
+ with obrContentsCopySpec
+ into 'server-allinone/store'
+ },
+ // server
+ copySpec {
+ from
'../run-server/generated/distributions/executable/server.jar'
+ into 'server'
+ },
+ copySpec {
+ from '../run-server/conf'
+ into 'server/conf'
+ },
+ // relay
+ copySpec {
+ from
'../run-relay/generated/distributions/executable/relay.jar'
+ into 'relay'
+ },
+ copySpec {
+ from '../run-relay/conf'
+ into 'relay/conf'
+ },
+ // client
+ copySpec {
+ from
'../run-client/generated/distributions/executable/client.jar'
+ into 'client'
+ },
+ copySpec {
+ from '../run-client/conf'
+ into 'client/conf'
+ },
+ // obr
+ copySpec {
+ from
'../run-obr/generated/distributions/executable/obr.jar'
+ into 'obr'
+ },
+ copySpec {
+ from '../run-obr/conf'
+ into 'obr/conf'
+ },
+ copySpec {
+ with obrContentsCopySpec
+ into 'obr/store'
+ },
+ //target
+ copySpec {
+ from '../run-target/conf'
+ into 'target/conf'
+ },
+ copySpec {
+ from '../run-target/scripts'
+ into 'target/bin'
+ },
+ copySpec {
+ with aceLauncherCopySpec
+ into 'target/bin'
+ }
+
+ ] as CopySpec[])
+ into "${archivesBaseName}-${version}"
+}
+
+task signStaging() {
+ description = 'Signs the local staging distribution.'
+ dependsOn = ['stageSrc', 'stageDeps', 'stageBin' ]
+
+ doLast {
+ fileTree("staging").visit { FileVisitDetails details ->
+ logger.lifecycle(" Signing " + details.file.path)
+ ant.exec(executable: 'gpg', dir: 'staging') {
+ ant.arg(line: '--armor')
+ ant.arg(line: '--output')
+ ant.arg(line: details.file.name + ".asc")
+ ant.arg(line: "--detach-sig")
+ ant.arg(line: details.file.name)
+ }
+
+ ant.exec(executable: 'gpg', dir: 'staging', output:
"staging/" + details.file.name + ".md5") {
+ ant.arg(line: '--print-md')
+ ant.arg(line: 'MD5')
+ ant.arg(line: details.file.name)
+ }
+
+ ant.exec(executable: 'gpg', dir: 'staging', output:
"staging/" + details.file.name + ".sha") {
+ ant.arg(line: '--print-md')
+ ant.arg(line: 'SHA512')
+ ant.arg(line: details.file.name)
+ }
+ }
+ }
+}
+
+task makeStaging() {
+ description = 'Stage new release'
+ group = 'release'
+ dependsOn = ['signStaging']
+}
+
+task commitToStaging() {
+ description = 'Commits the local staging to the Apache svn staging
repository.'
+ group = 'release'
+
+ doLast {
+ getProject().exec {
+ commandLine 'svn',
+ 'import', 'staging', svnStagingPath +
"/${archivesBaseName}-${version}" + "/",
+ '-m', "Staging Apache Ace release ${version}."
+ }
+ }
+}
+
+task promoteToRelease() {
+ description = 'Moves the staging repository to the Apache release
repository.'
+ group = 'release'
+
+ doLast {
+ // Move all artifacts from the staging repo to the release repo
+ getProject().exec {
+ commandLine 'svn',
+ 'move', svnStagingPath +
"/${archivesBaseName}-${version}" ,
+ svnReleasePath,
+ '-m', "Releasing Apache Ace release ${version}."
+ }
+ }
+}
+
+task deleteFromStaging() {
+ description = 'Cancels the staged distribution from the Apache staging
repository.'
+ group = 'release'
+
+ doLast {
+ getProject().exec {
+ commandLine 'svn',
+ 'delete',
svnStagingPath+"/${archivesBaseName}-${version}/",
+ "-m", "Removing Apache Ace release ${version} from
staging."
+ }
+ }
+}
+
+task clean(overwrite: true) << {
+ new File("build/staging").deleteDir()
+ new File("rat-report.xml").delete()
+}
+
+task cleanStaging << {
+ description = 'Clean the local staging directory.'
+ new File("build/staging").deleteDir()
+ new File("build/staging-copy").deleteDir()
+}
Added: ace/trunk/build/check_staged_ace_release.sh
URL:
http://svn.apache.org/viewvc/ace/trunk/build/check_staged_ace_release.sh?rev=1726775&view=auto
==============================================================================
--- ace/trunk/build/check_staged_ace_release.sh (added)
+++ ace/trunk/build/check_staged_ace_release.sh Tue Jan 26 11:46:12 2016
@@ -0,0 +1,120 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# This script verifies the signatures and checksums of a release.
+#
+# This script can be used to check the signatures and checksums of staged
+# Apache Ace release using gpg.
+# Usage:
+#
+# check_staged_ace_release.sh <version> [<temp-dir>]
+#
+# Where:
+# <version> represents the staged release version, e.g., 2.0.0;
+# <temp-dir> represents the location where the release artifacts
+# should be stored, defaults to /tmp/felix-staging if
+# omitted.
+
+
+version=${1}
+tmpDir=${2:-/tmp/ace-staging}
+
+if [ ! -d "${tmpDir}" ]; then
+ mkdir "${tmpDir}"
+fi
+
+if [ -z "${version}" -o ! -d "${tmpDir}" ]; then
+ echo "Usage: check_staged_ace_release.sh <release-version>
[temp-directory]"
+ exit
+fi
+
+checkSig() {
+ sigFile="$1.asc"
+ if [ ! -f $sigFile ]; then
+ echo "$sigFile is missing!!!"
+ exit 1
+ fi
+
+ gpg --verify $sigFile 2>/dev/null >/dev/null
+ if [ "$?" = "0" ]; then echo "OK"; else echo "BAD!!!"; fi
+}
+
+checkSum() {
+ archive=$1
+ sumFile=$2
+ alg=$3
+ if [ ! -f $sumFile ]; then
+ echo "$sumFile is missing!!!"
+ exit 1
+ fi
+
+ orig=`cat $sumFile | sed 's/.*: *//' | tr -d ' \t\n\r'`
+ actual=`gpg --print-md $alg $archive | sed 's/.*: *//' | tr -d ' \t\n\r'`
+ if [ "$orig" = "$actual" ]; then echo "OK"; else echo "BAD!!!"; fi
+}
+
+KEYS_URL="http://www.apache.org/dist/ace/KEYS"
+REL_URL="https://dist.apache.org/repos/dist/dev/ace/apache-ace-${version}/"
+
+PWD=`pwd`
+
+echo
"################################################################################"
+echo " IMPORTING KEYS
"
+echo
"################################################################################"
+if [ ! -e "${tmpDir}/KEYS" ]; then
+ wget --no-check-certificate -P "${tmpDir}" $KEYS_URL
+fi
+gpg --import "${tmpDir}/KEYS"
+
+if [ ! -e "${tmpDir}/org.apache.felix.dependencymanager-${version}" ]
+then
+ echo
"################################################################################"
+ echo " DOWNLOAD STAGED REPOSITORY
"
+ echo
"################################################################################"
+
+ wget \
+ -e "robots=off" --wait 1 -r -np "--reject=html,txt" "--follow-tags=" \
+ -P "${tmpDir}/apache-ace-${version}" -nH "--cut-dirs=5" --ignore-length
--no-check-certificate \
+ $REL_URL
+else
+ echo
"################################################################################"
+ echo " USING EXISTING STAGED REPOSITORY
"
+ echo
"################################################################################"
+ echo "${tmpDir}/org.apache.felix.dependencymanager-${version}"
+fi
+
+echo
"################################################################################"
+echo " CHECK SIGNATURES AND DIGESTS
"
+echo
"################################################################################"
+
+cd ${tmpDir}/apache-ace-${version}
+for f in `find . -type f | grep -v '\.\(asc\|sha\?\|md5\)$'`; do
+ echo "checking $f"
+
+ echo -e " ASC: \c"
+ checkSig $f
+ echo -e " MD5: \c"
+ checkSum $f "$f.md5" MD5
+ echo -e " SHA: \c"
+ checkSum $f "$f.sha" SHA512
+ echo ""
+done
+
+cd $PWD
+echo
"################################################################################"
+
Added: ace/trunk/build/rat.gradle
URL:
http://svn.apache.org/viewvc/ace/trunk/build/rat.gradle?rev=1726775&view=auto
==============================================================================
--- ace/trunk/build/rat.gradle (added)
+++ ace/trunk/build/rat.gradle Tue Jan 26 11:46:12 2016
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.Task
+import org.gradle.api.internal.project.IsolatedAntBuilder
+
+apply plugin: RatPlugin
+
+class RatTask extends DefaultTask {
+ @Input
+ List<String> excludes
+
+ def reportPath = '.'
+ def xmlReport = reportPath + '/rat-report.xml'
+
+ def generateXmlReport(File reportDir) {
+ def antBuilder = services.get(IsolatedAntBuilder)
+ def ratClasspath = project.configurations.rat
+ antBuilder.withClasspath(ratClasspath).execute {
+ ant.taskdef(resource: 'org/apache/rat/anttasks/antlib.xml')
+ ant.report(format: 'xml', reportFile: xmlReport) {
+ fileset(dir: ".") {
+ patternset {
+ excludes.each {
+ exclude(name: it)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ def printUnknownFiles() {
+ def ratXml = new XmlParser().parse(xmlReport)
+ ratXml.resource.each { resource ->
+ if (resource.'license-approval'.@name[0] == "false") {
+ println('Unknown license: ' + resource.@name)
+ }
+ }
+ }
+
+ @TaskAction
+ def rat() {
+ File reportDir = new File(reportPath)
+ if (!reportDir.exists()) {
+ reportDir.mkdirs()
+ }
+ generateXmlReport(reportDir)
+ printUnknownFiles()
+ }
+}
+
+class RatPlugin implements Plugin<Project> {
+ void apply(Project project) {
+ configureDependencies(project)
+ project.plugins.apply(JavaBasePlugin);
+ Task ratTask = project.task("rat",
+ type: RatTask,
+ group: 'verification',
+ description: 'Runs Apache Rat checks.')
+ project.tasks[JavaBasePlugin.CHECK_TASK_NAME].dependsOn ratTask
+ }
+
+ void configureDependencies(final Project project) {
+ project.configurations {
+ rat
+ }
+ project.repositories {
+ mavenCentral()
+ }
+ project.dependencies {
+ rat 'org.apache.rat:apache-rat-tasks:0.8'
+ }
+ }
+}
Modified: ace/trunk/cnf/bnd.bnd
URL:
http://svn.apache.org/viewvc/ace/trunk/cnf/bnd.bnd?rev=1726775&r1=1726774&r2=1726775&view=diff
==============================================================================
--- ace/trunk/cnf/bnd.bnd (original)
+++ ace/trunk/cnf/bnd.bnd Tue Jan 26 11:46:12 2016
@@ -1,3 +1,3 @@
--nobundles
+-nobundles: true
-buildpath: biz.aQute.bnd;version=2.2.0,\
org.osgi.impl.bundle.bindex
\ No newline at end of file
Added: ace/trunk/cnf/gradle/biz.aQute.bnd.gradle-3.1.0.jar
URL:
http://svn.apache.org/viewvc/ace/trunk/cnf/gradle/biz.aQute.bnd.gradle-3.1.0.jar?rev=1726775&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/cnf/gradle/biz.aQute.bnd.gradle-3.1.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ace/trunk/gradle.properties
URL:
http://svn.apache.org/viewvc/ace/trunk/gradle.properties?rev=1726775&view=auto
==============================================================================
--- ace/trunk/gradle.properties (added)
+++ ace/trunk/gradle.properties Tue Jan 26 11:46:12 2016
@@ -0,0 +1,14 @@
+# cnf project name
+bnd_cnf=cnf
+
+# bnd_plugin is the dependency declaration for the bnd gradle plugin
+bnd_plugin=cnf/gradle/biz.aQute.bnd.gradle-3.1.0.jar
+
+# bnd_build can be set to the name of a "master" project whose dependencies
will seed the set of projects to build.
+bnd_build=
+
+# Default gradle task to build
+bnd_defaultTask=build
+
+# This should be false. It only needs to be true in rare cases.
+bnd_preCompileRefresh=false
Added: ace/trunk/gradle/wrapper/gradle-wrapper.jar
URL:
http://svn.apache.org/viewvc/ace/trunk/gradle/wrapper/gradle-wrapper.jar?rev=1726775&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/gradle/wrapper/gradle-wrapper.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ace/trunk/gradle/wrapper/gradle-wrapper.properties
URL:
http://svn.apache.org/viewvc/ace/trunk/gradle/wrapper/gradle-wrapper.properties?rev=1726775&view=auto
==============================================================================
--- ace/trunk/gradle/wrapper/gradle-wrapper.properties (added)
+++ ace/trunk/gradle/wrapper/gradle-wrapper.properties Tue Jan 26 11:46:12 2016
@@ -0,0 +1,6 @@
+#Mon Jan 25 19:50:58 CET 2016
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
Added: ace/trunk/gradlew
URL: http://svn.apache.org/viewvc/ace/trunk/gradlew?rev=1726775&view=auto
==============================================================================
--- ace/trunk/gradlew (added)
+++ ace/trunk/gradlew Tue Jan 26 11:46:12 2016
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to
pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no
'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\"
\"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ###
Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ###
Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5"
"$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the
shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH"
org.gradle.wrapper.GradleWrapperMain "$@"
Propchange: ace/trunk/gradlew
------------------------------------------------------------------------------
svn:executable = *
Added: ace/trunk/gradlew.bat
URL: http://svn.apache.org/viewvc/ace/trunk/gradlew.bat?rev=1726775&view=auto
==============================================================================
--- ace/trunk/gradlew.bat (added)
+++ ace/trunk/gradlew.bat Tue Jan 26 11:46:12 2016
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS
to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your
PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS%
"-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%"
org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code
instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
Modified: ace/trunk/org.apache.ace.gogo.servlet/bnd.bnd
URL:
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.gogo.servlet/bnd.bnd?rev=1726775&r1=1726774&r2=1726775&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.gogo.servlet/bnd.bnd (original)
+++ ace/trunk/org.apache.ace.gogo.servlet/bnd.bnd Tue Jan 26 11:46:12 2016
@@ -1,3 +1,4 @@
+Bundle-Version: 1.0.0
-buildpath: ${^-buildpath},\
osgi.core,\
osgi.cmpn,\
Modified: ace/trunk/run-develop/bnd.bnd
URL:
http://svn.apache.org/viewvc/ace/trunk/run-develop/bnd.bnd?rev=1726775&r1=1726774&r2=1726775&view=diff
==============================================================================
--- ace/trunk/run-develop/bnd.bnd (original)
+++ ace/trunk/run-develop/bnd.bnd Tue Jan 26 11:46:12 2016
@@ -1,3 +1,3 @@
--nobundles
+-nobundles: true
Bundle-Name: Apache ACE Development Target
Bundle-Description: Bnd run project for a standard ACE Target when used in a
development environment, such as Eclipse. This projects does not generate any
artifacts.
\ No newline at end of file
Added: ace/trunk/settings.gradle
URL:
http://svn.apache.org/viewvc/ace/trunk/settings.gradle?rev=1726775&view=auto
==============================================================================
--- ace/trunk/settings.gradle (added)
+++ ace/trunk/settings.gradle Tue Jan 26 11:46:12 2016
@@ -0,0 +1,108 @@
+/*
+ * Master Gradle initialization script
+ *
+ * Depends on bnd_* values from gradle.properties.
+ */
+
+import aQute.bnd.build.Workspace
+import aQute.bnd.osgi.Constants
+
+/* Add bnd gradle plugin as a script dependency */
+buildscript {
+ dependencies {
+ classpath files(bnd_plugin)
+ }
+ /* Pass bnd gradle plugin classpath to rootProject once created */
+ def bndPlugin = files(configurations.classpath.files)
+ gradle.rootProject { rootProject ->
+ rootProject.ext.bndPlugin = bndPlugin
+ }
+}
+
+/* Initialize the bnd workspace */
+Workspace.setDriver(Constants.BNDDRIVER_GRADLE)
+Workspace.addGestalt(Constants.GESTALT_BATCH, null)
+def workspace = new Workspace(rootDir, bnd_cnf)
+if (workspace == null) {
+ throw new GradleException("Unable to load workspace ${rootDir}/${bnd_cnf}")
+}
+
+/* Add cnf project to the graph */
+include bnd_cnf
+
+/* Start with the declared build project name */
+def defaultProjectName = bnd_build
+
+/* If in a subproject, use the subproject name */
+for (def currentDir = startParameter.currentDir; currentDir != rootDir;
currentDir = currentDir.parentFile) {
+ defaultProjectName = currentDir.name
+}
+
+/* Build a set of project names we need to include from the specified tasks */
+def projectNames = startParameter.taskNames.collect { taskName ->
+ def elements = taskName.split(':')
+ switch (elements.length) {
+ case 1:
+ return defaultProjectName
+ case 2:
+ return elements[0].empty ? bnd_build : elements[0]
+ default:
+ return elements[0].empty ? elements[1] : elements[0]
+ }
+}.toSet()
+
+/* Include the default project name if in a subproject or no tasks specified */
+if ((startParameter.currentDir != rootDir) || projectNames.empty) {
+ projectNames += defaultProjectName
+}
+
+/* If bnd_build used but declared empty, add all non-private folders of
rootDir */
+if (projectNames.remove('')) {
+ rootDir.eachDir {
+ def projectName = it.name
+ if (!projectName.startsWith('.')) {
+ projectNames += projectName
+ }
+ }
+}
+
+/* Add each project and its dependencies to the graph */
+projectNames.each { projectName ->
+ include projectName
+ def project = getBndProject(workspace, projectName)
+ project?.getDependson()*.getName().each {
+ include it
+ }
+}
+
+/* Get the bnd project for the specified project name */
+def getBndProject(Workspace workspace, String projectName) {
+ def project = workspace.getProject(projectName)
+ if (project == null) {
+ return null
+ }
+ project.prepare()
+ if (project.isValid()) {
+ return project
+ }
+
+ project.getInfo(workspace, "${rootDir} :")
+ def errorCount = 0
+ project.getWarnings().each {
+ println "Warning: ${it}"
+ }
+ project.getErrors().each {
+ println "Error : ${it}"
+ errorCount++
+ }
+ if (!project.isOk()) {
+ def str = 'even though no errors were reported'
+ if (errorCount == 1) {
+ str = 'one error was reported'
+ } else if (errorCount > 1) {
+ str = "${errorCount} errors were reported"
+ }
+ throw new GradleException("Project ${rootDir}/${projectName} is invalid,
${str}")
+ }
+ throw new GradleException("Project ${rootDir}/${projectName} is not a valid
bnd project")
+}