| |
68 |
68 |
|
| |
69 |
69 |
ad_proc -public apm_dependency_provided_p { |
| |
70 |
70 |
{ |
| |
71 |
71 |
-dependency_list [list] |
| |
72 |
72 |
} |
| |
73 |
73 |
dependency_uri dependency_version |
| |
74 |
74 |
} { |
| |
75 |
75 |
Returns 1 if the current system provides the dependency inquired about. |
| |
76 |
76 |
Returns -1 if the version number is too low. |
| |
77 |
77 |
Returns 0 otherwise. |
| |
78 |
78 |
@param dependency_list Specify this if you want to a check a list of dependencies of form |
| |
79 |
79 |
{dependency_name dependency_version} in addition to querying the database for what the |
| |
80 |
80 |
system currently provides. |
| |
81 |
81 |
@param dependency_uri The dependency that is being checked. |
| |
82 |
82 |
@param dependency_version The version of the dependency being checked. |
| |
83 |
83 |
} { |
| |
84 |
84 |
|
| |
85 |
85 |
set old_version_p 0 |
| |
86 |
86 |
set found_p 0 |
| |
87 |
87 |
ns_log Debug "apm_dependency_provided_p: Scanning for $dependency_uri version $dependency_version" |
| |
88 |
|
foreach service_version [db_list get_service_versions {}] { |
| |
89 |
|
set version_p [expr {[apm_version_names_compare $service_version $dependency_version] >= 0}] |
| |
90 |
|
if { $version_p } { |
| |
|
88 |
db_foreach apm_dependency_check {} { |
| |
|
89 |
if { $version_p >= 0 } { |
| |
91 |
90 |
ns_log Debug "apm_dependency_provided_p: Dependency satisfied by previously installed package" |
| |
92 |
91 |
set found_p 1 |
| |
93 |
|
} else { |
| |
|
92 |
} elseif { $version_p == -1 } { |
| |
94 |
93 |
set old_version_p 1 |
| |
95 |
94 |
} |
| |
96 |
95 |
} |
| |
97 |
96 |
|
| |
98 |
97 |
# Can't return while inside a db_foreach. |
| |
99 |
98 |
if {$found_p} { |
| |
100 |
99 |
return 1 |
| |
101 |
100 |
} |
| |
102 |
101 |
|
| |
103 |
102 |
if { $dependency_list ne "" } { |
| |
104 |
103 |
# They provided a list of provisions. |
| |
105 |
104 |
foreach prov $dependency_list { |
| |
106 |
105 |
if {$dependency_uri eq [lindex $prov 0]} { |
| |
107 |
106 |
|
| |
108 |
107 |
set provided_version [lindex $prov 1] |
| |
109 |
|
set provided_p [expr {[apm_version_names_compare $provided_version $dependency_version] >= 0}] |
| |
110 |
|
if { $provided_p } { |
| |
|
108 |
set provided_p [db_string version_greater_p {}] |
| |
|
109 |
|
| |
|
110 |
if { $provided_p >= 0 } { |
| |
111 |
111 |
ns_log Debug "apm_dependency_provided_p: Dependency satisfied in list of provisions." |
| |
112 |
112 |
return 1 |
| |
113 |
113 |
} else { |
| |
114 |
114 |
set old_version_p 1 |
| |
115 |
115 |
} |
| |
116 |
116 |
} |
| |
117 |
117 |
} |
| |
118 |
118 |
} |
| |
119 |
119 |
|
| |
120 |
120 |
if { $old_version_p} { |
| |
121 |
121 |
return -1 |
| |
122 |
122 |
} else { |
| |
123 |
123 |
return 0 |
| |
124 |
124 |
} |
| |
125 |
125 |
} |
| |
126 |
126 |
|
| |
127 |
127 |
ad_proc -private pkg_info_new { |
| |
128 |
128 |
package_key spec_file_path embeds extends provides requires |
| |
129 |
129 |
{dependency_p ""} {comment ""} |
| |
130 |
130 |
} { |