[pacman-dev] [GIT] The official pacman repository branch, master, updated. v3.0.0-563-g8236be9
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "The official pacman repository". The branch, master has been updated via 8236be9fd8f97ea8cb4999cf775768bdc276e53e (commit) via 96f8faa6664714943201d86393099dbf7464abc2 (commit) via 4a835f5f53f23d3564ceb4f53b84f4b62b0074fe (commit) via b6b3b0135edd7bf0fae43bfe522e41cfa5eb0d9b (commit) via 434ea5bf619cd27d99d4b443fe058bf46cc5d7b2 (commit) via cc15d29db22bbc0815c4fb1f50a0e7ba53500a39 (commit) via 2898ccb609da38cf4e7b62d83b88f56396515120 (commit) via 7b4573d851464af53d34820769c0914f08c5ffeb (commit) via dd0275b759752a4f1f561dc490823ca289abd717 (commit) via a55a07f5ddb3ae16d4e60de75aebc2d7106db206 (commit) via 84433c880055faeaa7cf48a4f0a4fe9a7cf5ca1d (commit) via ed37d78664d2d6d036715ee0e939bfeea4a6ede6 (commit) via 6b9859995378a3419e6191df036a8d707cbb93a8 (commit) via 8ec27835f40e3df1ce409bc3d913587c474a30c3 (commit) via b206af78e0e6d2ff3324f3b2dc333d1b4e54f5b9 (commit) via 3312de65e642a7b6f2d853ce870910bddddf559d (commit) via 5c58b3d500d0971747af9a0c978ff6cfac668882 (commit) via 5cd6ffda722c79cf4689e559f214bcc27561fa5c (commit) via 6f5ee2432ccdd0a3bef742938cdd7552bc6a5c32 (commit) from 7d51882dd0afdb87fe986a7d7c672cc0be93795b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8236be9fd8f97ea8cb4999cf775768bdc276e53e Author: Dan McGee <dan@archlinux.org> Date: Sun Nov 11 11:30:16 2007 -0600 Add a horrible little hack to get symlink001.py to pass again This really doesn't give us any regressions in behavior, so it is safe to do although quite ugly. Tell the conflict checking code to ignore symlinks to dirs so that they are not seen as conflicts. Hopefully this entire commit will get factored out soon enough. Signed-off-by: Dan McGee <dan@archlinux.org> commit 96f8faa6664714943201d86393099dbf7464abc2 Author: Chantry Xavier <shiningxc@gmail.com> Date: Sun Nov 11 10:52:51 2007 -0600 Add two requiredby pactests One currently should succeed (006), and 005 fails. requiredby005.py is originally from Nagy Gabor <ngaba@petra.hos.u-szeged.hu>. Signed-off-by: Dan McGee <dan@archlinux.org> commit 4a835f5f53f23d3564ceb4f53b84f4b62b0074fe Author: Dan McGee <dan@archlinux.org> Date: Sun Nov 11 10:47:28 2007 -0600 Ensure list tail pointer is updated when we remove tail node Commit 2ee90ddae23dd86c68223c0d6c49f0b92d62429d did a special check to see if we were removing the head node, but not the tail node. Add a special case for the tail node to ensure all relevant pointers get updated. Signed-off-by: Dan McGee <dan@archlinux.org> commit b6b3b0135edd7bf0fae43bfe522e41cfa5eb0d9b Author: Nagy Gabor <ngaba@bibl.u-szeged.hu> Date: Sat Nov 10 18:11:40 2007 +0100 Incorrect usage of alpm_db_whatprovides in sync.c The old code thought that alpm_db_whatprovides returns with a list of strings (package names). Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org> commit 434ea5bf619cd27d99d4b443fe058bf46cc5d7b2 Author: Aaron Griffin <aaronmgriffin@gmail.com> Date: Fri Nov 9 02:45:22 2007 -0600 Typo fix (sepArately) Found by Giovanni Scafora <linuxmania@gmail.com> Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com> commit cc15d29db22bbc0815c4fb1f50a0e7ba53500a39 Author: Aaron Griffin <aaronmgriffin@gmail.com> Date: Fri Nov 9 02:16:08 2007 -0600 Missing quote in output Found by Giovanni Scafora <linuxmania@gmail.com> Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com> commit 2898ccb609da38cf4e7b62d83b88f56396515120 Author: Dan McGee <dan@archlinux.org> Date: Sun Nov 11 09:37:59 2007 -0600 libalpm: fix lstat wrapper to actually use newpath Commit b55abdce7aebb142ce79da3aa3645afe7693a3c4 introduced an lstat wrapper function that never dereferences paths with a trailing slash, but still called lstat on path instead of newpath. Oops! Signed-off-by: Dan McGee <dan@archlinux.org> commit 7b4573d851464af53d34820769c0914f08c5ffeb Author: Dan McGee <dan@archlinux.org> Date: Sun Nov 11 09:36:03 2007 -0600 Remove unused and broken alpm_list_remove_node function Signed-off-by: Dan McGee <dan@archlinux.org> commit dd0275b759752a4f1f561dc490823ca289abd717 Author: Dan McGee <dan@archlinux.org> Date: Sun Nov 11 09:28:35 2007 -0600 Add a missing newline in sync confirmation output Signed-off-by: Dan McGee <dan@archlinux.org> commit a55a07f5ddb3ae16d4e60de75aebc2d7106db206 Author: Dan McGee <dan@archlinux.org> Date: Fri Nov 9 08:40:09 2007 -0600 Add a symlink-based pactest This passes with both the upcoming 3.1 devel tree and the 3.0.6 pacman code. Signed-off-by: Dan McGee <dan@archlinux.org> commit 84433c880055faeaa7cf48a4f0a4fe9a7cf5ca1d Author: Dan McGee <dan@archlinux.org> Date: Fri Nov 9 00:23:25 2007 -0600 Update bash completion Signed-off-by: Dan McGee <dan@archlinux.org> commit ed37d78664d2d6d036715ee0e939bfeea4a6ede6 Author: Nagy Gabor <ngaba@bibl.u-szeged.hu> Date: Fri Nov 9 00:01:45 2007 -0600 Update Hungarian translation Signed-off-by: Dan McGee <dan@archlinux.org> commit 6b9859995378a3419e6191df036a8d707cbb93a8 Author: Dan McGee <dan@archlinux.org> Date: Thu Nov 8 23:59:02 2007 -0600 pacman: remove leftover help string for -Rh Signed-off-by: Dan McGee <dan@archlinux.org> commit 8ec27835f40e3df1ce409bc3d913587c474a30c3 Author: Nathan Jones <nathanj@insightbb.com> Date: Fri Nov 9 19:54:19 2007 -0500 Implement TotalDownload option. Setting this option will change the download progress to show the amount downloaded, download rate, ETA, and download percent of the entire download list rather than per each individual file. The progress bar is still based on the completion of the current file regardless if the TotalDownload option is set. This closes FS#7205. Signed-off-by: Nathan Jones <nathanj@insightbb.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit b206af78e0e6d2ff3324f3b2dc333d1b4e54f5b9 Author: Nathan Jones <nathanj@insightbb.com> Date: Fri Nov 9 19:54:18 2007 -0500 Add TotalDownload option. This will be used in the next commit. Signed-off-by: Nathan Jones <nathanj@insightbb.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit 3312de65e642a7b6f2d853ce870910bddddf559d Author: Nathan Jones <nathanj@insightbb.com> Date: Fri Nov 9 20:13:29 2007 -0500 Implement IgnoreGroup. This option acts as if IgnorePkg was set on each package in the group. This closes FS#1592. Signed-off-by: Nathan Jones <nathanj@insightbb.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit 5c58b3d500d0971747af9a0c978ff6cfac668882 Author: Nathan Jones <nathanj@insightbb.com> Date: Fri Nov 9 20:13:28 2007 -0500 Add IgnoreGroup and --ignoregroup option. This will be used in the next commit. Signed-off-by: Nathan Jones <nathanj@insightbb.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit 5cd6ffda722c79cf4689e559f214bcc27561fa5c Author: Giovanni Scafora <linuxmania@gmail.com> Date: Fri Nov 9 19:43:48 2007 +0100 makeworld: gettext support Signed-off-by: Giovanni Scafora <linuxmania@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org> commit 6f5ee2432ccdd0a3bef742938cdd7552bc6a5c32 Author: Roman Kyrylych <roman@archlinux.org> Date: Sun Nov 11 16:25:44 2007 +0200 makepkg: remove .pacsave files when uninstalling dependencies Signed-off-by: Roman Kyrylych <roman@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org> ----------------------------------------------------------------------- Summary of changes: contrib/bash_completion | 22 +- doc/pacman.conf.5.txt | 9 + lib/libalpm/alpm.h | 7 +- lib/libalpm/alpm_list.c | 41 +- lib/libalpm/alpm_list.h | 1 - lib/libalpm/conflict.c | 19 +- lib/libalpm/db.c | 5 +- lib/libalpm/deps.c | 2 +- lib/libalpm/handle.c | 21 + lib/libalpm/handle.h | 1 + lib/libalpm/package.c | 32 +- lib/libalpm/package.h | 1 + lib/libalpm/server.c | 47 +- lib/libalpm/server.h | 6 +- lib/libalpm/sync.c | 27 +- lib/libalpm/util.c | 2 +- pactest/tests/{remove041.py => requiredby005.py} | 14 +- .../tests/{requiredby004.py => requiredby006.py} | 7 +- pactest/tests/symlink001.py | 20 + po/hu.po | 1023 +++++++++++--------- scripts/makepkg.sh.in | 4 +- scripts/makeworld.sh.in | 53 +- src/pacman/callback.c | 68 +- src/pacman/callback.h | 3 +- src/pacman/conf.h | 3 + src/pacman/pacman.c | 19 +- src/pacman/sync.c | 4 +- src/pacman/util.c | 1 + 28 files changed, 871 insertions(+), 591 deletions(-) copy pactest/tests/{remove041.py => requiredby005.py} (51%) copy pactest/tests/{requiredby004.py => requiredby006.py} (69%) create mode 100644 pactest/tests/symlink001.py hooks/post-receive -- The official pacman repository
commit 96f8faa6664714943201d86393099dbf7464abc2 Author: Chantry Xavier <shiningxc@gmail.com> Date: Sun Nov 11 10:52:51 2007 -0600
Add two requiredby pactests
One currently should succeed (006), and 005 fails.
requiredby005.py is originally from Nagy Gabor <ngaba@petra.hos.u-szeged.hu>. Well, I'm not sure that pacman should deal with broken localdbs. After we decided that _all_ satisfiers _must_ list the dependency "owner" in their requiredby, this is a broken db. We have a cool testdb stuff (created by you) to help user fix these (an automatized db fix wouldn't be so hard to implement).
Well, nowadays I started to dislike requiredby: 1. The requiredby handling was _very_ negligent earlier, so most users have corrupt localdbs. 2. When the old deps.c just trusted on these fields blindly (-R), these db corruptions caused wrong pacman operation too. After we implemented a slower but more clever checkdeps, all of these problems disappeared. 3. So now a missing requiredby can generate a bug, a false cannot. Note: we use requiredby as a speed-up only (probably speed-up was the main reason for implementing it). 4. Do we really need this speed-up? a.) This is not as efficient as it could be: %REQUIREDBY% should show the dependency also [%REQUIREDBY% gcc:bash>=3.2]; since now foo's %REQUIREDBY% says gcc only, so we have to _scan_ pkgcache for gcc; then check _all_ dependencies of gcc to find the foo-satisfies-this ones. b.) If we didn't use requiredby at all, we should just scan pkgcache (only once!, now we scans it n times, if foo has n requiredby fields), and simply check all depends of all packages to find the satisfied-by-foo dependencies. This would probably slower, and evaluate its degree, but testdb is extremely fast, which makes me optimist.
commit 84433c880055faeaa7cf48a4f0a4fe9a7cf5ca1d Author: Dan McGee <dan@archlinux.org> Date: Fri Nov 9 00:23:25 2007 -0600
Update bash completion
Signed-off-by: Dan McGee <dan@archlinux.org>
First of all: Dan, many thanks, great job. Hoverer (don't kill me plz;-), now the new --ignoregroup is missing (maybe others too). We should reach (verify) that bash_completion is up-to-date; and then all new pacman option should trigger a bash_completion update and manual update too to keep that state. I'm sorry for "assigning" new tasks to you (I am a living TODO sometimes here, sry), but I'm not sure that I could hack that correctly [I could "copy" the rules, but I wouldn't take the responsibility for that]:-( Bye, ngaba ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
This would probably slower, and evaluate its degree, but testdb is extremely I wanted to say: This would be probably slower, and I cannot evaluate its degree... Bye, ngaba
---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
Well, nowadays I started to dislike requiredby: 1. The requiredby handling was _very_ negligent earlier, so most users have corrupt localdbs. 2. When the old deps.c just trusted on these fields blindly (-R), these db corruptions caused wrong pacman operation too. After we implemented a slower but more clever checkdeps, all of these problems disappeared. 3. So now a missing requiredby can generate a bug, a false cannot. Note: we use requiredby as a speed-up only (probably speed-up was the main reason for implementing it). 4. Do we really need this speed-up? a.) This is not as efficient as it could be: %REQUIREDBY% should show the dependency also [%REQUIREDBY% gcc:bash>=3.2]; since now foo's %REQUIREDBY% says gcc only, so we have to _scan_ pkgcache for gcc; then check _all_ dependencies of gcc to find the foo-satisfies-this ones. b.) If we didn't use requiredby at all, we should just scan pkgcache (only once!, now we scans it n times, if foo has n requiredby fields), and simply check all depends of all packages to find the satisfied-by-foo dependencies. This would probably slower, and evaluate its degree, but testdb is extremely fast, which makes me optimist. What's more, this is not a speed-up at all! So I'm pretty sure now, that storing requiredby is _useless_ (no, even worse: a bug generator): I simply forgot about update_requiredby! Requiredby is computed when the package was born on localdb <- requiredby computation is ~exactly 4./b.). This result is used only in the following cases: *) by pacman: -Si and -Qi (wow), --orphan *) deps.c/checkdeps && can_remove *) libalpm/sync.c:566,1256 what are these?! we don't copy requiredby fields on package upgrade neither, why should we copy it between to-be-replaced and replacer?! [And I didn't say anything about trans_update_depends, grr.] Summary: if we just simply followed 4./b.), we would compute requiredby on package death instead of on package born. The question is: how many times we use this information without removal (-Qi, -Si and can_remove, --orphan). But as testdb shows: compute requiredby for _all_ packages is not costly at all.
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby] Bye, ngaba ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
On Mon, Nov 12, 2007 at 05:21:31PM +0100, Nagy Gabor wrote:
What's more, this is not a speed-up at all! So I'm pretty sure now, that storing requiredby is _useless_ (no, even worse: a bug generator): I simply forgot about update_requiredby! Requiredby is computed when the package was born on localdb <- requiredby computation is ~exactly 4./b.). This result is used only in the following cases: *) by pacman: -Si and -Qi (wow), --orphan *) deps.c/checkdeps && can_remove *) libalpm/sync.c:566,1256 what are these?! we don't copy requiredby fields on package upgrade neither, why should we copy it between to-be-replaced and replacer?! [And I didn't say anything about trans_update_depends, grr.] Summary: if we just simply followed 4./b.), we would compute requiredby on package death instead of on package born. The question is: how many times we use this information without removal (-Qi, -Si and can_remove, --orphan). But as testdb shows: compute requiredby for _all_ packages is not costly at all.
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
I think you are right, but if performance was your original goal, it seems like you are always going in the opposite direction :) Though, I totally agree that a poor implementation of requiredby only have drawbacks : * more complexity * more bugs * no speed up I wouldn't be surprised if removing requiredby didn't cause any slow downs, but better check it anyway if you do remove it :) About the last compatibility problem, I don't see it as a big one, but I could be wrong.
On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
Just to make sure I understand you - you want to fully remove REQUIREDBY from the DB and compute it every time. It will be a little slower, BUT, it will help us in a few ways: 1) we don't need REQUIREDBY all that often. It's only used in removal, and replace functionality if I understand correctly. The performance hit will not be that big in this case (removal happens far less often than addition). 2) Our package structures will shrink in size, which is always good I say go for it. Sounds like a pretty decent idea if I'm understanding you correctly. As usual, I await your patches 8)
On Mon, 12 Nov 2007 14:08:07 -0600, Aaron Griffin wrote
On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
Just to make sure I understand you - you want to fully remove REQUIREDBY from the DB and compute it every time.
It will be a little slower, BUT, it will help us in a few ways:
1) we don't need REQUIREDBY all that often. It's only used in removal, and replace functionality if I understand correctly. The performance hit will not be that big in this case (removal happens far less often than addition). 2) Our package structures will shrink in size, which is always good
3) Computing requiredby every time will ensure (if the computation is done right) that requiredby will always be correct. Even after -Rd operations followed by subsequent -S operations and other crazy things. Basically, less bookkeeping to do on install/remove. Personal experience: I've uninstalled (-Rd) fglrx-utils while doing testing - didn't want to also uninstall all my libgl dependent apps as well. Then, after reinstalling fglrx-utils, none of my libgl apps had their requiredby reset. I suppose, in hindsight, I should have filed a bug when I noticed this behaviour (bad Travis!), but I kept forgetting about the issue, and now it appears it won't matter at all.
I say go for it. Sounds like a pretty decent idea if I'm understanding you correctly. As usual, I await your patches 8)
-- Travis
On Nov 12, 2007 2:18 PM, Travis Willard <travis@archlinux.org> wrote:
On Mon, 12 Nov 2007 14:08:07 -0600, Aaron Griffin wrote
On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
Just to make sure I understand you - you want to fully remove REQUIREDBY from the DB and compute it every time.
It will be a little slower, BUT, it will help us in a few ways:
1) we don't need REQUIREDBY all that often. It's only used in removal, and replace functionality if I understand correctly. The performance hit will not be that big in this case (removal happens far less often than addition). 2) Our package structures will shrink in size, which is always good
3) Computing requiredby every time will ensure (if the computation is done right) that requiredby will always be correct. Even after -Rd operations followed by subsequent -S operations and other crazy things. Basically, less bookkeeping to do on install/remove.
I knew I had more points in my head! This was one of them - preventing DB corruption. 4) Less disk writes, as we actually have to write, compute, and rewrite the entry, if memory serves me correctly.
On Nov 12, 2007 2:28 PM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
On Nov 12, 2007 2:18 PM, Travis Willard <travis@archlinux.org> wrote:
On Mon, 12 Nov 2007 14:08:07 -0600, Aaron Griffin wrote
On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
Just to make sure I understand you - you want to fully remove REQUIREDBY from the DB and compute it every time.
It will be a little slower, BUT, it will help us in a few ways:
1) we don't need REQUIREDBY all that often. It's only used in removal, and replace functionality if I understand correctly. The performance hit will not be that big in this case (removal happens far less often than addition). 2) Our package structures will shrink in size, which is always good
3) Computing requiredby every time will ensure (if the computation is done right) that requiredby will always be correct. Even after -Rd operations followed by subsequent -S operations and other crazy things. Basically, less bookkeeping to do on install/remove.
I knew I had more points in my head! This was one of them - preventing DB corruption.
4) Less disk writes, as we actually have to write, compute, and rewrite the entry, if memory serves me correctly.
+1. I think we can trade a possible slight performance loss in a few cases for all the things mentioned above. I also think it will cut out a lot of crappy code. Throwing the project manager speak into this here- it isn't getting into 3.1. This will be a great kickoff for 3.2 major changes though. -Dan
On Nov 12, 2007 3:35 PM, Dan McGee <dpmcgee@gmail.com> wrote:
On Nov 12, 2007 2:28 PM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
On Nov 12, 2007 2:18 PM, Travis Willard <travis@archlinux.org> wrote:
On Mon, 12 Nov 2007 14:08:07 -0600, Aaron Griffin wrote
On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
So I will create a patch for killing requiredby soon. The patched pacman will be compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
Just to make sure I understand you - you want to fully remove REQUIREDBY from the DB and compute it every time.
It will be a little slower, BUT, it will help us in a few ways:
1) we don't need REQUIREDBY all that often. It's only used in removal, and replace functionality if I understand correctly. The performance hit will not be that big in this case (removal happens far less often than addition). 2) Our package structures will shrink in size, which is always good
3) Computing requiredby every time will ensure (if the computation is done right) that requiredby will always be correct. Even after -Rd operations followed by subsequent -S operations and other crazy things. Basically, less bookkeeping to do on install/remove.
I knew I had more points in my head! This was one of them - preventing DB corruption.
4) Less disk writes, as we actually have to write, compute, and rewrite the entry, if memory serves me correctly.
+1. I think we can trade a possible slight performance loss in a few cases for all the things mentioned above. I also think it will cut out a lot of crappy code.
Throwing the project manager speak into this here- it isn't getting into 3.1. This will be a great kickoff for 3.2 major changes though.
Along with real transactions, parsing cleanup, DB backend changes, a million dollars, naked women, and copious amounts of booze, yes?
On Mon, Nov 12, 2007 at 03:35:00PM -0600, Dan McGee wrote:
+1. I think we can trade a possible slight performance loss in a few cases for all the things mentioned above. I also think it will cut out a lot of crappy code.
Throwing the project manager speak into this here- it isn't getting into 3.1. This will be a great kickoff for 3.2 major changes though.
I'm regretting Nagy didn't point this out earlier then. I don't know why I never thought about this. Now that it's said, and I'm looking back at all the issues related to requiredby, it makes a lot of sense. It would also eliminate the eventual problems caused by an existing broken database, with wrong requiredby. But I'm not the project manager, and pacman 3.1 indeed has to be released one day :)
> I'm regretting Nagy didn't point this out earlier then. > I don't know why I never thought about this. Now that it's said, and I'm > looking back at all the issues related to requiredby, it makes a lot of > sense. > It would also eliminate the eventual problems caused by an existing broken > database, with wrong requiredby. Well, I'm quoting Aaron here (http://www.archlinux.org/pipermail/pacman-dev/2007-October/009498.html): "The more and more ideas that are pumped out to this list, the more confused we get, and the harder it is to keep up. It's like.... if I throw a baseball at you, you might catch it, but if I throw 50, you won't catch them all." And he has right now. I've got plenty of plans in my mind, indeed; I didn't point this out earlier, because: 1. Main reason: I always prefer bugfixes over "improvements" (see also: 2.). And well, in my priority list this is not so important at all: -give a look at libalpm/sync.c (simply horrible) -we have some critical bugs now (symlink puzzle), and some other notable failing pactests too, buggy reason handling etc. -my main "mission" here is to reach the universal transaction ;-) 2. Now the requiredby stuff is expected to work fine (I can bet that Travis's problem is not a bug now). 3. Throwing requiredby to trash-bin is also throwing our hard work to release 2., too 4. To be honest, I simply thought that you won't like it 5. I have some pending submitted patches here (I don't want to throw 50 baseballs... ;-) > > But I'm not the project manager, and pacman 3.1 indeed has to be released > one > day :) > Well, sometimes I have the feeling that we should release pacman more often. I said earlier that pacman-git is more stable than devel repo. And indeed, I simply use pacman-git at home, fortunately without bigger problems. Sometimes I get disappointed about the fact, that Arch users have to wait so much for the next release: Pacman 3.0.6 fails 29 (vs. 8) pactest files from 3.1 (remove046.py lead to an infinite loop...) Bye, ngaba ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
On Nov 12, 2007 3:35 PM, Dan McGee <dpmcgee@gmail.com> wrote:
Throwing the project manager speak into this here- it isn't getting into 3.1. This will be a great kickoff for 3.2 major changes though.
You sure you still want to stand by this? I think this change might actually close out like 3 or 4 bugs on the 3.1 tracker... I say push it, but I'll let you be the judge.
On Nov 14, 2007 5:01 PM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
On Nov 12, 2007 3:35 PM, Dan McGee <dpmcgee@gmail.com> wrote:
Throwing the project manager speak into this here- it isn't getting into 3.1. This will be a great kickoff for 3.2 major changes though.
You sure you still want to stand by this? I think this change might actually close out like 3 or 4 bugs on the 3.1 tracker... I say push it, but I'll let you be the judge.
The project manager didn't realize how easy this change actually would be. :) If no one else has any objections, then I'd like to merge my changes tonight. We (anyone want to volunteer) also need to make a tool to remove requiredby entries. I took an initial stab at it using libalpm, then I realized we have no explicit mechanism to tell the backend to write to the DB. Does this sound like something we should expose, or is it too low level? BTW, the reason for the tool is simple (responding to earlier emails in the thread)- keeping stale entries around is confusing for users AND any scripts that may have used it. -Dan
On Nov 14, 2007 6:08 PM, Dan McGee <dpmcgee@gmail.com> wrote:
We (anyone want to volunteer) also need to make a tool to remove requiredby entries.
I was going to python it up... it's an easy file to parse and rewrite, probably like 20 lines
I took an initial stab at it using libalpm, then I realized we have no explicit mechanism to tell the backend to write to the DB. Does this sound like something we should expose, or is it too low level?
I'd say no. There's a reason why we don't have mutators for package structures (front ends shouldn't be modifying that data).
On Wed, 2007-11-14 at 18:15 -0600, Aaron Griffin wrote:
On Nov 14, 2007 6:08 PM, Dan McGee <dpmcgee@gmail.com> wrote:
We (anyone want to volunteer) also need to make a tool to remove requiredby entries.
I was going to python it up... it's an easy file to parse and rewrite, probably like 20 lines
sed rules! :) grep -Rl REQUIREDBY /var/lib/pacman/local | xargs sed -i '/^%REQUIREDBY %/,/^$/ d' Course it may not handle corner cases... k -- K. Piche <kpiche@rogers.com>
On Nov 14, 2007 7:57 PM, K. Piche <kpiche@rogers.com> wrote:
On Wed, 2007-11-14 at 18:15 -0600, Aaron Griffin wrote:
On Nov 14, 2007 6:08 PM, Dan McGee <dpmcgee@gmail.com> wrote:
We (anyone want to volunteer) also need to make a tool to remove requiredby entries.
I was going to python it up... it's an easy file to parse and rewrite, probably like 20 lines
sed rules! :)
grep -Rl REQUIREDBY /var/lib/pacman/local | xargs sed -i '/^%REQUIREDBY %/,/^$/ d'
Course it may not handle corner cases...
Oh, nice. I can never recall how to make sed traverse multiple lines like that. Any opinions on this guys? If we can just toss this in a post_upgrade, then we're set
On Nov 14, 2007 6:08 PM, Dan McGee <dpmcgee@gmail.com> wrote:
We (anyone want to volunteer) also need to make a tool to remove requiredby entries.
I was going to python it up... it's an easy file to parse and rewrite, probably like 20 lines
I took an initial stab at it using libalpm, then I realized we have no explicit mechanism to tell the backend to write to the DB. Does this sound like something we should expose, or is it too low level?
I'd say no. There's a reason why we don't have mutators for package structures (front ends shouldn't be modifying that data). If you implement this with care (don't let the front-end corrupt the db), this is acceptable for me. Personally, sometimes I modify my localdb by hand (mostly %REASON%), which is much more dangerous than a well controlled localdb->pmpkg_t...edit...pmpkg_t->localdb process. After we removed %REQUIREDBY%, %REASON% is the only reason in my mind where this can be useful [so I revert this: http://www.archlinux.org/pipermail/pacman-dev/2007-November/010066.html] See also: http://www.archlinux.org/pipermail/pacman-dev/2007-September/009302.html I know your answer: reinstall the package... This is needless, and now the REASON handling is chaotic, probably I must do -Rd, -S if I want to set a dependency reason to explicit [<- so as a brother of --asdep, --asexplicit can be useful too], which is ugly. Bye, ngaba
---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
On Nov 15, 2007 4:39 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
On Nov 14, 2007 6:08 PM, Dan McGee <dpmcgee@gmail.com> wrote:
We (anyone want to volunteer) also need to make a tool to remove requiredby entries.
I was going to python it up... it's an easy file to parse and rewrite, probably like 20 lines
I took an initial stab at it using libalpm, then I realized we have no explicit mechanism to tell the backend to write to the DB. Does this sound like something we should expose, or is it too low level?
I'd say no. There's a reason why we don't have mutators for package structures (front ends shouldn't be modifying that data). If you implement this with care (don't let the front-end corrupt the db), this is acceptable for me. Personally, sometimes I modify my localdb by hand (mostly %REASON%), which is much more dangerous than a well controlled localdb->pmpkg_t...edit...pmpkg_t->localdb process. After we removed %REQUIREDBY%, %REASON% is the only reason in my mind where this
...snip... This is totally different from a design perspective. Dan mentioned a generic mechanism to write, where as you're suggesting a unique operation. A generic, public interface to modify and write to the DB is, in my opinion, a bad idea, but operations which do things (and write) within libalpm's control is fine
On Nov 15, 2007 10:42 AM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
On Nov 15, 2007 4:39 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
On Nov 14, 2007 6:08 PM, Dan McGee <dpmcgee@gmail.com> wrote:
We (anyone want to volunteer) also need to make a tool to remove requiredby entries.
I was going to python it up... it's an easy file to parse and rewrite, probably like 20 lines
I took an initial stab at it using libalpm, then I realized we have no explicit mechanism to tell the backend to write to the DB. Does this sound like something we should expose, or is it too low level?
I'd say no. There's a reason why we don't have mutators for package structures (front ends shouldn't be modifying that data). If you implement this with care (don't let the front-end corrupt the db), this is acceptable for me. Personally, sometimes I modify my localdb by hand (mostly %REASON%), which is much more dangerous than a well controlled localdb->pmpkg_t...edit...pmpkg_t->localdb process. After we removed %REQUIREDBY%, %REASON% is the only reason in my mind where this
...snip...
This is totally different from a design perspective. Dan mentioned a generic mechanism to write, where as you're suggesting a unique operation. A generic, public interface to modify and write to the DB is, in my opinion, a bad idea, but operations which do things (and write) within libalpm's control is fine
I actually wasn't referring to mutators to make that clear. I was thinking along the lines of a public alpm_pkg_force_write(pmpkg_t *pkg) or something. However, that still doesn't seem that clean, but I don't know. -Dan
On Nov 15, 2007 11:01 AM, Dan McGee <dpmcgee@gmail.com> wrote:
On Nov 15, 2007 10:42 AM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
This is totally different from a design perspective. Dan mentioned a generic mechanism to write, where as you're suggesting a unique operation. A generic, public interface to modify and write to the DB is, in my opinion, a bad idea, but operations which do things (and write) within libalpm's control is fine
I actually wasn't referring to mutators to make that clear. I was thinking along the lines of a public alpm_pkg_force_write(pmpkg_t *pkg) or something. However, that still doesn't seem that clean, but I don't know.
Right, I was using that as an example... let me spit out more. This here: alpm_change_install_reason(pkg); is superior to: alpm_pkg_set_reason(pkg, 1); alpm_pkg_write(pkg); because it puts the _operation_ in our control. It's about "use cases" and all that fun crap 8) I don't think we want to expose the ability to modify the database with public functions in libalpm, but an operation that just happens to modify it is different.
On Wed, Nov 14, 2007 at 05:01:21PM -0600, Aaron Griffin wrote:
On Nov 12, 2007 3:35 PM, Dan McGee <dpmcgee@gmail.com> wrote:
Throwing the project manager speak into this here- it isn't getting into 3.1. This will be a great kickoff for 3.2 major changes though.
You sure you still want to stand by this? I think this change might actually close out like 3 or 4 bugs on the 3.1 tracker... I say push it, but I'll let you be the judge.
AFAIK, all these bugs were already fixed. That's also what Nagy pointed out in an earlier mail. http://www.archlinux.org/pipermail/pacman-dev/2007-November/010024.html "2. Now the requiredby stuff is expected to work fine (I can bet that Travis's problem is not a bug now). 3. Throwing requiredby to trash-bin is also throwing our hard work to release 2., too"
Idézés Aaron Griffin <aaronmgriffin@gmail.com>:
On Mon, 12 Nov 2007 14:08:07 -0600, Aaron Griffin wrote
On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
So I will create a patch for killing requiredby soon. The patched
On Nov 12, 2007 2:18 PM, Travis Willard <travis@archlinux.org> wrote: pacman will be
compatible with the old dbs; however, old pacmans with new dbs will fail. What do you say? Any contras? [my patch would simulate alpm_pkg_get_requiredby with compute_requiredby]
Just to make sure I understand you - you want to fully remove REQUIREDBY from the DB and compute it every time.
It will be a little slower, BUT, it will help us in a few ways:
1) we don't need REQUIREDBY all that often. It's only used in removal, and replace functionality if I understand correctly. The performance hit will not be that big in this case (removal happens far less often than addition). 2) Our package structures will shrink in size, which is always good
3) Computing requiredby every time will ensure (if the computation is done right) that requiredby will always be correct. Even after -Rd operations followed by subsequent -S operations and other crazy things. Basically, less bookkeeping to do on install/remove.
I knew I had more points in my head! This was one of them - preventing DB corruption.
4) Less disk writes, as we actually have to write, compute, and rewrite the entry, if memory serves me correctly.
I found an other worth-to-mention(?) benefit(?) (I refer to db-backend and PKGINFO vs. DB format discussions here, too): 5.) %REQUIREDBY% was the only altering property in a package's "life". So from now on, after the package was installed (which is now just a .PKGINFO conversion (I also prefer killing .PKGINFO <=> desc, files, ... extraction) + filling in some install-time fields: %REASON%, %INSTALLDATE% ...) its db record _won't_ change until its removal (<- upgrade-remove is also a removal). Bye, ngaba ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
> On Nov 12, 2007 10:21 AM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote: > > So I will create a patch for killing requiredby soon. The patched pacman > will be > > compatible with the old dbs; however, old pacmans with new dbs will fail. > > What do you say? Any contras? [my patch would simulate > alpm_pkg_get_requiredby > > with compute_requiredby] > > Just to make sure I understand you - you want to fully remove > REQUIREDBY from the DB and compute it every time. Exactly. > It will be a little slower, BUT, it will help us in a few ways: > > 1) we don't need REQUIREDBY all that often. It's only used in removal, > and replace functionality if I understand correctly. The performance > hit will not be that big in this case (removal happens far less often > than addition). Note: upgrade is also a "replace"; so we must compute requiredby in this case, too. But this is also done now; just not in the removal part: this is done in the add part (now every package addition also induces a compute_requiredby... + alpm_trans_update_depends, so even a bit more). So requiredby is _computed_ now on foo package born (and some not notable modifications happens if new "requiredby" packages are installed). So we waste time for computing requiredby, iff the package won't be removed (depcheck error, -Si, -Qi, --orphan), because in the package "life" we do this computation more than once (on removal, we _will_ compute). As I see, the effects in speed will be (we are talking about just seconds here): -add_prepare won't change, add_commit will be faster -remove_prepare will be slower, remove_commit won't change, so user must wait longer for checkdeps errors and confirmation questions (negative impact) -so -A will be faster, -R will be slower than now - -U/-S: prepare will be slower (effect of ~remove_prepare), commit will be faster (effect of add_commit), so user must wait longer for checkdeps errors and confirmation questions (negative impact); but overall it will be faster (because usually more package-adding than package-removal happens here) > 2) Our package structures will shrink in size, which is always good > > I say go for it. Sounds like a pretty decent idea if I'm understanding > you correctly. As usual, I await your patches 8) OK. Bye, ngaba ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
On Mon, Nov 12, 2007 at 03:41:57PM +0100, Nagy Gabor wrote:
commit 96f8faa6664714943201d86393099dbf7464abc2 Author: Chantry Xavier <shiningxc@gmail.com> Date: Sun Nov 11 10:52:51 2007 -0600
Add two requiredby pactests
One currently should succeed (006), and 005 fails.
requiredby005.py is originally from Nagy Gabor <ngaba@petra.hos.u-szeged.hu>. Well, I'm not sure that pacman should deal with broken localdbs. After we decided that _all_ satisfiers _must_ list the dependency "owner" in their requiredby, this is a broken db. We have a cool testdb stuff (created by you) to help user fix these (an automatized db fix wouldn't be so hard to implement).
I only submitted a pactest because Aaron asked for it, for testing the buggy list implentation : http://www.archlinux.org/pipermail/pacman-dev/2007-November/009925.html So I didn't want it to be submitted. I didn't say it clearly though. Dan submitted it because he found it was useful, and I couldn't find any good arguments against it. Now you bring me one :) I didn't even pay attention to the fact that the db was broken in this pactest. I really dislike this pactest anyway, it isn't interesting at all, it was only meant to show a very specific bug in the list implementation. Also, the title is misleading. I originally called it "broken list". What I meant exactly was : "broken list implementation". So I think this pactest should be removed, and eventually replaced later by other better / more interesting ones. I'm not sure pactest is the best way to test the list implementation, it's too general. If pacman really needs an automated test for its list implementation, then it should probably be a specific test.
participants (7)
-
Aaron Griffin
-
Dan McGee
-
Dan McGee
-
K. Piche
-
Nagy Gabor
-
Travis Willard
-
Xavier