// classpath
if (!a2Categories.isEmpty()) {
- compilerArgs.add("-cp");
StringJoiner classPath = new StringJoiner(File.pathSeparator);
+ StringJoiner modulePath = new StringJoiner(File.pathSeparator);
for (String a2Base : a2Bases) {
for (String a2Category : a2Categories) {
Path a2Dir = Paths.get(a2Base).resolve(a2Category);
if (!Files.exists(a2Dir))
Files.createDirectories(a2Dir);
+ modulePath.add(a2Dir.toString());
for (Path jarP : Files.newDirectoryStream(a2Dir,
(p) -> p.getFileName().toString().endsWith(".jar"))) {
classPath.add(jarP.toString());
+ System.out.println(jarP);
}
}
}
+ compilerArgs.add("-cp");
compilerArgs.add(classPath.toString());
+// compilerArgs.add("--module-path");
+// compilerArgs.add(modulePath.toString());
}
// sources
for (String bundle : bundles) {
StringBuilder sb = new StringBuilder();
- sb.append(execDirectory.resolve(bundle).resolve("src"));
+ Path bundlePath = execDirectory.resolve(bundle);
+ if (!Files.exists(bundlePath))
+ throw new IllegalArgumentException("Bundle " + bundle + " not found in " + execDirectory);
+ sb.append(bundlePath.resolve("src"));
sb.append("[-d");
compilerArgs.add(sb.toString());
sb = new StringBuilder();
if (logger.isLoggable(INFO))
compilerArgs.add("-time");
+// for (String arg : compilerArgs)
+// System.out.println(arg);
+
boolean success = org.eclipse.jdt.core.compiler.batch.BatchCompiler.compile(
compilerArgs.toArray(new String[compilerArgs.size()]), new PrintWriter(System.out),
new PrintWriter(System.err), new MakeCompilationProgress());
return;
List<String> categories = options.get("--category");
- Objects.requireNonNull(bundles, "--bundles argument must be set");
+ Objects.requireNonNull(bundles, "--category argument must be set");
if (categories.size() != 1)
- throw new IllegalArgumentException("One and only one category must be specified");
+ throw new IllegalArgumentException("One and only one --category must be specified");
String category = categories.get(0);
+ List<String> branches = options.get("--branch");
+ if (branches.size() != 1)
+ throw new IllegalArgumentException("One and only one --branch must be specified");
+ String branch = branches.get(0);
+
long begin = System.currentTimeMillis();
// create jars in parallel
List<CompletableFuture<Void>> toDos = new ArrayList<>();
for (String bundle : bundles) {
toDos.add(CompletableFuture.runAsync(() -> {
try {
- createBundle(bundle, category);
+ createBundle(branch, bundle, category);
} catch (IOException e) {
throw new RuntimeException("Packaging of " + bundle + " failed", e);
}
* UTILITIES
*/
/** Package a single bundle. */
- void createBundle(String bundle, String category) throws IOException {
+ void createBundle(String branch, String bundle, String category) throws IOException {
Path source = execDirectory.resolve(bundle);
Path compiled = buildBase.resolve(bundle);
String bundleSymbolicName = source.getFileName().toString();
try (InputStream in = Files.newInputStream(argeoBnd)) {
properties.load(in);
}
- // FIXME make it configurable
- Path branchBnd = sdkSrcBase.resolve("cnf/unstable.bnd");
+
+ Path branchBnd = sdkSrcBase.resolve("sdk/branches/" + branch + ".bnd");
try (InputStream in = Files.newInputStream(branchBnd)) {
properties.load(in);
}
throw new RuntimeException("Bnd analysis of " + compiled + " failed", e);
}
- String major = properties.getProperty("MAJOR");
- Objects.requireNonNull(major, "MAJOR must be set");
- String minor = properties.getProperty("MINOR");
- Objects.requireNonNull(minor, "MINOR must be set");
+ String major = properties.getProperty("major");
+ Objects.requireNonNull(major, "'major' must be set");
+ String minor = properties.getProperty("minor");
+ Objects.requireNonNull(minor, "'minor' must be set");
// Write manifest
Path manifestP = compiled.resolve("META-INF/MANIFEST.MF");
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
jarOut.putNextEntry(new JarEntry("OSGI-OPT/src/" + srcP.relativize(file).toString()));
- Files.copy(file, jarOut);
+ if (!Files.isDirectory(file))
+ Files.copy(file, jarOut);
return FileVisitResult.CONTINUE;
}
});
+ (jvmUptime % 1000) + " s");
} catch (Exception e) {
long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime();
- logger.log(ERROR,
- "Make.java action '" + action + "' failed after " + (jvmUptime / 1000) + "." + (jvmUptime % 1000) + " s",
- e);
+ logger.log(ERROR, "Make.java action '" + action + "' failed after " + (jvmUptime / 1000) + "."
+ + (jvmUptime % 1000) + " s", e);
System.exit(1);
}
}