* [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 20:21 [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 19:41 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