-
Notifications
You must be signed in to change notification settings - Fork 425
Switch the build backend from poetry-core to maturin
#19234
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 8 commits
7f8b32c
a1d263c
8ecb287
4d0132c
ee297a5
772614c
5f10ac4
659eae6
dd605d8
b885d1e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| Switch the build backend from `poetry-core` to `maturin`. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -120,7 +120,7 @@ redis = ["txredisapi>=1.4.7", "hiredis"] | |
| # Required to use experimental `caches.track_memory_usage` config option. | ||
| cache-memory = ["pympler"] | ||
| # If this is updated, don't forget to update the equivalent lines in | ||
| # tool.poetry.group.dev.dependencies. | ||
| # `dependency-groups.dev` below. | ||
| test = ["parameterized>=0.9.0", "idna>=3.3"] | ||
|
|
||
| # The duplication here is awful. | ||
|
|
@@ -177,6 +177,64 @@ synapse_port_db = "synapse._scripts.synapse_port_db:main" | |
| synapse_review_recent_signups = "synapse._scripts.review_recent_signups:main" | ||
| update_synapse_database = "synapse._scripts.update_synapse_database:main" | ||
|
|
||
| [tool.poetry] | ||
| packages = [{ include = "synapse" }] | ||
|
|
||
| [tool.poetry.build] | ||
| script = "build_rust.py" | ||
| generate-setup-file = true | ||
|
Comment on lines
180
to
206
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is just moved from below. These make me go "why?" but prior art ⏩
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I went on a little investigation to figure out why, and have documented the reasoning in b885d1e. |
||
|
|
||
| # Dependencies used for developing Synapse itself. | ||
| # | ||
| # Hold off on migrating these to `dev-dependencies` (PEP 735) for now until | ||
| # Poetry 2.2.0+, pip 25.1+ are more widely available. | ||
| [tool.poetry.group.dev.dependencies] | ||
|
Comment on lines
+210
to
+212
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Great comment! |
||
| # We pin development dependencies in poetry.lock so that our tests don't start | ||
| # failing on new releases. Keeping lower bounds loose here means that dependabot | ||
| # can bump versions without having to update the content-hash in the lockfile. | ||
| # This helps prevents merge conflicts when running a batch of dependabot updates. | ||
| ruff = "0.14.5" | ||
|
|
||
| # Typechecking | ||
| lxml-stubs = ">=0.4.0" | ||
| mypy = "*" | ||
| mypy-zope = "*" | ||
| types-bleach = ">=4.1.0" | ||
| types-jsonschema = ">=3.2.0" | ||
| types-netaddr = ">=0.8.0.6" | ||
| types-opentracing = ">=2.4.2" | ||
| types-Pillow = ">=8.3.4" | ||
| types-psycopg2 = ">=2.9.9" | ||
| types-pyOpenSSL = ">=20.0.7" | ||
| types-PyYAML = ">=5.4.10" | ||
| types-requests = ">=2.26.0" | ||
| types-setuptools = ">=57.4.0" | ||
|
|
||
| # Dependencies which are exclusively required by unit test code. This is | ||
| # NOT a list of all modules that are necessary to run the unit tests. | ||
| # Tests assume that all optional dependencies are installed. | ||
| # | ||
| # If this is updated, don't forget to update the equivalent lines in | ||
| # project.optional-dependencies.test. | ||
| parameterized = ">=0.9.0" | ||
| idna = ">=3.3" | ||
|
|
||
| # The following are used by the release script | ||
| click = ">=8.1.3" | ||
| # GitPython was == 3.1.14; bumped to 3.1.20, the first release with type hints. | ||
| GitPython = ">=3.1.20" | ||
| markdown-it-py = ">=3.0.0" | ||
| pygithub = ">=1.59" | ||
| # The following are executed as commands by the release script. | ||
| twine = "*" | ||
| # Towncrier min version comes from https://github.com/matrix-org/synapse/pull/3425. Rationale unclear. | ||
| towncrier = ">=18.6.0rc1" | ||
|
|
||
| # Used for checking the Poetry lockfile | ||
| tomli = ">=1.2.3" | ||
|
|
||
| # Used for checking the schema delta files | ||
| sqlglot = ">=28.0.0" | ||
|
|
||
| [tool.towncrier] | ||
| package = "synapse" | ||
|
|
@@ -291,88 +349,29 @@ line-ending = "auto" | |
| [tool.maturin] | ||
| manifest-path = "rust/Cargo.toml" | ||
| module-name = "synapse.synapse_rust" | ||
|
|
||
| [tool.poetry] | ||
| packages = [ | ||
| { include = "synapse" }, | ||
| ] | ||
| include = [ | ||
| { path = "AUTHORS.rst", format = "sdist" }, | ||
| { path = "book.toml", format = "sdist" }, | ||
| { path = "changelog.d", format = "sdist" }, | ||
| { path = "CHANGES.md", format = "sdist" }, | ||
| { path = "CONTRIBUTING.md", format = "sdist" }, | ||
| { path = "demo", format = "sdist" }, | ||
| { path = "docs", format = "sdist" }, | ||
| { path = "INSTALL.md", format = "sdist" }, | ||
| { path = "mypy.ini", format = "sdist" }, | ||
| { path = "scripts-dev", format = "sdist" }, | ||
| { path = "synmark", format="sdist" }, | ||
| { path = "sytest-blacklist", format = "sdist" }, | ||
| { path = "tests", format = "sdist" }, | ||
| { path = "UPGRADE.rst", format = "sdist" }, | ||
| { path = "Cargo.toml", format = "sdist" }, | ||
| { path = "Cargo.lock", format = "sdist" }, | ||
| { path = "rust/Cargo.toml", format = "sdist" }, | ||
| { path = "rust/build.rs", format = "sdist" }, | ||
| { path = "rust/src/**", format = "sdist" }, | ||
| python-source = "." | ||
| sdist-include = [ | ||
| "AUTHORS.rst", | ||
| "book.toml", | ||
| "changelog.d", | ||
| "CHANGES.md", | ||
| "CONTRIBUTING.md", | ||
| "demo", | ||
| "docs", | ||
| "INSTALL.md", | ||
| "mypy.ini", | ||
| "scripts-dev", | ||
| "synmark", | ||
| "sytest-blacklist", | ||
| "tests", | ||
| "UPGRADE.rst", | ||
| "Cargo.toml", | ||
| "Cargo.lock", | ||
| "rust/Cargo.toml", | ||
| "rust/build.rs", | ||
| "rust/src/**", | ||
| ] | ||
| exclude = [ | ||
| { path = "synapse/*.so", format = "sdist"} | ||
| ] | ||
|
|
||
| [tool.poetry.build] | ||
| script = "build_rust.py" | ||
| generate-setup-file = true | ||
|
|
||
| [tool.poetry.group.dev.dependencies] | ||
| # We pin development dependencies in poetry.lock so that our tests don't start | ||
| # failing on new releases. Keeping lower bounds loose here means that dependabot | ||
| # can bump versions without having to update the content-hash in the lockfile. | ||
| # This helps prevents merge conflicts when running a batch of dependabot updates. | ||
| ruff = "0.14.5" | ||
|
|
||
| # Typechecking | ||
| lxml-stubs = ">=0.4.0" | ||
| mypy = "*" | ||
| mypy-zope = "*" | ||
| types-bleach = ">=4.1.0" | ||
| types-jsonschema = ">=3.2.0" | ||
| types-netaddr = ">=0.8.0.6" | ||
| types-opentracing = ">=2.4.2" | ||
| types-Pillow = ">=8.3.4" | ||
| types-psycopg2 = ">=2.9.9" | ||
| types-pyOpenSSL = ">=20.0.7" | ||
| types-PyYAML = ">=5.4.10" | ||
| types-requests = ">=2.26.0" | ||
| types-setuptools = ">=57.4.0" | ||
|
|
||
| # Dependencies which are exclusively required by unit test code. This is | ||
| # NOT a list of all modules that are necessary to run the unit tests. | ||
| # Tests assume that all optional dependencies are installed. | ||
| # | ||
| # If this is updated, don't forget to update the equivalent lines in | ||
| # project.optional-dependencies.test. | ||
| parameterized = ">=0.9.0" | ||
| idna = ">=3.3" | ||
|
|
||
| # The following are used by the release script | ||
| click = ">=8.1.3" | ||
| # GitPython was == 3.1.14; bumped to 3.1.20, the first release with type hints. | ||
| GitPython = ">=3.1.20" | ||
| markdown-it-py = ">=3.0.0" | ||
| pygithub = ">=1.59" | ||
| # The following are executed as commands by the release script. | ||
| twine = "*" | ||
| # Towncrier min version comes from https://github.com/matrix-org/synapse/pull/3425. Rationale unclear. | ||
| towncrier = ">=18.6.0rc1" | ||
|
|
||
| # Used for checking the Poetry lockfile | ||
| tomli = ">=1.2.3" | ||
|
|
||
| # Used for checking the schema delta files | ||
| sqlglot = ">=28.0.0" | ||
|
|
||
| sdist-exclude = ["synapse/*.so"] | ||
|
|
||
| [build-system] | ||
| # The upper bounds here are defensive, intended to prevent situations like | ||
|
|
@@ -381,8 +380,8 @@ sqlglot = ">=28.0.0" | |
| # runtime errors caused by build 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>=2.0.0,<=2.1.3", "setuptools_rust>=1.3,<=1.11.1"] | ||
| build-backend = "poetry.core.masonry.api" | ||
| requires = ["maturin>=1.0,<2.0"] | ||
| build-backend = "maturin" | ||
|
|
||
|
|
||
| [tool.cibuildwheel] | ||
|
|
@@ -419,12 +418,3 @@ environment= { PATH = "$PATH:$HOME/.cargo/bin" } | |
| before-build = "rm -rf {project}/build" | ||
| build-frontend = "build" | ||
| test-command = "python -c 'from synapse.synapse_rust import sum_as_string; print(sum_as_string(1, 2))'" | ||
|
|
||
|
|
||
| [tool.cibuildwheel.linux] | ||
| # Wrap the repair command to correctly rename the built cpython wheels as ABI3. | ||
| repair-wheel-command = "./.ci/scripts/auditwheel_wrapper.py -w {dest_dir} {wheel}" | ||
|
|
||
| [tool.cibuildwheel.macos] | ||
| # Wrap the repair command to correctly rename the built cpython wheels as ABI3. | ||
| repair-wheel-command = "./.ci/scripts/auditwheel_wrapper.py --require-archs {delocate_archs} -w {dest_dir} {wheel}" | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR description makes this sound good and nice that we can eliminate a few more pieces. And the less Poetry, the better.
Overall, the changes themselves are kinda like 🤷 sure - looks equivalent.
There is bound to be some intricacy that isn't quite right but only way to find that out is people complaining.
poetry install --extras allworks for me ⏩