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:35 Michał Górny
  0 siblings, 0 replies; 12+ messages in thread
From: Michał Górny @ 2019-10-30 17:35 UTC (permalink / raw
  To: gentoo-commits

commit:     a8b7bf3afb383ba515d32e921dd4412b5991bd8e
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  9 10:59:42 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  9 11:09:39 2017 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=a8b7bf3a

MavenVersion.java: parse version range.

  http://maven.apache.org/components/enforcer/enforcer-rules/versionRanges.html
  https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm

 .../java/org/gentoo/java/ebuilder/portage/MavenVersion.java    | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

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 5192abc..e2bf46f 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -15,6 +15,10 @@ public class MavenVersion implements Comparable<MavenVersion> {
      */
     private static final Pattern PATTERN_VERSION = Pattern.compile(
             "^v?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-](.*))?$");
+    /**
+     * Pattern for parsing maven version range.
+     */
+    private static final Pattern p_VERSION_RANGE = Pattern.compile("\\[.*, ?(.*?)\\]");
     /**
      * Incremental version number.
      */
@@ -37,7 +41,11 @@ public class MavenVersion implements Comparable<MavenVersion> {
      *
      * @param version version string
      */
-    public MavenVersion(final String version) {
+    public MavenVersion(String version) {
+	Matcher m_RANGE = p_VERSION_RANGE.matcher(version);
+        if (m_RANGE.matches()) {
+            version = m_RANGE.group(1);
+        }
         final Matcher matcher = PATTERN_VERSION.matcher(version);
 
         if (!matcher.matches()) {


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

* [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/portage/
@ 2019-10-30 17:35 Michał Górny
  0 siblings, 0 replies; 12+ messages in thread
From: Michał Górny @ 2019-10-30 17:35 UTC (permalink / raw
  To: gentoo-commits

commit:     b7d04de03053294019446924ba66f6f3bb45f833
Author:     Benda Xu <heroxbd <AT> gentoo <DOT> org>
AuthorDate: Mon Jan  9 04:10:39 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan  9 04:10:39 2017 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=b7d04de0

MavenVersion.java: maven verion tricks.

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 e603943..5192abc 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -14,7 +14,7 @@ public class MavenVersion implements Comparable<MavenVersion> {
      * Pattern for parsing maven version number.
      */
     private static final Pattern PATTERN_VERSION = Pattern.compile(
-            "^(\\d+)(?:\\.(\\d+))?(?:[\\.b](\\d+))?(?:[\\.-](.*))?$");
+            "^v?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-](.*))?$");
     /**
      * Incremental version number.
      */


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

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

commit:     54cf529486ad0702ba76e9269552c53a817075fa
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 30 19:26:01 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Wed Oct 30 19:26:01 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=54cf5294

added fix to avoid parsing directories that are not package directories

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

 src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java | 4 ++++
 1 file changed, 4 insertions(+)

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 12422c2..6b0ae3c 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -292,6 +292,10 @@ public class PortageParser {
                 (final File pathname) -> pathname.isFile()
                 && pathname.getName().endsWith(".ebuild"));
 
+        if (ebuilds == null) {
+            return;
+        }
+
         for (final File ebuild : ebuilds) {
             parseEbuild(ebuild);
             processedEbuilds++;


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

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

commit:     9f694b0493877d9bf6f86b8be26f9e98a3d80eb4
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  3 13:54:04 2019 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Sun Nov  3 13:54:04 2019 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=9f694b04

changed handling of java eclasses

1) now parsing all java eclasses
2) all java eclasses are written to the cache file
3) usage of each java eclass is written to the output when regreshing cache

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

 .../gentoo/java/ebuilder/portage/CacheItem.java    |  30 ++--
 .../java/ebuilder/portage/PortageParser.java       | 154 +++++++++------------
 2 files changed, 86 insertions(+), 98 deletions(-)

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 feff43d..e48177f 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java
@@ -1,5 +1,10 @@
 package org.gentoo.java.ebuilder.portage;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Container for cache item information.
  *
@@ -20,9 +25,9 @@ public class CacheItem {
      */
     private final String groupId;
     /**
-     * Main Java eclass inherited.
+     * List of inherited java eclasses, in the order as they are inherited.
      */
-    private final String javaEclass;
+    private final List<String> javaEclasses;
     /**
      * Maven version (of package jar).
      */
@@ -60,12 +65,12 @@ public class CacheItem {
      * @param groupId      {@link #groupId}
      * @param artifactId   {@link #artifactId}
      * @param mavenVersion {@link #mavenVersion}
-     * @param javaEclass   {@link #javaEclass}
+     * @param javaEclasses {@link #javaEclasses}
      */
     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 javaEclass) {
+            final String mavenVersion, final List<String> javaEclasses) {
         this.category = category;
         this.pkg = pkg;
         this.version = version;
@@ -74,7 +79,8 @@ public class CacheItem {
         this.groupId = groupId;
         this.artifactId = artifactId;
         this.mavenVersion = mavenVersion;
-        this.javaEclass = javaEclass;
+        this.javaEclasses
+                = Collections.unmodifiableList(new ArrayList<>(javaEclasses));
 
         parsedMavenVersion = mavenVersion == null
                 ? null : new MavenVersion(mavenVersion);
@@ -110,10 +116,10 @@ public class CacheItem {
                 mavenVersion = null;
             }
 
-            if (parts.length > 8) {
-                javaEclass = parts[8].isEmpty() ? null : parts[8];
+            if (parts.length > 8 && !parts[0].isEmpty()) {
+                javaEclasses = Arrays.asList(parts[8].split(","));
             } else {
-                javaEclass = null;
+                javaEclasses = null;
             }
         } catch (final ArrayIndexOutOfBoundsException ex) {
             throw new RuntimeException("Failed to parse cache line: " + line,
@@ -152,12 +158,12 @@ public class CacheItem {
     }
 
     /**
-     * Getter for {@link #javaEclass}.
+     * Getter for {@link #javaEclasses}.
      *
-     * @return {@link #javaEclass}
+     * @return {@link #javaEclasses}
      */
-    public String getJavaEclass() {
-        return javaEclass;
+    public List<String> getJavaEclasses() {
+        return Collections.unmodifiableList(javaEclasses);
     }
 
     /**

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 8d49411..9da0fb7 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -11,11 +11,14 @@ import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 import java.text.MessageFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 import org.gentoo.java.ebuilder.Config;
 
 /**
@@ -33,22 +36,10 @@ public class PortageParser {
      * Current ant utilities eclass name.
      */
     private static final String ECLASS_ANT_TASKS = "ant-tasks";
-    /**
-     * Current java package eclass name.
-     */
-    private static final String ECLASS_JAVA_PKG = "java-pkg-2";
     /**
      * Current java optional package eclass name.
      */
     private static final String ECLASS_JAVA_PKG_OPT = "java-pkg-opt-2";
-    /**
-     * Current java simple package eclass name.
-     */
-    private static final String ECLASS_JAVA_PKG_SIMPLE = "java-pkg-simple";
-    /**
-     * Current java utilities eclass name.
-     */
-    private static final String ECLASS_JAVA_UTILS = "java-utils-2";
     /**
      * Pattern for parsing ebuild file name.
      */
@@ -117,28 +108,9 @@ public class PortageParser {
      */
     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.
+     * Used for cellecting counts of java eclasses.
      */
-    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;
+    private final Map<String, Integer> eclassesCounts = new HashMap<>(10);
     /**
      * Number of processed categories. Updated during parsing the tree.
      */
@@ -164,11 +136,7 @@ public class PortageParser {
         processedCategories = 0;
         processedPackages = 0;
         processedEbuilds = 0;
-        eclassAntTasksCount = 0;
-        eclassJavaPkgCount = 0;
-        eclassJavaPkgOptCount = 0;
-        eclassJavaPkgSimpleCount = 0;
-        eclassJavaUtilsCount = 0;
+        eclassesCounts.clear();
 
         config.getStdoutWriter().println("Parsing portage tree @ "
                 + config.getPortageTree() + " ...");
@@ -176,43 +144,69 @@ public class PortageParser {
 
         final long endTimestamp = System.currentTimeMillis();
 
-        config.getStdoutWriter().println(MessageFormat.format(
+        config.getStdoutWriter().print(MessageFormat.format(
                 "Parsed {0} categories {1} packages {2} ebuilds in {3}ms and "
-                + "found {4} java ebuilds (main java eclass: {5} = {6}, "
-                + "{7} = {8}, {9} = {10}, {11} = {12}, {13} = {14})",
+                + "found {4} java ebuilds",
                 processedCategories, processedPackages, processedEbuilds,
-                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));
+                endTimestamp - startTimestamp, cacheItems.size()));
+
+        final List<String> sortedEclasses
+                = new ArrayList<>(eclassesCounts.keySet());
+        Collections.sort(sortedEclasses);
+
+        config.getStdoutWriter().print((" (used java eclasses: "));
+
+        for (int i = 0; i < sortedEclasses.size(); i++) {
+            if (i > 0) {
+                config.getStdoutWriter().print(", ");
+            }
+
+            final String eclass = sortedEclasses.get(i);
+
+            config.getStdoutWriter().print(eclass);
+            config.getStdoutWriter().print(" = ");
+            config.getStdoutWriter().print(eclassesCounts.get(eclass));
+        }
+
+        config.getStdoutWriter().println(")");
 
         config.getStdoutWriter().print("Writing cache file...");
         writeCacheFile(config);
         config.getStdoutWriter().println("done");
     }
 
+    /**
+     * Increases counter for each eclass from the list.
+     *
+     * @param eclasses list of eclasses
+     */
+    private void countEclasses(final List<String> eclasses) {
+        eclasses.forEach((eclass) -> {
+            final Integer count = eclassesCounts.get(eclass);
+
+            if (count == null) {
+                eclassesCounts.put(eclass, 1);
+            } else {
+                eclassesCounts.put(eclass, count + 1);
+            }
+        });
+    }
+
     /**
      * Extracts the most important java eclass from ebuild inherit line.
      *
      * @param inheritLine ebuild inherit line
      *
-     * @return java eclass or null
+     * @return list of inherited java eclasses or null
      */
-    private String getJavaInheritEclass(final String inheritLine) {
-        if (inheritLine.contains(ECLASS_JAVA_PKG)) {
-            return ECLASS_JAVA_PKG;
-        } else if (inheritLine.contains(ECLASS_JAVA_PKG_OPT)) {
-            return ECLASS_JAVA_PKG_OPT;
-        } else if (inheritLine.contains(ECLASS_JAVA_PKG_SIMPLE)) {
-            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 {
-            return null;
-        }
+    private List<String> getJavaInheritEclasses(final String inheritLine) {
+        final String[] lines
+                = inheritLine.replaceAll("^inherit\\s+", "").split("\\s+");
+
+        return Arrays.stream(lines).
+                filter((line) -> line.startsWith("java-")
+                || ECLASS_ANT_TASKS.equals(line)).
+                collect(Collectors.toList());
     }
 
     /**
@@ -257,7 +251,7 @@ public class PortageParser {
         final String pkg = ebuild.getParentFile().getName();
         final String version = filename.substring(pkg.length() + 1);
         final Map<String, String> variables = new HashMap<>(20);
-        String eclass = null;
+        List<String> eclasses = null;
         String slot = "0";
         String useFlag = null;
         String mavenId = null;
@@ -290,9 +284,9 @@ public class PortageParser {
                     }
 
                     if (line.startsWith("inherit ")) {
-                        eclass = getJavaInheritEclass(line);
+                        eclasses = getJavaInheritEclasses(line);
 
-                        if (eclass == null) {
+                        if (eclasses == null || eclasses.isEmpty()) {
                             return;
                         }
                     } else if (line.startsWith("SLOT=")) {
@@ -313,11 +307,11 @@ public class PortageParser {
             throw new RuntimeException("Failed to read ebuild", ex);
         }
 
-        if (eclass == null) {
+        if (eclasses == null) {
             return;
         }
 
-        if (ECLASS_JAVA_PKG_OPT.equals(eclass) && useFlag == null) {
+        if (eclasses.contains(ECLASS_JAVA_PKG_OPT) && useFlag == null) {
             useFlag = "java";
         }
 
@@ -358,25 +352,9 @@ public class PortageParser {
         }
 
         cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
-                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;
-        }
+                groupId, artifactId, mavenVersion, eclasses));
+
+        countEclasses(eclasses);
     }
 
     /**
@@ -511,7 +489,11 @@ public class PortageParser {
                 writer.write(cacheItem.getMavenVersion() == null
                         ? "" : cacheItem.getMavenVersion());
                 writer.write(':');
-                writer.write(cacheItem.getJavaEclass());
+
+                if (cacheItem.getJavaEclasses() != null
+                        && !cacheItem.getJavaEclasses().isEmpty()) {
+                    writer.write(String.join(",", cacheItem.getJavaEclasses()));
+                }
 
                 writer.write('\n');
             }


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

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

commit:     c3771a74b781e7ebc97065e8201fd3a8e45a43d1
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Thu Jun 18 07:25:44 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 09:48:27 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c3771a74

fix bugs of MAVEN_PROVIDE

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

 src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

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 a222956..fd9e2c4 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -358,9 +358,9 @@ public class PortageParser {
         cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
                 groupId, artifactId, mavenVersion, eclasses));
 
-	if (mavenP != null) {
+	if (mavenProvide != null) {
             for (String providedId: mavenProvide) {
-                parts = mavenProvide.split(":")
+                final String[] parts = providedId.split(":");
                 cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
                         parts[0], parts[1], parts[2], eclasses));
             }


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

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

commit:     8dbb7efca5167ec4dd00da315582af83cae445b8
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Mon Jun 15 01:45:56 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 09:48:27 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=8dbb7efc

modify PATTERN_VERSION to match things like "r4"

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

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 26b06b9..71da8a6 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -14,7 +14,7 @@ public class MavenVersion implements Comparable<MavenVersion> {
      * Pattern for parsing maven version number.
      */
     private static final Pattern PATTERN_VERSION = Pattern.compile(
-            "^v?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-](.*))?$");
+            "^[vr]?(\\d+)(?:\\.(\\d+))?(?:(?:\\.|b|beta)(\\d+))?(?:[\\.-]?(.*))?$");
     /**
      * Pattern for parsing maven version range.
      */


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

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

commit:     21791ad72a6db7e9f809df55a74b52746dad801a
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Mon Jun 15 01:37:30 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 09:48:27 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=21791ad7

modify PATTERN_VERSION_RANGE to match things like "[3.0, )"

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

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 1de54e1..26b06b9 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -19,7 +19,7 @@ public class MavenVersion implements Comparable<MavenVersion> {
      * Pattern for parsing maven version range.
      */
     private static final Pattern PATTERN_VERSION_RANGE
-            = Pattern.compile("\\[.*, ?(.*?)\\]");
+            = Pattern.compile("[\\[\\(](.*), ?(.*?)[\\]\\)]");
     /**
      * Incremental version number.
      */


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

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

commit:     59131006cb675af7b176225af7a670e2803649d8
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Thu Jun 18 07:11:21 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 09:48:27 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=59131006

initial code to support MAVEN_PROVIDE

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

 .../java/org/gentoo/java/ebuilder/portage/PortageParser.java  | 11 +++++++++++
 1 file changed, 11 insertions(+)

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 9da0fb7..a222956 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -258,6 +258,7 @@ public class PortageParser {
         String groupId = null;
         String artifactId = null;
         String mavenVersion = null;
+	String[] mavenProvide = null;
 
         try (final BufferedReader reader = new BufferedReader(
                 new InputStreamReader(Files.newInputStream(ebuild.toPath(),
@@ -298,6 +299,9 @@ 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()).
+				replace("\"", "").split(" ");
                     }
                 }
 
@@ -354,6 +358,13 @@ public class PortageParser {
         cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
                 groupId, artifactId, mavenVersion, eclasses));
 
+	if (mavenP != null) {
+            for (String providedId: mavenProvide) {
+                parts = mavenProvide.split(":")
+                cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
+                        parts[0], parts[1], parts[2], eclasses));
+            }
+        }
         countEclasses(eclasses);
     }
 


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

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

commit:     a1b98fecda5e9d9c832b73305fb47edc604dd06d
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Fri Jun 19 05:37:34 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 09:48:27 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=a1b98fec

MavenVersion.class enhancement:

make MavenVersion.class able to compare incremental version
make it convert qualifier to lowercase to avoid the situation when
  maintainer mixes uppercase and lowercase

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

 src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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 71da8a6..42cd9cd 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/MavenVersion.java
@@ -70,7 +70,7 @@ public class MavenVersion implements Comparable<MavenVersion> {
                 ? 0 : Integer.parseInt(matcher.group(2), 10);
         incrementalVersion = matcher.group(3) == null
                 ? 0 : Integer.parseInt(matcher.group(3), 10);
-        qualifier = matcher.group(4) == null ? "" : matcher.group(4);
+        qualifier = matcher.group(4) == null ? "" : matcher.group(4).toLowerCase();
     }
 
     @Override
@@ -81,6 +81,8 @@ public class MavenVersion implements Comparable<MavenVersion> {
             return Integer.valueOf(majorVersion).compareTo(o.getMajorVersion());
         } else if (minorVersion != o.getMinorVersion()) {
             return Integer.valueOf(minorVersion).compareTo(o.getMinorVersion());
+        } else if (incrementalVersion != o.getIncrementalVersion()) {
+            return Integer.valueOf(incrementalVersion).compareTo(o.getIncrementalVersion());
         } else {
             return qualifier.compareTo(o.getQualifier());
         }


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

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

commit:     eceb93b00b8a1b4c8841f43bf61347fbb613f249
Author:     zongyu <zzy2529420793 <AT> gmail <DOT> com>
AuthorDate: Mon Jun 29 08:22:46 2020 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Mon Jul  6 09:48:27 2020 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=eceb93b0

enable java-ebuilder to read metadata of a Gentoo package, and get a proper SLOT

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

 .../java/ebuilder/portage/PortageParser.java       | 44 +++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

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 fd9e2c4..96e0c06 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -8,6 +8,7 @@ import java.io.OutputStreamWriter;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -251,6 +252,8 @@ public class PortageParser {
         final String pkg = ebuild.getParentFile().getName();
         final String version = filename.substring(pkg.length() + 1);
         final Map<String, String> variables = new HashMap<>(20);
+        final Path ebuildMetadata = Paths.get(ebuild.getParent(), "..", "..",
+                "metadata", "md5-cache", category, filename).normalize();
         List<String> eclasses = null;
         String slot = "0";
         String useFlag = null;
@@ -328,7 +331,12 @@ public class PortageParser {
             pv = version.substring(0, pos);
         }
 
-        slot = processSlot(slot, pv, variables);
+        if (Files.exists(ebuildMetadata)) {
+            slot = processSlot(slot, ebuildMetadata);
+        }
+        else {
+            slot = processSlot(slot, pv, variables);
+        }
 
         if (mavenId != null) {
             mavenId = mavenId.replaceAll("\\$(\\{PN\\}|PN)", pkg).
@@ -388,6 +396,40 @@ public class PortageParser {
         }
     }
 
+    /**
+     * Processes various instructions in SLOT string.
+     *
+     * @param slot           SLOT string
+     * @param ebuildMetadata path to the metadata of the Gentoo package
+     *
+     * @return processed SLOT string
+     */
+    private String processSlot(final String slot,
+            final Path ebuildMetadata) {
+        //final metadata = new File(ebuildMetadata.toString());
+	String result = slot;
+        try (final BufferedReader reader = new BufferedReader(
+                new InputStreamReader(Files.newInputStream(ebuildMetadata,
+                        StandardOpenOption.READ)))) {
+            String line = reader.readLine();
+            while (line != null) {
+                line = line.trim();
+
+                if (!line.isEmpty()) {
+                    if (line.startsWith("SLOT=")) {
+                        result = line.substring("SLOT=".length()).replace(
+                                "\"", "").replaceAll("/.*", "");
+                    }
+
+                line = reader.readLine();
+                }
+            }
+        } catch (final IOException ex) {
+            throw new RuntimeException("Failed to read ebuild", ex);
+        }
+	return result;
+    }
+
     /**
      * Processes various instructions in SLOT string.
      *


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

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

commit:     3dc12a1cf977e05cd3ff4ef0c61267c5e4abf395
Author:     Yuan Liao <liaoyuan <AT> gmail <DOT> com>
AuthorDate: Fri Jun 11 20:52:25 2021 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Sat Apr 15 08:13:52 2023 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=3dc12a1c

Add support for multi-line MAVEN_PROVIDES definition

Closes: https://bugs.gentoo.org/903666
Signed-off-by: Yuan Liao <liaoyuan <AT> gmail.com>
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 .../java/ebuilder/portage/PortageParser.java       | 81 ++++++++++++++--------
 1 file changed, 52 insertions(+), 29 deletions(-)

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 a1a7075..ff4acf3 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -263,8 +263,9 @@ public class PortageParser {
         String groupId = null;
         String artifactId = null;
         String mavenVersion = null;
-        String[] mavenProvide = null;
+        List<String> mavenProvide = new ArrayList<>();
 
+        boolean readingMultiLineMavenProvide = false;
         try (final BufferedReader reader = new BufferedReader(
                 new InputStreamReader(Files.newInputStream(ebuild.toPath(),
                         StandardOpenOption.READ)))) {
@@ -282,31 +283,55 @@ public class PortageParser {
                 }
 
                 if (!line.isEmpty()) {
-                    final Matcher matcher = PATTERN_VARIABLE.matcher(line);
-
-                    if (matcher.matches()) {
-                        variables.put(matcher.group(1),
-                                matcher.group(2).replaceAll("(^\"|\"$)", ""));
-                    }
+                    // Check if a multi-line MAVEN_PROVIDES declaration is
+                    // being read
+                    if (readingMultiLineMavenProvide) {
+                        if (!line.startsWith("\"")) {
+                            // Line contains an artifact ID
+                            mavenProvide.add(line.replace("\"", ""));
+                        }
+                        if (line.contains("\"")) {
+                            // Closing double quote
+                            readingMultiLineMavenProvide = false;
+                        }
+                    } else {
+                        // Check if the line contains variable declaration
+                        final Matcher matcher = PATTERN_VARIABLE.matcher(line);
 
-                    if (line.startsWith("inherit ")) {
-                        eclasses = getJavaInheritEclasses(line);
+                        if (matcher.matches()) {
+                            variables.put(matcher.group(1),
+                                    matcher.group(2).replaceAll("(^\"|\"$)", ""));
+                        }
 
-                        if (eclasses == null || eclasses.isEmpty()) {
-                            return;
+                        if (line.startsWith("inherit ")) {
+                            eclasses = getJavaInheritEclasses(line);
+
+                            if (eclasses == null || eclasses.isEmpty()) {
+                                return;
+                            }
+                        } else if (line.startsWith("SLOT=")) {
+                            slot = line.substring("SLOT=".length()).replace(
+                                    "\"", "").replaceAll("/.*", "");
+                        } else if (line.startsWith("JAVA_PKG_OPT_USE=")) {
+                            useFlag = line.substring("JAVA_PKG_OPT_USE=".length()).
+                                    replace("\"", "");
+                        } else if (line.startsWith("MAVEN_ID=")) {
+                            mavenId = line.substring("MAVEN_ID=".length()).
+                                    replace("\"", "");
+                        } else if (line.startsWith("MAVEN_PROVIDES=")) {
+                            boolean atMostOneDoubleQuote =
+                                    line.indexOf("\"") == line.lastIndexOf("\"");
+                            line = line.substring("MAVEN_PROVIDES=".length());
+                            if (!atMostOneDoubleQuote || !line.endsWith("\"")) {
+                                // Line contains an artifact ID
+                                mavenProvide.addAll(Arrays.asList(
+                                        line.replace("\"", "").split(" ")));
+                            }
+                            if (atMostOneDoubleQuote && line.contains("\"")) {
+                                // Only one double quote -- multi-line declaration
+                                readingMultiLineMavenProvide = true;
+                            }
                         }
-                    } else if (line.startsWith("SLOT=")) {
-                        slot = line.substring("SLOT=".length()).replace(
-                                "\"", "").replaceAll("/.*", "");
-                    } else if (line.startsWith("JAVA_PKG_OPT_USE=")) {
-                        useFlag = line.substring("JAVA_PKG_OPT_USE=".length()).
-                                replace("\"", "");
-                    } else if (line.startsWith("MAVEN_ID=")) {
-                        mavenId = line.substring("MAVEN_ID=".length()).
-                                replace("\"", "");
-                    } else if (line.startsWith("MAVEN_PROVIDES=")) {
-                        mavenProvide = line.substring("MAVEN_PROVIDES=".length()).
-                                replace("\"", "").split(" ");
                     }
                 }
 
@@ -368,12 +393,10 @@ public class PortageParser {
         cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
                 groupId, artifactId, mavenVersion, eclasses));
 
-        if (mavenProvide != null) {
-            for (String providedId: mavenProvide) {
-                final String[] parts = providedId.split(":");
-                cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
-                        parts[0], parts[1], parts[2], eclasses));
-            }
+        for (String providedId: mavenProvide) {
+            final String[] parts = providedId.split(":");
+            cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
+                    parts[0], parts[1], parts[2], eclasses));
         }
         countEclasses(eclasses);
     }


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

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

commit:     7f5126275eb7178328b1ff4bea732e062222746b
Author:     Yuan Liao <liaoyuan <AT> gmail <DOT> com>
AuthorDate: Wed Jun 23 21:38:30 2021 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Sat Apr 15 08:13:53 2023 +0000
URL:        https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=7f512627

Add support for ebuild variables in MAVEN_PROVIDES

Signed-off-by: Yuan Liao <liaoyuan <AT> gmail.com>
Closes: https://github.com/gentoo/java-ebuilder/pull/11
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java | 3 +++
 1 file changed, 3 insertions(+)

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 ff4acf3..8026542 100644
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java
@@ -394,6 +394,9 @@ public class PortageParser {
                 groupId, artifactId, mavenVersion, eclasses));
 
         for (String providedId: mavenProvide) {
+            // Allow declarations like MAVEN_PROVIDES="groupId:${PN}:${PV}"
+            providedId = providedId.replaceAll("\\$(\\{PN\\}|PN)", pkg).
+                    replaceAll("\\$(\\{PV\\}|PV)", pv);
             final String[] parts = providedId.split(":");
             cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag,
                     parts[0], parts[1], parts[2], eclasses));


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

end of thread, other threads:[~2023-04-15  8:14 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-15  8:14 [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 --
2023-04-15  8:14 Miroslav Šulc
2020-07-06 10:56 Miroslav Šulc
2020-07-06 10:56 Miroslav Šulc
2020-07-06 10:56 Miroslav Šulc
2020-07-06 10:56 Miroslav Šulc
2020-07-06 10:56 Miroslav Šulc
2020-07-06 10:56 Miroslav Šulc
2019-11-03 13:54 Miroslav Šulc
2019-10-30 19:26 Miroslav Šulc
2019-10-30 17:35 Michał Górny
2019-10-30 17:35 Michał Górny

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