source: josm/trunk/native/windows/win-jpackage.sh@ 19232

Last change on this file since 19232 was 19215, checked in by taylor.smock, 6 months ago

Fix #23837: Set -XX:MaxRAMPercentage to >25% of system memory

This does not currently work for WebStart, see
https://github.com/AdoptOpenJDK/IcedTea-Web/pull/954 .

As noted in the ticket, all supported MS Windows and Apple macOS machines have
4G+ of RAM. Linux machines don't have a baseline, and some have 1G or less. Where
we detect that a machine has <8G of memory in the linux start scripts, we don't
add the JVM parameters.

As a reminder to everyone reading the changelog: just because we ask for the
ability to use 75% of the system memory doesn't mean we will use all of that
memory. The JVM will free up unused memory for the rest of the system.

We additionally set the minimum memory allocation to 256m; while this can be
lower, that is for minimal amounts of data loaded. A clean JOSM install will use
99mb, for example. But once we add a minimal amount of data and a background
layer, static memory usage goes up to 161mb.

  • Property svn:executable set to *
File size: 4.7 KB
Line 
1#!/bin/bash
2
3## Expected environment, passed from GitHub secrets:
4# https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets
5# SIGN_CERT PKCS12 certificate keystore used for code signing, base64 encoded
6# SIGN_STOREPASS Password for that keystore
7# SIGN_TSA URL of Time Stamping Authority to use
8
9set -Eeo pipefail
10
11# Don't show one time passwords
12set +x
13
14if [ -z "${1-}" ]
15then
16 echo "Usage: $0 josm_revision"
17 exit 1
18fi
19
20echo "Building JOSM Windows Installer packages"
21
22mkdir app
23
24if [ -z "$SIGN_CERT" ] || [ -z "$SIGN_STOREPASS" ] || [ -z "$SIGN_TSA" ]
25then
26 echo "SIGN_CERT, SIGN_STOREPASS and SIGN_TSA are not set in the environment."
27 echo "A JOSM.exe and JOSM.msi will be created but not signed."
28 SIGNAPP=false
29else
30 SIGNAPP=true
31fi
32
33set -u
34
35# jpackage copies resources files to temp dir but not all of them, only an hardcoded set
36# see https://github.com/openjdk/jdk/blob/739769c8fc4b496f08a92225a12d07414537b6c0/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinMsiBundler.java#L437
37# so we replace a placeholder to get an absolute path when wix reads this file
38#sed -i "s|%josm-source-dir%|$(pwd)|g" native/windows/main.wxs
39cp native/windows/main.wxs native/windows/main.wxs.bak
40sed -i "s?%josm-source-dir%?$(pwd)?" native/windows/main.wxs
41sed -i 's?"/c/?"c:/?g' native/windows/main.wxs
42sed -i 's?"/d/?"d:/?g' native/windows/main.wxs
43
44JPACKAGEOPTIONS=""
45
46echo "Building EXE and MSI"
47for type in exe msi
48do
49 # $JPACKAGEOPTIONS is supposed to be expanded
50 # shellcheck disable=SC2086
51 jpackage $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \
52 --main-class org.openstreetmap.josm.gui.MainApplication \
53 --icon ./native/windows/logo.ico --type $type --dest app \
54 --java-options "-XX:MaxRAMPercentage=75.0" \
55 --java-options "-Xms256m" \
56 --java-options "--add-modules java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web" \
57 --java-options "--add-exports=java.base/sun.security.action=ALL-UNNAMED" \
58 --java-options "--add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED" \
59 --java-options "--add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED" \
60 --java-options "--add-opens=java.base/java.lang=ALL-UNNAMED" \
61 --java-options "--add-opens=java.base/java.nio=ALL-UNNAMED" \
62 --java-options "--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED" \
63 --java-options "--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED" \
64 --java-options "--add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED" \
65 --java-options "--add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED" \
66 --java-options "--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED" \
67 --app-version "1.5.$1" \
68 --copyright "JOSM, and all its integral parts, are released under the GNU General Public License v2 or later" \
69 --vendor "JOSM" \
70 --resource-dir native/windows \
71 --win-upgrade-uuid 79be9cf4-6dc7-41e2-a6cd-bbfaa4c07481 \
72 --win-per-user-install \
73 --win-dir-chooser \
74 --win-shortcut \
75 --win-menu \
76 --win-menu-group "JOSM" \
77 --file-associations native/file-associations/bz2.properties \
78 --file-associations native/file-associations/geojson.properties \
79 --file-associations native/file-associations/gpx.properties \
80 --file-associations native/file-associations/gz.properties \
81 --file-associations native/file-associations/jos.properties \
82 --file-associations native/file-associations/joz.properties \
83 --file-associations native/file-associations/osm.properties \
84 --file-associations native/file-associations/xz.properties \
85 --file-associations native/file-associations/zip.properties \
86 --add-launcher "JOSM (Debug)"=native/windows/MLConsole.properties \
87 --add-modules java.compiler,java.base,java.datatransfer,java.desktop,java.logging,java.management,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.sql,java.transaction.xa,java.xml,jdk.crypto.ec,jdk.jfr,jdk.jsobject,jdk.unsupported,jdk.unsupported.desktop,jdk.xml.dom,javafx.controls,javafx.media,javafx.swing,javafx.web
88done
89
90mv native/windows/main.wxs.bak native/windows/main.wxs
91
92mv app/JOSM-1.5."$1".exe app/JOSM.exe
93mv app/JOSM-1.5."$1".msi app/JOSM.msi
94
95# Workaround to https://bugs.openjdk.java.net/browse/JDK-8261845
96# to remove after we switch to Java 17+ for jpackage builds
97chmod u+w app/JOSM.exe
98
99echo "Building done."
100
101if $SIGNAPP; then
102 CERTIFICATE_P12=certificate.p12
103 echo "$SIGN_CERT" | base64 --decode > $CERTIFICATE_P12
104 for ext in exe msi
105 do
106 signtool.exe sign //f $CERTIFICATE_P12 //d "Java OpenStreetMap Editor" //du "https://josm.openstreetmap.de" //p "$SIGN_STOREPASS" //v //fd SHA256 //tr "$SIGN_TSA" //td SHA256 "app/JOSM.$ext"
107 done
108 rm $CERTIFICATE_P12
109fi
Note: See TracBrowser for help on using the repository browser.