Skip to content
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

Remove container graphviz dependency #11925

Closed
Tracked by #11899
aaronc opened this issue May 10, 2022 · 0 comments · Fixed by #11934
Closed
Tracked by #11899

Remove container graphviz dependency #11925

aaronc opened this issue May 10, 2022 · 0 comments · Fixed by #11934
Labels
C:depinject Issues and PR related to depinject

Comments

@aaronc
Copy link
Member

aaronc commented May 10, 2022

The container module currently uses https://pkg.go.dev/github.com/goccy/go-graphviz which is convenient because it can generate SVG's and PNG's out of the box. But it also uses cgo to call the actual graphviz library which doesn't work on ARM it seems. And the footprint is pretty big.

I suggest refactoring to something lighter weight that is pure go like https://pkg.go.dev/github.com/emicklei/dot or having a small utility built into container. Then a .DOT file can be saved and a user can convert to SVG or PNG using the official graphviz tool. A bit less convenient but cleaner dependency graph.

@aaronc aaronc added C:depinject Issues and PR related to depinject WG: Framework labels May 10, 2022
@mergify mergify bot closed this as completed in #11934 May 12, 2022
mergify bot pushed a commit that referenced this issue May 12, 2022
## Description

Closes: #11925 

This replace the dependency on https://pkg.go.dev/github.com/goccy/go-graphviz which wraps the whole C Graphviz library and is causing ARM build problems in #11924 and generally probably shouldn't be used because it's a heavyweight dependency just used for debugging.

It adds:
* a custom `graphviz` package that does just what we need for `container`
* updates to graphviz rendering to make it nicer and a README with some examples
* golden tests for graphviz and log debugging
* a `StderrLogger` `DebugOption` which is now the default for `Debug`/`AutoDebug`



---

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting))
- [ ] provided a link to the relevant issue or specification
- [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C:depinject Issues and PR related to depinject
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant