aboutsummaryrefslogtreecommitdiff
path: root/BUILD.md
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2020-03-22 11:23:24 -0700
committerMicah Lee <micah@micahflee.com>2020-03-22 11:23:24 -0700
commit097f5f604709bb75d2b4c91ec90acb4f2749a523 (patch)
tree2a8b58a9a711e64ff89de50d6ffbb92c04eb4f3b /BUILD.md
parenta217e54d28dd29ba1efc5314094f2b354320d69d (diff)
parent8b119353ae24737e15763f583d1824c7e30b4455 (diff)
downloadonionshare-097f5f604709bb75d2b4c91ec90acb4f2749a523.tar.gz
onionshare-097f5f604709bb75d2b4c91ec90acb4f2749a523.zip
Merge branch 'develop' into 1064_tabs
Diffstat (limited to 'BUILD.md')
-rw-r--r--BUILD.md83
1 files changed, 49 insertions, 34 deletions
diff --git a/BUILD.md b/BUILD.md
index acd195a2..c761f887 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -1,3 +1,22 @@
+# Index
+* [Building OnionShare](#building-onionshare)
+ * [Linux](#linux)
+ * [For Debian-like distros](#for-debian-like-distros)
+ * [For Fedora-like distros](#for-fedora-like-distros)
+ * [macOS](#macos)
+ * [Windows](#windows)
+ * [Setting up your dev environment](#setting-up-your-dev-environment)
+ * [To make a .exe](#to-make-a-exe)
+ * [To build the installer](#to-build-the-installer)
+* [Running tests](#running-tests)
+* [Making releases](#making-releases)
+ * [Changelog, version, and signed git tag](#changelog-version-and-signed-git-tag)
+ * [Linux release](#linux-release)
+ * [macOS release](#macos-release)
+ * [Windows release](#windows-release)
+ * [Source package](#source-package)
+ * [Publishing the release](#publishing-the-release)
+
# Building OnionShare
Start by getting the source code:
@@ -11,13 +30,13 @@ cd onionshare
Install the needed dependencies:
-For Debian-like distros:
+#### For Debian-like distros:
```
apt install -y python3-flask python3-stem python3-pyqt5 python3-crypto python3-socks python-nautilus tor obfs4proxy python3-pytest build-essential fakeroot python3-all python3-stdeb dh-python python3-flask-httpauth python3-distutils python3-psutil python3-watchdog
```
-For Fedora-like distros:
+#### For Fedora-like distros:
```
dnf install -y python3-flask python3-flask-httpauth python3-stem python3-qt5 python3-crypto python3-pysocks nautilus-python tor obfs4 python3-pytest rpm-build python3-psutil python3-watchdog
@@ -36,7 +55,7 @@ Create a .deb on Debian-like distros: `./install/build_deb.sh`
Create a .rpm on Fedora-like distros: `./install/build_rpm.sh`
-For OpenSuSE: There are instructions for building [in the wiki](https://github.com/micahflee/onionshare/wiki/Linux-Distribution-Support#opensuse-leap-150).
+For openSUSE: There are instructions for building [in the wiki](https://github.com/micahflee/onionshare/wiki/Linux-Distribution-Support#opensuse-leap-150).
For ArchLinux: There is a PKBUILD available [here](https://aur.archlinux.org/packages/onionshare/) that can be used to install OnionShare.
@@ -52,24 +71,17 @@ You may also need to run the command `/Applications/Python\ 3.7/Install\ Certifi
Install Qt 5.13.1 for macOS from https://www.qt.io/offline-installers. I downloaded `qt-opensource-mac-x64-5.13.1.dmg`. In the installer, you can skip making an account, and all you need is `Qt` > `Qt 5.13.1` > `macOS`.
-Now install pip dependencies. If you want to use a virtualenv, create it and activate it first:
+If you don't have it already, install poetry (`pip3 install --user poetry`). Then install dependencies:
```sh
-python3 -m venv venv
-. venv/bin/activate
-```
-
-Then install the dependencies:
-
-```sh
-pip3 install -r install/requirements.txt
+poetry install
```
#### You can run both the CLI and GUI versions of OnionShare without building an bundle
```sh
-./dev_scripts/onionshare
-./dev_scripts/onionshare-gui
+poetry run ./dev_scripts/onionshare
+poetry run ./dev_scripts/onionshare-gui
```
#### To build the app bundle
@@ -94,19 +106,25 @@ Now you should have `dist/OnionShare.pkg`.
Download Python 3.7.4, 32-bit (x86) from https://www.python.org/downloads/release/python-374/. I downloaded `python-3.7.4.exe`. When installing it, make sure to check the "Add Python 3.7 to PATH" checkbox on the first page of the installer.
-Open a command prompt, cd to the onionshare folder, and install dependencies with pip:
+Install the Qt 5.13.1 from https://www.qt.io/offline-installers. I downloaded `qt-opensource-windows-x86-5.13.1.exe`. In the installer, you can skip making an account, and all you need `Qt` > `Qt 5.13.1` > `MSVC 2017 32-bit`.
+
+Install [poetry](https://python-poetry.org/). Open PowerShell, and run:
-```cmd
-pip install -r install\requirements.txt
+```
+(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python
```
-Install the Qt 5.13.1 from https://www.qt.io/offline-installers. I downloaded `qt-opensource-windows-x86-5.13.1.exe`. In the installer, you can skip making an account, and all you need `Qt` > `Qt 5.13.1` > `MSVC 2017 32-bit`.
+And add `%USERPROFILE%\.poetry\bin` to your path. Then open a command prompt and cd to the `dangerzone` folder, and install the poetry dependencies:
+
+```
+poetry install
+```
After that you can try both the CLI and the GUI version of OnionShare:
```
-python dev_scripts\onionshare
-python dev_scripts\onionshare-gui
+poetry run python dev_scripts\onionshare
+poetry run python dev_scripts\onionshare-gui
```
#### If you want to build a .exe
@@ -141,19 +159,6 @@ cd "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\
vcvars32.bat
```
-Make sure you have a new enough `setuptools`:
-
-```
-pip install --upgrade setuptools
-```
-
-Now make sure you don't have PyInstaller installed from pip:
-
-```
-pip uninstall PyInstaller
-rmdir C:\Users\user\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyInstaller /S
-```
-
Change to a folder where you keep source code, and clone the PyInstaller git repo and checkout the `v3.5` tag:
```
@@ -164,6 +169,14 @@ git tag -v v3.5
(Note that ideally you would verify the git tag, but the PGP key that has signed the `v3.5` git tag for is not published anywhere, so this isn't possible. See [this issue](https://github.com/pyinstaller/pyinstaller/issues/4430).)
+The next step is to compile the bootloader. We should do this all in dangerzone's poetry shell:
+
+```
+cd onionshare
+poetry shell
+cd ..\pyinstaller
+```
+
And compile the bootloader, following [these instructions](https://pythonhosted.org/PyInstaller/bootloader-building.html). To compile, run this:
```
@@ -171,11 +184,12 @@ cd bootloader
python waf distclean all --target-arch=32bit --msvc_targets=x86
```
-Finally, install the PyInstaller module into your local site-packages:
+Finally, install the PyInstaller module into your poetry environment:
```
cd ..
python setup.py install
+exit
```
Now the next time you use PyInstaller to build OnionShare, the `.exe` file should not be flagged as malicious by anti-virus.
@@ -245,6 +259,7 @@ This section documents the release process. Unless you're a core OnionShare deve
Before making a release, all of these should be complete:
* `share/version.txt` should have the correct version
+* `pyproject.toml` should have the correct version
* `install/onionshare.nsi` should have the correct version, for the Windows installer
* `CHANGELOG.md` should be updated to include a list of all major changes since the last release
* There must be a PGP-signed git tag for the version, e.g. for OnionShare 2.1, the tag must be `v2.1`