Issue #2597 has been updated by Luke Kanies. Subject changed from Dependency cycle information should be more useful. to A 'cycle.dot' file of the cyclical subgraph should be produced when cycles are found Status changed from Needs more information to Accepted Assigned to deleted
It just means that we mention '--graph' as a means of resolving cycles. You're right, though, that we should produce a 'cycle.graph' dot file of the subgraph if we encounter a cycle. That should be pretty straightforward. ---------------------------------------- Feature #2597: A 'cycle.dot' file of the cyclical subgraph should be produced when cycles are found http://projects.reductivelabs.com/issues/2597 Author: Nigel Kersten Status: Accepted Priority: Normal Assigned to: Category: plumbing Target version: Rowlf Affected version: 0.25.0 Keywords: Branch: Here's a recent dependency cycle error message that I had to deal with: <pre> Exec[apt_dist_upgrade] => Package[libsmbios-bin], Exec[apt_install_fix] => Package[libsmbios-bin], Exec[apt_update] => Package[libsmbios-bin], Package[mime-support] => Fileline[/etc/mailcap.order], Exec[apt_dist_upgrade] => Package[corp-python], Exec[apt_install_fix] => Package[corp-python], Exec[apt_update] => Package[corp-python], Exec[apt_dist_upgrade] => Package[corp-ltools], Exec[apt_install_fix] => Package[corp-ltools], Exec[apt_update] => Package[corp-ltools], Exec[apt_dist_upgrade] => Package[tracker-meta], Exec[apt_install_fix] => Package[tracker-meta], Exec[apt_update] => Package[tracker-meta], Exec[apt_dist_upgrade] => Package[ubuntu-minimal], Exec[apt_install_fix] => Package[ubuntu-minimal], Exec[apt_update] => Package[ubuntu-minimal], Package[corp-ldap] => Package[nscd], Fileline[grub_no_hiddenmenu] => Exec[update_grub], Fileline[grub_menu_timeout] => Exec[update_grub], Package[grub] => Exec[update_grub], File[grub_menu] => Fileline[grub_menu_timeout], Package[ubuntu-desktop] => Package[video_driver], Exec[apt_dist_upgrade] => Package[autofs], Exec[apt_install_fix] => Package[autofs], Exec[apt_update] => Package[autofs], Package[corp-kerberos] => File[krb5_pam_session], Exec[apt_dist_upgrade] => Package[nfs-common], Exec[apt_install_fix] => Package[nfs-common], Exec[apt_update] => Package[nfs-common], Package[nfs-common] => Filekeyvalue[enable_gssd], Package[nfs-common] => Service[nfsd], Package[ssh_server] => Service[ssh_daemon], File[sshd_config] => Service[ssh_daemon], Package[buildtools] => Exec[grte_ldconfig], Exec[apt_dist_upgrade] => Package[apport], Exec[apt_install_fix] => Package[apport], Exec[apt_update] => Package[apport], Exec[apt_dist_upgrade] => Package[cupsys], Exec[apt_install_fix] => Package[cupsys], Exec[apt_update] => Package[cupsys], Package[ssh_server] => File[sshd_config], Exec[apt_dist_upgrade] => Package[puppet], Exec[apt_install_fix] => Package[puppet], Exec[apt_update] => Package[puppet], File[grub_menu] => Fileline[grub_no_hiddenmenu], File[ntp_conf] => Service[ntp], Package[syslog-ng] => File[syslog-ng.conf], Package[gconf2-common] => File[gconf_defaults_settings], Package[cupsys] => File[cups_client_conf], File[ldap_ldap_conf] => Package[vendetta], Package[compiz-core] => Filekeyvalue[compiz_indirect_yes], Package[nfs-common] => Filekeyvalue[set_gssd_ccache], Exec[apt_dist_upgrade] => Package[resolvconf], Package[corp-desktop] => Package[resolvconf], Exec[apt_install_fix] => Package[resolvconf], Exec[apt_update] => Package[resolvconf], Package[ubuntu-desktop] => Fileline[/etc/gdm/Xsession], Package[corp-shells] => File[/etc/csh.cshrc], Exec[apt_dist_upgrade] => Package[corp-minimal], Exec[apt_install_fix] => Package[corp-minimal], Exec[apt_update] => Package[corp-minimal], Exec[apt_dist_upgrade] => Package[readline-common], Exec[apt_install_fix] => Package[readline-common], Exec[apt_update] => Package[readline-common], Service[portmap] => Exec[rsync --quiet --delete --archive --exclude="\\.snapshot*" /auto/symlinks /usr/local/], Service[automounter] => Exec[rsync --quiet --delete --archive --exclude="\\.snapshot*" /auto/symlinks /usr/local/], Service[nfsd] => Exec[rsync --quiet --delete --archive --exclude="\\.snapshot*" /auto/symlinks /usr/local/], Package[rsync] => Exec[rsync --quiet --delete --archive --exclude="\\.snapshot*" /auto/symlinks /usr/local/], File[virtual_config] => File[main_cf_config], Exec[apt_dist_upgrade] => Package[rsync], Service[portmap] => Package[rsync], Exec[apt_install_fix] => Package[rsync], Service[automounter] => Package[rsync], Service[nfsd] => Package[rsync], Exec[apt_update] => Package[rsync], Exec[apt_dist_upgrade] => Package[language-pack-en], Exec[apt_install_fix] => Package[language-pack-en], Exec[apt_update] => Package[language-pack-en], Exec[apt_dist_upgrade] => Package[friendly-recovery], Exec[apt_install_fix] => Package[friendly-recovery], Exec[apt_update] => Package[friendly-recovery], Package[ubuntu-desktop] => Service[gdm], Exec[apt_dist_upgrade] => Package[corp-gui], Exec[apt_install_fix] => Package[corp-gui], Exec[apt_update] => Package[corp-gui], Package[corp-ldap] => File[ldap_conf], Exec[apt_dist_upgrade] => Package[mime-support], Exec[apt_install_fix] => Package[mime-support], Exec[apt_update] => Package[mime-support], Exec[apt_dist_upgrade] => Package[gconf2-common], Exec[apt_install_fix] => Package[gconf2-common], Exec[apt_update] => Package[gconf2-common], Package[corp-kerberos] => File[krb5_pam_auth], Exec[apt_dist_upgrade] => Package[bartleby], Exec[apt_install_fix] => Package[bartleby], Exec[apt_update] => Package[bartleby], Exec[apt_dist_upgrade] => Package[corp-kerberos], Exec[apt_install_fix] => Package[corp-kerberos], Exec[apt_update] => Package[corp-kerberos], File[virtual_config] => Exec[update_postfix_virtual], Package[mg-agent-xp] => Package[mg-agent-xp-stats-module], Package[friendly-recovery] => File[recovery_mode_updater], Exec[apt_dist_upgrade] => Package[corp-operations], Exec[apt_install_fix] => Package[corp-operations], Exec[apt_update] => Package[corp-operations], Package[corp-config-tools] => File[/usr/local/scripts/corp-updater], Package[readline-common] => Fileline[enable_history_search_forward], Exec[apt_dist_upgrade] => Package[corp-ldap], Exec[apt_install_fix] => Package[corp-ldap], Exec[apt_update] => Package[corp-ldap], Package[syslog-ng] => File[logrotate.d_syslog-ng], File[ldap_conf] => File[nsswitch_conf], Package[vendetta] => File[nsswitch_conf], Package[readline-common] => Fileline[enable_history_search_backward], Package[gconf2-common] => File[gconf_mandatory_settings], Exec[apt_dist_upgrade] => Package[postfix], Exec[apt_install_fix] => Package[postfix], Exec[apt_update] => Package[postfix], Exec[update_postfix_virtual] => Service[postfix], File[main_cf_config] => Service[postfix], File[main_cf_config] => Service[postfix], Exec[apt_dist_upgrade] => Package[mlocate], Exec[apt_install_fix] => Package[mlocate], Exec[apt_update] => Package[mlocate], Package[mlocate] => Filekeyvalue[updatedb_prunepaths], Package[slocate] => Filekeyvalue[updatedb_prunepaths], Package[slocate] => Filekeyvalue[updatedb_prunepaths], Exec[apt_dist_upgrade] => Package[corp-login-checks], Exec[apt_install_fix] => Package[corp-login-checks], Exec[apt_update] => Package[corp-login-checks], Package[corp-config-tools] => File[corp_updater_cron], Package[ntp] => File[ntp_conf], File[ldap_conf] => File[ldap_ldap_conf], Package[mg-agent-xp] => Package[mg-agent-xp-lshw-module], Package[nfs-common] => Service[portmap], Package[corp-gui] => Filekeyvalue[homedirnotify_ondemand_false], Exec[apt_dist_upgrade] => Package[ssh_client], Exec[apt_install_fix] => Package[ssh_client], Exec[apt_update] => Package[ssh_client], Exec[apt_dist_upgrade] => Package[ssh_server], Exec[apt_install_fix] => Package[ssh_server], Exec[apt_update] => Package[ssh_server], Exec[apt_dist_upgrade] => Package[mailx], Exec[apt_install_fix] => Package[mailx], Exec[apt_update] => Package[mailx], Exec[apt_dist_upgrade] => Package[grub], Exec[apt_install_fix] => Package[grub], Exec[apt_update] => Package[grub], Package[corp-kerberos] => File[krb5_conf], Package[ubuntu-minimal] => Package[syslog-ng], Exec[apt_dist_upgrade] => Package[python2.2], Exec[apt_install_fix] => Package[python2.2], Exec[apt_update] => Package[python2.2], Package[alsa-utils] => File[/etc/init.d/alsa-utils], Exec[apt_dist_upgrade] => Package[buildtools], Exec[apt_install_fix] => Package[buildtools], Exec[apt_update] => Package[buildtools], Package[vendetta] => Package[buildtools], Package[corp-gui] => File[displayconfigrc], File[syslog-ng.conf] => Service[syslog-ng], Package[syslog-ng] => Service[syslog-ng], Package[corp-gui] => File[kdesktoprc], Package[ubuntu-desktop] => File[xscreensaver_app-defaults_gl], Exec[apt_dist_upgrade] => Package[ubuntu-desktop], Exec[apt_install_fix] => Package[ubuntu-desktop], Exec[apt_update] => Package[ubuntu-desktop], Exec[apt_dist_upgrade] => Package[bind9-host], Exec[apt_install_fix] => Package[bind9-host], Exec[apt_update] => Package[bind9-host], Package[corp-gui] => Filekeyvalue[homedirnotify_autoload_false], Package[ssh_server] => Fileline[pamd_ssh], Exec[apt_dist_upgrade] => Package[syslog-ng-restart], Exec[apt_install_fix] => Package[syslog-ng-restart], Exec[apt_update] => Package[syslog-ng-restart], Exec[apt_dist_upgrade] => Package[slocate], Exec[apt_install_fix] => Package[slocate], Exec[apt_update] => Package[slocate], Exec[apt_dist_upgrade] => Package[corp-config-tools], Exec[apt_install_fix] => Package[corp-config-tools], Exec[apt_update] => Package[corp-config-tools], Exec[apt_dist_upgrade] => Package[acpi-support], Exec[apt_install_fix] => Package[acpi-support], Exec[apt_update] => Package[acpi-support], Package[ubuntu-desktop] => File[corp_logo], Package[ssh_client] => File[ssh_client_config], Package[corp-config-tools] => File[/usr/local/scripts/corp-set-track], Exec[apt_dist_upgrade] => Package[ntp], Exec[apt_install_fix] => Package[ntp], Exec[apt_update] => Package[ntp], Package[ubuntu-desktop] => File[screensaver_enforcement], File[nsswitch_conf] => Service[automounter], Package[mg-agent-xp] => Package[mg-agent-xp-check], Exec[apt_dist_upgrade] => Package[compiz-core], Exec[apt_install_fix] => Package[compiz-core], Exec[apt_update] => Package[compiz-core], Package[corp-minimal] => File[dhclient_update_etc_hosts_enterhook], Exec[apt_dist_upgrade] => Package[corp-shells], Exec[apt_install_fix] => Package[corp-shells], Exec[apt_update] => Package[corp-shells], Package[grub] => File[grub_menu], Package[alsa-utils] => Fileline[builtin_speaker_off], Package[corp-shells] => File[/etc/csh.login], Exec[apt_dist_upgrade] => Package[corp-desktop], Exec[apt_install_fix] => Package[corp-desktop], Exec[apt_update] => Package[corp-desktop], Package[corp-kerberos] => File[krb5_pam_account], Package[libsmbios-bin] => File[change_speedstep_390], Package[mg-agent-xp] => Package[mg-agent-xp-corp-updater-module], Exec[apt_dist_upgrade] => Package[mg-agent-xp], Exec[apt_install_fix] => Package[mg-agent-xp], Exec[apt_update] => Package[mg-agent-xp], Package[nfs-common] => Filekeyvalue[enable_idmapd], Exec[apt_dist_upgrade] => Package[command-not-found], Exec[apt_install_fix] => Package[command-not-found], Exec[apt_update] => Package[command-not-found], Package[friendly-recovery] => File[recovery_mode_root], Package[postfix] => File[virtual_config], Package[mlocate] => Filekeyvalue[updatedb_prunefs], Package[slocate] => Filekeyvalue[updatedb_prunefs], Package[slocate] => Filekeyvalue[updatedb_prunefs], Exec[apt_dist_upgrade] => Exec[apt_update], Exec[apt_install_fix] => Exec[apt_update], Exec[apt_update] => Exec[apt_update], Package[mg-agent-xp] => Package[mg-agent-xp-baseagents], Package[corp-config-tools] => File[/usr/local/scripts/corp-information], Exec[apt_dist_upgrade] => Package[alsa-utils], Exec[apt_install_fix] => Package[alsa-utils], Exec[apt_update] => Package[alsa-utils], File[change_speedstep_390] => Exec[enable_speedstep], Exec[apt_install_fix] => Exec[apt_dist_upgrade], Exec[apt_dist_upgrade] => Package[bug-buddy], Exec[apt_install_fix] => Package[bug-buddy], Exec[apt_update] => Package[bug-buddy], Package[ubuntu-desktop] => File[xscreensaver_app-defaults_nogl], Package[corp-config-tools] => File[/usr/local/scripts/corp-config], Exec[apt_dist_upgrade] => Package[corp-base], Exec[apt_install_fix] => Package[corp-base], Exec[apt_update] => Package[corp-base], Exec[apt_update] => Exec[apt_install_fix] </pre> It's reasonably annoying to work out what the dependency is here. I've been using pygraph to make this a bit more sane like: <pre> #!/usr/bin/python2.5 import pygraph import re change_arrows_quote = re.compile( '(.*) => (.*)') f = '/tmp/foo' the_str = open(f).read() the_str = the_str.replace(", ", "\n") the_str = the_str.replace(";","") the_str = the_str.replace("\"","") the_str = change_arrows_quote.sub(r'"\1" -> "\2"', the_str) the_str = "digraph Cycles {\n%s\n}" % the_str suspect = pygraph.readwrite.dot.read(the_str) print pygraph.algorithms.cycles.find_cycle(suspect) </pre> which works out that the cycle is in <code>['"Exec[apt_update]"']</code> It would be awesome if we could make the puppet dependency cycle error message point to exactly where the dependency cycle is. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://reductivelabs.com/redmine/my/account --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en -~----------~----~----~----~------~----~------~--~---
