question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Build has a circular dependency on tomli.

See original GitHub issue

It 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:closed
  • Created 2 years ago
  • Comments:31 (19 by maintainers)

github_iconTop GitHub Comments

3reactions
FFY00commented, Jan 10, 2022

It’s very different from how we do GCC bootstrapping from what I can tell, which is an extremely complex multi-stage process and it’s also very GCC specific.

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.

Which is a huge pain(also potentially slows down builds a lot) and totally unnecessary from a technical point of view here.

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.

2reactions
FFY00commented, Jan 10, 2022

That approach is problematic since the submodule deps don’t seem to be namespace vendored so they would potentially conflict with the normal versions of those packages.

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.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found