This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
ruff
is currently built from source in the nix flake, slowing down dev environment creation and requiring a moving rust version
#15939
Labels
O-Uncommon
Most users are unlikely to come across this or unexpected workflow
T-Other
Questions, user support, anything else.
Z-Dev-Wishlist
Makes developers' lives better, but doesn't have direct user impact
Z-Upstream-Bug
This issue requires a fix in an upstream dependency.
We have a
flake.nix
file which can be used to create a full development environment for Synapse, including python and native dependencies and things like postgres and redis.The development environment will automatically keep its python environment up to date with
poetry
using the versions defined inpyproject.yaml
. One of those python package isruff
, which we use as a linter.ruff
ships a rust binary, which is dynamically linked against either glibc or musl. As such,ruff
expectsglibc
ormuslc
headers to exist at a certain location on your Linux box. Due to the way NixOS works, these do not exist under the expected path, causing anyruff
binaries we download from PyPI to fail to execute.Thus, we have the following workaround in
flake.nix
, which forcesruff
to be compiled on the local system:synapse/flake.nix
Lines 115 to 122 in 20ae617
This works, but is slow (as you need to compile a rust binary) and forces the development environment to maintain a rust version which is high enough to compile
ruff
(which unfortunately is almost always the latest stable. I found today that while we only require rust1.60.0
in Synapse, the version ofruff
we have specified in ourpyproject.toml
requires rust1.70.0
.The ideal solution here is for
ruff
to provide statically linked binaries to download. This has been discussed in astral-sh/ruff#1699, and they are up for it if it does not compromise performance (or alternatively they could provide aruff-static
PyPI package.Until then, we can't do much on this side.
The text was updated successfully, but these errors were encountered: