diff --git a/.ci/scripts/prepare_old_deps.sh b/.ci/scripts/prepare_old_deps.sh index e536a9db8b..580f87bbdf 100755 --- a/.ci/scripts/prepare_old_deps.sh +++ b/.ci/scripts/prepare_old_deps.sh @@ -31,35 +31,6 @@ sed -i \ -e '/systemd/d' \ pyproject.toml -# Use poetry to do the installation. This ensures that the versions are all mutually -# compatible (as far the package metadata declares, anyway); pip's package resolver -# is more lax. -# -# Rather than `poetry install --no-dev`, we drop all dev dependencies and the dev-docs -# group from the toml file. This means we don't have to ensure compatibility between -# old deps and dev tools. - -pip install toml wheel - -REMOVE_DEV_DEPENDENCIES=" -import toml -with open('pyproject.toml', 'r') as f: - data = toml.loads(f.read()) - -del data['tool']['poetry']['dev-dependencies'] -del data['tool']['poetry']['group']['dev-docs'] - -with open('pyproject.toml', 'w') as f: - toml.dump(data, f) -" -python3 -c "$REMOVE_DEV_DEPENDENCIES" - -pip install poetry==1.3.2 -poetry lock - echo "::group::Patched pyproject.toml" cat pyproject.toml echo "::endgroup::" -echo "::group::Lockfile after patch" -cat poetry.lock -echo "::endgroup::" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e128fd54f7..51cbeb3298 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -321,34 +321,25 @@ jobs: with: python-version: '3.7' - # Calculating the old-deps actually takes a bunch of time, so we cache the - # pyproject.toml / poetry.lock. We need to cache pyproject.toml as - # otherwise the `poetry install` step will error due to the poetry.lock - # file being outdated. - # - # This caches the output of `Prepare old deps`, which should generate the - # same `pyproject.toml` and `poetry.lock` for a given `pyproject.toml` input. - - uses: actions/cache@v3 - id: cache-poetry-old-deps - name: Cache poetry.lock - with: - path: | - poetry.lock - pyproject.toml - key: poetry-old-deps2-${{ hashFiles('pyproject.toml') }} - name: Prepare old deps if: steps.cache-poetry-old-deps.outputs.cache-hit != 'true' run: .ci/scripts/prepare_old_deps.sh - # We only now install poetry so that `setup-python-poetry` caches the - # right poetry.lock's dependencies. - - uses: matrix-org/setup-python-poetry@v1 - with: - python-version: '3.7' - poetry-version: "1.3.2" - extras: "all test" + # Note: we install using `pip` here, not poetry. `poetry install` ignores the + # build-system section (https://github.com/python-poetry/poetry/issues/6154), but + # we explicitly want to test that you can `pip install` using the oldest version + # of poetry-core and setuptools-rust. + - run: pip install .[all,test] - - run: poetry run trial -j6 tests + # We nuke the local copy, as we've installed synapse into the virtualenv + # (rather than use an editable install, which we no longer support). If we + # don't do this then python can't find the native lib. + - run: rm -rf synapse/ + + # Sanity check we can import/run Synapse + - run: python -m synapse.app.homeserver --help + + - run: python -m twisted.trial -j6 tests - name: Dump logs # Logs are most useful when the command fails, always include them. if: ${{ always() }} diff --git a/changelog.d/15566.bugfix b/changelog.d/15566.bugfix index 07fac520f6..130342590c 100644 --- a/changelog.d/15566.bugfix +++ b/changelog.d/15566.bugfix @@ -1 +1 @@ -Require at least poetry-core v1.2.0. +Require at least poetry-core v1.1.0. diff --git a/changelog.d/15571.bugfix b/changelog.d/15571.bugfix new file mode 100644 index 0000000000..130342590c --- /dev/null +++ b/changelog.d/15571.bugfix @@ -0,0 +1 @@ +Require at least poetry-core v1.1.0. diff --git a/pyproject.toml b/pyproject.toml index 6bbc914af6..16b5d9bc3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -368,7 +368,7 @@ furo = ">=2022.12.7,<2024.0.0" # system changes. # We are happy to raise these upper bounds upon request, # provided we check that it's safe to do so (i.e. that CI passes). -requires = ["poetry-core>=1.2.0,<=1.5.0", "setuptools_rust>=1.3,<=1.6.0"] +requires = ["poetry-core>=1.1.0,<=1.5.0", "setuptools_rust>=1.3,<=1.6.0"] build-backend = "poetry.core.masonry.api"