1 |
commit: c0c86c63b7847b9d10d53c51e182df3c53263e4f |
2 |
Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Nov 1 20:21:00 2019 +0000 |
4 |
Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Nov 1 20:21:00 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c0c86c63 |
7 |
|
8 |
enhanced maven cache so that it also contains main java eclass + added java eclass stats |
9 |
|
10 |
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> |
11 |
|
12 |
.../org/gentoo/java/ebuilder/maven/MavenCache.java | 5 +- |
13 |
.../gentoo/java/ebuilder/portage/CacheItem.java | 29 ++++++-- |
14 |
.../java/ebuilder/portage/PortageParser.java | 84 +++++++++++++++++----- |
15 |
3 files changed, 96 insertions(+), 22 deletions(-) |
16 |
|
17 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java |
18 |
index 0aa33c5..4e8767e 100644 |
19 |
--- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java |
20 |
+++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java |
21 |
@@ -102,7 +102,10 @@ public class MavenCache { |
22 |
new FileReader(config.getCacheFile().toFile()))) { |
23 |
String line = reader.readLine(); |
24 |
|
25 |
- if (!PortageParser.CACHE_VERSION.equals(line)) { |
26 |
+ if ("1.0".equals(line)) { |
27 |
+ config.getStdoutWriter().print("(warning: format is not " |
28 |
+ + "up-to-date, consider refreshing the cache)..."); |
29 |
+ } else if (!PortageParser.CACHE_VERSION.equals(line)) { |
30 |
config.getErrorWriter().println("ERROR: Unsupported version of " |
31 |
+ "cache. Please refresh the cache using command line " |
32 |
+ "switch --refresh-cache."); |
33 |
|
34 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java |
35 |
index 17bce6b..feff43d 100644 |
36 |
--- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java |
37 |
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java |
38 |
@@ -19,6 +19,10 @@ public class CacheItem { |
39 |
* Maven group id. |
40 |
*/ |
41 |
private final String groupId; |
42 |
+ /** |
43 |
+ * Main Java eclass inherited. |
44 |
+ */ |
45 |
+ private final String javaEclass; |
46 |
/** |
47 |
* Maven version (of package jar). |
48 |
*/ |
49 |
@@ -56,11 +60,12 @@ public class CacheItem { |
50 |
* @param groupId {@link #groupId} |
51 |
* @param artifactId {@link #artifactId} |
52 |
* @param mavenVersion {@link #mavenVersion} |
53 |
+ * @param javaEclass {@link #javaEclass} |
54 |
*/ |
55 |
public CacheItem(final String category, final String pkg, |
56 |
final String version, final String slot, final String useFlag, |
57 |
final String groupId, final String artifactId, |
58 |
- final String mavenVersion) { |
59 |
+ final String mavenVersion, final String javaEclass) { |
60 |
this.category = category; |
61 |
this.pkg = pkg; |
62 |
this.version = version; |
63 |
@@ -69,6 +74,7 @@ public class CacheItem { |
64 |
this.groupId = groupId; |
65 |
this.artifactId = artifactId; |
66 |
this.mavenVersion = mavenVersion; |
67 |
+ this.javaEclass = javaEclass; |
68 |
|
69 |
parsedMavenVersion = mavenVersion == null |
70 |
? null : new MavenVersion(mavenVersion); |
71 |
@@ -95,14 +101,20 @@ public class CacheItem { |
72 |
} |
73 |
|
74 |
if (parts.length > 5) { |
75 |
- groupId = parts[5]; |
76 |
- artifactId = parts[6]; |
77 |
- mavenVersion = parts[7]; |
78 |
+ groupId = parts[5].isEmpty() ? null : parts[5]; |
79 |
+ artifactId = parts[6].isEmpty() ? null : parts[6]; |
80 |
+ mavenVersion = parts[7].isEmpty() ? null : parts[7]; |
81 |
} else { |
82 |
groupId = null; |
83 |
artifactId = null; |
84 |
mavenVersion = null; |
85 |
} |
86 |
+ |
87 |
+ if (parts.length > 8) { |
88 |
+ javaEclass = parts[8].isEmpty() ? null : parts[8]; |
89 |
+ } else { |
90 |
+ javaEclass = null; |
91 |
+ } |
92 |
} catch (final ArrayIndexOutOfBoundsException ex) { |
93 |
throw new RuntimeException("Failed to parse cache line: " + line, |
94 |
ex); |
95 |
@@ -139,6 +151,15 @@ public class CacheItem { |
96 |
return groupId; |
97 |
} |
98 |
|
99 |
+ /** |
100 |
+ * Getter for {@link #javaEclass}. |
101 |
+ * |
102 |
+ * @return {@link #javaEclass} |
103 |
+ */ |
104 |
+ public String getJavaEclass() { |
105 |
+ return javaEclass; |
106 |
+ } |
107 |
+ |
108 |
/** |
109 |
* Getter for {@link #mavenVersion}. |
110 |
* |
111 |
|
112 |
diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java |
113 |
index a85fe6c..8d49411 100644 |
114 |
--- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java |
115 |
+++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java |
116 |
@@ -28,7 +28,7 @@ public class PortageParser { |
117 |
/** |
118 |
* Cache version. |
119 |
*/ |
120 |
- public static final String CACHE_VERSION = "1.0"; |
121 |
+ public static final String CACHE_VERSION = "1.1"; |
122 |
/** |
123 |
* Current ant utilities eclass name. |
124 |
*/ |
125 |
@@ -116,6 +116,29 @@ public class PortageParser { |
126 |
* List of cache items. This list is populated during parsing the tree. |
127 |
*/ |
128 |
private final List<CacheItem> cacheItems = new ArrayList<>(40_000); |
129 |
+ /** |
130 |
+ * Count of ebuilds inheriting {@link #ECLASS_ANT_TASKS} as the main eclass. |
131 |
+ */ |
132 |
+ private int eclassAntTasksCount; |
133 |
+ /** |
134 |
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG} as the main eclass. |
135 |
+ */ |
136 |
+ private int eclassJavaPkgCount; |
137 |
+ /** |
138 |
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_OPT} as the main |
139 |
+ * eclass. |
140 |
+ */ |
141 |
+ private int eclassJavaPkgOptCount; |
142 |
+ /** |
143 |
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_SIMPLE} as the main |
144 |
+ * eclass. |
145 |
+ */ |
146 |
+ private int eclassJavaPkgSimpleCount; |
147 |
+ /** |
148 |
+ * Count of ebuilds inheriting {@link #ECLASS_JAVA_UTILS} as the main |
149 |
+ * eclass. |
150 |
+ */ |
151 |
+ private int eclassJavaUtilsCount; |
152 |
/** |
153 |
* Number of processed categories. Updated during parsing the tree. |
154 |
*/ |
155 |
@@ -141,6 +164,11 @@ public class PortageParser { |
156 |
processedCategories = 0; |
157 |
processedPackages = 0; |
158 |
processedEbuilds = 0; |
159 |
+ eclassAntTasksCount = 0; |
160 |
+ eclassJavaPkgCount = 0; |
161 |
+ eclassJavaPkgOptCount = 0; |
162 |
+ eclassJavaPkgSimpleCount = 0; |
163 |
+ eclassJavaUtilsCount = 0; |
164 |
|
165 |
config.getStdoutWriter().println("Parsing portage tree @ " |
166 |
+ config.getPortageTree() + " ..."); |
167 |
@@ -150,9 +178,14 @@ public class PortageParser { |
168 |
|
169 |
config.getStdoutWriter().println(MessageFormat.format( |
170 |
"Parsed {0} categories {1} packages {2} ebuilds in {3}ms and " |
171 |
- + "found {4} java ebuilds", |
172 |
+ + "found {4} java ebuilds (main java eclass: {5} = {6}, " |
173 |
+ + "{7} = {8}, {9} = {10}, {11} = {12}, {13} = {14})", |
174 |
processedCategories, processedPackages, processedEbuilds, |
175 |
- endTimestamp - startTimestamp, cacheItems.size())); |
176 |
+ endTimestamp - startTimestamp, cacheItems.size(), |
177 |
+ ECLASS_ANT_TASKS, eclassAntTasksCount, ECLASS_JAVA_PKG, |
178 |
+ eclassJavaPkgCount, ECLASS_JAVA_PKG_OPT, eclassJavaPkgOptCount, |
179 |
+ ECLASS_JAVA_PKG_SIMPLE, eclassJavaPkgSimpleCount, |
180 |
+ ECLASS_JAVA_UTILS, eclassJavaUtilsCount)); |
181 |
|
182 |
config.getStdoutWriter().print("Writing cache file..."); |
183 |
writeCacheFile(config); |
184 |
@@ -325,7 +358,25 @@ public class PortageParser { |
185 |
} |
186 |
|
187 |
cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag, |
188 |
- groupId, artifactId, mavenVersion)); |
189 |
+ groupId, artifactId, mavenVersion, eclass)); |
190 |
+ |
191 |
+ switch (eclass) { |
192 |
+ case ECLASS_ANT_TASKS: |
193 |
+ eclassAntTasksCount++; |
194 |
+ break; |
195 |
+ case ECLASS_JAVA_PKG: |
196 |
+ eclassJavaPkgCount++; |
197 |
+ break; |
198 |
+ case ECLASS_JAVA_PKG_OPT: |
199 |
+ eclassJavaPkgOptCount++; |
200 |
+ break; |
201 |
+ case ECLASS_JAVA_PKG_SIMPLE: |
202 |
+ eclassJavaPkgSimpleCount++; |
203 |
+ break; |
204 |
+ case ECLASS_JAVA_UTILS: |
205 |
+ eclassJavaUtilsCount++; |
206 |
+ break; |
207 |
+ } |
208 |
} |
209 |
|
210 |
/** |
211 |
@@ -437,7 +488,7 @@ public class PortageParser { |
212 |
Charset.forName("UTF-8"))) { |
213 |
writer.write(CACHE_VERSION); |
214 |
writer.write("\n#category:pkg:version:slot:useFlag:groupId:" |
215 |
- + "artifactId:mavenVersion\n"); |
216 |
+ + "artifactId:mavenVersion:javaEclass\n"); |
217 |
|
218 |
for (final CacheItem cacheItem : cacheItems) { |
219 |
writer.write(cacheItem.getCategory()); |
220 |
@@ -450,18 +501,17 @@ public class PortageParser { |
221 |
writer.write(':'); |
222 |
writer.write(cacheItem.getUseFlag() == null |
223 |
? "" : cacheItem.getUseFlag()); |
224 |
- |
225 |
- if (cacheItem.getGroupId() != null) { |
226 |
- writer.write(':'); |
227 |
- writer.write(cacheItem.getGroupId()); |
228 |
- writer.write(':'); |
229 |
- writer.write(cacheItem.getArtifactId()); |
230 |
- |
231 |
- if (cacheItem.getMavenVersion() != null) { |
232 |
- writer.write(':'); |
233 |
- writer.write(cacheItem.getMavenVersion()); |
234 |
- } |
235 |
- } |
236 |
+ writer.write(':'); |
237 |
+ writer.write(cacheItem.getGroupId() == null |
238 |
+ ? "" : cacheItem.getGroupId()); |
239 |
+ writer.write(':'); |
240 |
+ writer.write(cacheItem.getArtifactId() == null |
241 |
+ ? "" : cacheItem.getArtifactId()); |
242 |
+ writer.write(':'); |
243 |
+ writer.write(cacheItem.getMavenVersion() == null |
244 |
+ ? "" : cacheItem.getMavenVersion()); |
245 |
+ writer.write(':'); |
246 |
+ writer.write(cacheItem.getJavaEclass()); |
247 |
|
248 |
writer.write('\n'); |
249 |
} |