msys2 / msys2-autobuild

🏭🏭🏭🏭🏭🏭🏭🏭
https://packages.msys2.org/queue
MIT License
36 stars 25 forks source link

Improve dep cycle handling #52

Open lazka opened 2 years ago

lazka commented 2 years ago

another idea would be to improve visibility of cycles and allow creating the autobuild workflow with some input, so we can manually break cycles at specific points when needed, by starting the workflow with some extra instructions.

mmuetzel commented 2 years ago

Not sure if this of any help. Just an observation: The recent dependency cycles resulted in packages being "blocked by themselves". E.g.:

  mingw-w64-librsvg                  ucrt64     2.54.0-1     waiting-for-dependencies  {'desc': 'Blocked by: mingw-w64-librsvg (ucrt64)'}

Would it be a viable solution to "remove the block" if building a package is blocked by itself?

lazka commented 2 years ago

That's just a side effect of the reporting, it shows the first cause of blockage of all transitive dependencies, which happens to be from gtk3 which depends on librsvg.

lazka commented 2 years ago

First part: show them: 81dd6cabad2e87484f98fca

lazka commented 2 years ago

another idea would be to improve visibility of cycles and allow creating the autobuild workflow with some input, so we can manually break cycles at specific points when needed, by starting the workflow with some extra instructions.

This is now implemented.

jeremyd2019 commented 2 years ago

It would be nice to suppress outputting cycles that are already 'satisfied' - where already built packages mean that they are not blocking anything anymore.

lazka commented 2 years ago

Sounds good.

Further more:

lazka commented 2 years ago

Another thing is that we could write/append the cycle break rules to a release asset instead of passing them via the CLI, that way the arm build would automatically get them as well.

lazka commented 2 years ago

the cycle reporting could show the version number changes of the packages, to make it easier to decide how to break it up.

done

It would be nice to suppress outputting cycles that are already 'satisfied' - where already built packages mean that they are not blocking anything anymore.

done now