X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=src%2Forg%2Fargeo%2Fbuild%2FRepackage.java;h=1a1f5c1d4b26fdfb768a476da0e1c832daa20ea2;hb=de19d534e689ec02c08faf7e34b471cd9c45516e;hp=d33a55eea1f6aa35aedc9e8e7e1ceee583e5e89d;hpb=e00275f38eaa0061ea2b9fb8c029a67e0e70f28a;p=cc0%2Fargeo-build.git diff --git a/src/org/argeo/build/Repackage.java b/src/org/argeo/build/Repackage.java index d33a55e..1a1f5c1 100644 --- a/src/org/argeo/build/Repackage.java +++ b/src/org/argeo/build/Repackage.java @@ -119,6 +119,8 @@ public class Repackage { /** Deletes remaining sub directories. */ void cleanPreviousFailedBuild(Path categoryPath) { Path outputCategoryPath = a2Base.resolve(categoryPath); + if (!Files.exists(outputCategoryPath)) + return; // clean previous failed build try { for (Path subDir : Files.newDirectoryStream(outputCategoryPath, (d) -> Files.isDirectory(d))) { @@ -705,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 @@ -931,6 +934,10 @@ 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) { + logger.log(WARNING, "No bundle dir created for " + file + ", skipping..."); + return FileVisitResult.CONTINUE; + } origins.put(bundleDir, origin); logger.log(DEBUG, () -> "Processed " + file); } @@ -1014,6 +1021,8 @@ public class Repackage { 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()); @@ -1036,6 +1045,14 @@ public class Repackage { nameVersion = new NameVersion(ourSymbolicName, ourVersion); } else { nameVersion = nameVersionFromManifest(manifest); + if (nameVersion == null) { + // hack for weird issue with JNA jar in Eclipse + String[] arr_ = file.getFileName().toString().split("_"); + String v = arr_[1].substring(0, arr_[1].length() - 4);// remove .jar + nameVersion = new NameVersion(arr_[0], v); + logger.log(WARNING, file + " has no symbolic name, trying " + nameVersion.getName() + "/" + + nameVersion.getVersion() + " based on its name"); + } if (ourVersion != null && !nameVersion.getVersion().equals(ourVersion)) { logger.log(WARNING, "Original version is " + nameVersion.getVersion() + " while new version is " + ourVersion); @@ -1468,8 +1485,13 @@ public class Repackage { // license String spdxLicenseId = SPDX_LICENSE_IDENTIFIER.get(mapping); - if (spdxLicenseId == null) - throw new IllegalStateException("An SPDX license id must have beend defined at this stage."); + if (spdxLicenseId == null) { + if (jarDir.getFileName().toString().startsWith("com.sun.jna")) + spdxLicenseId = "Apache-2.0 OR LGPL-2.1"; + else + throw new IllegalStateException( + "An SPDX license id must have beend defined for " + jarDir + " at this stage."); + } writer.append("\nIt is redistributed under the following license:\n\n"); writer.append("SPDX-Identifier: " + spdxLicenseId + "\n\n");