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
RevLine 
[18136]1#!/bin/bash
2
[18146]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
[18136]8
[18146]9set -Eeo pipefail
10
[18136]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
[18155]20echo "Building JOSM Windows Installer packages"
[18136]21
22mkdir app
23
[18146]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."
[18155]27 echo "A JOSM.exe and JOSM.msi will be created but not signed."
[18146]28 SIGNAPP=false
29else
30 SIGNAPP=true
31fi
32
33set -u
34
[18164]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
[18801]40sed -i "s?%josm-source-dir%?$(pwd)?" native/windows/main.wxs
[18164]41sed -i 's?"/c/?"c:/?g' native/windows/main.wxs
[18168]42sed -i 's?"/d/?"d:/?g' native/windows/main.wxs
[18164]43
[18136]44JPACKAGEOPTIONS=""
45
[18155]46echo "Building EXE and MSI"
47for type in exe msi
48do
[18813]49 # $JPACKAGEOPTIONS is supposed to be expanded
50 # shellcheck disable=SC2086
51 jpackage $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \
[18136]52 --main-class org.openstreetmap.josm.gui.MainApplication \
[18155]53 --icon ./native/windows/logo.ico --type $type --dest app \
[19215]54 --java-options "-XX:MaxRAMPercentage=75.0" \
55 --java-options "-Xms256m" \
[18161]56 --java-options "--add-modules java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web" \
[18136]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" \
[18138]67 --app-version "1.5.$1" \
[18136]68 --copyright "JOSM, and all its integral parts, are released under the GNU General Public License v2 or later" \
[18138]69 --vendor "JOSM" \
[18164]70 --resource-dir native/windows \
[18163]71 --win-upgrade-uuid 79be9cf4-6dc7-41e2-a6cd-bbfaa4c07481 \
[18162]72 --win-per-user-install \
73 --win-dir-chooser \
[18157]74 --win-shortcut \
75 --win-menu \
[18312]76 --win-menu-group "JOSM" \
[18136]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 \
[18304]84 --file-associations native/file-associations/xz.properties \
[18136]85 --file-associations native/file-associations/zip.properties \
[19051]86 --add-launcher "JOSM (Debug)"=native/windows/MLConsole.properties \
[18525]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
[18155]88done
[18136]89
[18164]90mv native/windows/main.wxs.bak native/windows/main.wxs
91
[18801]92mv app/JOSM-1.5."$1".exe app/JOSM.exe
93mv app/JOSM-1.5."$1".msi app/JOSM.msi
[18138]94
[18155]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
[18136]99echo "Building done."
[18146]100
101if $SIGNAPP; then
102 CERTIFICATE_P12=certificate.p12
103 echo "$SIGN_CERT" | base64 --decode > $CERTIFICATE_P12
[18155]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
[18146]108 rm $CERTIFICATE_P12
109fi
Note: See TracBrowser for help on using the repository browser.