List<CompletableFuture<Void>> toDos = new ArrayList<>();
for (int i = 1; i < args.length; i++) {
Path categoryPath = Paths.get(args[i]);
- cleanPreviousFailedBuild(categoryPath);
+ factory.cleanPreviousFailedBuild(categoryPath);
if (sequential) // sequential processing happens here
factory.processCategory(categoryPath);
else
}
/** Deletes remaining sub directories. */
- static void cleanPreviousFailedBuild(Path categoryPath) {
+ void cleanPreviousFailedBuild(Path categoryPath) {
+ Path outputCategoryPath = a2Base.resolve(categoryPath);
+ if (!Files.exists(outputCategoryPath))
+ return;
// clean previous failed build
try {
- for (Path subDir : Files.newDirectoryStream(categoryPath, (d) -> Files.isDirectory(d))) {
+ for (Path subDir : Files.newDirectoryStream(outputCategoryPath, (d) -> Files.isDirectory(d))) {
if (Files.exists(subDir)) {
logger.log(WARNING, "Bundle dir " + subDir
+ " already exists, probably from a previous failed build, deleting it...");
if (artifact.getVersion() == null) {
artifact.setVersion(m2Version);
} else {
- logger.log(WARNING, p.getFileName() + " : Using version " + artifact.getVersion()
+ logger.log(DEBUG, p.getFileName() + " : Using version " + artifact.getVersion()
+ " specified in descriptor rather than " + m2Version + " specified in " + COMMON_BND);
}
}
if (entry.getName().endsWith("NOTICE") || entry.getName().endsWith("NOTICE.txt")
- || entry.getName().endsWith("LICENSE") || entry.getName().endsWith("LICENSE.md")
- || entry.getName().endsWith("LICENSE-notice.md") || entry.getName().endsWith("COPYING")
- || entry.getName().endsWith("COPYING.LESSER")) {
+ || entry.getName().endsWith("NOTICE.md") || entry.getName().endsWith("LICENSE")
+ || entry.getName().endsWith("LICENSE.md") || entry.getName().endsWith("LICENSE-notice.md")
+ || entry.getName().endsWith("COPYING") || entry.getName().endsWith("COPYING.LESSER")) {
Path artifactOriginDir = bundleDir.resolve(ARGEO_ORIGIN).resolve(artifact.getGroupId())
.resolve(artifact.getArtifactId());
Path target = artifactOriginDir.resolve(entry.getName());
}
if (!fileProps.containsKey(EXPORT_PACKAGE.toString())) {
- fileProps.put(EXPORT_PACKAGE.toString(), "*");
+ fileProps.put(EXPORT_PACKAGE.toString(),
+ "*;version=\"" + fileProps.getProperty(BUNDLE_VERSION.toString()) + "\"");
}
// BND analysis
map.put(key.toString(), commonProps.getProperty(key.toString()));
A2Origin origin = new A2Origin();
Path bundleDir = processBundleJar(file, targetCategoryBase, map, origin);
+ if (bundleDir == null) {
+ logger.log(WARNING, "No bundle dir created for " + file + ", skipping...");
+ return FileVisitResult.CONTINUE;
+ }
origins.put(bundleDir, origin);
logger.log(DEBUG, () -> "Processed " + file);
}
Manifest sourceManifest;
try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(file), false)) {
sourceManifest = jarIn.getManifest();
+ if (sourceManifest == null)
+ logger.log(WARNING, file + " has no manifest");
manifest = sourceManifest != null ? new Manifest(sourceManifest) : new Manifest();
String rawSourceSymbolicName = manifest.getMainAttributes().getValue(BUNDLE_SYMBOLICNAME.toString());
nameVersion = new NameVersion(ourSymbolicName, ourVersion);
} else {
nameVersion = nameVersionFromManifest(manifest);
+ if (nameVersion == null)
+ throw new IllegalStateException("Could not compute name/version from Manifest");
if (ourVersion != null && !nameVersion.getVersion().equals(ourVersion)) {
logger.log(WARNING,
"Original version is " + nameVersion.getVersion() + " while new version is " + ourVersion);
}
/**
- * Effectively download. Synchronised in order to avoid downloading twice in
- * parallel.
+ * Effectively download an archive.
*/
- synchronized Path downloadArchive(URL url, Path dir) throws IOException {
+ Path downloadArchive(URL url, Path dir) throws IOException {
return download(url, dir, (String) null);
}
- /** Effectively download. */
- Path download(URL url, Path dir, String name) throws IOException {
+ /**
+ * Effectively download. Synchronised in order to avoid downloading twice in
+ * parallel.
+ */
+ synchronized Path download(URL url, Path dir, String name) throws IOException {
Path dest;
if (name == null) {