On Thu, Oct 14, 2010 at 8:48 PM, Xavier Chantry <[email protected]> wrote: > On Tue, Oct 12, 2010 at 12:51 AM, Dan McGee <[email protected]> wrote: >> We weren't reading this in from our packages, thus causing us not to write >> it out to our local database. Adding this now will help ease the upgrade >> path for epoch later and not require reinstallation of all force packages. >> >> Signed-off-by: Dan McGee <[email protected]> >> --- >> >> For maint, helps to address the problem Allan pointed out regarding upgrading >> existing packages that used the force flag. >> >> -Dan >> >> lib/libalpm/be_package.c | 2 ++ >> 1 files changed, 2 insertions(+), 0 deletions(-) >> >> diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c >> index 38cf357..ff266ae 100644 >> --- a/lib/libalpm/be_package.c >> +++ b/lib/libalpm/be_package.c >> @@ -75,6 +75,8 @@ static int parse_descfile(struct archive *a, pmpkg_t >> *newpkg) >> STRDUP(newpkg->version, ptr, >> RET_ERR(PM_ERR_MEMORY, -1)); >> } else if(!strcmp(key, "pkgdesc")) { >> STRDUP(newpkg->desc, ptr, >> RET_ERR(PM_ERR_MEMORY, -1)); >> + } else if(!strcmp(key, "force")) { >> + newpkg->force = 1; >> } else if(!strcmp(key, "group")) { >> newpkg->groups = >> alpm_list_add(newpkg->groups, strdup(ptr)); >> } else if(!strcmp(key, "url")) { >> -- >> 1.7.3.1 >> >> >> > > I did not see a problem with that patch, and still don't see any, but > I have some new insight after trying out git master. > > I think we need a similar patch in master, we still need to support > old package with just force. We should do that just like sync db does > (force -> epoch=1). This will ensure that epoch is always written in > local db for package with force. > > diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c > index ddcad59..254f830 100644 > --- a/lib/libalpm/be_package.c > +++ b/lib/libalpm/be_package.c > @@ -184,6 +184,11 @@ static int parse_descfile(struct archive *a, > pmpkg_t *newpkg) > STRDUP(newpkg->version, ptr, > RET_ERR(PM_ERR_MEMORY, -1)); > } else if(strcmp(key, "pkgdesc") == 0) { > STRDUP(newpkg->desc, ptr, > RET_ERR(PM_ERR_MEMORY, -1)); > + } else if(strcmp(key, "force") == 0) { > + /* For backward compatibility, like in > sync_db_read */ > + if(!newpkg->epoch) { > + newpkg->epoch = 1; > + } > } else if(strcmp(key, "epoch") == 0) { > newpkg->epoch = atoi(ptr); > } else if(strcmp(key, "group") == 0) { > > > As for the maint patch, it seems weird that we will start to write > FORCE entries to local database now we decided to kill FORCE. Wouldn't > it be better to start writing EPOCH so that we don't start to clutter > the local db now with something which is dead ? :) > > On my system I just have 17 packages to reinstall, 19MB download (but > 0MB download actually, thats what a download cache is for). This is > done automatically on the first pacman -Su, and with above patch, the > transition should be made. > So I don't think we need to start writing anything to the local > database now, do we ? > > If we still want to do that just to reduce a bit the (already small) > number of packages to reinstall, what about starting to write EPOCH in > maint ? > I believe we just need two small changes : > 1) in maint : never write FORCE in local db but write EPOCH=1 instead > 2) in master : we can drop reading FORCE from local db since it never > ever got written. (and EPOCH is already read) > > But anyway this is really a minor point, and my last proposal would > actually need the 2-lines fix that got pushed to maint. >
I just pushed this work, 3 small patches. http://code.toofishes.net/cgit/xavier/pacman.git/log/?h=epoch-maint * be_files: write EPOCH instead of FORCE http://code.toofishes.net/cgit/xavier/pacman.git/log/?h=epoch-master * be_package: read force entry and convert to epoch * be_local: drop FORCE in db_read
