Changeset 19030 in josm for trunk/native
- Timestamp:
- 2024-04-04T19:24:39+02:00 (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/native/macosx/macos-jpackage.sh
r18904 r19030 16 16 if [ -z "${1-}" ] 17 17 then 18 echo "Usage: $0 josm_revision" 18 echo "Usage: $0 josm_revision [other_arch_jdk]" 19 19 exit 1 20 20 fi … … 53 53 set -u 54 54 55 echo "Building and signing app" 56 # We specifically need the options to not be quoted -- we _want_ the word splitting. 57 # shellcheck disable=SC2086 58 jpackage $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \ 59 --main-class org.openstreetmap.josm.gui.MainApplication \ 60 --icon ./native/macosx/JOSM.icns --type app-image --dest app \ 61 --java-options "--add-modules java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web" \ 62 --java-options "--add-exports=java.base/sun.security.action=ALL-UNNAMED" \ 63 --java-options "--add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED" \ 64 --java-options "--add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED" \ 65 --java-options "--add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED" \ 66 --java-options "--add-opens=java.base/java.lang=ALL-UNNAMED" \ 67 --java-options "--add-opens=java.base/java.nio=ALL-UNNAMED" \ 68 --java-options "--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED" \ 69 --java-options "--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED" \ 70 --java-options "--add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED" \ 71 --java-options "--add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED" \ 72 --java-options "--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED" \ 73 --app-version "$1" \ 74 --copyright "JOSM, and all its integral parts, are released under the GNU General Public License v2 or later" \ 75 --vendor "JOSM" \ 76 --mac-package-identifier de.openstreetmap.josm \ 77 --mac-package-signing-prefix de.openstreetmap.josm \ 78 --file-associations native/file-associations/bz2.properties \ 79 --file-associations native/file-associations/geojson.properties \ 80 --file-associations native/file-associations/gpx.properties \ 81 --file-associations native/file-associations/gz.properties \ 82 --file-associations native/file-associations/jos.properties \ 83 --file-associations native/file-associations/joz.properties \ 84 --file-associations native/file-associations/osm.properties \ 85 --file-associations native/file-associations/xz.properties \ 86 --file-associations native/file-associations/zip.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 55 function do_jpackage() { 56 echo "Building app (${JAVA_HOME})" 57 # We specifically need the options to not be quoted -- we _want_ the word splitting. 58 # shellcheck disable=SC2086 59 "${JAVA_HOME}/bin/jpackage" $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \ 60 --main-class org.openstreetmap.josm.gui.MainApplication \ 61 --icon ./native/macosx/JOSM.icns --type app-image --dest app \ 62 --java-options "--add-modules java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web" \ 63 --java-options "--add-exports=java.base/sun.security.action=ALL-UNNAMED" \ 64 --java-options "--add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED" \ 65 --java-options "--add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED" \ 66 --java-options "--add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED" \ 67 --java-options "--add-opens=java.base/java.lang=ALL-UNNAMED" \ 68 --java-options "--add-opens=java.base/java.nio=ALL-UNNAMED" \ 69 --java-options "--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED" \ 70 --java-options "--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED" \ 71 --java-options "--add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED" \ 72 --java-options "--add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED" \ 73 --java-options "--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED" \ 74 --app-version "$1" \ 75 --copyright "JOSM, and all its integral parts, are released under the GNU General Public License v2 or later" \ 76 --vendor "JOSM" \ 77 --mac-package-identifier de.openstreetmap.josm \ 78 --mac-package-signing-prefix de.openstreetmap.josm \ 79 --file-associations native/file-associations/bz2.properties \ 80 --file-associations native/file-associations/geojson.properties \ 81 --file-associations native/file-associations/gpx.properties \ 82 --file-associations native/file-associations/gz.properties \ 83 --file-associations native/file-associations/jos.properties \ 84 --file-associations native/file-associations/joz.properties \ 85 --file-associations native/file-associations/osm.properties \ 86 --file-associations native/file-associations/xz.properties \ 87 --file-associations native/file-associations/zip.properties \ 88 --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 89 echo "Building done (${JAVA_HOME})." 90 } 91 function do_signapp() { 92 echo "Compressing app (${1})" 93 ditto -c -k --zlibCompressionLevel 9 --keepParent "app/${1}.app" "app/${1}.zip" 94 if $SIGNAPP; then 95 echo "Signing app (${1})" 96 echo "Preparing for notarization" 97 echo "Uploading to Apple" 98 xcrun notarytool submit --apple-id "$APPLE_ID" --password "$APPLE_ID_PW" --team-id "$APPLE_ID_TEAM" --wait "app/${1}.zip" 99 fi 100 } 88 101 89 echo "Building done." 102 function merge() { 103 if [ "$(command -v lipo)" ]; then 104 lipo -create -output "${1}" "${2}" "${3}" 105 elif [ "$(command -v llvm-lipo-15)" ]; then 106 llvm-lipo-15 -create -output "${1}" "${2}" "${3}" 107 fi 108 } 90 109 91 if $SIGNAPP; then 92 echo "Preparing for notarization" 93 ditto -c -k --zlibCompressionLevel 9 --keepParent app/JOSM.app app/JOSM.zip 110 function copy() { 111 # Trim the root path 112 FILE="${1#*/}" 113 if [ ! -e "${2}/${FILE}" ]; then 114 # Only make directories if we aren't looking at the root files 115 if [[ "${FILE}" == *"/"* ]]; then mkdir -p "${2}/${FILE%/*}"; fi 116 if file "${1}" | grep -q 'Mach-O' ; then 117 merge "${2}/${FILE}" "${3}/${FILE}" "${4}/${FILE}" 118 if file "${1}" | grep -q 'executable'; then 119 chmod 755 "${2}/${FILE}" 120 fi 121 else 122 cp -a "${1}" "${2}/${FILE}" 123 fi 124 fi 125 } 94 126 95 echo "Uploading to Apple" 96 xcrun notarytool submit --apple-id "$APPLE_ID" --password "$APPLE_ID_PW" --team-id "$APPLE_ID_TEAM" --wait app/JOSM.zip 127 function directory_iterate() { 128 while IFS= read -r -d '' file 129 do 130 copy "${file}" "${2}" "${3}" "${4}" & 131 done < <(find "${1}" -type f,l -print0) 132 wait 133 } 134 135 do_jpackage "${1}" 136 if [ -n "${2}" ]; then 137 function get_name() { 138 echo "$("${JAVA_HOME}/bin/java" --version | head -n1 | awk '{print $2}' | awk -F'.' '{print $1}')_$(file "${JAVA_HOME}/bin/java" | awk -F' executable ' '{print $2}')" 139 } 140 first="$(get_name)" 141 JAVA_HOME="${2}" second="$(get_name)" 142 mv app/JOSM.app "app/JOSM_${first}.app" 143 JAVA_HOME="${2}" do_jpackage "${1}" 144 mv app/JOSM.app "app/JOSM_${second}.app" 145 mkdir app/JOSM.app 146 (cd app 147 directory_iterate "JOSM_${first}.app" "JOSM.app" "JOSM_${first}.app" "JOSM_${second}.app" 148 directory_iterate "JOSM_${second}.app" "JOSM.app" "JOSM_${first}.app" "JOSM_${second}.app" 149 ) 150 do_signapp "JOSM_${first}" 151 do_signapp "JOSM_${second}" 97 152 fi 153 do_signapp JOSM
Note:
See TracChangeset
for help on using the changeset viewer.