From 46a9434fbfa14b4545f7f5f12f3bd3a2cc3621c9 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Sun, 8 Nov 2020 12:07:17 -0800 Subject: Add incomplete flatpak manifest, update release docs, re-add source package script --- .gitignore | 1 + RELEASE.md | 71 ++++-- build-source.sh | 78 +++++++ cli/setup.py | 2 +- desktop/package/linux/build-appimage.py | 45 ++++ flatpak/org.onionshare.OnionShare.yaml | 389 ++++++++++++++++++++++++++++++++ 6 files changed, 565 insertions(+), 21 deletions(-) create mode 100755 build-source.sh create mode 100755 desktop/package/linux/build-appimage.py create mode 100644 flatpak/org.onionshare.OnionShare.yaml 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 . """ -# 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 -- cgit v1.2.3-54-g00ecf