diff --git a/.circleci/config.yml b/.circleci/config.yml index c27f7607..8d70d743 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -56,7 +56,7 @@ common-steps: run: name: Build debian package command: | - source /etc/os-release + export VERSION_CODENAME=$(~/project/scripts/codename) export PKG_PATH=~/packaging/$PKG_NAME/ export PKG_VERSION=$VERSION_TO_BUILD make $PKG_NAME @@ -91,7 +91,7 @@ common-steps: run: name: Get metapackage version via changelog for the current platform command: | - source /etc/os-release + export VERSION_CODENAME=$(~/project/scripts/codename) CURRENT_VERSION=$(grep -oP "\d+\.\d+\.\d+" ${PKG_NAME}/debian/changelog-${VERSION_CODENAME} | head -n1) export VERSION_TO_BUILD="$CURRENT_VERSION" # Enable access to this env var in subsequent run steps @@ -104,7 +104,7 @@ common-steps: name: Commit workstation debs for deployment to apt-test.freedom.press command: | apt-get update - apt-get install -y ca-certificates git git-lfs openssh-client + apt-get install -y ca-certificates git git-lfs openssh-client python3 git clone git@github.com:freedomofpress/securedrop-dev-packages-lfs.git cd securedrop-dev-packages-lfs @@ -112,14 +112,17 @@ common-steps: git config user.email "securedrop@freedom.press" git config user.name "sdcibot" - for codename in buster bullseye - do - # Copy built debian packages to the relevant workstation repo and git push. - mkdir -p ./workstation/${codename}-nightlies/ - cp /tmp/workspace/${codename}/*.deb ./workstation/${codename}-nightlies/ - git add workstation/${codename}-nightlies/*.deb - git commit -m "Automated SecureDrop workstation build (${codename})" - done + # Copy built debian packages to the relevant workstation repo and git push. + mkdir -p ./workstation/${CODENAME}-nightlies/ + cp /tmp/workspace/${CODENAME}/*.deb ./workstation/${CODENAME}-nightlies/ ||: + git add workstation/${CODENAME}-nightlies/*.deb ||: + + # Clean up old nightlies too + ~/project/scripts/clean-old-nightlies.py workstation/${CODENAME}-nightlies + + # If there are changes, diff-index will fail, so we commit and push + git diff-index --quiet HEAD || git commit -m "Automated SecureDrop workstation build (${CODENAME})" + git push origin main version: 2.1 @@ -205,38 +208,8 @@ jobs: # If there are changes, diff-index will fail, so we commit and push git diff-index --quiet HEAD || git commit -m "Automatically updating Tor packages" && git push origin main - clean-old-nightlies: - docker: - - image: debian:bullseye - steps: - - checkout - - *addsshkeys - - run: - name: clone and delete old nightlies - command: | - apt-get update - apt-get install -y python3 ca-certificates git git-lfs openssh-client - - # Clone the dev repo and configure it - ssh-keyscan github.com >> ~/.ssh/known_hosts - git clone git@github.com:freedomofpress/securedrop-dev-packages-lfs.git - cd securedrop-dev-packages-lfs - git lfs install - git config user.email "securedrop@freedom.press" - git config user.name "sdcibot" - - # Run the clean script and `git add` any deletions - cd .. - ./scripts/clean-old-nightlies.py securedrop-dev-packages-lfs/workstation/buster-nightlies - ./scripts/clean-old-nightlies.py securedrop-dev-packages-lfs/workstation/bullseye-nightlies - cd securedrop-dev-packages-lfs - git add . - - # If there are changes, diff-index will fail, so we commit and push - git diff-index --quiet HEAD || git commit -m "Deleting old nightlies" && git push origin main - - build: + build: &build parameters: package: type: string @@ -260,7 +233,9 @@ jobs: - *builddebianpackage - *persist - build-metapackage: + build2: *build + + build-metapackage: &build-metapackage parameters: package: type: string @@ -282,9 +257,11 @@ jobs: - *builddebianpackage - *persist - build-buster-securedrop-workstation-grsec: + build2-metapackage: *build-metapackage + + build-bookworm-securedrop-workstation-grsec: docker: - - image: debian:buster + - image: debian:bookworm environment: PKG_NAME: securedrop-workstation-grsec steps: @@ -304,9 +281,11 @@ jobs: - *setmetapackageversionplatform - *builddebianpackage - push-packages: + push-bullseye: &push docker: - image: debian:bullseye + environment: + CODENAME: bullseye steps: - checkout - attach_workspace: @@ -314,6 +293,10 @@ jobs: - *addsshkeys - *commitworkstationdebs + push-bookworm: + <<: *push + environment: + CODENAME: bookworm workflows: build-packages: @@ -324,26 +307,26 @@ workflows: - build: matrix: parameters: - package: + package: &packages - securedrop-client - securedrop-export - securedrop-log - securedrop-proxy image: - - "buster" - - "bullseye" + - bullseye + - bookworm - build-metapackage: matrix: parameters: - package: + package: &metapackages - securedrop-keyring - securedrop-workstation-config - securedrop-workstation-viewer image: - - "buster" - - "bullseye" - - build-buster-securedrop-workstation-grsec + - bullseye + - bookworm - build-bullseye-securedrop-workstation-grsec + - build-bookworm-securedrop-workstation-grsec nightly: triggers: @@ -354,38 +337,47 @@ workflows: only: - main jobs: + # We need bullseye packages to be pushed if bookworm jobs fail. + # So bookworm jobs run in a separate track ("build2") that is identical, + # except the push-bullseye job only depends on the bullseye jobs and the + # final step is push-bookworm, which might fail. + - reprepro-update-tor - build: matrix: parameters: - package: - - securedrop-client - - securedrop-export - - securedrop-log - - securedrop-proxy + package: *packages + image: + - bullseye + nightly: ["nightly"] + - build2: + matrix: + parameters: + package: *packages image: - - "buster" - - "bullseye" + - bookworm nightly: ["nightly"] - build-metapackage: matrix: parameters: - package: - - securedrop-keyring - - securedrop-workstation-config - - securedrop-workstation-viewer + package: *metapackages image: - - "buster" - - "bullseye" + - bullseye nightly: ["nightly"] - - push-packages: + - build2-metapackage: + matrix: + parameters: + package: *metapackages + image: + - bookworm + nightly: ["nightly"] + - push-bullseye: requires: + - reprepro-update-tor - build - build-metapackage - - reprepro-update-tor: + # This should be last as we do expect it to fail occasionally. + - push-bookworm: requires: - # Wait for push to finish - - push-packages - - clean-old-nightlies: - requires: - # Wait for tor update to finish - - reprepro-update-tor + - push-bullseye + - build2 + - build2-metapackage diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..fcbfda15 --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,5 @@ +## Checklist + +* [ ] `bullseye` builds and jobs are passing +* [ ] This PR does not introduce any new `bookworm` test failures +* [ ] If there are `bookworm` test failures, an issue has been filed for them diff --git a/bootstrap-sha256sums.txt b/bootstrap-sha256sums.txt index 287593d2..4aadec2c 100644 --- a/bootstrap-sha256sums.txt +++ b/bootstrap-sha256sums.txt @@ -1,3 +1,4 @@ +2ac1fac97d092631d116bcdc5709dc100d31c969567e792841f6116539ce8fde Cython-0.29.22-cp310-cp310-linux_x86_64.whl 8c9eec7e9de2a30861ca347d0a149cc1482de12fc765fa06c414930e8ce20d0a Cython-0.29.22-cp37-cp37m-linux_x86_64.whl bc8c021d836ddada4986836263f75c8215f7f65aff062c449e981e9d8ac352fc Cython-0.29.22-cp39-cp39-linux_x86_64.whl df6b83c7a6d1d967ea89a2903e4a931377634a297459652e4551734c48195406 Cython-0.29.22.tar.gz diff --git a/bootstrap-sha256sums.txt.asc b/bootstrap-sha256sums.txt.asc index c395f081..c2169b92 100644 --- a/bootstrap-sha256sums.txt.asc +++ b/bootstrap-sha256sums.txt.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCAAdFiEE2MtZ8F27ngU4xIGd8QX4EBsFJpsFAmJ77VAACgkQ8QX4EBsF -JpuoKxAAp0/JAPi/I2EvJr/BSPGPxU1oGZxT6N0RppTY3iyMsVNA1vezy7TAoyDc -9tm6GeHTHl4uAf1uD0IlZQpFZV8HTquqezp0vKsoBnf5pR42XeNiv6FcUmk2NH15 -r+DtExOEqtjWcpgBzzFnHW1zQ1E4GCkPe37hX0ZPiF26XRkuKiIqXijsKgvrZF31 -+c8LNxUcEA4mODD83JX77Y3WBLGLItxxahaMixmWJzXswkzb5X2fWA7w6omJ0C07 -O6vFbF3gHAHYMhv7JNbmeauc+I48AST8BYeXuCcZsa6HfomNcwK49JBiTmIfbYkb -F23Cq0YvoWftBCNodwInaJdoQeFrGGkUKOXSOSLmIE/MMZMIQ6duA5C0mgoT2brH -bD1hFAurW5ibIhjLoE3tKpoQJbQMSXfVovPVgGhOQ71Ck11Da2vK20emQ6OUgTLT -Xq9kHWvyd7W195lrSHHSn2JdjVbYO74Goiu6kU30SsLAjbxWgw4uedbtOM+rHAdR -oZ/4h3xZG3HmBYs/BLlJ6Z9ywkxLQN8fjewhAbQrjF9I8inNTHmnMIibC9hot9Ip -REgkhGqk0J7GbEzyYoxiVsmgs5Dg7fYhtawV1sQJx8kYo+2FU0OjfmGZiuM3C0w4 -JlYePi6LN8LdcEhqwYwhwBExb5h2JWxhhmHo17/qaI9KLxR7ZRs= -=qxUw +iQIyBAABCAAdFiEE2MtZ8F27ngU4xIGd8QX4EBsFJpsFAmMPDW0ACgkQ8QX4EBsF +JpudsA/2MXdnLN2l8dZqVwvM6QhS5mcqOOPXE5KexUfuvX7tc/EydnDEhZNTAl9w +Imj/cpEcxpXB+etWcLYYaOpHqldAod52fp6oanozLJ22tQg4G8PcroJBmlTggtU/ +kNleluhpLCyOmwQ/XGbsO/WqmHbUs1VtaavmMF0bjRrH0wmfY0OAx9BYkkDDebkq +3drWksitMYct0k9m5Uq2XEWQIh2w56F7+9Fu5InD9UFtNAGBij4cJ+bEXtQLC97F +9in/rhtAGgdvv19gV91obOeCjBDEeriUJAuekFs06gQoXN1RLmMoDc+yIoxpJwbH +QYDzMFTCQpDxDgvnZotYHyMWIea05xKLKIsetq/GLvai4/ez3TKY/OvFEQ02gjEd +aUksq7qSao4c08aNV5zJJRYtO1ttw0xYqEzXTL/ZzTWQexocXC7dUIDiwmz7/yh4 +ktWyMWWdBq5euPVKMvMVo4Z9GXQv8P9Sw5QYRBFuxt+H1+yGTvSGp5BsXJhSPExq +mPT82lZnJnb4LkdHgdUA0VzLAj7frKXbfXhn0ErQuBFj64865a0u4gD33qpAM7Pr +j7RzMwsSexC47SfqCnU5eFegaFYOpHVr9Q99gkwLfqmPWMZ7LX4P7hIfQBSpuJ2g +5iBJBuKpkYUIMMOo+IyclT/UP/h/bNuWZXklr7GWLZ59pky12w== +=H9G5 -----END PGP SIGNATURE----- diff --git a/bootstrap/Cython-0.29.22-cp310-cp310-linux_x86_64.whl b/bootstrap/Cython-0.29.22-cp310-cp310-linux_x86_64.whl new file mode 100644 index 00000000..80811fb4 --- /dev/null +++ b/bootstrap/Cython-0.29.22-cp310-cp310-linux_x86_64.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ac1fac97d092631d116bcdc5709dc100d31c969567e792841f6116539ce8fde +size 5012820 diff --git a/build-requirements.txt b/build-requirements.txt index eed28095..312763fc 100644 --- a/build-requirements.txt +++ b/build-requirements.txt @@ -1,6 +1,6 @@ build==0.3.0 --hash=sha256:3fe8fac398ae76f534dee92c0db01c2960e271094f8cd52aa9d24a633c244e59 click==7.1.2 --hash=sha256:3b0769bd65ca00ffcb57975e750fac079639a3d3ce393c5a0d4c65123141c87a -cython==0.29.22 --hash=sha256:8c9eec7e9de2a30861ca347d0a149cc1482de12fc765fa06c414930e8ce20d0a --hash=sha256:bc8c021d836ddada4986836263f75c8215f7f65aff062c449e981e9d8ac352fc +cython==0.29.22 --hash=sha256:2ac1fac97d092631d116bcdc5709dc100d31c969567e792841f6116539ce8fde --hash=sha256:8c9eec7e9de2a30861ca347d0a149cc1482de12fc765fa06c414930e8ce20d0a --hash=sha256:bc8c021d836ddada4986836263f75c8215f7f65aff062c449e981e9d8ac352fc flit-core==2.3.0 --hash=sha256:a14d6cca50a51eff2c418fc3f8e887cd31a3233a6b465451fd57074e232d7c4c importlib-metadata==3.7.0 --hash=sha256:35fc3ab05e060b85739da17db4ce33e8532ce1010d892d178f85a211e080e1ff packaging==20.9 --hash=sha256:44698376bc57a48290dc82bfdc20d339684856b24d6b8c3760b284de4eebc498 diff --git a/localwheels/MarkupSafe-2.0.1-cp310-cp310-linux_x86_64.whl b/localwheels/MarkupSafe-2.0.1-cp310-cp310-linux_x86_64.whl new file mode 100644 index 00000000..4c830293 --- /dev/null +++ b/localwheels/MarkupSafe-2.0.1-cp310-cp310-linux_x86_64.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb3e541812095075336bcd935bb58941aedc0a7cba3c73d301dfdfd4d66a4eec +size 25758 diff --git a/localwheels/PyYAML-5.4.1-cp310-cp310-linux_x86_64.whl b/localwheels/PyYAML-5.4.1-cp310-cp310-linux_x86_64.whl new file mode 100644 index 00000000..cb5b4655 --- /dev/null +++ b/localwheels/PyYAML-5.4.1-cp310-cp310-linux_x86_64.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ba69a7c05ba63fef9732bf26cc5d328b2089e525ee87fc9ec572c92f88dd46 +size 519019 diff --git a/localwheels/SQLAlchemy-1.3.3-cp310-cp310-linux_x86_64.whl b/localwheels/SQLAlchemy-1.3.3-cp310-cp310-linux_x86_64.whl new file mode 100644 index 00000000..9d72b4ee --- /dev/null +++ b/localwheels/SQLAlchemy-1.3.3-cp310-cp310-linux_x86_64.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c8d85dc65838bdecf084f70d6168740a54039f039914753cd89fbe546282539 +size 1171644 diff --git a/scripts/build-debianpackage b/scripts/build-debianpackage index 3bfe57e1..09d128c4 100755 --- a/scripts/build-debianpackage +++ b/scripts/build-debianpackage @@ -14,6 +14,7 @@ set -o pipefail # Store root of repo, since we'll change dirs several times. CUR_DIR="$(git rev-parse --show-toplevel)" +VERSION_CODENAME=$("${CUR_DIR}/scripts/codename") # Verify sha256sums.txt in the git repo "${CUR_DIR}/scripts/verify-sha256sum-signature" @@ -27,8 +28,6 @@ TOP_BUILDDIR="$PWD/build/debbuild/packaging" mkdir -p "$TOP_BUILDDIR" rm -rf "${TOP_BUILDDIR:?}/${PKG_NAME}" mkdir -p "${TOP_BUILDDIR}/${PKG_NAME}" -# Platform metadata -source /etc/os-release # Validate required args. if [[ -z "${PKG_NAME:-}" ]]; then diff --git a/scripts/codename b/scripts/codename new file mode 100755 index 00000000..c450c710 --- /dev/null +++ b/scripts/codename @@ -0,0 +1,14 @@ +#!/bin/bash +# Returns the Debian version's codename (e.g. "bullseye") in a way that should +# work across both released versions and unreleased ones. +# See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008735 + +source /etc/os-release + +if [[ "$VERSION_CODENAME" != "" ]]; then + echo $VERSION_CODENAME +else + # PRETTY_NAME="Debian GNU/Linux bookworm/sid" + # Use awk to split on spaces and / + echo $PRETTY_NAME | awk '{split($0, a, "[ /]"); print a[4]}' +fi diff --git a/scripts/update-changelog b/scripts/update-changelog index 1098819f..68a61c3a 100755 --- a/scripts/update-changelog +++ b/scripts/update-changelog @@ -6,8 +6,8 @@ set -e set -u set -o pipefail -source /etc/os-release TOPLEVEL="$(git rev-parse --show-toplevel)" +VERSION_CODENAME=$("${TOPLEVEL}/scripts/codename") # These env vars are only required when updating changelogs, # otherwise the developer must edit the fields by hand, lest diff --git a/sha256sums.txt b/sha256sums.txt index 8180e350..a8f8a69d 100644 --- a/sha256sums.txt +++ b/sha256sums.txt @@ -1,3 +1,30 @@ +99d041a616a3655725dffe459916627b75640a7d045ed33f51ce158a168ca3ef Mako-1.0.7-py3-none-any.whl +4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae Mako-1.0.7.tar.gz +c6b726d2e9d6300a044cf6a37627f10994268d6ac39464bc0d725126609311a5 MarkupSafe-1.0-py3-none-any.whl +a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665 MarkupSafe-1.0.tar.gz +2cbead4fb0a1c34655c6e11505e6bc165cbaf2f0b7429bec57c3729e3b846a5b MarkupSafe-1.1.1-cp37-cp37m-linux_x86_64.whl +1733a3715d37d075d79b6fe1c2e1055e8cf471fd7da53cdd284de09782bf75d1 MarkupSafe-1.1.1-py3-none-any.whl +29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b MarkupSafe-1.1.1.tar.gz +bb3e541812095075336bcd935bb58941aedc0a7cba3c73d301dfdfd4d66a4eec MarkupSafe-2.0.1-cp310-cp310-linux_x86_64.whl +7b12b29ae39060c29ed0d8cb1052fa1672832b5096f859fd35e896ca3b04ddd3 MarkupSafe-2.0.1-cp37-cp37m-linux_x86_64.whl +9a055a175f351a559937fb80ebb2885d005283577a016c0139817e261fb759eb MarkupSafe-2.0.1-cp39-cp39-linux_x86_64.whl +594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a MarkupSafe-2.0.1.tar.gz +59ff9ed67bd8be210f91fd20f0ef844ee897d11eb4c19c611a77a37896c124b9 PyYAML-5.1-cp37-cp37m-linux_x86_64.whl +436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95 PyYAML-5.1.tar.gz +ff021f812a5dbaeb10678462952bb447bf6b322ab54923f5591811056a827c15 PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl +b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d PyYAML-5.3.1.tar.gz +24ba69a7c05ba63fef9732bf26cc5d328b2089e525ee87fc9ec572c92f88dd46 PyYAML-5.4.1-cp310-cp310-linux_x86_64.whl +be111e40b3e32707b373b90ef490fa0908bf7769c77f8cf940004f0c957954f6 PyYAML-5.4.1-cp37-cp37m-linux_x86_64.whl +645773490bf785cd110b4a5e47635990c46219b7c4f01b424f0409cf01d12f2b PyYAML-5.4.1-cp39-cp39-linux_x86_64.whl +607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e PyYAML-5.4.1.tar.gz +0c8d85dc65838bdecf084f70d6168740a54039f039914753cd89fbe546282539 SQLAlchemy-1.3.3-cp310-cp310-linux_x86_64.whl +dc0eb75221aefc3bfd912c5e10630194728f8af5124619e898c9b22049c62ddc SQLAlchemy-1.3.3-cp37-cp37m-linux_x86_64.whl +86ed1e4985a9fd4f3c784da1fcefb89f4435c1c70815f43e5741c0c9f3c79be3 SQLAlchemy-1.3.3-cp39-cp39-linux_x86_64.whl +91c54ca8345008fceaec987e10924bf07dcab36c442925357e5a467b36a38319 SQLAlchemy-1.3.3.tar.gz +bd05301a84a9bc3b33f178e53446181879744b74f098ed35850ba21125379be1 Werkzeug-0.16.0-py2.py3-none-any.whl +7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7 Werkzeug-0.16.0.tar.gz +55e8ebd03bf69dc51cd986ba7bf3e25f549bb27a22de9d6bdd15c855ba8f1f99 Werkzeug-2.0.2-py3-none-any.whl +aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a Werkzeug-2.0.2.tar.gz ad1e93816f37f8445bb12dfe412579d2237818c9bbf34054a06e00d5f430c700 alembic-1.0.2-py2.py3-none-any.whl 04bcb970ca8659c3607ddd8ffd86cc9d6a99661c9bc590955e8813c66bfa582b alembic-1.0.2.tar.gz e2742eb33011f7aff1d5f27501d802680b6627939f20ff2ef56f050c14af59fa arrow-0.12.1-py2.py3-none-any.whl @@ -8,8 +35,8 @@ a558d3b7b6ce7ffc74206a86c147052de23d3d4ef0e17c210dd478c53575c4cd arrow-0.12.1.t 2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee certifi-2021.5.30.tar.gz e5cf39014befb85add77118fdc946f0a3387df7840235ba5d20fd6e3a672410a chardet-3.0.4-py2.py3-none-any.whl 84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae chardet-3.0.4.tar.gz -cd9a4492eef4e5276c07f9c0dc1338e7be3e95f2a536bf2c5b620b1f27d03d74 charset_normalizer-2.0.4-py3-none-any.whl f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3 charset-normalizer-2.0.4.tar.gz +cd9a4492eef4e5276c07f9c0dc1338e7be3e95f2a536bf2c5b620b1f27d03d74 charset_normalizer-2.0.4-py3-none-any.whl 9f50360f6e4a0f1d0a35fb4997878e7186a73331f0fde5f6fc9b1bb9f006e6cc furl-2.0.0-py2.py3-none-any.whl fdcaedc1fb19a63d7d875b0105b0a5b496dd0989330d454a42bcb401fa5454ec furl-2.0.0.tar.gz 69bbcd9c42b0add994610a68202532e9b327992b61344cd76e743ee592725f50 idna-2.7-py2.py3-none-any.whl @@ -18,31 +45,14 @@ fdcaedc1fb19a63d7d875b0105b0a5b496dd0989330d454a42bcb401fa5454ec furl-2.0.0.tar c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 idna-2.8.tar.gz 691d9fc304505c65ea9ceb8eb7385d63988e344c065cacbbd2156ff9bdfcf0c1 idna-3.2-py3-none-any.whl 467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3 idna-3.2.tar.gz -99d041a616a3655725dffe459916627b75640a7d045ed33f51ce158a168ca3ef Mako-1.0.7-py3-none-any.whl -4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae Mako-1.0.7.tar.gz -c6b726d2e9d6300a044cf6a37627f10994268d6ac39464bc0d725126609311a5 MarkupSafe-1.0-py3-none-any.whl -a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665 MarkupSafe-1.0.tar.gz -2cbead4fb0a1c34655c6e11505e6bc165cbaf2f0b7429bec57c3729e3b846a5b MarkupSafe-1.1.1-cp37-cp37m-linux_x86_64.whl -1733a3715d37d075d79b6fe1c2e1055e8cf471fd7da53cdd284de09782bf75d1 MarkupSafe-1.1.1-py3-none-any.whl -29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b MarkupSafe-1.1.1.tar.gz -7b12b29ae39060c29ed0d8cb1052fa1672832b5096f859fd35e896ca3b04ddd3 MarkupSafe-2.0.1-cp37-cp37m-linux_x86_64.whl -9a055a175f351a559937fb80ebb2885d005283577a016c0139817e261fb759eb MarkupSafe-2.0.1-cp39-cp39-linux_x86_64.whl -594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a MarkupSafe-2.0.1.tar.gz f6022beda2b3387c61e6eb7e0e1e3e2832fd9f55f3f64d4b4b226eea7487327f orderedmultidict-1.0-py3-none-any.whl b89895ba6438038d0bdf88020ceff876cf3eae0d5c66a69b526fab31125db2c5 orderedmultidict-1.0.tar.gz 90173e12465846173da76c62892b238c14a2a0e17aae580933041004fc01b713 pathlib2-2.3.2-py2.py3-none-any.whl 8eb170f8d0d61825e09a95b38be068299ddeda82f35e96c3301a8a5e7604cb83 pathlib2-2.3.2.tar.gz -2961735b604e5165d923a4e39b9bcbde6a4c363f257f5477b6339459fd7c1679 python_dateutil-2.7.5-py2.py3-none-any.whl 88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02 python-dateutil-2.7.5.tar.gz -42e5b2a7583cd278dff00ae1fc6b8b735da0502ceeb0914991eaaf5f91ac84ac python_editor-1.0.3-py3-none-any.whl a3c066acee22a1c94f63938341d4fb374e3fdd69366ed6603d7b24bed1efc565 python-editor-1.0.3.tar.gz -59ff9ed67bd8be210f91fd20f0ef844ee897d11eb4c19c611a77a37896c124b9 PyYAML-5.1-cp37-cp37m-linux_x86_64.whl -436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95 PyYAML-5.1.tar.gz -ff021f812a5dbaeb10678462952bb447bf6b322ab54923f5591811056a827c15 PyYAML-5.3.1-cp37-cp37m-linux_x86_64.whl -b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d PyYAML-5.3.1.tar.gz -be111e40b3e32707b373b90ef490fa0908bf7769c77f8cf940004f0c957954f6 PyYAML-5.4.1-cp37-cp37m-linux_x86_64.whl -645773490bf785cd110b4a5e47635990c46219b7c4f01b424f0409cf01d12f2b PyYAML-5.4.1-cp39-cp39-linux_x86_64.whl -607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e PyYAML-5.4.1.tar.gz +2961735b604e5165d923a4e39b9bcbde6a4c363f257f5477b6339459fd7c1679 python_dateutil-2.7.5-py2.py3-none-any.whl +42e5b2a7583cd278dff00ae1fc6b8b735da0502ceeb0914991eaaf5f91ac84ac python_editor-1.0.3-py3-none-any.whl 974926675d246ade47a101e305596a0f50282a405a03b7173a70d99c79e6370c redis-3.3.11-py2.py3-none-any.whl 8d0fc278d3f5e1249967cba2eb4a5632d19e45ce5c09442b8422d15ee2c22cc2 redis-3.3.11.tar.gz d87b2085783d31d874ac7bc62660e287932aaee7059e80b41b76462eb18d35cc requests-2.20.0-py2.py3-none-any.whl @@ -51,36 +61,29 @@ d87b2085783d31d874ac7bc62660e287932aaee7059e80b41b76462eb18d35cc requests-2.20. 11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 requests-2.22.0.tar.gz 7cec5239ce6ec4f6bf3d1b8c7e4d34ebe1b86d3896fe9657a8465ee4d7282bc8 requests-2.26.0-py2.py3-none-any.whl b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7 requests-2.26.0.tar.gz -d05bb78652c8771e6aa1aefcd76ade1fef08c563d2641acbc5ac8e1d635e6a53 securedrop_sdk-0.0.12-py3-none-any.whl b5ddca26ce87d4007db5d64fe77d44b4086a902c3f79e69fb9a81343c81ce278 securedrop-sdk-0.0.12.tar.gz -c8d98208fb2074336c06be3fef0994a8a57fde7a765cead12bc36e9128d319e2 securedrop_sdk-0.0.13-py3-none-any.whl 7763bb44755bdfc387ab6c002cbe49eeec2611feb04a8787c3c9f2aa48a1ee5f securedrop-sdk-0.0.13.tar.gz -488417f9f08e4c432c81348dfbd5da0e756ded1737ba58b2ffc8f0e703abc1cb securedrop_sdk-0.1.0-py3-none-any.whl 970fde25e6238e1808ac120951ee972549f4cd7952966dfe29f731bb308cc0d8 securedrop-sdk-0.1.0.tar.gz -a631495acd741ab568410287879c5a3af3ccd38e00a2f3a127cc6b27cba99392 securedrop_sdk-0.1.1-py3-none-any.whl 138ce7a717db519c3c8d19b9475d7660fb7095d7608e8802723e682a7415e677 securedrop-sdk-0.1.1.tar.gz -bb949ed7f13d88ae9e269d2c8d037ecf52d36d864fbeea61dd13f4049a978bc4 securedrop_sdk-0.2.0-py3-none-any.whl c4a343077e8c0a38914e17f6369b830f1e361f9d66699b20803c07b39472357f securedrop-sdk-0.2.0.tar.gz -6dec75eeb434e9b99fff6113cb29fa6c5f7bc5d618d1bb2d451384eaf9833c87 securedrop_sdk-0.3.0-py3-none-any.whl 8ef2e66d828090cf0d31a8851ae412b71f69bc12f8d9f20d87359df835a07581 securedrop-sdk-0.3.0.tar.gz -651cb73aea890795d8fb83fae849dde841199a964a2ecfde6ab16d63917d762a securedrop_sdk-0.3.1-py3-none-any.whl ea9a35f99b90dbbbf49fd25019df49d37a41a57d316f2b5d9a412ee5814bbfc5 securedrop-sdk-0.3.1.tar.gz -a9a3b548ba6cf0afc4dea4f63817cbe75647bf9b8ec399adff787d5e52e59b4d securedrop_sdk-0.3.2-py3-none-any.whl 376a36a56c16a903663fc62b3441ba6799f406d3b7e25ecb17ef82f5a65b46b0 securedrop-sdk-0.3.2.tar.gz -54b870fd3566914c2ba13aeb5c7eaa0be8ac128be72b45613843c0b75040bd39 securedrop_sdk-0.4.0-py3-none-any.whl c08f77bae5f900b1fbcd3b5aae1c931dc877e7289d69aa5a8b1e3c3f4e0dc561 securedrop-sdk-0.4.0.tar.gz +d05bb78652c8771e6aa1aefcd76ade1fef08c563d2641acbc5ac8e1d635e6a53 securedrop_sdk-0.0.12-py3-none-any.whl +c8d98208fb2074336c06be3fef0994a8a57fde7a765cead12bc36e9128d319e2 securedrop_sdk-0.0.13-py3-none-any.whl +488417f9f08e4c432c81348dfbd5da0e756ded1737ba58b2ffc8f0e703abc1cb securedrop_sdk-0.1.0-py3-none-any.whl +a631495acd741ab568410287879c5a3af3ccd38e00a2f3a127cc6b27cba99392 securedrop_sdk-0.1.1-py3-none-any.whl +bb949ed7f13d88ae9e269d2c8d037ecf52d36d864fbeea61dd13f4049a978bc4 securedrop_sdk-0.2.0-py3-none-any.whl +6dec75eeb434e9b99fff6113cb29fa6c5f7bc5d618d1bb2d451384eaf9833c87 securedrop_sdk-0.3.0-py3-none-any.whl +651cb73aea890795d8fb83fae849dde841199a964a2ecfde6ab16d63917d762a securedrop_sdk-0.3.1-py3-none-any.whl +a9a3b548ba6cf0afc4dea4f63817cbe75647bf9b8ec399adff787d5e52e59b4d securedrop_sdk-0.3.2-py3-none-any.whl +54b870fd3566914c2ba13aeb5c7eaa0be8ac128be72b45613843c0b75040bd39 securedrop_sdk-0.4.0-py3-none-any.whl eb52689b06ca7433c1cac3b91f320400bd3b358790b7ff4b6367cb1c81d37561 six-1.11.0-py2.py3-none-any.whl 70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 six-1.11.0.tar.gz -dc0eb75221aefc3bfd912c5e10630194728f8af5124619e898c9b22049c62ddc SQLAlchemy-1.3.3-cp37-cp37m-linux_x86_64.whl -86ed1e4985a9fd4f3c784da1fcefb89f4435c1c70815f43e5741c0c9f3c79be3 SQLAlchemy-1.3.3-cp39-cp39-linux_x86_64.whl -91c54ca8345008fceaec987e10924bf07dcab36c442925357e5a467b36a38319 SQLAlchemy-1.3.3.tar.gz 3d440cbb168e2c963d5099232bdb3f7390bf031b6270dad1bc79751698a1399a urllib3-1.24.3-py2.py3-none-any.whl 2393a695cd12afedd0dcb26fe5d50d0cf248e5a66f75dbd89a3d4eb333a61af4 urllib3-1.24.3.tar.gz c78fdeffd1a01640ea99d35851539a4bc91e46a672989c4d96663e3808121389 urllib3-1.25.10-py2.py3-none-any.whl 91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a urllib3-1.25.10.tar.gz 7a2814749409a681ab58babe6539b02a2f84f6649904211f90fb649811ae7b36 urllib3-1.26.6-py2.py3-none-any.whl f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f urllib3-1.26.6.tar.gz -bd05301a84a9bc3b33f178e53446181879744b74f098ed35850ba21125379be1 Werkzeug-0.16.0-py2.py3-none-any.whl -7280924747b5733b246fe23972186c6b348f9ae29724135a6dfc1e53cea433e7 Werkzeug-0.16.0.tar.gz -55e8ebd03bf69dc51cd986ba7bf3e25f549bb27a22de9d6bdd15c855ba8f1f99 Werkzeug-2.0.2-py3-none-any.whl -aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a Werkzeug-2.0.2.tar.gz diff --git a/sha256sums.txt.asc b/sha256sums.txt.asc index c09a7981..8574e3a2 100644 --- a/sha256sums.txt.asc +++ b/sha256sums.txt.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCAAdFiEE2MtZ8F27ngU4xIGd8QX4EBsFJpsFAmKaYaIACgkQ8QX4EBsF -JpudmhAAskBXRPihc1RfGpnW7R6r3suOYGyf/7uE/C0YACMGfzpPigGZnHenWRRK -wUhT2BOjsfkN0ie7AHDO7eSnpfFgZhjdbF82KdZzMHfZd1iXoPlMmBajfELqOn9Z -ulWUUHENBg6Aj33Xo3G5nK3V2xy9GtlJytfAokc9gqJq7CK62ux7zeLiEaTzR6Yt -uL8+mO/J5FrL9Jw6EIcxfbbiTTPLCAn2M9YWFcMUdxYPV04HUXMVht11FXNz6h51 -/UKswuNv55lZ5OwktzBNcNsWsFyQXyt0klFCE3Nj6Duipl6E30ZOfiKuv/lV1d+/ -zc6H6N83nRCzosFnVs7MOUbXs0+cZW8JTf30kc+rptxaJopEgYi8B+SWXOuF8XP+ -2tE8PWlwSSyC9BR9oFIjGQrzL3LgL4m9KSyhnGPEJ+h1Aq9nNknukyJAGYKjAxg2 -eoqAapBPPU7vwVywenfN0NmGDobYWGbOPzyFp0Wxw5sZaL4APG2UVnxCRtyu5+nk -WSB/3ssZoKIhsWb+1dsQmi70oxFre1Eg1L6XlEvurYFOFFsYtoZl+G8vX0PzOL2D -H5tcMwge7qtMWemO6UJol8MqgqBue6aXzZJZzpiTlrgT9CJY+wcrxLK61hGSc0K1 -W67cDriwyZinSBaapQzYfMBDuXEfSyNJZioSpcwbm1safI/4vwY= -=oItL +iQIzBAABCAAdFiEE2MtZ8F27ngU4xIGd8QX4EBsFJpsFAmMRNjYACgkQ8QX4EBsF +Jpvvag//ehKh1XelVvhVarcSu9v4K7jmcLA78sxivUX1iRdY26Zm19Ckk7rWifLV +twPEox2fUkosUaRtlGcHDJ4Q1eGm/KG3XJmIAPM53WRK+8zmZf7OdeK5pijv8JcE +ABySG30IRNUV32UFjH/NJ65lshhNFk3KNrSDwIsdQyM5gf83QpyI/AODYsJUI5ne +7tncFB44xo6WSeHn82jkiKaqxT23FOg9YeXn9b0z6Fi7iMXbcFlE45yH+Qc6Or+O +Tr2pepnXcRM6xfKbn2/E+KwsoYbaJvZsmMm2n7/IRWdv3b50crJWEdHhDM2V443Q +xL57xGUFKmi6bRynwm/A2Al6u8PnPgMFDebCQdtarKZUwFbdb7uplRFtH3CfvVx5 +diw+gB9oPFY5lzPkmb74sA7VABWe8pjpe2JXN+IXM49dur+FxPmCvTEzu2/hgL/I +4JPT9nQVLDHLXxGDM0imreNv35V0GTwxJC93QHdUJ+H+q1a/Bf57dUqxi9tkfxOJ +gktTE+ajij6CFMZLGlw1bjvW3NJvHYkxoZg65SEtruunomZNWSx94R99ae1c0ncT +QEPSqYCE0pWux0gxQnaCpgZZ1+b0vSak5voJ9AGl2L32YSDiBymSgprpqUOUnkjY +hKuq3LTzpucqZWd9AT1Ygoe+4kYIT/SJUU/S2msKe11P8Ghmg2s= +=RuDO -----END PGP SIGNATURE-----