mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
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 <dan@archlinux.org>
This commit is contained in:
parent
5c46ba14f7
commit
bf46e04614
@ -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%)
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -935,9 +935,12 @@ write_pkginfo() {
|
||||
echo "# $(LC_ALL=C date -u)"
|
||||
echo "pkgname = $1"
|
||||
(( SPLITPKG )) && echo pkgbase = $pkgbase
|
||||
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"
|
||||
|
@ -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...")"
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user