[pacman-dev] [GIT] pacman branch, master now at v3.0.0-305-gf0ea21c
Hello, This is an automated email from the git hooks/update script, it was generated because a ref change was pushed to the repository. Updating branch, master, via f0ea21cffca62c566c5e4d2c540c70fb891b9f4c (commit) via ce1fb07436279b2ac70bdad91cf81db550292322 (commit) via edcefb1d58115d4b5ae65e258f7eb53f33d21172 (commit) via b5ab4bffb785aa92c89ff2fee1c0c9a980367cd0 (commit) via 9f9086573a74311913f0d86f5d1e826f2996b35a (commit) from 1c9f30b9fab998e2d89dd307a90122618d746cb6 (commit) - Log ----------------------------------------------------------------- commit f0ea21cffca62c566c5e4d2c540c70fb891b9f4c Author: Dan McGee <dan@archlinux.org> Date: Sat Jul 14 09:34:39 2007 -0400 Ensure requiredby entries are removed during an upgrade This fixes the failure of the requiredby004 pactest in a not so pretty way, but it gets the job done. I purposely used the extremely long name of PM_TRANS_TYPE_REMOVEUPGRADE to be both clear and in the hope that someone else will figure out a better solution. Original idea from Nagy Gabor, patch updated and cleaned for current code. Signed-off-by: Dan McGee <dan@archlinux.org> commit ce1fb07436279b2ac70bdad91cf81db550292322 Author: Nagy Gabor <ngaba@petra.hos.u-szeged.hu> Date: Sat Jul 14 00:31:48 2007 +0200 libalpm/sync.c : ldconfig is run twice. remove _alpm_ldconfig call from _alpm_sync_commit, since sync operation causes an upgrade transaction, where ldconfig is already run. Reference: http://www.archlinux.org/pipermail/pacman-dev/2007-April/008132.html Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit edcefb1d58115d4b5ae65e258f7eb53f33d21172 Author: Chantry Xavier <shiningxc@gmail.com> Date: Fri Jul 13 23:09:25 2007 +0200 libalpm/remove.c : revert part of commit to fix remove044 pactest In 1c9f30b9fab998e2d89dd307a90122618d746cb6 This change should be done AFTER the TODO in recursedeps is implemented. Then we'll be able to first sort the list, then call recursedeps which keeps it sorted. For now, the sorting should still be done as the last step. Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit b5ab4bffb785aa92c89ff2fee1c0c9a980367cd0 Author: Dan McGee <dan@archlinux.org> Date: Fri Jul 13 15:58:05 2007 -0400 Add TRANSLATORS file Signed-off-by: Dan McGee <dan@archlinux.org> commit 9f9086573a74311913f0d86f5d1e826f2996b35a Author: Nagy Gabor <ngaba@petra.hos.u-szeged.hu> Date: Fri Jul 13 15:44:39 2007 -0400 Update hungarian translation Signed-off-by: Dan McGee <dan@archlinux.org> ----------------------------------------------------------------------- Diffstat: TRANSLATORS | 36 + lib/libalpm/add.c | 32 +- lib/libalpm/alpm.h | 1 + lib/libalpm/po/hu.po | 46 +- lib/libalpm/remove.c | 26 +- lib/libalpm/sync.c | 6 - lib/libalpm/trans.c | 21 +- po/hu.po | 1850 +++++++++++++++++++++++++++++++++++++------------- 8 files changed, 1483 insertions(+), 535 deletions(-) hooks/update --- Git Source Code Management System hooks/update refs/heads/master \ 1c9f30b9fab998e2d89dd307a90122618d746cb6 \ f0ea21cffca62c566c5e4d2c540c70fb891b9f4c
On Sat, Jul 14, 2007 at 04:16:46PM -0400, Dan McGee wrote:
Hello,
This is an automated email from the git hooks/update script, it was generated because a ref change was pushed to the repository.
Updating branch, master, via f0ea21cffca62c566c5e4d2c540c70fb891b9f4c (commit) via ce1fb07436279b2ac70bdad91cf81db550292322 (commit) via edcefb1d58115d4b5ae65e258f7eb53f33d21172 (commit) via b5ab4bffb785aa92c89ff2fee1c0c9a980367cd0 (commit) via 9f9086573a74311913f0d86f5d1e826f2996b35a (commit) from 1c9f30b9fab998e2d89dd307a90122618d746cb6 (commit)
- Log ----------------------------------------------------------------- commit f0ea21cffca62c566c5e4d2c540c70fb891b9f4c Author: Dan McGee <dan@archlinux.org> Date: Sat Jul 14 09:34:39 2007 -0400
Ensure requiredby entries are removed during an upgrade
This fixes the failure of the requiredby004 pactest in a not so pretty way, but it gets the job done. I purposely used the extremely long name of PM_TRANS_TYPE_REMOVEUPGRADE to be both clear and in the hope that someone else will figure out a better solution.
Original idea from Nagy Gabor, patch updated and cleaned for current code.
Signed-off-by: Dan McGee <dan@archlinux.org>
I'm wondering if all the wrong requiredby entries caused by this bug is a problem or not. Anyway, I was curious about how broken my current database was, so I made a very hackish change to pacman to check it. It isn't meant for inclusion, it's just for showing that it's done very easily, and so you can run it on your own database to see how it is. If it's useful, we might then discuss about how it could be properly implemented (probably just another query option, but which one and also in which file should that little check function go ?). First the result here : src/pacman/pacman -Q | grep wrong wrong requiredby field ffmpeg for package amrnb wrong requiredby field libldap for package db wrong requiredby field skype for package dbus wrong requiredby field libglade for package docbook-xml wrong requiredby field gcc-gcj for package libart-lgpl wrong requiredby field gtk2 for package libjpeg wrong requiredby field pidgin for package libnetworkmanager wrong requiredby field audacious-plugins for package libsamplerate wrong requiredby field centericq for package libstdc++5 wrong requiredby field screen for package pam wrong requiredby field sshfs for package pkgconfig wrong requiredby field pycairo for package python-numeric wrong requiredby field skype for package qt wrong requiredby field openoffice-base for package ttf-bitstream-vera wrong requiredby field kazehakase for package xulrunner I checked several of these, in each case it's dependencies that were dropped during an upgrade. diff --git a/src/pacman/deptest.c b/src/pacman/deptest.c index 0f149b2..7dde740 100644 --- a/src/pacman/deptest.c +++ b/src/pacman/deptest.c @@ -83,4 +83,26 @@ int pacman_deptest(alpm_list_t *targets) return(retval); } + +int pacman_check(pmpkg_t *pkg) +{ + int retval = 0; + alpm_list_t *reqs, *deps; + + for(reqs = alpm_pkg_get_requiredby(pkg); reqs; reqs = reqs->next) { + int found = 0; + char *reqname = reqs->data; + pmpkg_t *reqpkg = alpm_db_get_pkg(alpm_option_get_localdb(), reqname); + for(deps = alpm_pkg_get_depends(reqpkg); deps && !found; deps = deps->next) { + pmdepend_t *dep = alpm_splitdep(deps->data); + found = alpm_depcmp(pkg, dep); + } + if(!found) { + printf("wrong requiredby field %s for package %s\n", reqname, alpm_pkg_get_name(pkg)); + retval++; + } + } + return(retval); +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/query.c b/src/pacman/query.c index f6c6b5d..87b2a82 100644 --- a/src/pacman/query.c +++ b/src/pacman/query.c @@ -390,6 +390,8 @@ int pacman_query(alpm_list_t *targets) const char *pkgname = alpm_pkg_get_name(pkg); const char *pkgver = alpm_pkg_get_version(pkg); + pacman_check(pkg); + if(config->op_q_info) { dump_pkg_full(pkg, config->op_q_info); } @@ -433,6 +435,8 @@ int pacman_query(alpm_list_t *targets) continue; } + pacman_check(pkg); + /* find a target */ if(config->op_q_info) { dump_pkg_full(pkg, config->op_q_info);
On Mon, Jul 16, 2007 at 09:29:32AM +0200, Xavier wrote:
I'm wondering if all the wrong requiredby entries caused by this bug is a problem or not.
I forgot to say it does cause problems, at least in this case : http://bugs.archlinux.org/task/7622 But there are probably some ways around it.
On 7/16/07, Xavier <shiningxc@gmail.com> wrote:
On Sat, Jul 14, 2007 at 04:16:46PM -0400, Dan McGee wrote:
Hello,
This is an automated email from the git hooks/update script, it was generated because a ref change was pushed to the repository.
Updating branch, master, via f0ea21cffca62c566c5e4d2c540c70fb891b9f4c (commit) via ce1fb07436279b2ac70bdad91cf81db550292322 (commit) via edcefb1d58115d4b5ae65e258f7eb53f33d21172 (commit) via b5ab4bffb785aa92c89ff2fee1c0c9a980367cd0 (commit) via 9f9086573a74311913f0d86f5d1e826f2996b35a (commit) from 1c9f30b9fab998e2d89dd307a90122618d746cb6 (commit)
- Log ----------------------------------------------------------------- commit f0ea21cffca62c566c5e4d2c540c70fb891b9f4c Author: Dan McGee <dan@archlinux.org> Date: Sat Jul 14 09:34:39 2007 -0400
Ensure requiredby entries are removed during an upgrade
This fixes the failure of the requiredby004 pactest in a not so pretty way, but it gets the job done. I purposely used the extremely long name of PM_TRANS_TYPE_REMOVEUPGRADE to be both clear and in the hope that someone else will figure out a better solution.
Original idea from Nagy Gabor, patch updated and cleaned for current code.
Signed-off-by: Dan McGee <dan@archlinux.org>
I'm wondering if all the wrong requiredby entries caused by this bug is a problem or not. Anyway, I was curious about how broken my current database was, so I made a very hackish change to pacman to check it. It isn't meant for inclusion, it's just for showing that it's done very easily, and so you can run it on your own database to see how it is.
If it's useful, we might then discuss about how it could be properly implemented (probably just another query option, but which one and also in which file should that little check function go ?).
First the result here : src/pacman/pacman -Q | grep wrong wrong requiredby field ffmpeg for package amrnb wrong requiredby field libldap for package db wrong requiredby field skype for package dbus wrong requiredby field libglade for package docbook-xml wrong requiredby field gcc-gcj for package libart-lgpl wrong requiredby field gtk2 for package libjpeg wrong requiredby field pidgin for package libnetworkmanager wrong requiredby field audacious-plugins for package libsamplerate wrong requiredby field centericq for package libstdc++5 wrong requiredby field screen for package pam wrong requiredby field sshfs for package pkgconfig wrong requiredby field pycairo for package python-numeric wrong requiredby field skype for package qt wrong requiredby field openoffice-base for package ttf-bitstream-vera wrong requiredby field kazehakase for package xulrunner
I checked several of these, in each case it's dependencies that were dropped during an upgrade.
diff --git a/src/pacman/deptest.c b/src/pacman/deptest.c index 0f149b2..7dde740 100644 --- a/src/pacman/deptest.c +++ b/src/pacman/deptest.c @@ -83,4 +83,26 @@ int pacman_deptest(alpm_list_t *targets) return(retval); }
+ +int pacman_check(pmpkg_t *pkg) +{ + int retval = 0; + alpm_list_t *reqs, *deps; + + for(reqs = alpm_pkg_get_requiredby(pkg); reqs; reqs = reqs->next) { + int found = 0; + char *reqname = reqs->data; + pmpkg_t *reqpkg = alpm_db_get_pkg(alpm_option_get_localdb(), reqname); + for(deps = alpm_pkg_get_depends(reqpkg); deps && !found; deps = deps->next) { + pmdepend_t *dep = alpm_splitdep(deps->data); + found = alpm_depcmp(pkg, dep); + } + if(!found) { + printf("wrong requiredby field %s for package %s\n", reqname, alpm_pkg_get_name(pkg)); + retval++; + } + } + return(retval); +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/query.c b/src/pacman/query.c index f6c6b5d..87b2a82 100644 --- a/src/pacman/query.c +++ b/src/pacman/query.c @@ -390,6 +390,8 @@ int pacman_query(alpm_list_t *targets) const char *pkgname = alpm_pkg_get_name(pkg); const char *pkgver = alpm_pkg_get_version(pkg);
+ pacman_check(pkg); + if(config->op_q_info) { dump_pkg_full(pkg, config->op_q_info); } @@ -433,6 +435,8 @@ int pacman_query(alpm_list_t *targets) continue; }
+ pacman_check(pkg); + /* find a target */ if(config->op_q_info) { dump_pkg_full(pkg, config->op_q_info);
You could add it to the DB test function, probably in the backend part of it. I think this is a valid thing to check. -Dan
On Mon, Jul 16, 2007 at 09:11:09AM -0400, Dan McGee wrote:
You could add it to the DB test function, probably in the backend part of it. I think this is a valid thing to check.
Looks like alpm_db_test is in db.c, but _alpm_db_test is in be_files, and it suits perfectly there, since this is a low level check (it checks no files are missing). While my test is higher level, and rather belongs to deps.c maybe. So maybe alpm_db_test in db.c could first call _alpm_db_test in be_files.c then _alpm_check_requiredby or something in deps.c ? Also should it try to repair it ? It only detects the extra requiredby entries atm, which were fixed by Nagy UPGRADERM patch. But according to a recent mail from Nagy, there might be missing entries as well, so it should probably compute everything again rather. It would also make more sense to use the existing functions which do that requiredby stuff in libalpm, like trans_update_depends, once it's fixed. So the patch itself is totally useless :) It's mostly the idea that might be interesting.
participants (3)
-
Dan McGee
-
Dan McGee
-
Xavier