[pacman-dev] [PATCH 4/7] Remove epoch as an independent field
Dan McGee
dan at archlinux.org
Thu Jan 20 19:33:51 EST 2011
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 <dan at archlinux.org>
---
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 b4e3b4b..bd54518 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 e6c4a1f..c0fa594 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 7c4cd48..a540bc4 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 5471fee..ea59cec 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 b69161b..c272bd4 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 b11499c..d38a7da 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -333,15 +333,6 @@ static int sync_db_read(pmdb_t *db, struct archive *archive, struct archive_entr
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 241c41c..d4b3b9c 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 52582d9..b161d5f 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 a2d9c83..c01ae0c 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 87c7834..2929c96 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 b4d0e2d..6329f23 100755
--- a/test/pacman/pmdb.py
+++ b/test/pacman/pmdb.py
@@ -156,11 +156,6 @@ def db_read(self, name):
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 @@ def db_write(self, pkg):
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 3aabea4..988f4c2 100755
--- a/test/pacman/pmpkg.py
+++ b/test/pacman/pmpkg.py
@@ -49,8 +49,6 @@ def __init__(self, name, version = "1.0-1"):
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 @@ def makepkg(self, path):
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 bea8e4a..89ae3f4 100755
--- a/test/pacman/pmrule.py
+++ b/test/pacman/pmrule.py
@@ -78,9 +78,6 @@ def check(self, root, retcode, localdb, files):
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 e1d3114..ac6c41a 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.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 9e8a048..8ca4afc 100644
--- a/test/pacman/tests/epoch002.py
+++ b/test/pacman/tests/epoch002.py
@@ -3,12 +3,10 @@
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 17ca9bf..ac395e3 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 ad3e995..74b00c2 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 3277597..03bba27 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.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 2c064aa..bc5ee61 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 e0c7314..2a7a7ac 100644
--- a/test/pacman/tests/epoch012.py
+++ b/test/pacman/tests/epoch012.py
@@ -3,13 +3,11 @@
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 b3a6baf..b31aae2 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.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 000855c..d76ac49 100644
--- a/test/pacman/tests/sync137.py
+++ b/test/pacman/tests/sync137.py
@@ -4,8 +4,7 @@
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
--
1.7.3.5
More information about the pacman-dev
mailing list