2 ===================================================================
3 RCS file: /cvsroot/installer/poldek/pkg.c,v
4 retrieving revision 1.51.4.5
5 diff -u -r1.51.4.5 pkg.c
6 --- pkg.c 5 May 2004 16:56:43 -0000 1.51.4.5
7 +++ pkg.c 11 Aug 2004 13:20:15 -0000
12 +static int do_pkg_match_req(const struct pkg *pkg, const struct capreq *req,
13 + int strict, int pkgnvr)
15 + if (pkgnvr && pkg_evr_match_req(pkg, req, strict))
17 + return pkg_caps_match_req(pkg, req, strict);
21 int pkg_match_req(const struct pkg *pkg, const struct capreq *req, int strict)
23 + int rc, v = strcmp(pkg->name, capreq_name(req)) == 0;
25 + rc = do_pkg_match_req(pkg, req, 1, v);
27 - if (strcmp(pkg->name, "nspr") == 0 && strcmp(pkg->name, capreq_name(req)) == 0) {
28 - printf("\nMATCH %d %s %s => %d\n", strict,
29 - pkg_snprintf_epoch_s(pkg), capreq_snprintf_s(req),
30 - pkg_evr_match_req(pkg, req, strict));
31 + if (strcmp(capreq_name(req), "XFree86-OpenGL-core") == 0) {
33 + DBGF_F("%s, %s => %d; strict %d\n", pkg_snprintf_epoch_s(pkg),
34 + capreq_snprintf_s(req), rc, strict);
38 - if (strcmp(pkg->name, capreq_name(req)) == 0 && pkg_evr_match_req(pkg, req, strict))
41 - return pkg_caps_match_req(pkg, req, strict);
43 + rc = do_pkg_match_req(pkg, req, 0, v);
49 Index: pkgset-install.c
50 ===================================================================
51 RCS file: /cvsroot/installer/poldek/pkgset-install.c,v
52 retrieving revision 1.82.4.13
53 diff -u -r1.82.4.13 pkgset-install.c
54 --- pkgset-install.c 6 Jul 2004 18:18:00 -0000 1.82.4.13
55 +++ pkgset-install.c 11 Aug 2004 13:20:15 -0000
58 struct db_dep *db_dep;
62 DBGF("VUN %s: %s\n", pkg_snprintf_s(pkg), capreq_snprintf_s(cap));
63 if ((db_dep = db_deps_contains(upg->db_deps, cap, 0)) == NULL) {
64 DBGF(" [1] -> NO in db_deps\n");
69 - if (db_dep->spkg && installset_provides(db_dep->spkg, req, ps, upg)) {
70 + if (db_dep->spkg && installset_provides(NULL, req, ps, upg)) {
72 logn(LOGWARN, "cap %s satisfied by install set, shouldn't happen",
73 capreq_snprintf_s(req));
77 rpmdb dbh = upg->inst->db->dbh;
80 if (upg->inst->flags & INSTS_INSTALL)
84 for (i=0; i < n_array_size(upg->uninst_set->dbpkgs); i++) {
85 struct dbpkg *dbpkg = n_array_nth(upg->uninst_set->dbpkgs, i);
86 - if ((dbpkg->flags & DBPKG_TOUCHED) == 0) {
87 + if ((dbpkg->flags & DBPKG_TOUCHED))
90 + dbpkg->flags |= DBPKG_TOUCHED;
91 + msgn_i(1, indent, _("%s obsoleted by %s"), dbpkg_snprintf_s(dbpkg),
92 + pkg_snprintf_s(pkg));
93 + pkg_rm_mark(dbpkg->pkg);
94 + db_deps_remove_pkg(upg->db_deps, dbpkg->pkg);
95 + db_deps_remove_pkg_caps(upg->db_deps, pkg,
96 + (ps->flags & PSDBDIRS_LOADED) == 0);
98 - msgn_i(1, indent, _("%s obsoleted by %s"), dbpkg_snprintf_s(dbpkg),
99 - pkg_snprintf_s(pkg));
100 - pkg_rm_mark(dbpkg->pkg);
101 - db_deps_remove_pkg(upg->db_deps, dbpkg->pkg);
102 - db_deps_remove_pkg_caps(upg->db_deps, pkg,
103 - (ps->flags & PSDBDIRS_LOADED) == 0);
105 - dbpkg->flags |= DBPKG_TOUCHED;
107 - if (dbpkg->pkg->caps) {
109 - for (j=0; j < n_array_size(dbpkg->pkg->caps); j++) {
110 - struct capreq *cap = n_array_nth(dbpkg->pkg->caps, j);
111 - verify_unistalled_cap(indent, cap, dbpkg->pkg, ps, upg);
114 + if (dbpkg->pkg->caps) {
116 + for (j=0; j < n_array_size(dbpkg->pkg->caps); j++) {
117 + struct capreq *cap = n_array_nth(dbpkg->pkg->caps, j);
118 + verify_unistalled_cap(indent, cap, dbpkg->pkg, ps, upg);
122 - if (pkg->fl && dbpkg->pkg->fl) {
123 - struct capreq *cap;
126 + if (pkg->fl && dbpkg->pkg->fl) {
127 + struct capreq *cap;
131 - cap = alloca(sizeof(cap) + PATH_MAX);
132 - memset(cap, 0, sizeof(*cap));
133 - cap->_buf[0] = '\0';
135 - for (j=0; j < n_array_size(dbpkg->pkg->fl); j++) {
136 - struct pkgfl_ent *flent = n_array_nth(dbpkg->pkg->fl, j);
138 - int path_left_size;
139 + cap = alloca(sizeof(cap) + PATH_MAX);
140 + memset(cap, 0, sizeof(*cap));
141 + cap->_buf[0] = '\0';
143 + for (j=0; j < n_array_size(dbpkg->pkg->fl); j++) {
144 + struct pkgfl_ent *flent = n_array_nth(dbpkg->pkg->fl, j);
146 + int path_left_size;
148 - endp = path = &cap->_buf[1];
149 + endp = path = &cap->_buf[1];
151 - // not needed cause depdirs module is used
152 - //if (n_array_bsearch(ps->depdirs, flent->dirname) == NULL)
154 + // not needed cause depdirs module is used
155 + //if (n_array_bsearch(ps->depdirs, flent->dirname) == NULL)
158 - if (*flent->dirname != '/')
160 + if (*flent->dirname != '/')
163 - endp = n_strncpy(endp, flent->dirname, PATH_MAX);
164 - if (*(endp - 1) != '/')
166 + endp = n_strncpy(endp, flent->dirname, PATH_MAX);
167 + if (*(endp - 1) != '/')
170 - path_left_size = PATH_MAX - (endp - path);
171 + path_left_size = PATH_MAX - (endp - path);
173 - for (k=0; k < flent->items; k++) {
174 - struct flfile *file = flent->files[k];
175 + for (k=0; k < flent->items; k++) {
176 + struct flfile *file = flent->files[k];
178 - n_strncpy(endp, file->basename, path_left_size);
179 - verify_unistalled_cap(indent, cap, dbpkg->pkg, ps, upg);
181 + n_strncpy(endp, file->basename, path_left_size);
182 + verify_unistalled_cap(indent, cap, dbpkg->pkg, ps, upg);
186 - n += process_pkg_orphans(dbpkg->pkg, ps, upg);
189 + n += process_pkg_orphans(dbpkg->pkg, ps, upg);
196 - for (i=0; i<n_array_size(upg->orphan_dbpkgs); i++) {
197 - struct dbpkg *dbpkg = n_array_nth(upg->orphan_dbpkgs, i);
200 - if (dbpkg->flags & DBPKG_DEPS_PROCESSED)
202 + orphans = pkgs_array_new(n_array_size(upg->orphan_dbpkgs));
203 + for (i=0; i<n_array_size(upg->orphan_dbpkgs); i++) {
204 + struct dbpkg *dbpkg = n_array_nth(upg->orphan_dbpkgs, i);
205 + if ((dbpkg->flags & DBPKG_DEPS_PROCESSED) == 0) {
206 dbpkg->flags |= DBPKG_DEPS_PROCESSED;
208 - if ((pkg = is_pkg_obsoletedby_installset(ps, dbpkg->pkg))) {
209 - process_as = PROCESS_AS_NEW;
215 - process_as = PROCESS_AS_ORPHAN;
218 - process_pkg_deps(indent, pkg, ps, upg, process_as);
219 + n_array_push(orphans, pkg_link(dbpkg->pkg));
223 + for (i=0; i<n_array_size(orphans); i++) {
224 + struct pkg *dbpkg = n_array_nth(orphans, i);
225 + process_pkg_deps(indent, dbpkg, ps, upg, PROCESS_AS_ORPHAN);
227 + n_array_free(orphans);