Gentoo Archives: gentoo-commits

From: "Miroslav Šulc" <fordfrog@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/maven/, src/main/resources/, ...
Date: Sun, 03 Nov 2019 11:26:58
Message-Id: 1572780401.a7f4247c96b248b86d657137bbb8312884bde5dd.fordfrog@gentoo
1 commit: a7f4247c96b248b86d657137bbb8312884bde5dd
2 Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
3 AuthorDate: Sun Nov 3 11:26:41 2019 +0000
4 Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
5 CommitDate: Sun Nov 3 11:26:41 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=a7f4247c
7
8 added support for forcing minimal java version
9
10 Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>
11
12 src/main/java/org/gentoo/java/ebuilder/Config.java | 24 ++++++++++++++
13 src/main/java/org/gentoo/java/ebuilder/Main.java | 8 +++++
14 .../gentoo/java/ebuilder/maven/MavenEbuilder.java | 33 +++++++++++++++----
15 src/main/resources/usage.txt | 38 ++++++++++++----------
16 4 files changed, 79 insertions(+), 24 deletions(-)
17
18 diff --git a/src/main/java/org/gentoo/java/ebuilder/Config.java b/src/main/java/org/gentoo/java/ebuilder/Config.java
19 index 3bf8cb8..c53e7a9 100644
20 --- a/src/main/java/org/gentoo/java/ebuilder/Config.java
21 +++ b/src/main/java/org/gentoo/java/ebuilder/Config.java
22 @@ -7,6 +7,7 @@ import java.nio.file.Paths;
23 import java.util.ArrayList;
24 import java.util.Collections;
25 import java.util.List;
26 +import org.gentoo.java.ebuilder.maven.JavaVersion;
27
28 /**
29 * Container for command line configuration.
30 @@ -48,6 +49,11 @@ public class Config {
31 * Writer for errors.
32 */
33 private final PrintWriter errorWriter;
34 + /**
35 + * JDK/JRE version that will be used if version in POM files is lower than
36 + * this one.
37 + */
38 + private JavaVersion forceMinJavaVersion;
39 /**
40 * Whether ebuild should be generated.
41 */
42 @@ -223,6 +229,24 @@ public class Config {
43 return errorWriter;
44 }
45
46 + /**
47 + * Getter for {@link #forceMinJavaVersion}.
48 + *
49 + * @return {@link #forceMinJavaVersion}
50 + */
51 + public JavaVersion getForceMinJavaVersion() {
52 + return forceMinJavaVersion;
53 + }
54 +
55 + /**
56 + * Setter for {@link #forceMinJavaVersion}.
57 + *
58 + * @param forceMinJavaVersion {@link #forceMinJavaVersion}
59 + */
60 + public void setForceMinJavaVersion(final JavaVersion forceMinJavaVersion) {
61 + this.forceMinJavaVersion = forceMinJavaVersion;
62 + }
63 +
64 /**
65 * Getter for {@link #keywords}.
66 *
67
68 diff --git a/src/main/java/org/gentoo/java/ebuilder/Main.java b/src/main/java/org/gentoo/java/ebuilder/Main.java
69 index cc9a3c5..fa4a85e 100644
70 --- a/src/main/java/org/gentoo/java/ebuilder/Main.java
71 +++ b/src/main/java/org/gentoo/java/ebuilder/Main.java
72 @@ -11,6 +11,7 @@ import java.nio.file.Paths;
73 import java.text.MessageFormat;
74 import java.util.List;
75 import java.util.Map;
76 +import org.gentoo.java.ebuilder.maven.JavaVersion;
77 import org.gentoo.java.ebuilder.maven.MavenCache;
78 import org.gentoo.java.ebuilder.maven.MavenEbuilder;
79 import org.gentoo.java.ebuilder.maven.MavenParser;
80 @@ -132,6 +133,9 @@ public class Main {
81 } else if (config.getEbuild() != null) {
82 config.getErrorWriter().println(
83 "WARNING: Ebuild is used only when generating ebuild.");
84 + } else if (config.getForceMinJavaVersion() != null) {
85 + config.getErrorWriter().println("WARNING: Forcing minimum JDK/JRE "
86 + + "version applies only when generating ebuild.");
87 } else if (config.getKeywords() != null) {
88 config.getErrorWriter().println("WARNING: Keywords are used only "
89 + "when generating ebuild.");
90 @@ -231,6 +235,10 @@ public class Main {
91 config.setEbuild(Paths.get(args[i]).toAbsolutePath().
92 normalize());
93 break;
94 + case "--force-min-java-version":
95 + i++;
96 + config.setForceMinJavaVersion(new JavaVersion(args[i]));
97 + break;
98 case "--generate-ebuild":
99 case "-g":
100 config.setGenerateEbuild(true);
101
102 diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
103 index 53708e9..d6e3f1a 100644
104 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
105 +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
106 @@ -144,11 +144,14 @@ public class MavenEbuilder {
107 * Retrieves minimum source version from the maven projects.
108 *
109 * @param mavenProjects list of maven projects
110 + * @param forceMinVersion optional minimum version to force
111 *
112 * @return minimum source version
113 */
114 - private String getMinSourceVersion(final List<MavenProject> mavenProjects) {
115 - String result = null;
116 + private JavaVersion getMinSourceVersion(
117 + final List<MavenProject> mavenProjects,
118 + final JavaVersion forceMinVersion) {
119 + JavaVersion result = null;
120
121 for (final MavenProject mavenProject : mavenProjects) {
122 if (result == null || mavenProject.getSourceVersion().compareTo(
123 @@ -157,6 +160,10 @@ public class MavenEbuilder {
124 }
125 }
126
127 + if (forceMinVersion != null && forceMinVersion.compareTo(result) > 0) {
128 + return forceMinVersion;
129 + }
130 +
131 return result;
132 }
133
134 @@ -164,11 +171,14 @@ public class MavenEbuilder {
135 * Retrieves minimum target version from the maven projects.
136 *
137 * @param mavenProjects list of maven projects
138 + * @param forceMinVersion optional minimum version to force
139 *
140 * @return minimum target version
141 */
142 - private String getMinTargetVersion(final List<MavenProject> mavenProjects) {
143 - String result = null;
144 + private JavaVersion getMinTargetVersion(
145 + final List<MavenProject> mavenProjects,
146 + final JavaVersion forceMinVersion) {
147 + JavaVersion result = null;
148
149 for (final MavenProject mavenProject : mavenProjects) {
150 if (result == null || mavenProject.getTargetVersion().compareTo(
151 @@ -177,6 +187,10 @@ public class MavenEbuilder {
152 }
153 }
154
155 + if (forceMinVersion != null && forceMinVersion.compareTo(result) > 0) {
156 + return forceMinVersion;
157 + }
158 +
159 return result;
160 }
161
162 @@ -284,6 +298,11 @@ public class MavenEbuilder {
163 writer.print(config.getEbuild().getFileName());
164 }
165
166 + if (config.getForceMinJavaVersion() != null) {
167 + writer.print(" --force-min-java-version ");
168 + writer.print(config.getForceMinJavaVersion());
169 + }
170 +
171 writer.println();
172 }
173
174 @@ -378,7 +397,8 @@ public class MavenEbuilder {
175
176 writer.println();
177 writer.print("\t>=virtual/jdk-");
178 - writer.print(getMinSourceVersion(mavenProjects));
179 + writer.print(getMinSourceVersion(
180 + mavenProjects, config.getForceMinJavaVersion()));
181
182 if (config.getDownloadUri() != null && config.getDownloadUri().
183 toString().matches("^.*?\\.(jar|zip)$")) {
184 @@ -418,7 +438,8 @@ public class MavenEbuilder {
185
186 writer.println();
187 writer.print("\t>=virtual/jre-");
188 - writer.print(getMinTargetVersion(mavenProjects));
189 + writer.print(getMinTargetVersion(
190 + mavenProjects, config.getForceMinJavaVersion()));
191
192 if (!runtimeDependencies.isEmpty()) {
193 runtimeDependencies.stream().forEach((dependency) -> {
194
195 diff --git a/src/main/resources/usage.txt b/src/main/resources/usage.txt
196 index fc2689f..a5f7b68 100644
197 --- a/src/main/resources/usage.txt
198 +++ b/src/main/resources/usage.txt
199 @@ -1,25 +1,27 @@
200 Usage: java-ebuilder <args>
201
202 Generating ebuild:
203 ---download-uri|-u <uri> uri that goes to SRC_URI
204 ---dump-projects|-d outputs information about parsed projects (useful
205 - for debugging)
206 ---ebuild|-e <file> path to ebuild that should be created
207 ---generate-ebuild|-g generates ebuild from pom.xml
208 ---keywords|-k <keywords> arch keywords
209 ---license|-l <license> license name
210 ---pom|-p <file> path to pom.xml that should be parsed, the path must
211 - be relative to workdir (can be specified multiple
212 - times)
213 ---slot|-s <slot> SLOT number
214 ---workdir|-w <dir> path to ebuild workdir (${WORKDIR}, default is
215 - current directory)
216 +--download-uri|-u <uri> uri that goes to SRC_URI
217 +--dump-projects|-d outputs information about parsed projects
218 + (useful for debugging)
219 +--ebuild|-e <file> path to ebuild that should be created
220 +--force-min-java-version <version> force minimum JDK/JRE version in dependencies
221 +--generate-ebuild|-g generates ebuild from pom.xml
222 +--keywords|-k <keywords> arch keywords
223 +--license|-l <license> license name
224 +--pom|-p <file> path to pom.xml that should be parsed,
225 + the path must be relative to workdir (can be
226 + specified multiple times)
227 +--slot|-s <slot> SLOT number
228 +--workdir|-w <dir> path to ebuild workdir (${WORKDIR}, default
229 + is current directory)
230
231 Refreshing cache:
232 ---portage-tree|-t path to portage tree that should be parsed when
233 - refreshing cache (default is /usr/portage)
234 ---refresh-cache|-c refreshes java ebuild cache
235 +--portage-tree|-t path to portage tree that should be parsed
236 + when refreshing cache (default is
237 + /usr/portage)
238 +--refresh-cache|-c refreshes java ebuild cache
239
240 Common:
241 ---cache-file location of cache file (default is
242 - ~/.java-ebuilder/cache)
243 +--cache-file location of cache file (default is
244 + ~/.java-ebuilder/cache)