summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/trans.c
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2007-11-13 02:40:08 +0100
committerDan McGee <dan@archlinux.org>2007-11-15 01:49:50 +0100
commit7219326dd4d01d7e49b8a40746f5495c1c329c9c (patch)
tree01cefb7c433105ba88850dc272ea7791d9954c0b /lib/libalpm/trans.c
parentf5fcaf0b3c8d05e94d08d6357324cfa69d8ceae7 (diff)
downloadpacman-7219326dd4d01d7e49b8a40746f5495c1c329c9c.tar.gz
pacman-7219326dd4d01d7e49b8a40746f5495c1c329c9c.tar.xz
Remove REQUIREDBY usage from libalpm
Instead of using the often-busted REQUIREDBY entries in the pacman database, compute them each time they are required. This should help many things: 1. Simplify the codebase 2. Prevent future database corruption 3. Ensure when we do use requiredby, it is always correct 4. Shrink the pmpkg_t memory overhead Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/trans.c')
-rw-r--r--lib/libalpm/trans.c65
1 files changed, 0 insertions, 65 deletions
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index a5fba845..bcd0707d 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -438,71 +438,6 @@ int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data)
return(0);
}
-/* A depends on B through n depends <=> A listed in B's requiredby n times
- * n == 0 or 1 in almost all cases */
-int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg)
-{
- alpm_list_t *i, *j;
- alpm_list_t *depends = NULL;
- const char *pkgname;
- pmdb_t *localdb;
-
- ALPM_LOG_FUNC;
-
- /* Sanity checks */
- ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
- ASSERT(pkg != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1));
-
- pkgname = alpm_pkg_get_name(pkg);
- depends = alpm_pkg_get_depends(pkg);
-
- if(depends) {
- _alpm_log(PM_LOG_DEBUG, "updating dependency packages 'requiredby' fields for %s-%s\n",
- pkgname, pkg->version);
- } else {
- _alpm_log(PM_LOG_DEBUG, "package has no dependencies, no other packages to update\n");
- }
-
- localdb = alpm_option_get_localdb();
- for(i = depends; i; i = i->next) {
- if(!i->data) {
- continue;
- }
- pmdepend_t* dep = alpm_splitdep(i->data);
- if(dep == NULL) {
- continue;
- }
- for(j = _alpm_db_get_pkgcache(localdb); j; j = j->next) {
- pmpkg_t *deppkg = j->data;
- if(deppkg && alpm_depcmp(deppkg, dep)) {
- /* this is cheating... we call this function to populate the package */
- alpm_list_t *rqdby = alpm_pkg_get_requiredby(deppkg);
-
- _alpm_log(PM_LOG_DEBUG, "updating 'requiredby' field for package '%s'\n",
- alpm_pkg_get_name(deppkg));
-
- if(trans->type == PM_TRANS_TYPE_REMOVE
- || trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
- void *data = NULL;
- rqdby = alpm_list_remove(rqdby, pkgname, _alpm_str_cmp, &data);
- FREE(data);
- deppkg->requiredby = rqdby;
- } else {
- rqdby = alpm_list_add(rqdby, strdup(pkgname));
- deppkg->requiredby = rqdby;
- }
-
- if(_alpm_db_write(localdb, deppkg, INFRQ_DEPENDS)) {
- _alpm_log(PM_LOG_ERROR, _("could not update 'requiredby' database entry %s-%s\n"),
- alpm_pkg_get_name(deppkg), alpm_pkg_get_version(deppkg));
- }
- }
- }
- FREE(dep);
- }
- return(0);
-}
-
/* A cheap grep for text files, returns 1 if a substring
* was found in the text file fn, 0 if it wasn't
*/