Changeset 17487 in josm
- Timestamp:
- 2021-02-08T20:52:53+01:00 (4 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/.github/workflows/ant.yml
r17373 r17487 24 24 josm_revision: ${{ steps.create_revision.outputs.josm_revision }} 25 25 josm_prerelease: ${{ steps.create_revision.outputs.josm_prerelease }} 26 josm_release_tag: ${{ steps.create_revision.outputs.josm_release_tag }} 26 27 steps: 27 28 - name: Checkout 28 29 uses: actions/checkout@v2 29 30 with: 30 fetch-depth: 3231 fetch-depth: 256 31 32 - name: Set revision env variable 32 33 id: create_revision … … 35 36 josm_revision="$(git log -1 --grep 'git-svn-id: https://josm.openstreetmap.de/svn/trunk@' --pretty=format:%B | tail -1 | sed -n 's%git-svn-id: https://josm.openstreetmap.de/svn/trunk@\([0-9]*\) [-0-9a-f]*%\1%p')" 36 37 if [[ "$josm_revision" == "$(curl --silent https://josm.openstreetmap.de/tested)" ]]; then 37 sed -i '/Is-Local-Build/d' resources/REVISION38 38 echo "josm_prerelease=false" >> $GITHUB_ENV 39 39 echo "::set-output name=josm_prerelease::false" 40 echo "josm_release=$josm_revision-tested" >> $GITHUB_ENV40 josm_release_tag=$josm_revision-tested 41 41 else 42 42 echo "josm_prerelease=true" >> $GITHUB_ENV 43 43 echo "::set-output name=josm_prerelease::true" 44 echo "josm_release=$josm_revision" >> $GITHUB_ENV44 josm_release_tag=$josm_revision 45 45 fi 46 46 echo "josm_revision=$josm_revision" >> $GITHUB_ENV 47 47 echo "::set-output name=josm_revision::$josm_revision" 48 echo "josm_release_tag=$josm_release_tag" >> $GITHUB_ENV 49 echo "::set-output name=josm_release_tag::$josm_release_tag" 48 50 - name: Create release 49 51 id: create_release … … 52 54 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token 53 55 with: 54 tag_name: ${{ env.josm_release }} 55 release_name: JOSM.app release ${{ env.josm_release }} 56 tag_name: ${{ env.josm_release_tag }} 57 release_name: JOSM.app release ${{ env.josm_release_tag }} 56 58 body: | 57 JOSM.app release ${{ env.josm_release }} 59 JOSM.app release ${{ env.josm_release_tag }} 58 60 draft: false 59 61 prerelease: ${{ env.josm_prerelease }} … … 84 86 uses: actions/checkout@v2 85 87 with: 86 fetch-depth: 3288 fetch-depth: 256 87 89 - name: Cache 88 90 uses: actions/cache@v2.0.0 … … 120 122 defaults write net.pornel.ImageOptim PngOutEnabled 1 121 123 /Applications/ImageOptim.app/Contents/MacOS/ImageOptim resources/images 124 - name: Set Is-Local-Build 125 if: ${{ ! needs.createrelease.outputs.josm_prerelease }} 126 run: | 127 ant create-revision 128 sed -i.bak '/Is-Local-Build/d' resources/REVISION 122 129 - name: Build with Ant 123 130 # Disables errorprone for Java 16 … … 130 137 fi 131 138 - name: Upload jar 132 if: ${{ always() && matrix.headless }} 139 # Only run on matrix.headless to avoid double jars. They should be the same jars. 140 # uses `gh release upload` to avoid https://github.com/actions/upload-release-asset/issues/69 141 if: ${{ always() && matrix.headless == 'true' }} 133 142 id: upload-jar 143 env: 144 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 134 145 uses: actions/upload-release-asset@v1 135 env:136 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}137 146 with: 138 147 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`. … … 140 149 asset_name: JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}.jar 141 150 asset_content_type: application/java-archive 151 # run: | 152 # cp dist/josm-custom.jar JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}.jar 153 # gh release upload ${{ needs.createrelease.outputs.josm_release_tag }} JOSM-${{ runner.os}}-java${{ matrix.java }}-${{ needs.createrelease.outputs.josm_revision }}.jar 142 154 - name: Test with Ant, headless ${{ matrix.headless }} 143 155 if: ${{ needs.createrelease.outputs.josm_prerelease }} … … 158 170 name: Ant reports for JOSM ${{ needs.createrelease.outputs.josm_revision }} on java ${{ matrix.java }} on ${{ matrix.os }} with headless=${{ matrix.headless }} 159 171 path: test/report/*.txt 172 - name: Publish Test Report with junit-report-annotations-action 173 uses: ashley-taylor/junit-report-annotations-action@1.3 174 if: always() 175 with: 176 access-token: ${{ secrets.GITHUB_TOKEN }} 177 path: 'test/report/TEST*.xml' 178 - name: Publish Test Report with action-junit-report 179 if: always() 180 uses: mikepenz/action-junit-report@v1 181 with: 182 report_paths: 'test/report/TEST*.xml' 183 github_token: ${{ secrets.GITHUB_TOKEN }} 160 184 - name: Build and package for macOS 161 185 if: ${{ runner.os == 'macos' && always() }} -
trunk/native/macosx/macos-jpackage.sh
r17373 r17487 1 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 # APPLE_ID_PW Password for the Apple ID 6 # CERT_MACOS_P12 Certificate used for code signing, base64 encoded 7 # CERT_MACOS_PW Password for that certificate 2 8 3 9 set -Eeou pipefail … … 6 12 set +x 7 13 8 SIGNING_KEY_NAME="Developer ID Application: FOSSGIS e.V. (P8AAAGN2AM)"14 APPLE_ID="thomas.skowron@fossgis.de" 9 15 IMPORT_AND_UNLOCK_KEYCHAIN=${IMPORT_AND_UNLOCK_KEYCHAIN:-1} 10 16 … … 19 25 mkdir app 20 26 21 if [[ $IMPORT_AND_UNLOCK_KEYCHAIN == 1 ]]; then 22 if [ -z "$CERT_MACOS_P12" ] 23 then 24 echo "CERT_MACOS_P12 must be set in the environment. Won't sign app." 25 exit 1 26 fi 27 28 29 if [ -z "$CERT_MACOS_PW" ] 30 then 31 echo "CERT_MACOS_P12 must be set in the environment. Won't sign app." 32 exit 1 33 fi 34 27 if [ -z "$CERT_MACOS_P12" ] || [ -z "$CERT_MACOS_PW" ] || [ -z "$APPLE_ID_PW" ] 28 then 29 echo "CERT_MACOS_P12, CERT_MACOS_PW and APPLE_ID_PW are not set in the environment." 30 echo "I will create a JOSM.app but I won't attempt to sign and notarize it." 31 SIGNAPP=false 32 else 35 33 echo "Preparing certificates/keychain for signing…" 36 34 37 35 KEYCHAIN=build.keychain 38 36 KEYCHAINPATH=~/Library/Keychains/$KEYCHAIN-db 39 KEYCHAIN_PW= `head /dev/urandom | base64 | head -c 20`37 KEYCHAIN_PW=$(head /dev/urandom | base64 | head -c 20) 40 38 CERTIFICATE_P12=certificate.p12 41 39 42 echo $CERT_MACOS_P12 | base64 --decode > $CERTIFICATE_P12 43 security create-keychain -p $KEYCHAIN_PW $KEYCHAIN 40 echo "$CERT_MACOS_P12" | base64 --decode > $CERTIFICATE_P12 41 security create-keychain -p "$KEYCHAIN_PW" $KEYCHAIN 44 42 security default-keychain -s $KEYCHAIN 45 security unlock-keychain -p $KEYCHAIN_PW $KEYCHAIN 46 security import $CERTIFICATE_P12 -k $KEYCHAIN -P $CERT_MACOS_PW -T /usr/bin/codesign 47 security set-key-partition-list -S apple-tool:,apple: -s -k $KEYCHAIN_PW $KEYCHAIN 43 security unlock-keychain -p "$KEYCHAIN_PW" $KEYCHAIN 44 security import $CERTIFICATE_P12 -k $KEYCHAIN -P "$CERT_MACOS_PW" -T /usr/bin/codesign 45 security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PW" $KEYCHAIN 48 46 rm $CERTIFICATE_P12 49 47 SIGNAPP=true 50 48 echo "Signing preparation done." 51 49 fi 52 50 51 if $SIGNAPP; then 52 JPACKAGEOPTIONS="--mac-sign --mac-signing-keychain $KEYCHAINPATH" 53 else 54 JPACKAGEOPTIONS="" 55 fi 56 53 57 echo "Building and signin app" 54 jpackage -n "JOSM" --input dist --main-jar josm-custom.jar \ 58 jpackage $JPACKAGEOPTIONS -n "JOSM" --input dist --main-jar josm-custom.jar \ 55 59 --main-class org.openstreetmap.josm.gui.MainApplication \ 56 60 --icon ./native/macosx/JOSM.icns --type app-image --dest app \ 57 61 --java-options "-Xmx8192m" \ 58 --java-options "-Dapple.awt.application.appearance=system" \ 59 --app-version $1 \ 62 --app-version "$1" \ 60 63 --copyright "JOSM, and all its integral parts, are released under the GNU General Public License v2 or later" \ 61 64 --vendor "https://josm.openstreetmap.de" \ … … 76 79 echo "Building done." 77 80 78 echo "Preparing for notarization" 79 ditto -c -k --zlibCompressionLevel 9 --keepParent app/JOSM.app app/JOSM.zip 81 if $SIGNAPP; then 82 echo "Preparing for notarization" 83 ditto -c -k --zlibCompressionLevel 9 --keepParent app/JOSM.app app/JOSM.zip 80 84 81 echo "Uploading to Apple" 82 xcrun altool --notarize-app -f app/JOSM.zip -p "$APPLE_ID_PW" -u "thomas.skowron@fossgis.de" --primary-bundle-id de.openstreetmap.josm 85 echo "Uploading to Apple" 86 xcrun altool --notarize-app -f app/JOSM.zip -p "$APPLE_ID_PW" -u "$APPLE_ID" --primary-bundle-id de.openstreetmap.josm 87 fi -
trunk/src/org/openstreetmap/josm/gui/MainApplication.java
r17399 r17487 7 7 8 8 import java.awt.AWTError; 9 import java.awt.Color; 9 10 import java.awt.Container; 10 11 import java.awt.Dimension; … … 1042 1043 Logging.log(Logging.LEVEL_ERROR, null, e); 1043 1044 } 1045 } 1046 // Workaround for JDK-8251377: JTabPanel active tab is unreadable in Big Sur, see #20075 1047 // os.version will return 10.16, or 11.0 depending on environment variable 1048 // https://twitter.com/BriceDutheil/status/1330926649269956612 1049 else { 1050 final String laf = UIManager.getLookAndFeel().getID(); 1051 final String macOSVersion = getSystemProperty("os.version"); 1052 if(PlatformManager.isPlatformOsx() && (laf.contains("Mac") || laf.contains("Aqua")) && (macOSVersion.startsWith("10.16") || macOSVersion.startsWith("11"))){ 1053 UIManager.put("TabbedPane.foreground", Color.BLACK); 1054 } 1044 1055 } 1045 1056 } -
trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
r15121 r17487 26 26 import java.util.List; 27 27 import java.util.Objects; 28 import java.util.Optional; 28 29 import java.util.concurrent.ExecutionException; 29 30 … … 31 32 import org.openstreetmap.josm.gui.MainApplication; 32 33 import org.openstreetmap.josm.io.CertificateAmendment.NativeCertAmend; 34 import org.openstreetmap.josm.spi.preferences.Config; 35 33 36 34 37 /** … … 81 84 } 82 85 // setup the dock icon. It is automatically set with application bundle and Web start but we need 83 // to do it manually if run with `java -jar`` 84 eawtApplication.getDeclaredMethod("setDockIconImage", Image.class).invoke(appli, ImageProvider.get("logo").getImage()); 86 // to do it manually if run with `java -jar``. 87 eawtApplication.getDeclaredMethod("setDockIconImage", Image.class).invoke( 88 appli, 89 Optional.ofNullable( 90 new ImageProvider(Config.getUrls().getJOSMWebsite()+"/logo-macos.png").setOptional(true).get() 91 ).orElse( // Fall back to default icon 92 ImageProvider.get("logo")).getImage() 93 ); 94 85 95 // enable full screen 86 96 enableOSXFullscreen(MainApplication.getMainFrame());
Note:
See TracChangeset
for help on using the changeset viewer.