From: Mathieu Baudier Date: Tue, 21 Mar 2023 09:47:11 +0000 (+0100) Subject: Add legal information in bundles X-Git-Tag: v2.3.5~30 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=d0a93e4a21a3c71a47f4bd0511d7862093731e2e;p=cc0%2Fargeo-build.git Add legal information in bundles --- diff --git a/src/org/argeo/build/Make.java b/src/org/argeo/build/Make.java index 8e178cd..324cae8 100644 --- a/src/org/argeo/build/Make.java +++ b/src/org/argeo/build/Make.java @@ -13,6 +13,7 @@ import java.io.PrintWriter; import java.lang.System.Logger; import java.lang.System.Logger.Level; import java.lang.management.ManagementFactory; +import java.nio.file.DirectoryStream; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; @@ -406,6 +407,12 @@ public class Make { } }); + // add legal notices and licenses + for (Path p : listLegalFilesToInclude(source).values()) { + jarOut.putNextEntry(new JarEntry(p.getFileName().toString())); + Files.copy(p, jarOut); + } + // add sources // TODO add effective BND, Eclipse project file, etc., in order to be able to // repackage @@ -425,6 +432,11 @@ public class Make { try (JarOutputStream srcJarOut = new JarOutputStream(Files.newOutputStream(srcJarP), srcManifest)) { copySourcesToJar(srcP, srcJarOut, ""); + // add legal notices and licenses + for (Path p : listLegalFilesToInclude(source).values()) { + jarOut.putNextEntry(new JarEntry(p.getFileName().toString())); + Files.copy(p, jarOut); + } } } else { copySourcesToJar(srcP, jarOut, "OSGI-OPT/src/"); @@ -432,6 +444,41 @@ public class Make { } } + /** List the relevant legal files to include, from the SDK source base. */ + Map listLegalFilesToInclude(Path bundleBase) throws IOException { + Map toInclude = new HashMap<>(); + DirectoryStream sdkSrcLegal = Files.newDirectoryStream(sdkSrcBase, (p) -> { + String fileName = p.getFileName().toString(); + return switch (fileName) { + case "NOTICE": + case "LICENSE": + case "COPYING": + case "COPYING.LESSER": + yield true; + default: + yield false; + }; + }); + for (Path p : sdkSrcLegal) + toInclude.put(p.getFileName().toString(), p); + DirectoryStream bundleLegal = Files.newDirectoryStream(bundleBase, (p) -> { + String fileName = p.getFileName().toString(); + return switch (fileName) { + case "NOTICE": + case "LICENSE": + case "COPYING": + case "COPYING.LESSER": + yield true; + default: + yield false; + }; + }); + // bundle can override + for (Path p : bundleLegal) + toInclude.put(p.getFileName().toString(), p); + return toInclude; + } + /* * UTILITIES */