mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-28 18:02:38 +02:00
Update macOS instructions for installing python, and fix how DMG gets created
This commit is contained in:
parent
0067f37494
commit
ee215a4870
4 changed files with 32 additions and 16 deletions
18
BUILD.md
18
BUILD.md
|
@ -46,7 +46,13 @@ Create a .rpm:
|
|||
|
||||
## macOS
|
||||
|
||||
Download and install Python 3.9.0 from https://www.python.org/downloads/release/python-390/. I downloaded `python-3.9.0-macosx10.9.pkg`.
|
||||
Install python@3.7 (PyInstaller doesn't support newer versions yet) and other dependencies from Homebrew:
|
||||
|
||||
```
|
||||
brew install python@3.7 create-dmg graphicsmagick imagemagick
|
||||
```
|
||||
|
||||
Download and install Python 3.9.0 from https://www.python.org/downloads/release/python-379/. I downloaded `python-3.7.9-macosx10.9.pkg`. (PyInstaller does not support the latest version of Python yet.)
|
||||
|
||||
If you don't have it already, install poetry (`pip3 install --user poetry`). Then install dependencies:
|
||||
|
||||
|
@ -60,19 +66,13 @@ Run from source tree:
|
|||
poetry run dangerzone
|
||||
```
|
||||
|
||||
To create an app bundle and DMG for distribution, use the `build_app.py` script
|
||||
To create an app bundle, use the `build_app.py` script:
|
||||
|
||||
```sh
|
||||
poetry run ./install/macos/build_app.py
|
||||
```
|
||||
|
||||
If you want to build for distribution, you'll need a codesigning certificate, and you'll also need to have [create-dmg](https://github.com/sindresorhus/create-dmg) installed:
|
||||
|
||||
```sh
|
||||
brew install create-dmg graphicsmagick imagemagick
|
||||
```
|
||||
|
||||
And then run `build_app.py --with-codesign`:
|
||||
If you want to build for distribution, you'll need a codesigning certificate, and then run:
|
||||
|
||||
```sh
|
||||
poetry run ./install/macos/build_app.py --with-codesign
|
||||
|
|
|
@ -36,17 +36,19 @@ To make a macOS release, go to macOS build machine:
|
|||
- Verify and checkout the git tag for this release
|
||||
- Run `poetry install`
|
||||
- Run `poetry run ./install/macos/build_app.py --with-codesign`; this will make `dist/Dangerzone.dmg`
|
||||
- Notarize it: `xcrun altool --notarize-app --primary-bundle-id "media.firstlook.dangerzone" -u "micah@firstlook.org" -p "@keychain:dangerzone-notarize" --file dist/Dangerzone $VERSION.dmg`
|
||||
- Notarize it: `xcrun altool --notarize-app --primary-bundle-id "media.firstlook.dangerzone" -u "micah@firstlook.org" -p "@keychain:dangerzone-notarize" --file dist/Dangerzone.dmg`
|
||||
- Wait for it to get approved, check status with: `xcrun altool --notarization-history 0 -u "micah@firstlook.org" -p "@keychain:dangerzone-notarize"`
|
||||
- (If it gets rejected, you can see why with: `xcrun altool --notarization-info [RequestUUID] -u "micah@firstlook.org" -p "@keychain:dangerzone-notarize"`)
|
||||
- After it's approved, staple the ticket: `xcrun stapler staple dist/Dangerzone $VERSION.dmg`
|
||||
- After it's approved, staple the ticket: `xcrun stapler staple dist/Dangerzone.dmg`
|
||||
|
||||
This process ends up with the final file:
|
||||
|
||||
```
|
||||
dist/Dangerzone $VERSION.dmg
|
||||
dist/Dangerzone.dmg
|
||||
```
|
||||
|
||||
Rename `Dangerzone.dmg` to `Dangerzone $VERSION.dmg`.
|
||||
|
||||
## Windows release
|
||||
|
||||
To make a Windows release, go to the Windows build machine:
|
||||
|
|
|
@ -33,6 +33,7 @@ def main():
|
|||
dist_path = os.path.join(root, "dist")
|
||||
app_path = os.path.join(dist_path, "Dangerzone.app")
|
||||
dmg_path = os.path.join(dist_path, "Dangerzone.dmg")
|
||||
icon_path = os.path.join(root, "install", "macos", "dangerzone.icns")
|
||||
|
||||
print("○ Deleting old build and dist")
|
||||
if os.path.exists(build_path):
|
||||
|
@ -77,7 +78,20 @@ def main():
|
|||
return
|
||||
|
||||
print("○ Creating DMG")
|
||||
run(["create-dmg", dmg_path, app_path, "--identity", identity_name_application])
|
||||
run([
|
||||
"create-dmg",
|
||||
"--volname", "Dangerzone",
|
||||
"--volicon", icon_path,
|
||||
"--window-size", "400", "200",
|
||||
"--icon-size", "100",
|
||||
"--icon", "Dangerzone.app", "100", "70",
|
||||
"--hide-extension", "Dangerzone.app",
|
||||
"--app-drop-link", "300", "70",
|
||||
dmg_path,
|
||||
app_path,
|
||||
"--identity",
|
||||
identity_name_application
|
||||
])
|
||||
|
||||
print(f"○ Finished building DMG: {dmg_path}")
|
||||
|
||||
|
|
6
poetry.lock
generated
6
poetry.lock
generated
|
@ -76,7 +76,7 @@ hook_testing = ["pytest (>=2.7.3)", "execnet (>=1.5.0)", "psutil"]
|
|||
|
||||
[[package]]
|
||||
name = "pyinstaller-hooks-contrib"
|
||||
version = "2020.9"
|
||||
version = "2020.10"
|
||||
description = "Community maintained hooks for PyInstaller"
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -267,8 +267,8 @@ pyinstaller = [
|
|||
{file = "pyinstaller-4.0.tar.gz", hash = "sha256:970beb07115761d5e4ec317c1351b712fd90ae7f23994db914c633281f99bab0"},
|
||||
]
|
||||
pyinstaller-hooks-contrib = [
|
||||
{file = "pyinstaller-hooks-contrib-2020.9.tar.gz", hash = "sha256:a5fd45a920012802e3f2089e1d3501ef2f49265dfea8fc46c3310f18e3326c91"},
|
||||
{file = "pyinstaller_hooks_contrib-2020.9-py2.py3-none-any.whl", hash = "sha256:c382f3ac1a42b45cfecd581475c36db77da90e479b2f5bcb6d840d21fa545114"},
|
||||
{file = "pyinstaller-hooks-contrib-2020.10.tar.gz", hash = "sha256:bf4543a16c9c6e9dd2d70ea3fee78b81d3357a68f706df471d990213892259d9"},
|
||||
{file = "pyinstaller_hooks_contrib-2020.10-py2.py3-none-any.whl", hash = "sha256:dd752c88c1c7bb6920f7de248c12d4411c0463877e5e64afdc4f7e93dff9fc94"},
|
||||
]
|
||||
pyobjc-core = [
|
||||
{file = "pyobjc-core-6.2.2.tar.gz", hash = "sha256:38e7b15a042439dadd18b28b78229e52fb882460fc16ddbae342b9972d5a827c"},
|
||||
|
|
Loading…
Reference in a new issue