Resolving GenericSetup circular dependencies

Every time I run some upgrade step I see the following in the console:

2017-12-15 15:14:18 WARNING GenericSetup There are unresolved or circular dependencies. Graphviz diagram:: digraph dependencies {"collective.portlet.calendar-upgrades" -> "plone_content"; "caching_policy_mgr" -> "toolset"; "typeinfo" -> "toolset"; "tinymce_settings" -> "componentregistry"; "transmogrifier" -> "toolset"; "archetypes-various" -> "componentregistry"; "redirectiontool_various" -> "actions"; "redirectiontool_various" -> "toolset"; "atcttool" -> "catalog"; "atcttool" -> "componentregistry"; "actions" -> "componentregistry"; "skins" -> "componentregistry"; "cssregistry" -> "skins"; "cssregistry" -> "toolset"; "cssregistry" -> "componentregistry"; "collective.z3cform.datetimewidget_various";"factorytool" -> "componentregistry"; "factorytool" -> "typeinfo"; "archetypetool" -> "archetypes-various"; "placeful_workflow" -> "typeinfo"; "placeful_workflow" -> "workflow"; "portal-transforms-various" -> "componentregistry"; "import-intid-util" -> "toolset"; "controlpanel" -> "actions"; "controlpanel" -> "componentregistry"; "placeful_marker" -> "workflow"; "action-icons" -> "componentregistry"; "componentregistry" -> "toolset"; "content" -> "typeinfo"; "plone.app.tiles_default";"mimetypes-registry-various" -> "componentregistry"; "sharing" -> "rolemap"; "plone.app.event-catalog" -> "plone.app.registry"; "referenceablebehavior-various" -> "toolset"; "reference_catalog" -> "toolset"; "viewlets" -> "componentregistry"; "plone.app.registry" -> "componentregistry"; "plone.app.registry" -> "toolset"; "propertiestool" -> "componentregistry"; "various" -> "toolset"; "portlets" -> "componentregistry"; "portlets" -> "content"; "collective.nitf";"toolset";"plone-final" -> "portlets"; "plone-final" -> "rolemap"; "plone-final" -> "tinymce_settings"; "plone-final" -> "cssregistry"; "plone-final" -> "jsregistry"; "plone-final" -> "viewlets"; "plone-final" -> "controlpanel"; "plone-final" -> "propertiestool"; "plone-final" -> "workflow"; "pleonformgen" -> "toolset"; "pleonformgen" -> "propertiestool"; "pleonformgen" -> "typeinfo"; "plone.app.blocks_default";"ploneopenid-various";"update-workflow-rolemap" -> "workflow"; "plone.app.caching";"collective.z3cform.datetimewidget";"uid_catalog" -> "toolset"; "workflow" -> "toolset"; "jquerytools-various" -> "cssregistry"; "collective.polls";"contentrules" -> "componentregistry"; "contentrules" -> "content"; "contentrules" -> "workflow"; "catalog" -> "toolset"; "Products.Doormat" -> "types"; "import-relations-utils" -> "toolset"; "cmfeditions_various" -> "toolset"; "cmfeditions_various" -> "typeinfo"; "difftool" -> "toolset"; "difftool" -> "componentregistry"; "plone-content" -> "plone-final"; "content_type_registry" -> "componentregistry"; "properties";"plone.app.contenttypes" -> "typeinfo"; "plonepas" -> "componentregistry"; "plonepas" -> "controlpanel"; "plonepas" -> "memberdata-properties"; "plonepas" -> "rolemap"; "cookie_authentication" -> "toolset"; "tinymce_various" -> "componentregistry"; "browserlayer" -> "componentregistry"; "plone-difftool";"languagetool" -> "toolset"; "plone_outputfilters_various" -> "componentregistry"; "memberdata-properties" -> "componentregistry"; "plonetheme.sunburst-various" -> "actions"; "plone.app.versioningbehavior";"collective.js.jqueryui" -> "cssregistry"; "collective.js.jqueryui" -> "jsregistry"; "collective.js.jqueryui" -> "plone.app.registry"; "plone.restapi";"mailhost" -> "componentregistry"; "repositorytool" -> "toolset"; "repositorytool" -> "typeinfo"; "repositorytool" -> "cmfeditions_various"; "rolemap";"various-calendar" -> "toolset"; "jsregistry" -> "skins"; "jsregistry" -> "toolset"; "jsregistry" -> "componentregistry"; "intid-register-content" -> "catalog"; "intid-register-content" -> "import-intid-util"; "setup_site" -> "typeinfo"; "plone.app.theming" -> "toolset"; "collective.portlet.calendar-upgrades" [color=red,style=filled]; "Products.Doormat" [color=red,style=filled]; }

how can I find the issue, @mauritsvanrees?

1 Like

For starters, you can look at the end of that long string, because there it will have one or more steps with color=red to indicate an error. In this case:

"collective.portlet.calendar-upgrades" [color=red,style=filled];
"Products.Doormat" [color=red,style=filled];

So those two will have circular (or maybe undefined) dependencies.

You can make it nicer by using the dot command to turn this Graphiz diagram into a picture. Take the part after Graphiz diagram:: and put it in a text file. So digraph dependencies {...}. Name the file for example input.txt. Then run this command:

dot -Tpng -O input.txt 

This will create a png format of the input and put it in input.txt.png. Look at that one:

When you zoom in, you can see all steps and their dependencies.
Two of them are red. The items they point at will be missing.

In this case, collective.portlet.calendar-upgrades depends on plone_content which is not there. I don't know that one from the top of my head.
Products.Doormat depends on types, which is a classical error: it should be typeinfo. It was fixed in this Products.Doormat commit.

2 Likes

Everything Maurits just said, but you can also paste the diagram into http://www.webgraphviz.com/ to render it.

2 Likes

Also this post contains useful infos on the topic:

2 Likes

wow! thank, guys, that was awesome!

1 Like