-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor(container)!: remove dependency on C graphviz (#11934)
## 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)
- Loading branch information
Showing
24 changed files
with
943 additions
and
195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
update-testdata-examples: | ||
go test . -test.update-golden | ||
dot -Tsvg testdata/example.dot > testdata/example.svg | ||
dot -Tsvg testdata/example_error.dot > testdata/example_error.svg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# Cosmos SDK Dependency Injection `container` Module | ||
|
||
## Overview | ||
|
||
TODO | ||
|
||
## Usage | ||
|
||
TODO | ||
|
||
## Debugging | ||
|
||
Issues with resolving dependencies in the container can be done with logs | ||
and [Graphviz](https://graphviz.org) renderings of the container tree. By default, whenever there is an error, logs will | ||
be printed to stderr and a rendering of the dependency graph in Graphviz DOT format will be saved to | ||
`debug_container.dot`. | ||
|
||
Here is an example Graphviz rendering of a successful build of a dependency graph: | ||
![Graphviz Example](./testdata/example.svg) | ||
|
||
Rectangles represent functions, ovals represent types, rounded rectangles represent modules and the single hexagon | ||
represents the function which called `Build`. Black-colored shapes mark functions and types that were called/resolved | ||
without an error. Gray-colored nodes mark functions and types that could have been called/resolved in the container but | ||
were left unused. | ||
|
||
Here is an example Graphviz rendering of a dependency graph build which failed: | ||
![Graphviz Error Example](./testdata/example_error.svg) | ||
|
||
Graphviz DOT files can be converted into SVG's for viewing in a web browser using the `dot` command-line tool, ex: | ||
``` | ||
> dot -Tsvg debug_container.dot > debug_container.svg | ||
``` | ||
|
||
Many other tools including some IDEs support working with DOT files. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.