Deal with jars without symbolic name
[cc0/argeo-build.git] / src / org / argeo / build / Repackage.java
index 310c6ca186bc974eecf72ba1c9ace6adc5269f86..442e7e0d40952d979e5432a0499fc2ec86eb2e4c 100644 (file)
@@ -99,7 +99,7 @@ public class Repackage {
                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
@@ -117,10 +117,13 @@ public class Repackage {
        }
 
        /** 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...");
@@ -704,7 +707,8 @@ public class Repackage {
                                }
 
                                if (!fileProps.containsKey(EXPORT_PACKAGE.toString())) {
-                                       fileProps.put(EXPORT_PACKAGE.toString(), "*");
+                                       fileProps.put(EXPORT_PACKAGE.toString(),
+                                                       "*;version=\"" + fileProps.getProperty(BUNDLE_VERSION.toString()) + "\"");
                                }
 
                                // BND analysis
@@ -930,6 +934,8 @@ public class Repackage {
                                                                        map.put(key.toString(), commonProps.getProperty(key.toString()));
                                                                A2Origin origin = new A2Origin();
                                                                Path bundleDir = processBundleJar(file, targetCategoryBase, map, origin);
+                                                               if (bundleDir == null)
+                                                                       return FileVisitResult.CONTINUE;
                                                                origins.put(bundleDir, origin);
                                                                logger.log(DEBUG, () -> "Processed " + file);
                                                        }
@@ -1035,6 +1041,10 @@ public class Repackage {
                                nameVersion = new NameVersion(ourSymbolicName, ourVersion);
                        } else {
                                nameVersion = nameVersionFromManifest(manifest);
+                               if (nameVersion == null) {
+                                       logger.log(WARNING, file + " has no symbolic name, skipping...");
+                                       return null;
+                               }
                                if (ourVersion != null && !nameVersion.getVersion().equals(ourVersion)) {
                                        logger.log(WARNING,
                                                        "Original version is " + nameVersion.getVersion() + " while new version is " + ourVersion);