Build has a circular dependency on tomli.
See original GitHub issueIt seems we have a circular dependency issue with build preventing bootstrapping a pep517
toolchain if using the latest version of tomli
.
I’m seeing the following dependency cycles here preventing me from using the latest tomli
with build
:
build -> pep517 -> tomli -> build(needed for building pep517 packages like tomli)
build -> tomli -> build(needed for building pep517 packages like tomli)
I think the solution is to probably have both pep517
and build
vendor tomli
, although maybe only pep517
needs to vendor it.
Issue Analytics
- State:
- Created 2 years ago
- Comments:31 (19 by maintainers)
Top Results From Across the Web
Bug: cyclic dependency with tomli==1.2.1 and flit_core==3.2.0 ...
As a part of this, we build our own container image based off a GCP base image (of which we do not have...
Read more >Circular dependency in Python - Stack Overflow
So in my case I have a CustomerService and a UserService who depend on each other. I break the circular dependency as follows:...
Read more >How to fix nasty circular dependency issues once and for all in ...
In the many projects I have maintained so far, sooner or later I always run into the same issue: circular module dependencies.
Read more >Circular Dependencies in Spring - Baeldung
Let's say we don't have a circular dependency. We instead have something like this: Bean A → Bean B → Bean C. Spring...
Read more >Languages which support circular dependency imports, and ...
28 votes, 52 comments. I am working on a programming language/compiler, and have felt the pain a few times in JavaScript-land (my primary ......
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I guess your mileage might vary, but I maintain 6 GCC toolchains in Arch Linux, so I do have some experience there, and I would describe this process as following the same model overall. Similarly to GCC, we are building a bootstrapping version of the required tooling and then using that to build the actual tooling we want to distribute. GCC is even more complex as it requires building a libc with the bootstrapping version and then rebuilding itself against the libc that was built.
I do not disagree that it’s a huge pain. You can make whatever technical review of this that you want, but if your solution includes opening bugs in the upstreams asking for them to change to fit your model, then you need to accept that that might not happen. I understand that you have experience with packaging and bootstrapping, and respect that, but so do we, and unless we’ve failed to properly consider your specific use-case (which after our extensive discussion, I assure I did not), you need to respect that we are the ones maintaining the software and after considering all the use-cases we need to support, maintenance costs, and social costs, we have made our call.
The idea is that you build bootstrapping versions of these packages and then use them to build the proper versions you want to distribute. You surely need to do the same with GCC for eg., this is a perfectly standard bootstrapping procedure. It would be great to be able to avoid it, but we are stuck with this for now.