public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...
@ 2019-10-30 17:43 Miroslav Šulc
  0 siblings, 0 replies; 4+ messages in thread
From: Miroslav Šulc @ 2019-10-30 17:43 UTC (permalink / raw
  To: gentoo-commits

commit:     93acbb64ecbc2d5da73c96033d047209b3f74963
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 30 17:42:12 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Wed Oct 30 17:43:31 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=93acbb64

reformatted and improved style

Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 .../gentoo/java/ebuilder/maven/MavenParser.java    |  5 +++--
 .../gentoo/java/ebuilder/portage/MavenVersion.java | 22 ++++++++++++++--------
 .../java/ebuilder/portage/PortageParser.java       | 12 ++++++------
 3 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
index 4ab15e9..2e81541 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
@@ -529,8 +529,9 @@ public class MavenParser {
                         scope = reader.getElementText();
                         break;
                     case "version":
-                        version = reader.getElementText().replace("-SNAPSHOT",
-                                "");
+                        version = reader.getElementText().replace(
+                                "-SNAPSHOT", "");
+
 			/* crazy version from
 			 * org.khronos:opengl-api:gl1.1-android-2.1_r1 */
                         // TODO: this should go to a file mapping crazy versions

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
index e2bf46f..657d3c4 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -18,7 +18,8 @@ public class MavenVersion implements Comparable<MavenVersion> {
     /**
      * Pattern for parsing maven version range.
      */
-    private static final Pattern p_VERSION_RANGE = Pattern.compile("\\[.*, ?(.*?)\\]");
+    private static final Pattern PATTERN_VERSION_RANGE
+            = Pattern.compile("\\[.*, ?(.*?)\\]");
     /**
      * Incremental version number.
      */
@@ -41,16 +42,21 @@ public class MavenVersion implements Comparable<MavenVersion> {
      *
      * @param version version string
      */
-    public MavenVersion(String version) {
-	Matcher m_RANGE = p_VERSION_RANGE.matcher(version);
-        if (m_RANGE.matches()) {
-            version = m_RANGE.group(1);
+    public MavenVersion(final String version) {
+        final Matcher matcherRange = PATTERN_VERSION_RANGE.matcher(version);
+        final String useVersion;
+
+        if (matcherRange.matches()) {
+            useVersion = matcherRange.group(1);
+        } else {
+            useVersion = version;
         }
-        final Matcher matcher = PATTERN_VERSION.matcher(version);
+
+        final Matcher matcher = PATTERN_VERSION.matcher(useVersion);
 
         if (!matcher.matches()) {
-            throw new RuntimeException("Maven version " + version
-                    + " is not valid.");
+            throw new RuntimeException(
+                    "Maven version " + useVersion + " is not valid.");
         }
 
         majorVersion = Integer.parseInt(matcher.group(1), 10);

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
index aa8a14b..095e001 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -29,6 +29,10 @@ public class PortageParser {
      * Cache version.
      */
     public static final String CACHE_VERSION = "1.0";
+    /**
+     * Current ant utilities eclass name.
+     */
+    private static final String ECLASS_ANT_TASKS = "ant-tasks";
     /**
      * Current java package eclass name.
      */
@@ -45,10 +49,6 @@ public class PortageParser {
      * Current java utilities eclass name.
      */
     private static final String ECLASS_JAVA_UTILS = "java-utils-2";
-    /**
-     * Current ant utilities eclass name.
-     */
-    private static final String ECLASS_ANT_TASKS = "ant-tasks";
     /**
      * Pattern for parsing SLOT with bash substring.
      */
@@ -130,8 +130,8 @@ public class PortageParser {
             return ECLASS_JAVA_PKG_SIMPLE;
         } else if (inheritLine.contains(ECLASS_JAVA_UTILS)) {
             return ECLASS_JAVA_UTILS;
-	} else if (inheritLine.contains(ECLASS_ANT_TASKS)) {
-	    return ECLASS_ANT_TASKS;
+        } else if (inheritLine.contains(ECLASS_ANT_TASKS)) {
+            return ECLASS_ANT_TASKS;
         } else {
             return null;
         }


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...
@ 2019-11-01 19:41 Miroslav Šulc
  0 siblings, 0 replies; 4+ messages in thread
From: Miroslav Šulc @ 2019-11-01 19:41 UTC (permalink / raw
  To: gentoo-commits

commit:     889bcaf2504570a64c9b0a8e1f22b092a83e0c0c
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Fri Nov  1 19:41:43 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Fri Nov  1 19:41:43 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=889bcaf2

added parsing of ebuild file name components

Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 src/main/java/org/gentoo/java/ebuilder/Config.java | 66 ++++++++++++++++++++++
 src/main/java/org/gentoo/java/ebuilder/Main.java   | 30 ++++++++++
 .../java/ebuilder/portage/PortageParser.java       | 45 +++++++++++++++
 3 files changed, 141 insertions(+)

diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java
index 4127266..9bc98f8 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java
@@ -28,6 +28,18 @@ public class Config {
      * Path to ebuild file that should be generated.
      */
     private Path ebuild;
+    /**
+     * Ebuild name.
+     */
+    private String ebuildName;
+    /**
+     * Ebuild version excluding suffix.
+     */
+    private String ebuildVersion;
+    /**
+     * Ebuild version suffix (-r).
+     */
+    private String ebuildVersionSuffix;
     /**
      * Writer for errors.
      */
@@ -144,6 +156,60 @@ public class Config {
         this.ebuild = ebuild;
     }
 
+    /**
+     * Getter for {@link #ebuildName}.
+     *
+     * @return {@link #ebuildName}
+     */
+    public String getEbuildName() {
+        return ebuildName;
+    }
+
+    /**
+     * Setter for {@link #ebuildName}.
+     *
+     * @param ebuildName {@link #ebuildName}
+     */
+    public void setEbuildName(final String ebuildName) {
+        this.ebuildName = ebuildName;
+    }
+
+    /**
+     * Getter for {@link #ebuildVersion}.
+     *
+     * @return {@link #ebuildVersion}
+     */
+    public String getEbuildVersion() {
+        return ebuildVersion;
+    }
+
+    /**
+     * Setter for {@link #ebuildVersion}.
+     *
+     * @param ebuildVersion {@link #ebuildVersion}
+     */
+    public void setEbuildVersion(final String ebuildVersion) {
+        this.ebuildVersion = ebuildVersion;
+    }
+
+    /**
+     * Getter for {@link #ebuildVersionSuffix}.
+     *
+     * @return {@link #ebuildVersionSuffix}
+     */
+    public String getEbuildVersionSuffix() {
+        return ebuildVersionSuffix;
+    }
+
+    /**
+     * Setter for {@link #ebuildVersionSuffix}.
+     *
+     * @param ebuildVersionSuffix {@link #ebuildVersionSuffix}
+     */
+    public void setEbuildVersionSuffix(final String ebuildVersionSuffix) {
+        this.ebuildVersionSuffix = ebuildVersionSuffix;
+    }
+
     /**
      * Getter for {@link #errorWriter}.
      *

diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java
index 5921ea1..6c5cd13 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java
@@ -9,6 +9,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.nio.file.Paths;
 import java.util.List;
+import java.util.Map;
 import org.gentoo.java.ebuilder.maven.MavenCache;
 import org.gentoo.java.ebuilder.maven.MavenEbuilder;
 import org.gentoo.java.ebuilder.maven.MavenParser;
@@ -159,6 +160,8 @@ public class Main {
      * @param config application configuration
      */
     private static void generateEbuild(final Config config) {
+        parseEbuildName(config);
+
         final MavenCache mavenCache = new MavenCache();
         mavenCache.loadCache(config);
 
@@ -253,6 +256,33 @@ public class Main {
         }
     }
 
+    /**
+     * Parses ebuild file name into its components.
+     *
+     * @param config app configuration containing ebuild information
+     */
+    private static void parseEbuildName(final Config config) {
+        final Map<String, String> result;
+
+        try {
+            result = PortageParser.parseEbuildName(
+                    config.getEbuild().getFileName().toString());
+
+            config.setEbuildName(result.get("name"));
+            config.setEbuildVersion(result.get("version"));
+            config.setEbuildVersionSuffix(result.get("suffix"));
+
+            config.getStdoutWriter().println("Parsed ebuild file name - name: "
+                    + config.getEbuildName() + " version: "
+                    + config.getEbuildVersion() + " suffix: "
+                    + config.getEbuildVersionSuffix());
+        } catch (final IllegalArgumentException ex) {
+            config.getStdoutWriter().println("Cannot parse ebuild file name");
+
+            Runtime.getRuntime().exit(1);
+        }
+    }
+
     /**
      * Prints application usage information.
      */

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
index d504b2c..a85fe6c 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -49,6 +49,11 @@ public class PortageParser {
      * Current java utilities eclass name.
      */
     private static final String ECLASS_JAVA_UTILS = "java-utils-2";
+    /**
+     * Pattern for parsing ebuild file name.
+     */
+    private static final Pattern PATTERN_EBUILD_NAME = Pattern.compile(
+            "^(\\S+?)-([^-]+)(?:-(r\\d+))?\\.ebuild$");
     /**
      * Pattern for parsing SLOT with bash substring.
      */
@@ -67,6 +72,46 @@ public class PortageParser {
      */
     private static final Pattern PATTERN_VARIABLE = Pattern.compile(
             "^(\\S+?)=(.*)$");
+
+    /**
+     * Parses ebuild name into map. Keys are:
+     * <dl>
+     * <dt>name</dt>
+     * <dd>ebuild name</dd>
+     * <dt>version</dt>
+     * <dd>ebuild version</dd>
+     * <dt>suffix</dt>
+     * <dd>ebuild version suffix (-r)</dd>
+     * </dl>
+     * If suffix is not present in ebuild name, it is not put into the map
+     * aswell.
+     *
+     * @param name ebuild file name
+     *
+     * @return map of parsed values
+     *
+     * @throws IllegalArgumentException Thrown if the ebuild file name is not
+     *                                  valid or it cannot be parsed.
+     */
+    public static Map<String, String> parseEbuildName(final String name) {
+        final Matcher matcher = PATTERN_EBUILD_NAME.matcher(name);
+
+        if (!matcher.matches()) {
+            throw new IllegalArgumentException("Ebuild file name is not valid "
+                    + "or parser does not support this ebuild name format");
+        }
+
+        final Map<String, String> result = new HashMap<>(3);
+        result.put("name", matcher.group(1));
+        result.put("version", matcher.group(2));
+
+        if (matcher.groupCount() > 2) {
+            result.put("suffix", matcher.group(3));
+        }
+
+        return result;
+    }
+
     /**
      * List of cache items. This list is populated during parsing the tree.
      */


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...
@ 2019-11-01 20:21 Miroslav Šulc
  0 siblings, 0 replies; 4+ messages in thread
From: Miroslav Šulc @ 2019-11-01 20:21 UTC (permalink / raw
  To: gentoo-commits

commit:     c0c86c63b7847b9d10d53c51e182df3c53263e4f
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Fri Nov  1 20:21:00 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Fri Nov  1 20:21:00 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c0c86c63

enhanced maven cache so that it also contains main java eclass + added java eclass stats

Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 .../org/gentoo/java/ebuilder/maven/MavenCache.java |  5 +-
 .../gentoo/java/ebuilder/portage/CacheItem.java    | 29 ++++++--
 .../java/ebuilder/portage/PortageParser.java       | 84 +++++++++++++++++-----
 3 files changed, 96 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
index 0aa33c5..4e8767e 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java
@@ -102,7 +102,10 @@ public class MavenCache {
                 new FileReader(config.getCacheFile().toFile()))) {
             String line = reader.readLine();
 
-            if (!PortageParser.CACHE_VERSION.equals(line)) {
+            if ("1.0".equals(line)) {
+                config.getStdoutWriter().print("(warning: format is not "
+                        + "up-to-date, consider refreshing the cache)...");
+            } else if (!PortageParser.CACHE_VERSION.equals(line)) {
                 config.getErrorWriter().println("ERROR: Unsupported version of "
                         + "cache. Please refresh the cache using command line "
                         + "switch --refresh-cache.");

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
index 17bce6b..feff43d 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
@@ -19,6 +19,10 @@ public class CacheItem {
      * Maven group id.
      */
     private final String groupId;
+    /**
+     * Main Java eclass inherited.
+     */
+    private final String javaEclass;
     /**
      * Maven version (of package jar).
      */
@@ -56,11 +60,12 @@ public class CacheItem {
      * @param groupId      {@link #groupId}
      * @param artifactId   {@link #artifactId}
      * @param mavenVersion {@link #mavenVersion}
+     * @param javaEclass   {@link #javaEclass}
      */
     public CacheItem(final String category, final String pkg,
             final String version, final String slot, final String useFlag,
             final String groupId, final String artifactId,
-            final String mavenVersion) {
+            final String mavenVersion, final String javaEclass) {
         this.category = category;
         this.pkg = pkg;
         this.version = version;
@@ -69,6 +74,7 @@ public class CacheItem {
         this.groupId = groupId;
         this.artifactId = artifactId;
         this.mavenVersion = mavenVersion;
+        this.javaEclass = javaEclass;
 
         parsedMavenVersion = mavenVersion == null
                 ? null : new MavenVersion(mavenVersion);
@@ -95,14 +101,20 @@ public class CacheItem {
             }
 
             if (parts.length > 5) {
-                groupId = parts[5];
-                artifactId = parts[6];
-                mavenVersion = parts[7];
+                groupId = parts[5].isEmpty() ? null : parts[5];
+                artifactId = parts[6].isEmpty() ? null : parts[6];
+                mavenVersion = parts[7].isEmpty() ? null : parts[7];
             } else {
                 groupId = null;
                 artifactId = null;
                 mavenVersion = null;
             }
+
+            if (parts.length > 8) {
+                javaEclass = parts[8].isEmpty() ? null : parts[8];
+            } else {
+                javaEclass = null;
+            }
         } catch (final ArrayIndexOutOfBoundsException ex) {
             throw new RuntimeException("Failed to parse cache line: " + line,
                     ex);
@@ -139,6 +151,15 @@ public class CacheItem {
         return groupId;
     }
 
+    /**
+     * Getter for {@link #javaEclass}.
+     *
+     * @return {@link #javaEclass}
+     */
+    public String getJavaEclass() {
+        return javaEclass;
+    }
+
     /**
      * Getter for {@link #mavenVersion}.
      *

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
index a85fe6c..8d49411 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -28,7 +28,7 @@ public class PortageParser {
     /**
      * Cache version.
      */
-    public static final String CACHE_VERSION = "1.0";
+    public static final String CACHE_VERSION = "1.1";
     /**
      * Current ant utilities eclass name.
      */
@@ -116,6 +116,29 @@ public class PortageParser {
      * List of cache items. This list is populated during parsing the tree.
      */
     private final List<CacheItem> cacheItems = new ArrayList<>(40_000);
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_ANT_TASKS} as the main eclass.
+     */
+    private int eclassAntTasksCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG} as the main eclass.
+     */
+    private int eclassJavaPkgCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_OPT} as the main
+     * eclass.
+     */
+    private int eclassJavaPkgOptCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_SIMPLE} as the main
+     * eclass.
+     */
+    private int eclassJavaPkgSimpleCount;
+    /**
+     * Count of ebuilds inheriting {@link #ECLASS_JAVA_UTILS} as the main
+     * eclass.
+     */
+    private int eclassJavaUtilsCount;
     /**
      * Number of processed categories. Updated during parsing the tree.
      */
@@ -141,6 +164,11 @@ public class PortageParser {
         processedCategories = 0;
         processedPackages = 0;
         processedEbuilds = 0;
+        eclassAntTasksCount = 0;
+        eclassJavaPkgCount = 0;
+        eclassJavaPkgOptCount = 0;
+        eclassJavaPkgSimpleCount = 0;
+        eclassJavaUtilsCount = 0;
 
         config.getStdoutWriter().println("Parsing portage tree @ "
                 + config.getPortageTree() + " ...");
@@ -150,9 +178,14 @@ public class PortageParser {
 
         config.getStdoutWriter().println(MessageFormat.format(
                 "Parsed {0} categories {1} packages {2} ebuilds in {3}ms and "
-                + "found {4} java ebuilds",
+                + "found {4} java ebuilds (main java eclass: {5} = {6}, "
+                + "{7} = {8}, {9} = {10}, {11} = {12}, {13} = {14})",
                 processedCategories, processedPackages, processedEbuilds,
-                endTimestamp - startTimestamp, cacheItems.size()));
+                endTimestamp - startTimestamp, cacheItems.size(),
+                ECLASS_ANT_TASKS, eclassAntTasksCount, ECLASS_JAVA_PKG,
+                eclassJavaPkgCount, ECLASS_JAVA_PKG_OPT, eclassJavaPkgOptCount,
+                ECLASS_JAVA_PKG_SIMPLE, eclassJavaPkgSimpleCount,
+                ECLASS_JAVA_UTILS, eclassJavaUtilsCount));
 
         config.getStdoutWriter().print("Writing cache file...");
         writeCacheFile(config);
@@ -325,7 +358,25 @@ public class PortageParser {
         }
 
         cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
-                groupId, artifactId, mavenVersion));
+                groupId, artifactId, mavenVersion, eclass));
+
+        switch (eclass) {
+            case ECLASS_ANT_TASKS:
+                eclassAntTasksCount++;
+                break;
+            case ECLASS_JAVA_PKG:
+                eclassJavaPkgCount++;
+                break;
+            case ECLASS_JAVA_PKG_OPT:
+                eclassJavaPkgOptCount++;
+                break;
+            case ECLASS_JAVA_PKG_SIMPLE:
+                eclassJavaPkgSimpleCount++;
+                break;
+            case ECLASS_JAVA_UTILS:
+                eclassJavaUtilsCount++;
+                break;
+        }
     }
 
     /**
@@ -437,7 +488,7 @@ public class PortageParser {
                 Charset.forName("UTF-8"))) {
             writer.write(CACHE_VERSION);
             writer.write("\n#category:pkg:version:slot:useFlag:groupId:"
-                    + "artifactId:mavenVersion\n");
+                    + "artifactId:mavenVersion:javaEclass\n");
 
             for (final CacheItem cacheItem : cacheItems) {
                 writer.write(cacheItem.getCategory());
@@ -450,18 +501,17 @@ public class PortageParser {
                 writer.write(':');
                 writer.write(cacheItem.getUseFlag() == null
                         ? "" : cacheItem.getUseFlag());
-
-                if (cacheItem.getGroupId() != null) {
-                    writer.write(':');
-                    writer.write(cacheItem.getGroupId());
-                    writer.write(':');
-                    writer.write(cacheItem.getArtifactId());
-
-                    if (cacheItem.getMavenVersion() != null) {
-                        writer.write(':');
-                        writer.write(cacheItem.getMavenVersion());
-                    }
-                }
+                writer.write(':');
+                writer.write(cacheItem.getGroupId() == null
+                        ? "" : cacheItem.getGroupId());
+                writer.write(':');
+                writer.write(cacheItem.getArtifactId() == null
+                        ? "" : cacheItem.getArtifactId());
+                writer.write(':');
+                writer.write(cacheItem.getMavenVersion() == null
+                        ? "" : cacheItem.getMavenVersion());
+                writer.write(':');
+                writer.write(cacheItem.getJavaEclass());
 
                 writer.write('\n');
             }


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, ...
@ 2020-07-12 15:58 Miroslav Šulc
  0 siblings, 0 replies; 4+ messages in thread
From: Miroslav Šulc @ 2020-07-12 15:58 UTC (permalink / raw
  To: gentoo-commits

commit:     40ff29ff64cb6cf411682bfeca58817a24bc1e05
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Sat Jul 11 15:02:22 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Sat Jul 11 15:02:22 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=40ff29ff

add more command-line switches

--binjar-uri, which specifies uri of the pre-compiled jar

support installing binary maven packge
support future src_test(), which will
compare Gentoo-compiled jars and Maven
Central distributed jars

Signed-off-by: zongyu <zzy2529420793 <AT> gmail.com>

 src/main/java/org/gentoo/java/ebuilder/Config.java | 36 ++++++++++++++++
 src/main/java/org/gentoo/java/ebuilder/Main.java   | 13 +++++-
 .../gentoo/java/ebuilder/maven/MavenEbuilder.java  | 50 ++++++++++++++++++++--
 .../java/ebuilder/portage/PortageParser.java       |  4 +-
 4 files changed, 97 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java
index 53af30f..27dbc7c 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Config.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Config.java
@@ -21,6 +21,14 @@ public class Config {
      */
     private Path cacheFile = Paths.get(System.getProperty("user.home"),
             ".java-ebuilder/cache");
+    /**
+     * URI that goes to pre-compiled Maven Jar.
+     */
+    private URI binjarUri;
+    /**
+     * whether binjarUri is set.
+     */
+    private boolean binjarUriExists;
     /**
      * URI that goes to SRC_URI.
      */
@@ -134,6 +142,34 @@ public class Config {
         this.cacheFile = cacheFile;
     }
 
+    /**
+     * Getter for {@link #binjarUri}.
+     *
+     * @return {@link #binjarUri}
+     */
+    public URI getBinjarUri() {
+        return binjarUri;
+    }
+
+    /**
+     * Getter for {@link #binjarUriExists}.
+     *
+     * @return {@link #binjarUriExists}
+     */
+    public boolean hasBinjarUri() {
+        return binjarUriExists;
+    }
+
+    /**
+     * Setter for {@link #binjarUri}.
+     *
+     * @param binjarUri {@link #binjarUri}
+     */
+    public void setBinjarUri(final URI binjarUri) {
+        this.binjarUri = binjarUri;
+        this.binjarUriExists = true;
+    }
+
     /**
      * Getter for {@link #downloadUri}.
      *

diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java
index 0b4eff6..6843af7 100644
--- a/src/main/java/org/gentoo/java/ebuilder/Main.java
+++ b/src/main/java/org/gentoo/java/ebuilder/Main.java
@@ -213,6 +213,17 @@ public class Main {
             final String arg = args[i];
 
             switch (arg) {
+                case "--binjar-uri":
+                    i++;
+
+                    try {
+                        config.setBinjarUri(new URI(args[i]));
+                    } catch (final URISyntaxException ex) {
+                        config.getErrorWriter().println("ERROR: BINJAR_URI " + args[i]
+                                + " is not valid.");
+                    }
+
+                    break;
                 case "--download-uri":
                 case "-u":
                     i++;
@@ -220,7 +231,7 @@ public class Main {
                     try {
                         config.setDownloadUri(new URI(args[i]));
                     } catch (final URISyntaxException ex) {
-                        config.getErrorWriter().println("ERROR: URI " + args[i]
+                        config.getErrorWriter().println("ERROR: SRC_URI " + args[i]
                                 + " is not valid.");
                     }
 

diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
index 48920e5..08a5f99 100644
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
@@ -235,6 +235,27 @@ public class MavenEbuilder {
         return srcUri + " -> " + "${P}" + matcher.group(1);
     }
 
+    /**
+     * Rename binjar file to ${P}-bin.ext
+     *
+     * @param binjarUri binjar URI
+     *
+     * @return updated binjar URI
+     */
+    private String improveBinjarUri(final String binjarUri) {
+
+        final Matcher matcher = PATTERN_TARBALL_EXTENSION.matcher(binjarUri);
+
+        /**
+         * We do not know how to get the extension so assume it will be jar
+         */
+        if (!matcher.matches()) {
+            return binjarUri + " -> " + "${P}-bin.jar";
+        }
+
+        return binjarUri + " -> " + "${P}-bin" + matcher.group(1);
+    }
+
     /**
      * If the tarball name does not match pattern ${P}-test.ext then we will update
      * it to store the tarball as ${P}-test.ext.
@@ -507,6 +528,10 @@ public class MavenEbuilder {
                 mavenProjects, config.getForceMinJavaVersion()));
         writer.println(":*");
 
+        if (config.hasBinjarUri()) {
+            writer.println("\t!binary? (");
+        }
+
         if (hasCDepend) {
             writer.print("${CDEPEND}");
         }
@@ -519,6 +544,11 @@ public class MavenEbuilder {
             });
         }
 
+        if (config.hasBinjarUri()) {
+            writer.println("\t)");
+        }
+
+
         writer.println('"');
     }
 
@@ -592,6 +622,10 @@ public class MavenEbuilder {
             writer.print(" test");
         }
 
+        if (mavenProject.hasBinjarUri()) {
+            writer.print(" binary");
+        }
+
         writer.println('"');
         writer.println();
         writer.println("inherit java-pkg-2 java-pkg-simple");
@@ -656,6 +690,10 @@ public class MavenEbuilder {
         writer.print("SRC_URI=\"");
         writer.print(improveSrcUri(
                 replaceWithVars(config.getDownloadUri().toString(), config)));
+        if (config.hasBinjarUri()) {
+            writer.print("\n\t" + improveBinjarUri(
+                    replaceWithVars(config.getBinjarUri().toString(), config)));
+        }
         writer.println('"');
 
         writer.print("LICENSE=\"");
@@ -813,7 +851,7 @@ public class MavenEbuilder {
         }
 
         if (config.isFromMavenCentral()) {
-            writeMavenUnpack(mavenProject, writer);
+            writeMavenUnpack(config, mavenProject, writer);
         }
 
     }
@@ -833,16 +871,22 @@ public class MavenEbuilder {
      *
      * @param writer ebuild writer
      */
-    private void writeMavenUnpack(final MavenProject mavenProject,
-            final PrintWriter writer) {
+    private void writeMavenUnpack(final Config config,
+            final MavenProject mavenProject, final PrintWriter writer) {
         writer.println();
         writer.println("src_unpack() {");
         writer.println("\tmkdir -p ${S}/${JAVA_SRC_DIR}");
         writer.println("\tunzip ${DISTDIR}/${P}.jar -d ${S}/${JAVA_SRC_DIR} || die");
+
         if (mavenProject.hasTests()) {
             writer.println("\tmkdir -p ${JAVA_TEST_SRC_DIR}");
             writer.println("\tunzip ${DISTDIR}/${P}-test.jar -d ${S}/${JAVA_TEST_SRC_DIR} || die");
         }
+
+	if (config.hasBinjarUri()) {
+            writer.println("use binary && cp ${DISTDIR}/${P}-bin.jar ${S}/${PN}.jar || die \"failed to copy binary jar\"");
+        }
+
         writer.println("}");
     }
 }

diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
index 96e0c06..b918f51 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -302,8 +302,8 @@ public class PortageParser {
                     } else if (line.startsWith("MAVEN_ID=")) {
                         mavenId = line.substring("MAVEN_ID=".length()).
                                 replace("\"", "");
-                    } else if (line.startsWith("MAVEN_PROVIDE=")) {
-                        mavenProvide = line.substring("MAVEN_PROVIDE=".length()).
+                    } else if (line.startsWith("MAVEN_PROVIDES=")) {
+                        mavenProvide = line.substring("MAVEN_PROVIDES=".length()).
 				replace("\"", "").split(" ");
                     }
                 }


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-07-12 15:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-01 19:41 [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/, Miroslav Šulc
  -- strict thread matches above, loose matches on Subject: below --
2020-07-12 15:58 Miroslav Šulc
2019-11-01 20:21 Miroslav Šulc
2019-10-30 17:43 Miroslav Šulc

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox