Changeset 19030 in josm
- Timestamp:
- 2024-04-04T19:24:39+02:00 (8 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/.github/workflows/ant-test.yml
r18993 r19030 20 20 matrix: 21 21 # test against latest update of each major Java version, as well as specific updates of LTS versions: 22 java: [8, 11, 17, 21, 22 -ea]22 java: [8, 11, 17, 21, 22] 23 23 os: [ubuntu-latest, macos-latest, windows-latest] 24 24 name: Java ${{ matrix.java }} on ${{ matrix.os }} … … 44 44 45 45 - name: Install Ant 46 uses: JOSM/JOSMPluginAction/actions/setup-ant@v 146 uses: JOSM/JOSMPluginAction/actions/setup-ant@v2 47 47 48 48 - name: Test with Ant -
trunk/.github/workflows/ant.yml
r18993 r19030 1 1 name: Java CI Build 2 2 env: 3 junit_platform_version: '1.9.3'4 3 JAVAFX_VERSION: '17.0.7' 5 4 on: … … 60 59 draft: false 61 60 prerelease: ${{ env.josm_prerelease }} 61 if: github.ref == 'refs/heads/master' 62 62 63 63 build: … … 70 70 matrix: 71 71 # test against latest update of each major Java version, as well as specific updates of LTS versions: 72 java: [8, 11, 17, 21, 22 -ea]73 os: [ubuntu-latest, macos- latest, windows-latest]72 java: [8, 11, 17, 21, 22] 73 os: [ubuntu-latest, macos-14, windows-latest] 74 74 name: Java ${{ matrix.java }} on ${{ matrix.os }} 75 75 steps: … … 93 93 java-version: ${{ matrix.java }} 94 94 95 - name: Setup x64 Java (Mac) ${{ matrix.java }} 96 if: ${{ runner.os == 'macos' && runner.arch == 'ARM64' && always() }} 97 uses: actions/setup-java@v4 98 with: 99 distribution: 'zulu' 100 java-version: ${{ matrix.java }} 101 architecture: x64 102 95 103 - name: Install Ant 96 uses: JOSM/JOSMPluginAction/actions/setup-ant@v 1104 uses: JOSM/JOSMPluginAction/actions/setup-ant@v2 97 105 98 106 - name: Optimise images … … 114 122 # Calls ant with -Dreleasebuild=true if we're a 'tested' build 115 123 run: | 116 export SIGN_KEYSTORE=certificate.p12 117 echo "$SIGN_CERT" | base64 --decode > $SIGN_KEYSTORE 124 if [ ! -z "${SIGN_CERT}" ]; then 125 export SIGN_KEYSTORE=certificate.p12 126 echo "$SIGN_CERT" | base64 --decode > $SIGN_KEYSTORE 127 fi 118 128 if [ "${{ needs.createrelease.outputs.josm_prerelease }}" == "true" ]; then 119 129 ANT="ant" … … 122 132 fi 123 133 $ANT dist 124 rm $SIGN_KEYSTORE134 if [ ! -z "${SIGN_KEYSTORE}" ]; then rm $SIGN_KEYSTORE; fi 125 135 126 136 - name: Upload jar 127 if: ${{ always() }}137 if: ${{ always() && needs.createrelease.outputs.upload_url }} 128 138 env: 129 139 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} … … 144 154 APPLE_ID_TEAM: ${{ secrets.APPLE_ID_TEAM }} 145 155 run: | 146 if [ ! -f tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}-jmods.zip ]; then 147 curl -o tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}-jmods.zip https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-x64_bin-jmods.zip 148 fi 149 unzip tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}-jmods.zip 150 mv javafx-jmods-${JAVAFX_VERSION}/*.jmod $JAVA_HOME/jmods/ 151 ./native/macosx/macos-jpackage.sh ${{ needs.createrelease.outputs.josm_revision }} 156 function setup_openjfx() { 157 if [ ! -f tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}_${2}-jmods.zip ]; then 158 curl -o tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}_${2}-jmods.zip https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${1}_bin-jmods.zip 159 fi 160 unzip tools/openjfx-${JAVAFX_VERSION}_${{ runner.os }}_${2}-jmods.zip 161 mv javafx-jmods-${JAVAFX_VERSION}/*.jmod $JAVA_HOME/jmods/ 162 } 163 164 if [ ${{ runner.arch }} == "ARM64" ]; then 165 JAVA_HOME="${JAVA_HOME_${{ matrix.java }}_ARM64}" PATH="${JAVA_HOME_${{ matrix.java }}_ARM64}/bin:${PATH}" setup_openjfx aarch64 ARM64 166 JAVA_HOME="${JAVA_HOME_${{ matrix.java }}_X64}" PATH="${JAVA_HOME_${{ matrix.java }}_X64}/bin:${PATH}" setup_openjfx x64 X64 167 JAVA_HOME="${JAVA_HOME_${{ matrix.java }}_ARM64}" ./native/macosx/macos-jpackage.sh ${{ needs.createrelease.outputs.josm_revision }} "${JAVA_HOME_${{ matrix.java }}_X64}" 168 else 169 setup_openjfx x64 X64 170 ./native/macosx/macos-jpackage.sh ${{ needs.createrelease.outputs.josm_revision }} 171 fi 152 172 153 173 - name: Setup Windows PATH … … 173 193 174 194 - name: Upload macOS app 175 if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() }}195 if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() && needs.createrelease.outputs.upload_url }} 176 196 uses: actions/upload-release-asset@v1 177 197 env: … … 183 203 asset_content_type: application/zip 184 204 205 - name: Upload macOS app (x64) 206 if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() && runner.arch == 'ARM64' && needs.createrelease.outputs.upload_url }} 207 uses: actions/upload-release-asset@v1 208 env: 209 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 210 with: 211 upload_url: ${{ needs.createrelease.outputs.upload_url }} # This pulls from the CREATE RELEASE job above, referencing its ID to get its outputs object, which include a `upload_url`. 212 asset_path: app/JOSM_${{ matrix.java }}_x86_64.zip 213 asset_name: JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}-x64.zip 214 asset_content_type: application/zip 215 216 - name: Upload macOS app (aarch64) 217 if: ${{ runner.os == 'macos' && matrix.java != '8' && matrix.java != '11' && always() && runner.arch == 'ARM64' && needs.createrelease.outputs.upload_url }} 218 uses: actions/upload-release-asset@v1 219 env: 220 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 221 with: 222 upload_url: ${{ needs.createrelease.outputs.upload_url }} # This pulls from the CREATE RELEASE job above, referencing its ID to get its outputs object, which include a `upload_url`. 223 asset_path: app/JOSM_${{ matrix.java }}_arm64.zip 224 asset_name: JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}-aarch64.zip 225 asset_content_type: application/zip 226 185 227 - name: Upload Windows Installer executable 186 if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() }}228 if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() && needs.createrelease.outputs.upload_url }} 187 229 uses: actions/upload-release-asset@v1 188 230 env: … … 195 237 196 238 - name: Upload Windows Installer package 197 if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() }}239 if: ${{ runner.os == 'windows' && matrix.java != '8' && matrix.java != '11' && always() && needs.createrelease.outputs.upload_url }} 198 240 uses: actions/upload-release-asset@v1 199 241 env: -
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.