Workaround for badly formatted jar
[cc0/argeo-build.git] / src / org / argeo / build / Repackage.java
index 6ec6b623f5c124caf160aeee90d0ba59a4c54ced..4dc604232b6ada170fe3bd045b41e855ee67b7b5 100644 (file)
@@ -1046,11 +1046,14 @@ public class Repackage {
                        } else {
                                nameVersion = nameVersionFromManifest(manifest);
                                if (nameVersion == null) {
-                                       logger.log(WARNING, file + " has no symbolic name, trying name/version based on its name");
                                        // hack for weird issue with JNA jar in Eclipse
                                        String[] arr_ = file.getFileName().toString().split("_");
-                                       String[] arrDot = arr_[1].split("\\.");
-                                       nameVersion = new NameVersion(arr_[0], arrDot[0]);
+                                       ourSymbolicName = arr_[0];
+                                       String v = arr_[1].substring(0, arr_[1].length() - 4);// remove .jar
+                                       entries.put(BUNDLE_VERSION.toString(), v);
+                                       nameVersion = new NameVersion(ourSymbolicName, 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,
@@ -1484,8 +1487,14 @@ 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")) // FIXME understand/report why JNA's
+                                                                                                                                                               // jar is corrupted
+                                       spdxLicenseId = "LGPL-2.1-or-later OR Apache-2.0";
+                               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");