Browse Source

Use `poetry` to manage the virtualenv in debian packages (#12449)

* Use `poetry` to build venv in debian packages

Co-authored-by: Dan Callahan <danc@element.io>
Co-authored-by: Shay <hillerys@element.io>

* Changelog

* Only pull in from requirements.txt

Addresses the same problem as #12439.

* Include `test` and `all` extras

`poetry export` helpfully silently ignores an unknown extra

Haven't seen this before because it's the only place we export `all` and
`test`. I could have __sworm__ that the syntax `--extra "all test"`
worked for `poetry install`...

* Clean up requirements file on subsequence builds

* Fix shell syntax

Co-authored-by: Dan Callahan <danc@element.io>
Co-authored-by: Shay <hillerys@element.io>
tags/v1.58.0rc1
David Robertson 2 years ago
committed by GitHub
parent
commit
6b3e0ea6bd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 4 deletions
  1. +1
    -0
      changelog.d/12449.misc
  2. +16
    -4
      debian/build_virtualenv
  3. +7
    -0
      debian/changelog
  4. +1
    -0
      debian/clean

+ 1
- 0
changelog.d/12449.misc View File

@@ -0,0 +1 @@
Use `poetry` to manage the virtualenv in debian packages.

+ 16
- 4
debian/build_virtualenv View File

@@ -30,9 +30,19 @@ case $(dpkg-architecture -q DEB_HOST_ARCH) in
;;
esac

# Use --builtin-venv to use the better `venv` module from CPython 3.4+ rather
# than the 2/3 compatible `virtualenv`.

# Manually install Poetry and export a pip-compatible `requirements.txt`
# We need a Poetry pre-release as the export command is buggy in < 1.2
TEMP_VENV="$(mktemp -d)"
python3 -m venv "$TEMP_VENV"
source "$TEMP_VENV/bin/activate"
pip install -U pip
pip install poetry==1.2.0b1
poetry export --extras all --extras test -o exported_requirements.txt
deactivate
rm -rf "$TEMP_VENV"

# Use --no-deps to only install pinned versions in exported_requirements.txt,
# and to avoid https://github.com/pypa/pip/issues/9644
dh_virtualenv \
--install-suffix "matrix-synapse" \
--builtin-venv \
@@ -41,9 +51,11 @@ dh_virtualenv \
--preinstall="lxml" \
--preinstall="mock" \
--preinstall="wheel" \
--extra-pip-arg="--no-deps" \
--extra-pip-arg="--no-cache-dir" \
--extra-pip-arg="--compile" \
--extras="all,systemd,test"
--extras="all,systemd,test" \
--requirements="exported_requirements.txt"

PACKAGE_BUILD_DIR="debian/matrix-synapse-py3"
VIRTUALENV_DIR="${PACKAGE_BUILD_DIR}${DH_VIRTUALENV_INSTALL_ROOT}/matrix-synapse"


+ 7
- 0
debian/changelog View File

@@ -1,3 +1,10 @@
matrix-synapse-py3 (1.58.0+nmu1) UNRELEASED; urgency=medium

* Non-maintainer upload.
* Use poetry to manage the bundled virtualenv included with this package.

-- Synapse Packaging Team <packages@matrix.org> Wed, 30 Mar 2022 12:21:43 +0100

matrix-synapse-py3 (1.57.0~rc1) stable; urgency=medium

* New synapse release 1.57.0~rc1.


+ 1
- 0
debian/clean View File

@@ -0,0 +1 @@
exported_requirements.txt

Loading…
Cancel
Save