From bf46e04614b3740eea4a5e0d44767f57e1cffa4d Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Mon, 10 Jan 2011 13:40:31 -0600 Subject: Remove epoch as an independent field Instead, go the same route we have always taken with version-release in libalpm and treat it all as one piece of information. Makepkg is the only script that knows about epoch as a distinct value; from there on out we will parse out the components as necessary. This makes the code a lot simpler as far as epoch handling goes. The downside here is that we are tossing some compatibility to the wind; packages using force will have to be rebuilt with an incremented epoch to keep their special status. Signed-off-by: Dan McGee --- contrib/bacman.in | 6 ------ doc/PKGBUILD.5.txt | 2 +- lib/libalpm/alpm.h | 1 - lib/libalpm/be_local.c | 16 ---------------- lib/libalpm/be_package.c | 7 ------- lib/libalpm/be_sync.c | 9 --------- lib/libalpm/package.c | 20 -------------------- lib/libalpm/package.h | 2 -- scripts/makepkg.sh.in | 7 +++++-- scripts/repo-add.sh.in | 8 +------- test/pacman/pmdb.py | 14 -------------- test/pacman/pmpkg.py | 6 ------ test/pacman/pmrule.py | 3 --- test/pacman/tests/epoch001.py | 6 ++---- test/pacman/tests/epoch002.py | 4 +--- test/pacman/tests/epoch003.py | 9 +++------ test/pacman/tests/epoch004.py | 9 +++------ test/pacman/tests/epoch010.py | 6 ++---- test/pacman/tests/epoch011.py | 9 +++------ test/pacman/tests/epoch012.py | 6 ++---- test/pacman/tests/sync136.py | 5 ++--- test/pacman/tests/sync137.py | 3 +-- 22 files changed, 26 insertions(+), 132 deletions(-) diff --git a/contrib/bacman.in b/contrib/bacman.in index b4e3b4ba..bd545180 100755 --- a/contrib/bacman.in +++ b/contrib/bacman.in @@ -220,12 +220,6 @@ while read i; do %REPLACES%) echo "replaces = $i" >> .PKGINFO ;; - %EPOCH%) - echo "epoch = $i" >> .PKGINFO - ;; - %FORCE%) - echo "force = true" >> .PKGINFO - ;; # files %BACKUP%) diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt index e6c4a1fb..c0fa5948 100644 --- a/doc/PKGBUILD.5.txt +++ b/doc/PKGBUILD.5.txt @@ -45,7 +45,7 @@ similar to `$_basekernver`. *pkgver*:: The version of the software as released from the author (e.g. '2.7.1'). - The variable is not allowed to contain hyphens. + The variable is not allowed to contain colons or hyphens. *pkgrel*:: This is the release number specific to the Arch Linux release. This diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 7c4cd48b..a540bc4f 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -238,7 +238,6 @@ size_t alpm_pkg_changelog_read(void *ptr, size_t size, /*int alpm_pkg_changelog_feof(const pmpkg_t *pkg, void *fp);*/ int alpm_pkg_changelog_close(const pmpkg_t *pkg, void *fp); int alpm_pkg_has_scriptlet(pmpkg_t *pkg); -int alpm_pkg_get_epoch(pmpkg_t *pkg); off_t alpm_pkg_download_size(pmpkg_t *newpkg); alpm_list_t *alpm_pkg_unused_deltas(pmpkg_t *pkg); diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index 5471fee4..ea59ceca 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -156,12 +156,6 @@ static alpm_list_t *_cache_get_groups(pmpkg_t *pkg) return pkg->groups; } -static int _cache_get_epoch(pmpkg_t *pkg) -{ - LAZY_LOAD(INFRQ_DESC, -1); - return pkg->epoch; -} - static int _cache_has_scriptlet(pmpkg_t *pkg) { ALPM_LOG_FUNC; @@ -318,7 +312,6 @@ static struct pkg_operations local_pkg_ops = { .get_size = _cache_get_size, .get_isize = _cache_get_isize, .get_reason = _cache_get_reason, - .get_epoch = _cache_get_epoch, .has_scriptlet = _cache_has_scriptlet, .get_licenses = _cache_get_licenses, .get_groups = _cache_get_groups, @@ -606,11 +599,6 @@ int _alpm_local_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) STRDUP(linedup, _alpm_strtrim(line), goto error); info->replaces = alpm_list_add(info->replaces, linedup); } - } else if(strcmp(line, "%EPOCH%") == 0) { - if(fgets(line, sizeof(line), fp) == NULL) { - goto error; - } - info->epoch = atoi(_alpm_strtrim(line)); } else if(strcmp(line, "%DEPENDS%") == 0) { while(fgets(line, sizeof(line), fp) && strlen(_alpm_strtrim(line))) { pmdepend_t *dep = _alpm_splitdep(_alpm_strtrim(line)); @@ -767,10 +755,6 @@ int _alpm_local_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) } fprintf(fp, "\n"); } - if(info->epoch) { - fprintf(fp, "%%EPOCH%%\n" - "%d\n\n", info->epoch); - } if(info->url) { fprintf(fp, "%%URL%%\n" "%s\n\n", info->url); diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c index b69161b4..c272bd47 100644 --- a/lib/libalpm/be_package.c +++ b/lib/libalpm/be_package.c @@ -184,13 +184,6 @@ 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) { newpkg->groups = alpm_list_add(newpkg->groups, strdup(ptr)); } else if(strcmp(key, "url") == 0) { diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c index 1e4b2fde..4676e8a6 100644 --- a/lib/libalpm/be_sync.c +++ b/lib/libalpm/be_sync.c @@ -340,15 +340,6 @@ static int sync_db_read(pmdb_t *db, struct archive *archive, READ_AND_STORE(pkg->md5sum); } else if(strcmp(line, "%REPLACES%") == 0) { READ_AND_STORE_ALL(pkg->replaces); - } else if(strcmp(line, "%EPOCH%") == 0) { - READ_NEXT(line); - pkg->epoch = atoi(line); - } else if(strcmp(line, "%FORCE%") == 0) { - /* For backward compatibility, treat force as a non-zero epoch - * but only if we didn't already have a known epoch value. */ - if(!pkg->epoch) { - pkg->epoch = 1; - } } else if(strcmp(line, "%DEPENDS%") == 0) { /* Different than the rest because of the _alpm_splitdep call. */ while(1) { diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 241c41c0..d4b3b9c0 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -110,7 +110,6 @@ static const char *_pkg_get_arch(pmpkg_t *pkg) { return pkg->arch; } static off_t _pkg_get_size(pmpkg_t *pkg) { return pkg->size; } static off_t _pkg_get_isize(pmpkg_t *pkg) { return pkg->isize; } static pmpkgreason_t _pkg_get_reason(pmpkg_t *pkg) { return pkg->reason; } -static int _pkg_get_epoch(pmpkg_t *pkg) { return pkg->epoch; } static int _pkg_has_scriptlet(pmpkg_t *pkg) { return pkg->scriptlet; } static alpm_list_t *_pkg_get_licenses(pmpkg_t *pkg) { return pkg->licenses; } @@ -141,7 +140,6 @@ struct pkg_operations default_pkg_ops = { .get_size = _pkg_get_size, .get_isize = _pkg_get_isize, .get_reason = _pkg_get_reason, - .get_epoch = _pkg_get_epoch, .has_scriptlet = _pkg_has_scriptlet, .get_licenses = _pkg_get_licenses, .get_groups = _pkg_get_groups, @@ -223,11 +221,6 @@ pmpkgreason_t SYMEXPORT alpm_pkg_get_reason(pmpkg_t *pkg) return pkg->ops->get_reason(pkg); } -int SYMEXPORT alpm_pkg_get_epoch(pmpkg_t *pkg) -{ - return pkg->ops->get_epoch(pkg); -} - alpm_list_t SYMEXPORT *alpm_pkg_get_licenses(pmpkg_t *pkg) { return pkg->ops->get_licenses(pkg); @@ -427,7 +420,6 @@ pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg) newpkg->size = pkg->size; newpkg->isize = pkg->isize; newpkg->scriptlet = pkg->scriptlet; - newpkg->epoch = pkg->epoch; newpkg->reason = pkg->reason; newpkg->licenses = alpm_list_strdup(pkg->licenses); @@ -518,20 +510,8 @@ void _alpm_pkg_free_trans(pmpkg_t *pkg) /* Is spkg an upgrade for localpkg? */ int _alpm_pkg_compare_versions(pmpkg_t *spkg, pmpkg_t *localpkg) { - int spkg_epoch, localpkg_epoch; - ALPM_LOG_FUNC; - spkg_epoch = alpm_pkg_get_epoch(spkg); - localpkg_epoch = alpm_pkg_get_epoch(localpkg); - - if(spkg_epoch > localpkg_epoch) { - return(1); - } else if(spkg_epoch < localpkg_epoch) { - return(-1); - } - - /* equal epoch values, move on to version comparison */ return alpm_pkg_vercmp(alpm_pkg_get_version(spkg), alpm_pkg_get_version(localpkg)); } diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h index 52582d9b..b161d5f1 100644 --- a/lib/libalpm/package.h +++ b/lib/libalpm/package.h @@ -57,7 +57,6 @@ struct pkg_operations { off_t (*get_size) (pmpkg_t *); off_t (*get_isize) (pmpkg_t *); pmpkgreason_t (*get_reason) (pmpkg_t *); - int (*get_epoch) (pmpkg_t *); int (*has_scriptlet) (pmpkg_t *); alpm_list_t *(*get_licenses) (pmpkg_t *); @@ -107,7 +106,6 @@ struct __pmpkg_t { off_t download_size; int scriptlet; - int epoch; pmpkgreason_t reason; pmpkgfrom_t origin; diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index a2d9c837..c01ae0cb 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -935,9 +935,12 @@ write_pkginfo() { echo "# $(LC_ALL=C date -u)" echo "pkgname = $1" (( SPLITPKG )) && echo pkgbase = $pkgbase - echo "pkgver = $pkgver-$pkgrel" + if [[ $epoch ]]; then + echo "pkgver = $epoch:$pkgver-$pkgrel" + else + echo "pkgver = $pkgver-$pkgrel" + fi echo "pkgdesc = $pkgdesc" - [[ $epoch ]] && echo "epoch = $epoch" echo "url = $url" echo "builddate = $builddate" echo "packager = $packager" diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index 87c7834f..2929c967 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -190,7 +190,7 @@ db_write_entry() { # blank out all variables local pkgfile="$1" - local pkgname pkgver pkgdesc epoch csize size md5sum url arch builddate packager force \ + local pkgname pkgver pkgdesc csize size md5sum url arch builddate packager \ _groups _licenses _replaces _depends _conflicts _provides _optdepends local OLDIFS="$IFS" @@ -274,12 +274,6 @@ db_write_entry() [[ -n $builddate ]] && echo -e "%BUILDDATE%\n$builddate\n" >>desc [[ -n $packager ]] && echo -e "%PACKAGER%\n$packager\n" >>desc write_list_entry "REPLACES" "$_replaces" "desc" - # remain backward-compatible for now; put a force entry in the database - if [[ -n $epoch ]]; then - echo -e "%EPOCH%\n#epoch\n" >>desc - echo -e "%FORCE%\n" >>desc - fi - [[ -n $force ]] && echo -e "%FORCE%\n" >>desc # create depends entry msg2 "$(gettext "Creating 'depends' db entry...")" diff --git a/test/pacman/pmdb.py b/test/pacman/pmdb.py index b4d0e2d5..6329f23d 100755 --- a/test/pacman/pmdb.py +++ b/test/pacman/pmdb.py @@ -156,11 +156,6 @@ class pmdb: pkg.md5sum = fd.readline().strip("\n") elif line == "%REPLACES%": pkg.replaces = _getsection(fd) - elif line == "%EPOCH%": - pkg.epoch = int(fd.readline().strip("\n")) - elif line == "%FORCE%": - fd.readline() - pkg.force = True elif line == "%DEPENDS%": pkg.depends = _getsection(fd) elif line == "%OPTDEPENDS%": @@ -250,19 +245,10 @@ class pmdb: data.append(_mksection("SIZE", pkg.size)) if pkg.reason: data.append(_mksection("REASON", pkg.reason)) - if pkg.epoch: - data.append(_mksection("EPOCH", pkg.epoch)) else: data.append(_mksection("FILENAME", pkg.filename())) if pkg.replaces: data.append(_mksection("REPLACES", pkg.replaces)) - if pkg.epoch: - data.append(_mksection("EPOCH", pkg.epoch)) - # for backward compatibility - if not pkg.force: - data.append(_mksection("FORCE", "")) - if pkg.force: - data.append(_mksection("FORCE", "")) if pkg.csize: data.append(_mksection("CSIZE", pkg.csize)) if pkg.md5sum: diff --git a/test/pacman/pmpkg.py b/test/pacman/pmpkg.py index 3aabea49..988f4c28 100755 --- a/test/pacman/pmpkg.py +++ b/test/pacman/pmpkg.py @@ -49,8 +49,6 @@ class pmpkg: self.reason = 0 self.md5sum = "" # sync only self.replaces = [] - self.force = False - self.epoch = 0 self.depends = [] self.optdepends = [] self.conflicts = [] @@ -132,10 +130,6 @@ class pmpkg: data.append("builddate = %s" % self.builddate) data.append("packager = %s" % self.packager) data.append("size = %s" % self.size) - if self.force: - data.append("force = true") - if self.epoch: - data.append("epoch = %d" % self.epoch) if self.arch: data.append("arch = %s" % self.arch) for i in self.license: diff --git a/test/pacman/pmrule.py b/test/pacman/pmrule.py index bea8e4a4..89ae3f49 100755 --- a/test/pacman/pmrule.py +++ b/test/pacman/pmrule.py @@ -78,9 +78,6 @@ class pmrule: elif case == "VERSION": if value != newpkg.version: success = 0 - elif case == "EPOCH": - if int(value) != newpkg.epoch: - success = 0 elif case == "DESC": if value != newpkg.desc: success = 0 diff --git a/test/pacman/tests/epoch001.py b/test/pacman/tests/epoch001.py index e1d31142..ac6c41a6 100644 --- a/test/pacman/tests/epoch001.py +++ b/test/pacman/tests/epoch001.py @@ -1,7 +1,6 @@ self.description = "Sysupgrade with a sync package having higher epoch" -sp = pmpkg("dummy", "1.0-1") -sp.epoch = 1 +sp = pmpkg("dummy", "1:1.0-1") self.addpkg2db("sync", sp) lp = pmpkg("dummy", "1.1-1") @@ -10,5 +9,4 @@ self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") -self.addrule("PKG_VERSION=dummy|1.0-1") -self.addrule("PKG_EPOCH=dummy|1") +self.addrule("PKG_VERSION=dummy|1:1.0-1") diff --git a/test/pacman/tests/epoch002.py b/test/pacman/tests/epoch002.py index 9e8a0482..8ca4afc6 100644 --- a/test/pacman/tests/epoch002.py +++ b/test/pacman/tests/epoch002.py @@ -3,12 +3,10 @@ self.description = "Sysupgrade with an epoch and ignore on same package" lp = pmpkg("dummy", "1.0-1") self.addpkg2db("local", lp) -sp = pmpkg("dummy", "1.0-2") -sp.epoch = 1 +sp = pmpkg("dummy", "1:1.0-2") self.addpkg2db("sync", sp) self.args = "-Su --ignore %s" % lp.name self.addrule("PACMAN_RETCODE=0") self.addrule("PKG_VERSION=dummy|1.0-1") -self.addrule("PKG_EPOCH=dummy|0") diff --git a/test/pacman/tests/epoch003.py b/test/pacman/tests/epoch003.py index 17ca9bfb..ac395e30 100644 --- a/test/pacman/tests/epoch003.py +++ b/test/pacman/tests/epoch003.py @@ -1,15 +1,12 @@ self.description = "Sysupgrade with an epoch package overriding a force package" -sp = pmpkg("dummy", "1.4-1") -sp.epoch = 2 +sp = pmpkg("dummy", "2:1.4-1") self.addpkg2db("sync", sp) -lp = pmpkg("dummy", "2.0-1") -lp.force = True +lp = pmpkg("dummy", "1:2.0-1") self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") -self.addrule("PKG_VERSION=dummy|1.4-1") -self.addrule("PKG_EPOCH=dummy|2") +self.addrule("PKG_VERSION=dummy|2:1.4-1") diff --git a/test/pacman/tests/epoch004.py b/test/pacman/tests/epoch004.py index ad3e9953..74b00c2b 100644 --- a/test/pacman/tests/epoch004.py +++ b/test/pacman/tests/epoch004.py @@ -1,19 +1,16 @@ self.description = "Sysupgrade with same version, different epochs" -sp = pmpkg("dummy", "2.0-1") +sp = pmpkg("dummy", "2:2.0-1") sp.files = ["bin/dummynew"] -sp.epoch = 2 self.addpkg2db("sync", sp) -lp = pmpkg("dummy", "2.0-1") +lp = pmpkg("dummy", "1:2.0-1") lp.files = ["bin/dummyold"] -lp.force = True self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") -self.addrule("PKG_VERSION=dummy|2.0-1") +self.addrule("PKG_VERSION=dummy|2:2.0-1") self.addrule("FILE_EXIST=bin/dummynew") self.addrule("!FILE_EXIST=bin/dummyold") -self.addrule("PKG_EPOCH=dummy|2") diff --git a/test/pacman/tests/epoch010.py b/test/pacman/tests/epoch010.py index 3277597b..03bba273 100644 --- a/test/pacman/tests/epoch010.py +++ b/test/pacman/tests/epoch010.py @@ -1,7 +1,6 @@ self.description = "usbutils case study: force in new package" -sp = pmpkg("usbutils", "001-1") -sp.force = True +sp = pmpkg("usbutils", "1:001-1") self.addpkg2db("sync", sp) lp = pmpkg("usbutils", "0.91-4") @@ -10,5 +9,4 @@ self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") -self.addrule("PKG_VERSION=usbutils|001-1") -self.addrule("PKG_EPOCH=usbutils|1") +self.addrule("PKG_VERSION=usbutils|1:001-1") diff --git a/test/pacman/tests/epoch011.py b/test/pacman/tests/epoch011.py index 2c064aa1..bc5ee619 100644 --- a/test/pacman/tests/epoch011.py +++ b/test/pacman/tests/epoch011.py @@ -1,15 +1,12 @@ self.description = "usbutils case study: force stays, epoch now in local db" -sp = pmpkg("usbutils", "002-1") -sp.force = True +sp = pmpkg("usbutils", "1:002-1") self.addpkg2db("sync", sp) -lp = pmpkg("usbutils", "001-1") -lp.epoch = 1 +lp = pmpkg("usbutils", "1:001-1") self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") -self.addrule("PKG_VERSION=usbutils|002-1") -self.addrule("PKG_EPOCH=usbutils|1") +self.addrule("PKG_VERSION=usbutils|1:002-1") diff --git a/test/pacman/tests/epoch012.py b/test/pacman/tests/epoch012.py index e0c7314d..2a7a7ac2 100644 --- a/test/pacman/tests/epoch012.py +++ b/test/pacman/tests/epoch012.py @@ -3,13 +3,11 @@ self.description = "usbutils case study: maintainer screws up and removes force" sp = pmpkg("usbutils", "003-1") self.addpkg2db("sync", sp) -lp = pmpkg("usbutils", "002-1") -lp.epoch = 1 +lp = pmpkg("usbutils", "1:002-1") self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") # remember, this is how we have to handle this- 003 will not be installed -self.addrule("PKG_VERSION=usbutils|002-1") -self.addrule("PKG_EPOCH=usbutils|1") +self.addrule("PKG_VERSION=usbutils|1:002-1") diff --git a/test/pacman/tests/sync136.py b/test/pacman/tests/sync136.py index b3a6baf4..b31aae2c 100644 --- a/test/pacman/tests/sync136.py +++ b/test/pacman/tests/sync136.py @@ -1,7 +1,6 @@ self.description = "Sysupgrade with a sync package forcing a downgrade" -sp = pmpkg("dummy", "1.0-1") -sp.force = True +sp = pmpkg("dummy", "1:1.0-1") self.addpkg2db("sync", sp) @@ -12,4 +11,4 @@ self.addpkg2db("local", lp) self.args = "-Su" self.addrule("PACMAN_RETCODE=0") -self.addrule("PKG_VERSION=dummy|1.0-1") +self.addrule("PKG_VERSION=dummy|1:1.0-1") diff --git a/test/pacman/tests/sync137.py b/test/pacman/tests/sync137.py index 000855c5..d76ac49d 100644 --- a/test/pacman/tests/sync137.py +++ b/test/pacman/tests/sync137.py @@ -4,8 +4,7 @@ lp = pmpkg("dummy", "1.0-1") self.addpkg2db("local", lp) -sp = pmpkg("dummy", "1.0-2") -sp.force = True +sp = pmpkg("dummy", "1:1.0-2") self.addpkg2db("sync", sp) self.args = "-Su --ignore %s" % lp.name -- cgit v1.2.3-24-g4f1b