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
-~----------~----~----~----~------~----~------~--~---

Reply via email to