01250cc
From 68c8d82bf25f2ec5e73f8df5b1d04099ce9ba5fe Mon Sep 17 00:00:00 2001
38591f5
From: Mikolaj Izdebski <mizdebsk@redhat.com>
38591f5
Date: Tue, 27 Oct 2015 16:20:35 +0100
01250cc
Subject: [PATCH 1/3] Initial %gradle_build implementation
38591f5
38591f5
---
38591f5
 gradle/init.gradle            | 16 +++++++---------
38591f5
 java-utils/mvn_build.py       | 35 +++++++++++++++++++++++++++--------
38591f5
 macros.d/macros.fjava         | 12 ++++++++++++
38591f5
 test/data/mvn_build/all_out   |  2 +-
38591f5
 test/data/mvn_build/debug_out |  2 +-
38591f5
 5 files changed, 48 insertions(+), 19 deletions(-)
38591f5
38591f5
diff --git a/gradle/init.gradle b/gradle/init.gradle
38591f5
index 17c9afe..c523717 100644
38591f5
--- a/gradle/init.gradle
38591f5
+++ b/gradle/init.gradle
38591f5
@@ -1,11 +1,9 @@
38591f5
-allprojects {
38591f5
-    buildscript {
38591f5
-        repositories {
38591f5
-            xmvn()
38591f5
-        }
38591f5
-    }
38591f5
-
38591f5
-    repositories {
38591f5
-        xmvn()
38591f5
+initscript {
38591f5
+    dependencies {
38591f5
+        classpath files('/usr/share/java/xmvn/xmvn-connector-gradle.jar')
38591f5
+        classpath files('/usr/share/java/xmvn/xmvn-api.jar')
38591f5
+        classpath files('/usr/share/java/xmvn/xmvn-launcher.jar')
38591f5
     }
38591f5
 }
38591f5
+
38591f5
+apply plugin: org.fedoraproject.xmvn.connector.gradle.XMvnGradlePlugin
38591f5
diff --git a/java-utils/mvn_build.py b/java-utils/mvn_build.py
38591f5
index eb40aa0..2ad9ae4 100644
38591f5
--- a/java-utils/mvn_build.py
38591f5
+++ b/java-utils/mvn_build.py
38591f5
@@ -81,6 +81,9 @@ if __name__ == "__main__":
38591f5
                       action="callback",
38591f5
                       callback=goal_callback,
38591f5
                       help="Run Maven goals after default XMvn goals.")
38591f5
+    parser.add_option("--gradle",
38591f5
+                      action="store_true",
38591f5
+                      help="Invoke Gradle instead of Maven.")
38591f5
     parser.add_option("-i", "--skip-install",
38591f5
                       action="store_true",
38591f5
                       help="Skip artifact installation.")
38591f5
@@ -99,8 +102,12 @@ if __name__ == "__main__":
38591f5
     (options, args) = parser.parse_args()
38591f5
     xc = XMvnConfig()
38591f5
 
38591f5
-    base_goal = "verify"
38591f5
-    mvn_args = ["xmvn", "--batch-mode"]
38591f5
+    if options.gradle:
38591f5
+        base_goal = "build"
38591f5
+        mvn_args = ["gradle-local", "--no-daemon"]
38591f5
+    else:
38591f5
+        base_goal = "verify"
38591f5
+        mvn_args = ["xmvn", "--batch-mode"]
38591f5
 
38591f5
     if not options.bootstrap:
38591f5
         mvn_args.append("--offline")
38591f5
@@ -109,7 +116,7 @@ if __name__ == "__main__":
38591f5
         mvn_args.append("-Dxmvn.compat=20-rpmbuild-raw")
38591f5
 
38591f5
     if options.debug:
38591f5
-        mvn_args.append("-X")
38591f5
+        mvn_args.append("--debug")
38591f5
 
38591f5
     if options.xmvn_debug or options.debug:
38591f5
         mvn_args.append("-Dorg.slf4j.simpleLogger.log.org.fedoraproject.xmvn=debug")
38591f5
@@ -117,7 +124,10 @@ if __name__ == "__main__":
38591f5
     if options.force:
38591f5
         mvn_args.append("-Dmaven.test.skip=true")
38591f5
         xc.add_custom_option("buildSettings/skipTests", "true")
38591f5
-        base_goal = "package"
38591f5
+        if options.gradle:
38591f5
+            base_goal = "assemble"
38591f5
+        else:
38591f5
+            base_goal = "package"
38591f5
 
38591f5
     if mock_socket and os.path.exists(mock_socket):
38591f5
         interpreter = sys.executable
38591f5
@@ -133,12 +143,21 @@ if __name__ == "__main__":
38591f5
     mvn_args.append(base_goal)
38591f5
 
38591f5
     if not options.skip_install:
38591f5
-        mvn_args.append("org.fedoraproject.xmvn:xmvn-mojo:install")
38591f5
+        if options.gradle:
38591f5
+            mvn_args.append("xmvnInstall")
38591f5
+        else:
38591f5
+            mvn_args.append("org.fedoraproject.xmvn:xmvn-mojo:install")
38591f5
 
38591f5
     if not options.skip_javadoc:
38591f5
-        mvn_args.append("org.apache.maven.plugins:maven-javadoc-plugin:aggregate")
38591f5
-
38591f5
-    mvn_args.append("org.fedoraproject.xmvn:xmvn-mojo:builddep")
38591f5
+        if options.gradle:
38591f5
+            # Automatic javadoc generation for Gradle is not yet implemented in XMvn
38591f5
+            pass
38591f5
+        else:
38591f5
+            mvn_args.append("org.apache.maven.plugins:maven-javadoc-plugin:aggregate")
38591f5
+
38591f5
+    if not options.gradle:
38591f5
+        # Build dependency generation for Gradle is not yet implemented in XMvn
38591f5
+        mvn_args.append("org.fedoraproject.xmvn:xmvn-mojo:builddep")
38591f5
 
38591f5
     if options.goal_after:
38591f5
         mvn_args.extend(options.goal_after)
38591f5
diff --git a/macros.d/macros.fjava b/macros.d/macros.fjava
38591f5
index bb419ae..75969b1 100644
38591f5
--- a/macros.d/macros.fjava
38591f5
+++ b/macros.d/macros.fjava
38591f5
@@ -134,6 +134,18 @@
38591f5
 %mvn_build %{pyinterpreter} %{javadir}-utils/mvn_build.py %{?xmvn_bootstrap: -b} %{?_without_javadoc: -j $(> .mfiles-javadoc)}%{?_without_tests: -f}
38591f5
 
38591f5
 
38591f5
+# %gradle_build - build Gradle project
38591f5
+#
38591f5
+# Usage: %mvn_build [options]
38591f5
+#
38591f5
+# This macro causes Gradle project to be built (usually compiled and
38591f5
+# packaged). It is intended to be placed in %build section of spec file.
38591f5
+#
38591f5
+# For summary of accepted options execute `mvn-build --help` command.
38591f5
+#
38591f5
+%gradle_build %{pyinterpreter} %{javadir}-utils/mvn_build.py --gradle %{?xmvn_bootstrap: -b} %{?_without_javadoc: -j $(> .mfiles-javadoc)}%{?_without_tests: -f}
38591f5
+
38591f5
+
38591f5
 # %mvn_install - install Maven project
38591f5
 #
38591f5
 # Usage: %mvn_install
38591f5
diff --git a/test/data/mvn_build/all_out b/test/data/mvn_build/all_out
38591f5
index 9c34337..a4f4177 100644
38591f5
--- a/test/data/mvn_build/all_out
38591f5
+++ b/test/data/mvn_build/all_out
38591f5
@@ -1 +1 @@
38591f5
---batch-mode --offline -X -Dorg.slf4j.simpleLogger.log.org.fedoraproject.xmvn=debug -Dmaven.test.skip=true package org.fedoraproject.xmvn:xmvn-mojo:builddep
38591f5
+--batch-mode --offline --debug -Dorg.slf4j.simpleLogger.log.org.fedoraproject.xmvn=debug -Dmaven.test.skip=true package org.fedoraproject.xmvn:xmvn-mojo:builddep
38591f5
diff --git a/test/data/mvn_build/debug_out b/test/data/mvn_build/debug_out
38591f5
index 170e108..3b0f6d4 100644
38591f5
--- a/test/data/mvn_build/debug_out
38591f5
+++ b/test/data/mvn_build/debug_out
38591f5
@@ -1 +1 @@
38591f5
---batch-mode --offline -X -Dorg.slf4j.simpleLogger.log.org.fedoraproject.xmvn=debug verify org.fedoraproject.xmvn:xmvn-mojo:install org.apache.maven.plugins:maven-javadoc-plugin:aggregate org.fedoraproject.xmvn:xmvn-mojo:builddep
38591f5
+--batch-mode --offline --debug -Dorg.slf4j.simpleLogger.log.org.fedoraproject.xmvn=debug verify org.fedoraproject.xmvn:xmvn-mojo:install org.apache.maven.plugins:maven-javadoc-plugin:aggregate org.fedoraproject.xmvn:xmvn-mojo:builddep
38591f5
-- 
01250cc
2.9.4
38591f5