Index: openacs-4/packages/acs-admin/www/install/install-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-admin/www/install/install-2.tcl,v diff -u -N -r1.2.10.1 -r1.2.10.2 --- openacs-4/packages/acs-admin/www/install/install-2.tcl 2 Oct 2013 08:56:25 -0000 1.2.10.1 +++ openacs-4/packages/acs-admin/www/install/install-2.tcl 25 Aug 2014 09:27:10 -0000 1.2.10.2 @@ -6,48 +6,76 @@ } if { [llength $package_key] == 0 } { - ad_returnredirct . + ad_returnredirect . ad_script_abort } +if { $repository_url ne "" } { + set parent_page_title "Install From OpenACS Repository" +} else { + set parent_page_title "Install From Local File System" +} + ##### # # Check dependencies # ##### - apm_get_package_repository -repository_url $repository_url -array repository -array set result [apm_dependency_check_new \ - -repository_array repository \ - -package_keys $package_key] +set install_pkgs $package_key +set count 0 +while 1 { + set fixpoint_p 1 -switch $result(status) { - ok { - set continue_url [export_vars -base "install-3" { repository_url }] - ad_set_client_property acs-admin install $result(install) - set page_title "Confirm" + ns_log notice "run apm_dependency_check_new [incr count] with <$install_pkgs>" + + array set result [apm_dependency_check_new \ + -repository_array repository \ + -package_keys $install_pkgs] + array set failed $result(failed) + + switch $result(status) { + ok { + set continue_url [export_vars -base "install-3" { repository_url }] + set page_title "Confirm" + } + failed { + set page_title "Missing Required Packages" + } + default { + error "Bad status returned from apm_depdendency_check_new: '$result(status)'" + } } - failed { - set page_title "Missing Required Packages" + + set must_add {} + foreach pkg $result(packages) { + + if {$pkg ni $install_pkgs} { + lappend install_pkgs $pkg + } + + array unset version + array set version $repository($pkg) + + foreach p $version(install) { + if {$p ni $install_pkgs} { + lappend install_pkgs $p + set fixpoint_p 0 + } + } } - default { - error "Bad status returned from apm_depdendency_check_new: '$result(status)'" - } + + if {$fixpoint_p} break } -if { $repository_url ne "" } { - set parent_page_title "Install From OpenACS Repository" -} else { - set parent_page_title "Install From Local File System" -} +#ns_log notice "install_pkgs $install_pkgs" +ad_set_client_property acs-admin install $install_pkgs - set context [list [list "." "Install Software"] [list "install" $parent_page_title] $page_title] - ##### # # Build list to display to user @@ -58,11 +86,9 @@ set problems_p 0 set extras_p 0 -array set failed $result(failed) - multirow create install package_key version_name package_name comment extra_p -foreach key $result(packages) { +foreach key $install_pkgs { set extra_p [expr {$key ni $package_key}] if { $extra_p } { set extras_p 1 @@ -74,7 +100,7 @@ foreach elm $failed($key) { lappend comments "[lindex $elm 0] [lindex $elm 1]" } - set comment "Requires [join $comments "; "]" + set comment "Requires [join $comments {; }]" } else { set comment {} }