summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2020-11-08 12:07:17 -0800
committerMicah Lee <micah@micahflee.com>2020-11-08 12:07:17 -0800
commit46a9434fbfa14b4545f7f5f12f3bd3a2cc3621c9 (patch)
tree064af592ca9e469488f67ff255879c4dbf3ead9f
parentf319de1d7a833e38e190ef07072aee16e322c6fc (diff)
downloadonionshare-46a9434fbfa14b4545f7f5f12f3bd3a2cc3621c9.tar.gz
onionshare-46a9434fbfa14b4545f7f5f12f3bd3a2cc3621c9.zip
Add incomplete flatpak manifest, update release docs, re-add source package script
-rw-r--r--.gitignore1
-rw-r--r--RELEASE.md71
-rwxr-xr-xbuild-source.sh78
-rw-r--r--cli/setup.py2
-rwxr-xr-xdesktop/package/linux/build-appimage.py45
-rw-r--r--flatpak/org.onionshare.OnionShare.yaml389
6 files changed, 565 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 53788e87..258d3cf3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,7 @@ MANIFEST
env
onionshare-*.tar.gz
onionshare_*.snap
+.flatpak-builder
# Installer logs
pip-log.txt
diff --git a/RELEASE.md b/RELEASE.md
index 8ff426b7..207e97a8 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -13,12 +13,45 @@ Before making a release, you must update the version in these places:
- [ ] `desktop/src/setup.py`
- [ ] `docs/source/conf.py`
+Make sure snapcraft packaging works. In `snap/snapcraft.yaml`:
+
+- [ ] The `tor`, `libevent`, and `obfs4` parts should be updated if necessary
+- [ ] All python packages should be updated to match `cli/pyproject.toml` and `desktop/pyproject.toml`
+- [ ] Test the snap package, ensure it works
+
+Make sure Flatpak packaging works. In `flatpak/org.onionshare.OnionShare.yaml`:
+
+- [ ] Update `tor`, `libevent`, and `obfs4` dependencies, if necessary
+- [ ] Built the latest python dependencies using [this tool](https://github.com/flatpak/flatpak-builder-tools/blob/master/pip/flatpak-pip-generator) (see below)
+- [ ] Test the Flatpak package, ensure it works
+
+```
+# you may need to install toml
+pip3 install --user toml
+
+# clone flatpak-build-tools
+git clone https://github.com/flatpak/flatpak-builder-tools.git
+./flatpak-pip-generator $(python3 -c 'import toml; print("\n".join(toml.loads(open("../../onionshare/desktop/pyproject.toml").read())["tool"]["briefcase"]["app"]["onionshare"]["requires"]))' |grep -v "./onionshare_cli" |grep -v -i "pyside2" |tr "\n" " ")
+
+# now run it for all of the briefcase dependencies from pyproject.toml
+./flatpak-pip-generator $(python3 -c 'import toml; print("\n".join(toml.loads(open("../../onionshare/desktop/pyproject.toml").read())["tool"]["briefcase"]["app"]["onionshare"]["requires"]))' |grep -v "./onionshare_cli" |grep -v -i "pyside2" |tr "\n" " ")
+
+# use something like https://www.json2yaml.com/ to convert to yaml and update the manifest
+# - python3-onionshare-cli.json
+# - python3-packaging.json
+```
+
+Update the documentation:
+
+- [ ] Update all of the documentation in `docs` to cover new features, including taking new screenshots if necessary
+
You also must edit these files:
- [ ] `desktop/install/org.onionshare.OnionShare.appdata.xml` should have the correct release date, and links to correct screenshots
-- [ ] Update all of the documentation in `docs` to cover new features, including taking new screenshots if necessary.
-- [ ] In `snap/snapcraft.yaml`, the `tor`, `libevent`, and `obfs4` parts should be updated if necessary, and all python packages should be updated to match `cli/pyproject.toml` and `desktop/pyproject.toml`
- [ ] `CHANGELOG.md` should be updated to include a list of all major changes since the last release
+
+Finally:
+
- [ ] There must be a PGP-signed git tag for the version, e.g. for OnionShare 2.1, the tag must be `v2.1`
The first step for the Linux, macOS, and Windows releases is the same.
@@ -48,7 +81,14 @@ poetry publish --build
## Linux Flatpak release
-See instructions for the Flatpak release here: https://github.com/micahflee/org.onionshare.OnionShare
+You must have `flatpak` and `flatpak-builder` installed, with flathub remote added (`flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo`).
+
+Build and test the Flatpak package before publishing:
+
+```sh
+flatpak-builder build --force-clean --install-deps-from=flathub --install --user flatpak/org.onionshare.OnionShare.yaml
+flatpak run org.onionshare.OnionShare
+```
## Linux Snapcraft release
@@ -72,29 +112,18 @@ Run the OnionShare snap:
_Note: AppImage packages are currently broken due to [this briefcase bug](https://github.com/beeware/briefcase/issues/504). Until it's fixed, OnionShare for Linux will only be available in Flatpak and Snapcraft._
-Build a wheel package for OnionShare CLI:
+Set up the development environment described in `README.md`.
-```sh
-cd cli
-poetry install
-poetry build
-```
-
-This will make a file like `dist/onionshare_cli-$VERSION-py3-none-any.whl` (except with your specific version number). Move it into `../desktop/linux`:
+Make sure your virtual environment is active:
```sh
-mkdir -p ../desktop/linux
-mv dist/onionshare_cli-*-py3-none-any.whl ../desktop/linux
-# change back to the desktop directory
-cd ../desktop
+. venv/bin/activate
```
-Make sure the virtual environment is active, and then run briefcase create and briefcase build:
+Run the AppImage build script:
```sh
-. venv/bin/activate
-briefcase create
-briefcase build
+./package/linux/build-appimage.py
```
### Windows
@@ -145,7 +174,9 @@ This will create `macOS/OnionShare.dmg`, signed and notarized.
### Source package
-TODO: Write documentation for source package
+To make a source package, run `./build-source.sh $TAG`, where `$TAG` is the the name of the signed git tag, e.g. `v2.1`.
+
+This will create `dist/onionshare-$VERSION.tar.gz`.
### Publishing the release
diff --git a/build-source.sh b/build-source.sh
new file mode 100755
index 00000000..b7bd700a
--- /dev/null
+++ b/build-source.sh
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+# The script builds a source package
+
+# Usage
+display_usage() {
+ echo "Usage: $0 [tag]"
+}
+
+if [ $# -lt 1 ]
+then
+ display_usage
+ exit 1
+fi
+
+# Input validation
+TAG=$1
+
+if [ "${TAG:0:1}" != "v" ]
+then
+ echo "Tag must start with 'v' character"
+ exit 1
+fi
+
+VERSION=${TAG:1}
+
+# Make sure tag exists
+git tag | grep "^$TAG\$"
+if [ $? -ne 0 ]
+then
+ echo "Tag does not exist"
+ exit 1
+fi
+
+# Clone source
+mkdir -p build/source
+mkdir -p dist
+cd build/source
+git clone https://github.com/micahflee/onionshare.git
+cd onionshare
+
+# Verify tag
+git tag -v $TAG 2> ../verify.txt
+if [ $? -ne 0 ]
+then
+ echo "Tag does not verify"
+ exit 1
+fi
+cat ../verify.txt |grep "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73"
+if [ $? -ne 0 ]
+then
+ echo "Tag signed with wrong key"
+ exit 1
+fi
+cat ../verify.txt |grep "^gpg: Good signature from"
+if [ $? -ne 0 ]
+then
+ echo "Tag verification missing 'Good signature from'"
+ exit 1
+fi
+
+# Checkout code
+git checkout $TAG
+
+# Delete .git, compress, and PGP sign
+cd ..
+rm -rf onionshare/.git
+tar -cf onionshare-$VERSION.tar.gz onionshare/
+
+# Move source package to dist
+cd ../..
+mv build/source/onionshare-$VERSION.tar.gz dist
+
+# Clean up
+rm -rf build/source/onionshare
+rm build/source/verify.txt
+
+echo "Source package complete, file in dist"
diff --git a/cli/setup.py b/cli/setup.py
index 57503044..21ed4e06 100644
--- a/cli/setup.py
+++ b/cli/setup.py
@@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-# snap packaging uses setup.py
+# snap and flatpak packaging uses setup.py
# PyPi publishing, developing, and testing uses poetry
import os
diff --git a/desktop/package/linux/build-appimage.py b/desktop/package/linux/build-appimage.py
new file mode 100755
index 00000000..8fcbda90
--- /dev/null
+++ b/desktop/package/linux/build-appimage.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+import os
+import inspect
+import subprocess
+import argparse
+import shutil
+import glob
+
+root = os.path.dirname(
+ os.path.dirname(
+ os.path.dirname(
+ os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
+ )
+ )
+)
+
+
+def run(cmd, cwd=None):
+ subprocess.run(cmd, cwd=cwd, check=True)
+
+
+def main():
+ cli_dir = os.path.join(root, "cli")
+ desktop_dir = os.path.join(root, "desktop")
+
+ print("○ Building onionshare-cli")
+ run(["poetry", "install"], cli_dir)
+ run(["poetry", "build"], cli_dir)
+ whl_filename = glob.glob(os.path.join(cli_dir, "dist", "*.whl"))[0]
+ whl_basename = os.path.basename(whl_filename)
+ shutil.copyfile(whl_filename, os.path.join(desktop_dir, whl_basename))
+
+ print("○ Clean up from last build")
+ if os.path.exists(os.path.join(desktop_dir, "linux")):
+ shutil.rmtree(os.path.join(desktop_dir, "linux"))
+
+ print("○ Create the binary")
+ run(["briefcase", "create"], desktop_dir)
+
+ print("○ Create the AppImage")
+ run(["briefcase", "build"], desktop_dir)
+
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/flatpak/org.onionshare.OnionShare.yaml b/flatpak/org.onionshare.OnionShare.yaml
new file mode 100644
index 00000000..d7a6e336
--- /dev/null
+++ b/flatpak/org.onionshare.OnionShare.yaml
@@ -0,0 +1,389 @@
+---
+app-id: org.onionshare.OnionShare
+command: onionshare
+runtime: org.kde.Platform
+runtime-version: "5.15"
+sdk: org.kde.Sdk
+sdk-extensions:
+ - org.freedesktop.Sdk.Extension.golang
+separate-locales: false
+finish-args:
+ - "--device=dri"
+ - "--share=ipc"
+ - "--share=network"
+ - "--socket=wayland"
+ - "--socket=x11"
+ - "--talk-name=org.freedesktop.Flatpak"
+ - "--talk-name=org.freedesktop.Notifications"
+ - "--talk-name=org.freedesktop.secrets"
+ - "--filesystem=home:ro"
+ - "--filesystem=~/OnionShare:create"
+ - "--filesystem=xdg-config/onionshare:create"
+cleanup:
+ - "/go"
+ - "/bin/scripts"
+modules:
+ # thanks https://github.com/flathub/org.freecadweb.FreeCAD/blob/master/org.freecadweb.FreeCAD.yaml
+ - name: pyside2
+ buildsystem: cmake-ninja
+ builddir: true
+ config-opts:
+ - -DCMAKE_BUILD_TYPE=Release
+ - -DBUILD_TESTS=OFF
+ cleanup:
+ - /bin
+ sources:
+ - type: archive
+ sha256: f175c1d8813257904cf0efeb58e44f68d53b9916f73adaf9ce19514c0271c3fa
+ url: https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-5.15.1-src/pyside-setup-opensource-src-5.15.1.tar.xz
+ - type: shell
+ commands:
+ - mkdir -p /app/include/qt5tmp && cp -R /usr/include/Qt* /app/include/qt5tmp # https://bugreports.qt.io/browse/PYSIDE-787
+ - sed -i 's|\(--include-paths=\)|\1/app/include/qt5tmp:|' sources/pyside2/cmake/Macros/PySideModules.cmake
+ - name: tor
+ buildsystem: simple
+ build-commands:
+ - "./configure --prefix=${FLATPAK_DEST}"
+ - make
+ - make install
+ sources:
+ - type: archive
+ sha256: a45ca00afe765e3baa839767c9dd6ac9a46dd01720a3a8ff4d86558c12359926
+ url: https://dist.torproject.org/tor-0.4.4.5.tar.gz
+ modules:
+ - name: libevent
+ buildsystem: simple
+ build-commands:
+ - "./configure --prefix=${FLATPAK_DEST}"
+ - make
+ - make install
+ sources:
+ - type: archive
+ url: https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
+ sha256: 92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb
+ - name: obfs4proxy
+ buildsystem: simple
+ build-options:
+ env:
+ GOBIN: "/app/bin/"
+ build-commands:
+ - ". /usr/lib/sdk/golang/enable.sh; GOPATH=$PWD go install gitlab.com/yawning/obfs4.git/obfs4proxy"
+ sources:
+ - type: git
+ url: https://git.torproject.org/pluggable-transports/goptlib
+ commit: 781a46c66d2ddbc3509354ae7f1fccab74cb9927
+ dest: src/git.torproject.org/pluggable-transports/goptlib.git
+ - type: git
+ url: https://gitlab.com/yawning/obfs4
+ commit: 2d8f3c8bbfd7a7ca931738a64c2f6e97b7332d9e
+ dest: src/gitlab.com/yawning/obfs4.git
+ - type: git
+ url: https://gitlab.com/yawning/bsaes
+ commit: 0a714cd429ec754482b4001e918db30cd2094405
+ dest: src/gitlab.com/yawning/bsaes.git
+ - type: git
+ url: https://gitlab.com/yawning/utls
+ commit: 2dd4f38ff9e07464eb2748cc017eac1355e42251
+ dest: src/gitlab.com/yawning/utls.git
+ - type: git
+ url: https://go.googlesource.com/sys
+ commit: ddb9806d33aed8dbaac1cd6f1cba58952e87f933
+ dest: src/golang.org/x/sys
+ - type: git
+ url: https://go.googlesource.com/text
+ commit: 23ae387dee1f90d29a23c0e87ee0b46038fbed0e
+ dest: src/golang.org/x/text
+ - type: git
+ url: https://go.googlesource.com/net
+ commit: 4c5254603344ea4a8ae4bed7e296a9588303e14f
+ dest: src/golang.org/x/net
+ - type: git
+ url: https://go.googlesource.com/crypto
+ commit: 75b288015ac94e66e3d6715fb68a9b41bf046ec2
+ dest: src/golang.org/x/crypto
+ - type: git
+ url: https://github.com/dsnet/compress
+ commit: da652975a8eea9fa0735aba8056747a751db0bd3
+ dest: src/github.com/dsnet/compress
+ - type: git
+ url: https://github.com/dchest/siphash
+ commit: 34f201214d993633bb24f418ba11736ab8b55aa7
+ dest: src/github.com/dchest/siphash
+ - name: onionshare
+ buildsystem: simple
+ build-commands:
+ - python3 setup.py install --prefix=${FLATPAK_DEST}
+ - install -D -m0644 install/org.onionshare.OnionShare.appdata.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.appdata.xml
+ sources:
+ - type: dir
+ path: ../desktop/src
+ modules:
+ - name: onionshare-cli
+ buildsystem: simple
+ build-commands:
+ - python3 setup.py install --prefix=${FLATPAK_DEST}
+ sources:
+ - type: dir
+ path: ../cli
+ - type: file
+ url: https://files.pythonhosted.org/packages/71/bd/ab05ffcbfe74dca704e860312e00c53ef690b1ddcb23be7a4d9ea4f40260/stem-1.8.0.tar.gz
+ sha256: a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2
+ - type: file
+ url: https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl
+ sha256: fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898
+ - type: file
+ url: https://files.pythonhosted.org/packages/e1/a8/c1cda654d5da7ba45bc0bd567cd7e2d2508997decfae5191813f31c93b9e/Flask_HTTPAuth-4.1.0-py2.py3-none-any.whl
+ sha256: 29e0288869a213c7387f0323b6bf2c7191584fb1da8aa024d9af118e5cd70de7
+ - type: file
+ url: https://files.pythonhosted.org/packages/3d/97/00741edd49788510b834b60a1a4d0afb2c4942770c11b8e0f6e914371718/python_socketio-4.6.0-py2.py3-none-any.whl
+ sha256: d437f797c44b6efba2f201867cf02b8c96b97dff26d4e4281ac08b45817cd522
+ - type: file
+ url: https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
+ sha256: 8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced
+ - type: file
+ url: https://files.pythonhosted.org/packages/ec/d3/3aa0e7213ef72b8585747aa0e271a9523e713813b9a20177ebe1e939deb0/dnspython-1.16.0-py2.py3-none-any.whl
+ sha256: f69c21288a962f4da86e56c4905b49d11aba7938d3d740e80d9e366ee4f1632d
+ - type: file
+ url: https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
+ sha256: 29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b
+ - type: file
+ url: https://files.pythonhosted.org/packages/56/aa/4ef5aa67a9a62505db124a5cb5262332d1d4153462eb8fd89c9fa41e5d92/urllib3-1.25.11-py2.py3-none-any.whl
+ sha256: f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e
+ - type: file
+ url: https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl
+ sha256: 8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557
+ - type: file
+ url: https://files.pythonhosted.org/packages/72/0c/fd07c7674ad6eded937194b84d8453425c36c6ef118536907b0185624d82/greenlet-0.4.17.tar.gz
+ sha256: 41d8835c69a78de718e466dd0e6bfd4b46125f21a67c3ff6d76d8d8059868d6b
+ - type: file
+ url: https://files.pythonhosted.org/packages/e3/85/2ae0512c942664570227a2f9c88b24dd3c0846c5c60cb05b6a2a26979d66/eventlet-0.29.1-py2.py3-none-any.whl
+ sha256: a07b8c8e1f43bc4c44a255baeb066a4edce783dcfacae213bcabb95fdcd02d8c
+ - type: file
+ url: https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl
+ sha256: dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc
+ - type: file
+ url: https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl
+ sha256: f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035
+ - type: file
+ url: https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl
+ sha256: 2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43
+ - type: file
+ url: https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl
+ sha256: b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0
+ - type: file
+ url: https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl
+ sha256: 2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5
+ - type: file
+ url: https://files.pythonhosted.org/packages/5e/c4/6c4fe722df5343c33226f0b4e0bb042e4dc13483228b4718baf286f86d87/certifi-2020.6.20-py2.py3-none-any.whl
+ sha256: 8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41
+ - type: file
+ url: https://files.pythonhosted.org/packages/8a/fa/ea1df958bd76a4a55b20dd87593839adf893e1fae0095b449fecdf325f21/Flask_SocketIO-4.3.1-py2.py3-none-any.whl
+ sha256: 3668675bf7763c5b5f56689d439f07356e89c0a52e0c9e9cd3cc08563c07b252
+ - type: file
+ url: https://files.pythonhosted.org/packages/4a/b0/602e549c6d735eb487f186b35e0b82e61c89459f57d1c24d5c7be6f56d05/python_engineio-3.13.2-py2.py3-none-any.whl
+ sha256: cfded18156862f94544a9f8ef37f56727df731c8552d7023f5afee8369be2db6
+ - type: file
+ url: https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
+ sha256: fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691
+ - type: file
+ url: https://files.pythonhosted.org/packages/4c/2b/eddbfc56076fae8deccca274a5c70a9eb1e0b334da0a33f894a420d0fe93/pycryptodome-3.9.8.tar.gz
+ sha256: 0e24171cf01021bc5dc17d6a9d4f33a048f09d62cc3f62541e95ef104588bda4
+ - type: file
+ url: https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
+ sha256: b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749
+ - name: python3-modules
+ buildsystem: simple
+ build-commands: []
+ modules:
+ - name: python3-Click
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "Click"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl
+ sha256: dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc
+ - name: python3-eventlet
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "eventlet"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
+ sha256: 8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced
+ - type: file
+ url: https://files.pythonhosted.org/packages/ec/d3/3aa0e7213ef72b8585747aa0e271a9523e713813b9a20177ebe1e939deb0/dnspython-1.16.0-py2.py3-none-any.whl
+ sha256: f69c21288a962f4da86e56c4905b49d11aba7938d3d740e80d9e366ee4f1632d
+ - type: file
+ url: https://files.pythonhosted.org/packages/72/0c/fd07c7674ad6eded937194b84d8453425c36c6ef118536907b0185624d82/greenlet-0.4.17.tar.gz
+ sha256: 41d8835c69a78de718e466dd0e6bfd4b46125f21a67c3ff6d76d8d8059868d6b
+ - type: file
+ url: https://files.pythonhosted.org/packages/e3/85/2ae0512c942664570227a2f9c88b24dd3c0846c5c60cb05b6a2a26979d66/eventlet-0.29.1-py2.py3-none-any.whl
+ sha256: a07b8c8e1f43bc4c44a255baeb066a4edce783dcfacae213bcabb95fdcd02d8c
+ - name: python3-Flask
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "Flask"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
+ sha256: 29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b
+ - type: file
+ url: https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl
+ sha256: 8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557
+ - type: file
+ url: https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl
+ sha256: dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc
+ - type: file
+ url: https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl
+ sha256: f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035
+ - type: file
+ url: https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl
+ sha256: 2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43
+ - type: file
+ url: https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
+ sha256: b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749
+ - name: python3-Flask-HTTPAuth
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "Flask-HTTPAuth"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/e1/a8/c1cda654d5da7ba45bc0bd567cd7e2d2508997decfae5191813f31c93b9e/Flask_HTTPAuth-4.1.0-py2.py3-none-any.whl
+ sha256: 29e0288869a213c7387f0323b6bf2c7191584fb1da8aa024d9af118e5cd70de7
+ - type: file
+ url: https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
+ sha256: 29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b
+ - type: file
+ url: https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl
+ sha256: 8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557
+ - type: file
+ url: https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl
+ sha256: dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc
+ - type: file
+ url: https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl
+ sha256: f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035
+ - type: file
+ url: https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl
+ sha256: 2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43
+ - type: file
+ url: https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
+ sha256: b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749
+ - name: python3-flask-socketio
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "flask-socketio"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/3d/97/00741edd49788510b834b60a1a4d0afb2c4942770c11b8e0f6e914371718/python_socketio-4.6.0-py2.py3-none-any.whl
+ sha256: d437f797c44b6efba2f201867cf02b8c96b97dff26d4e4281ac08b45817cd522
+ - type: file
+ url: https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
+ sha256: 8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced
+ - type: file
+ url: https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
+ sha256: 29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b
+ - type: file
+ url: https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl
+ sha256: 8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557
+ - type: file
+ url: https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl
+ sha256: dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc
+ - type: file
+ url: https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl
+ sha256: f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035
+ - type: file
+ url: https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl
+ sha256: 2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43
+ - type: file
+ url: https://files.pythonhosted.org/packages/8a/fa/ea1df958bd76a4a55b20dd87593839adf893e1fae0095b449fecdf325f21/Flask_SocketIO-4.3.1-py2.py3-none-any.whl
+ sha256: 3668675bf7763c5b5f56689d439f07356e89c0a52e0c9e9cd3cc08563c07b252
+ - type: file
+ url: https://files.pythonhosted.org/packages/4a/b0/602e549c6d735eb487f186b35e0b82e61c89459f57d1c24d5c7be6f56d05/python_engineio-3.13.2-py2.py3-none-any.whl
+ sha256: cfded18156862f94544a9f8ef37f56727df731c8552d7023f5afee8369be2db6
+ - type: file
+ url: https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
+ sha256: b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749
+ - name: python3-psutil
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "psutil"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/33/e0/82d459af36bda999f82c7ea86c67610591cf5556168f48fd6509e5fa154d/psutil-5.7.3.tar.gz
+ sha256: af73f7bcebdc538eda9cc81d19db1db7bf26f103f91081d780bbacfcb620dee2
+ - name: python3-pycryptodome
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "pycryptodome"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/4c/2b/eddbfc56076fae8deccca274a5c70a9eb1e0b334da0a33f894a420d0fe93/pycryptodome-3.9.8.tar.gz
+ sha256: 0e24171cf01021bc5dc17d6a9d4f33a048f09d62cc3f62541e95ef104588bda4
+ - name: python3-PySocks
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "PySocks"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl
+ sha256: 2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5
+ - name: python3-qrcode
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "qrcode"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
+ sha256: 8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced
+ - type: file
+ url: https://files.pythonhosted.org/packages/42/87/4a3a77e59ab7493d64da1f69bf1c2e899a4cf81e51b2baa855e8cc8115be/qrcode-6.1-py2.py3-none-any.whl
+ sha256: 3996ee560fc39532910603704c82980ff6d4d5d629f9c3f25f34174ce8606cf5
+ - name: python3-requests
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "requests"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl
+ sha256: fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898
+ - type: file
+ url: https://files.pythonhosted.org/packages/56/aa/4ef5aa67a9a62505db124a5cb5262332d1d4153462eb8fd89c9fa41e5d92/urllib3-1.25.11-py2.py3-none-any.whl
+ sha256: f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e
+ - type: file
+ url: https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl
+ sha256: b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0
+ - type: file
+ url: https://files.pythonhosted.org/packages/5e/c4/6c4fe722df5343c33226f0b4e0bb042e4dc13483228b4718baf286f86d87/certifi-2020.6.20-py2.py3-none-any.whl
+ sha256: 8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41
+ - type: file
+ url: https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
+ sha256: fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691
+ - name: python3-stem
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "stem"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/71/bd/ab05ffcbfe74dca704e860312e00c53ef690b1ddcb23be7a4d9ea4f40260/stem-1.8.0.tar.gz
+ sha256: a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2
+ - name: python3-urllib3
+ buildsystem: simple
+ build-commands:
+ - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
+ "urllib3"
+ sources:
+ - type: file
+ url: https://files.pythonhosted.org/packages/56/aa/4ef5aa67a9a62505db124a5cb5262332d1d4153462eb8fd89c9fa41e5d92/urllib3-1.25.11-py2.py3-none-any.whl
+ sha256: f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e