Changeset 19582 in josm


Ignore:
Timestamp:
2026-06-12T15:45:59+02:00 (2 days ago)
Author:
stoecker
Message:

see #24689 - fix MacOS signing - patch by Thomas Skowron

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/.github/workflows/ant-test.yml

    r19573 r19582  
    5757      - name: Upload Ant reports
    5858        if: ${{ always() }}
    59         uses: actions/download-artifact@v7
     59        uses: actions/upload-artifact@v4
    6060        with:
    61           name: Ant reports for JOSM ${{ needs.createrelease.outputs.josm_revision }} on java ${{ matrix.java }} on ${{ matrix.os }}
     61          name: Ant reports for JOSM on java ${{ matrix.java }} on ${{ matrix.os }}
    6262          path: |
    6363            test/report/*.txt
     
    7474    steps:
    7575      - name: Download Artifacts
    76         uses: actions/download-artifact@v8
     76        uses: actions/download-artifact@v4
    7777        with:
    7878          path: artifacts
  • trunk/native/macosx/macos-jpackage.sh

    r19215 r19582  
    4141    echo "$CERT_MACOS_P12" | base64 --decode > $CERTIFICATE_P12
    4242    security create-keychain -p "$KEYCHAIN_PW" $KEYCHAIN
     43    security set-keychain-settings -lut 21600 $KEYCHAIN
    4344    security default-keychain -s $KEYCHAIN
     45    security list-keychains -d user -s $KEYCHAIN login.keychain-db
    4446    security unlock-keychain -p "$KEYCHAIN_PW" $KEYCHAIN
    4547    security import $CERTIFICATE_P12 -k $KEYCHAIN -P "$CERT_MACOS_PW" -T /usr/bin/codesign
    46     security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PW" $KEYCHAIN
     48    security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PW" $KEYCHAIN
    4749    rm $CERTIFICATE_P12
    4850    SIGNAPP=true
     
    5254
    5355set -u
     56
     57# For two-arch builds (ARM64 runner), the x64 jpackage runs under Rosetta 2 and
     58# cannot access the keychain item; sign_app re-signs everything after the merge
     59# anyway, so skip jpackage's --mac-sign for this case entirely.
     60if [ -n "${2:-}" ]; then
     61    JPACKAGEOPTIONS=""
     62fi
    5463
    5564function do_jpackage() {
     
    91100  echo "Building done (${JAVA_HOME})."
    92101}
    93 function do_signapp() {
     102function notarize_app() {
    94103  echo "Compressing app (${1})"
    95104  ditto -c -k --zlibCompressionLevel 9 --keepParent "app/${1}.app" "app/${1}.zip"
     
    150159  directory_iterate "JOSM_${second}.app" "JOSM.app" "JOSM_${first}.app" "JOSM_${second}.app"
    151160  )
    152   do_signapp "JOSM_${first}"
    153   do_signapp "JOSM_${second}"
    154161  if [ "${KEYCHAINPATH}" != "false" ]; then
     162    security unlock-keychain -p "$KEYCHAIN_PW" $KEYCHAIN
     163    CODESIGN_OPTS=(--sign "FOSSGIS e.V." --force --keychain "${KEYCHAINPATH}" --timestamp --options runtime
     164      --entitlements "$(dirname "${BASH_SOURCE[0]}")/josm.entitlements")
    155165    function do_codesign() {
    156       codesign --sign "FOSSGIS e.V." \
    157         --force \
    158         --keychain "${KEYCHAINPATH}" \
    159         --timestamp \
     166      codesign "${CODESIGN_OPTS[@]}" \
    160167        --prefix "de.openstreetmap.josm" \
    161168        --identifier "${2}" \
    162         --options runtime \
    163         --entitlements "$(dirname "${BASH_SOURCE[0]}")/josm.entitlements" \
    164169        --verbose=4 "${1}"
    165170    }
    166     do_codesign app/JOSM.app/Contents/runtime "com.oracle.java.de.openstreetmap.josm"
    167     do_codesign app/JOSM.app/ "de.openstreetmap.josm"
     171    function sign_app() {
     172      # jpackage's --mac-sign does not produce valid Developer ID signatures with
     173      # secure timestamps. Sign every Mach-O binary in the app individually first
     174      # (inside-out), then seal the runtime bundle and the app bundle.
     175      while IFS= read -r -d '' binary; do
     176        if file "$binary" | grep -q 'Mach-O'; then
     177          codesign "${CODESIGN_OPTS[@]}" "$binary"
     178        fi
     179      done < <(find "${1}" -type f -print0)
     180      do_codesign "${1}/Contents/runtime" "com.oracle.java.de.openstreetmap.josm"
     181      do_codesign "${1}/" "de.openstreetmap.josm"
     182    }
     183    sign_app "app/JOSM_${first}.app"
     184    sign_app "app/JOSM_${second}.app"
     185    sign_app "app/JOSM.app"
    168186  fi
     187  notarize_app "JOSM_${first}"
     188  notarize_app "JOSM_${second}"
    169189fi
    170 do_signapp JOSM
     190notarize_app JOSM
Note: See TracChangeset for help on using the changeset viewer.