< prev index next >

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxDebBundler.java

Print this page

        

@@ -26,16 +26,19 @@
 package jdk.jpackage.internal;
 
 import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.attribute.PosixFilePermission;
 import java.nio.file.attribute.PosixFilePermissions;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 
 import static jdk.jpackage.internal.StandardBundlerParam.*;
 import static jdk.jpackage.internal.LinuxAppBundler.ICON_PNG;
 import static jdk.jpackage.internal.LinuxAppBundler.LINUX_INSTALL_DIR;
 import static jdk.jpackage.internal.LinuxAppBundler.LINUX_PACKAGE_DEPENDENCIES;

@@ -153,19 +156,32 @@
             String.class,
             params -> {
                 try {
                     String licenseFile = LICENSE_FILE.fetchFrom(params);
                     if (licenseFile != null) {
-                        return Files.readString(new File(licenseFile).toPath());
+                        StringBuilder contentBuilder = new StringBuilder();
+                        try (Stream<String> stream = Files.lines(Path.of(
+                                licenseFile), StandardCharsets.UTF_8)) {
+                            stream.forEach(s -> contentBuilder.append(s).append(
+                                    "\n"));
+                        }
+                        return contentBuilder.toString();
                     }
                 } catch (Exception e) {
                     Log.verbose(e);
                 }
                 return "Unknown";
             },
             (s, p) -> s);
 
+    public static final BundlerParamInfo<String> COPYRIGHT_FILE =
+            new StandardBundlerParam<>(
+            Arguments.CLIOptions.LINUX_DEB_COPYRIGHT_FILE.getId(),
+            String.class,
+            params -> null,
+            (s, p) -> s);
+
     public static final BundlerParamInfo<String> XDG_FILE_PREFIX =
             new StandardBundlerParam<> (
             "linux.xdg-prefix",
             String.class,
             params -> {

@@ -713,21 +729,28 @@
                     RESOURCE_DIR.fetchFrom(params));
             w.write(content);
         }
         setPermissions(getConfig_PostrmFile(params), "rwxr-xr-x");
 
+        getConfig_CopyrightFile(params).getParentFile().mkdirs();
+        String customCopyrightFile = COPYRIGHT_FILE.fetchFrom(params);
+        if (customCopyrightFile != null) {
+            IOUtils.copyFile(new File(customCopyrightFile),
+                    getConfig_CopyrightFile(params));
+        } else {
         try (Writer w = Files.newBufferedWriter(
                 getConfig_CopyrightFile(params).toPath())) {
             String content = preprocessTextResource(
                     getConfig_CopyrightFile(params).getName(),
-                    I18N.getString("resource.deb-copyright-file"),
+                        I18N.getString("resource.copyright-file"),
                     DEFAULT_COPYRIGHT_TEMPLATE,
                     data,
                     VERBOSE.fetchFrom(params),
                     RESOURCE_DIR.fetchFrom(params));
             w.write(content);
         }
+        }
 
         return true;
     }
 
     private Map<String, String> createReplacementData(

@@ -791,11 +814,12 @@
     private File getConfig_PostrmFile(Map<String, ? super Object> params) {
         return new File(CONFIG_DIR.fetchFrom(params), "postrm");
     }
 
     private File getConfig_CopyrightFile(Map<String, ? super Object> params) {
-        return new File(CONFIG_DIR.fetchFrom(params), "copyright");
+        return Path.of(DEB_IMAGE_DIR.fetchFrom(params).getAbsolutePath(), "usr",
+                "share", "doc", BUNDLE_NAME.fetchFrom(params), "copyright").toFile();
     }
 
     private File buildDeb(Map<String, ? super Object> params,
             File outdir) throws IOException {
         File outFile = new File(outdir,
< prev index next >