dmg_sign_noterize.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import os
  2. import subprocess
  3. SOURCE_DIR = os.environ.get("SOURCE_DIR", ".")
  4. DIST_DIR = os.environ.get("DIST_DIR", os.path.join(SOURCE_DIR, "dist"))
  5. DMG_PATH = "Ultimaker-Cura.dmg"
  6. APP_PATH = os.path.join(DIST_DIR, "Ultimaker-Cura.app")
  7. ULTIMAKER_CURA_DOMAIN = os.environ.get("ULTIMAKER_CURA_DOMAIN", "nl.ultimaker.cura")
  8. def build_dmg() -> None:
  9. create_dmg_executable = os.environ.get("CREATE_DMG_EXECUTABLE", "create-dmg")
  10. arguments = [create_dmg_executable,
  11. "--window-pos", "640", "360",
  12. "--window-size", "690", "503",
  13. "--app-drop-link", "520", "272",
  14. "--volicon", f"{SOURCE_DIR}/packaging/icons/VolumeIcons_Cura.icns",
  15. "--icon-size", "90",
  16. "--icon", "Ultimaker-Cura.app", "169", "272",
  17. "--eula", f"{SOURCE_DIR}/packaging/cura_license.txt",
  18. "--background", f"{SOURCE_DIR}/packaging/icons/cura_background_dmg.png",
  19. DMG_PATH,
  20. APP_PATH]
  21. subprocess.run(arguments)
  22. def sign(file_path: str) -> None:
  23. codesign_executable = os.environ.get("CODESIGN", "codesign")
  24. codesign_identity = os.environ.get("CODESIGN_IDENTITY")
  25. arguments = [codesign_executable,
  26. "-s", codesign_identity,
  27. "--timestamp",
  28. "-i", f"{ULTIMAKER_CURA_DOMAIN}.dmg",
  29. file_path]
  30. subprocess.run(arguments)
  31. def notarize() -> None:
  32. notarize_user = os.environ.get("MAC_NOTARIZE_USER")
  33. notarize_password = os.environ.get("MAC_NOTARIZE_PASSWORD")
  34. altool_executable = os.environ.get("ALTOOL_EXECUTABLE", "altool")
  35. arguments = [
  36. "xcrun", altool_executable,
  37. "--notarize-app",
  38. "--primary-bundle-id", ULTIMAKER_CURA_DOMAIN,
  39. "--username", notarize_user,
  40. "--password", notarize_password,
  41. "--file", DMG_PATH
  42. ]
  43. subprocess.run(arguments)
  44. if __name__ == "__main__":
  45. build_dmg()
  46. sign(DMG_PATH)
  47. notarize_dmg = bool(os.environ.get("NOTARIZE_DMG", "TRUE"))
  48. if notarize_dmg:
  49. notarize()