Changeset 9532981 in mainline for uspace/srv/sysman/repo.c
- Timestamp:
- 2019-08-07T09:35:37Z (6 years ago)
- Children:
- db34424
- Parents:
- af92309
- git-author:
- Michal Koutný <xm.koutny+hos@…> (2015-11-02 23:10:51)
- git-committer:
- Matthieu Riolo <matthieu.riolo@…> (2019-08-07 09:35:37)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/sysman/repo.c
raf92309 r9532981 35 35 36 36 #include "repo.h" 37 #include " dep.h"37 #include "edge.h" 38 38 #include "log.h" 39 39 … … 148 148 { 149 149 unit_t *unit = hash_table_get_inst(ht_link, unit_t, units_by_name); 150 // TODO state locking?151 150 if (unit->state == STATE_EMBRYO) { 152 151 unit->state = STATE_STOPPED; 153 152 } 154 153 155 list_foreach(unit->dependencies, dependencies, unit_dependency_t, dep) { 156 if (dep->state == DEP_EMBRYO) { 157 dep->state = DEP_VALID; 158 } 154 list_foreach(unit->edges_out, edges_out, unit_edge_t, e) { 155 e->commited = true; 159 156 } 160 157 return true; … … 177 174 unit_t *unit = hash_table_get_inst(ht_link, unit_t, units_by_name); 178 175 179 list_foreach_safe(unit-> dependencies, cur_link, next_link) {180 unit_ dependency_t *dep=181 list_get_instance(cur_link, unit_ dependency_t, dependencies);182 if ( dep->state == DEP_EMBRYO) {183 dep_remove_dependency(&dep);176 list_foreach_safe(unit->edges_out, cur_link, next_link) { 177 unit_edge_t *e = 178 list_get_instance(cur_link, unit_edge_t, edges_out); 179 if (!e->commited) { 180 edge_remove(&e); 184 181 } 185 182 } … … 210 207 unit_t *unit = hash_table_get_inst(ht_link, unit_t, units_by_name); 211 208 212 list_foreach(unit-> dependencies, dependencies, unit_dependency_t, dep) {213 assert( dep->dependant == unit);214 assert(( dep->dependency != NULL) != (dep->dependency_name != NULL));215 if ( dep->dependency) {209 list_foreach(unit->edges_out, edges_out, unit_edge_t, e) { 210 assert(e->input == unit); 211 assert((e->output != NULL) != (e->output_name != NULL)); 212 if (e->output) { 216 213 continue; 217 214 } 218 215 219 unit_t * dependency=220 repo_find_unit_by_name( dep->dependency_name);221 if ( dependency== NULL) {216 unit_t *output = 217 repo_find_unit_by_name(e->output_name); 218 if (output == NULL) { 222 219 sysman_log(LVL_ERROR, 223 220 "Cannot resolve dependency of '%s' to unit '%s'", 224 unit_name(unit), dep->dependency_name);221 unit_name(unit), e->output_name); 225 222 *has_error_ptr = true; 226 223 // TODO should we just leave the sprout untouched? 227 224 } else { 228 dep_resolve_dependency(dep, dependency);225 edge_resolve_output(e, output); 229 226 } 230 227 } … … 238 235 * @return ENOENT when one or more resolution fails, information is logged 239 236 */ 240 int repo_resolve_ dependecies(void)237 int repo_resolve_references(void) 241 238 { 242 239 sysman_log(LVL_DEBUG2, "%s", __func__);
Note:
See TracChangeset
for help on using the changeset viewer.