* fix: invalidate build number if reinstalled package
is coming from another distribution (and just what is a distribution here?) pending fix: we need a global id for repositories (not user specified) * fix: invalidate everything. goddamn it. (kidding) * fix: itembyrepodb: has_key when repo given, needs guard statement, and fix typo in method name...
This commit is contained in:
@@ -168,12 +168,18 @@ class Install(AtomicOperation):
|
||||
self.reinstall = False
|
||||
self.upgrade = False
|
||||
if ctx.installdb.is_installed(pkg.name): # is this a reinstallation?
|
||||
|
||||
#FIXME: consider REPOSITORY instead of DISTRIBUTION -- exa
|
||||
#ipackage = ctx.packagedb.get_package(pkg.name, pisi.itembyrepodb.installed)
|
||||
ipkg = ctx.installdb.get_info(pkg.name)
|
||||
repomismatch = ipkg.distribution != pkg.distribution
|
||||
|
||||
(iversion, irelease, ibuild) = ctx.installdb.get_version(pkg.name)
|
||||
|
||||
# determine if same version
|
||||
self.same_ver = False
|
||||
ignore_build = ctx.config.options and ctx.config.options.ignore_build_no
|
||||
if (not ibuild) or (not pkg.build) or ignore_build:
|
||||
if repomismatch or (not ibuild) or (not pkg.build) or ignore_build:
|
||||
# we don't look at builds to compare two package versions
|
||||
if pkg.release == irelease:
|
||||
self.same_ver = True
|
||||
@@ -296,9 +302,8 @@ class Install(AtomicOperation):
|
||||
self.metadata.package.release,
|
||||
self.metadata.package.build,
|
||||
self.metadata.package.distribution,
|
||||
self.config_later,
|
||||
False,
|
||||
txn)
|
||||
config_later = self.config_later,
|
||||
txn = txn)
|
||||
|
||||
# filesdb
|
||||
ctx.filesdb.add_files(self.metadata.package.name, self.files, txn=txn)
|
||||
@@ -427,7 +432,7 @@ class Remove(AtomicOperation):
|
||||
def remove_db(self, txn):
|
||||
ctx.installdb.remove(self.package_name, txn)
|
||||
ctx.filesdb.remove_files(self.files, txn)
|
||||
ctx.packagedb.remove_tracking_package(self.package_name, txn)
|
||||
pisi.packagedb.remove_tracking_package(self.package_name, txn)
|
||||
|
||||
def remove_single(package_name):
|
||||
Remove(package_name).run()
|
||||
@@ -476,9 +481,8 @@ def virtual_install(metadata, files, txn):
|
||||
metadata.package.release,
|
||||
metadata.package.build,
|
||||
metadata.package.distribution,
|
||||
False,
|
||||
True,
|
||||
txn)
|
||||
rebuild=True,
|
||||
txn=txn)
|
||||
|
||||
# filesdb
|
||||
if files:
|
||||
|
||||
@@ -162,6 +162,7 @@ class InstallDB:
|
||||
# FIXME: it might be more appropriate to pass date
|
||||
# as an argument, or installation data afterwards
|
||||
# to do this -- exa
|
||||
# dailywtf. this does not look good -- exa
|
||||
if not rebuild:
|
||||
import time
|
||||
ctime = time.localtime()
|
||||
|
||||
@@ -89,10 +89,11 @@ class ItemByRepoDB(object):
|
||||
|
||||
def has_key(self, name, repo = None, txn = None):
|
||||
name = str(name)
|
||||
haskey = self.d.has_key(name, txn)
|
||||
if not repo:
|
||||
return self.d.has_key(name, txn)
|
||||
return haskey
|
||||
else:
|
||||
return self.d.has_key(name, txn).has_key(repo)
|
||||
return haskey and self.d.get(name, txn).has_key(repo)
|
||||
|
||||
def get_item_repo(self, name, repo = None, txn = None):
|
||||
name = str(name)
|
||||
|
||||
+4
-1
@@ -19,7 +19,9 @@
|
||||
# we basically store everything in PackageInfo class
|
||||
# yes, we are cheap
|
||||
|
||||
import os, fcntl
|
||||
import os
|
||||
import fcntl
|
||||
import types
|
||||
|
||||
import gettext
|
||||
__trans = gettext.translation('pisi', fallback=True)
|
||||
@@ -30,6 +32,7 @@ import pisi.util as util
|
||||
import pisi.context as ctx
|
||||
import pisi.lockeddbshelve as shelve
|
||||
from pisi.itembyrepodb import ItemByRepoDB
|
||||
import pisi.itembyrepodb as itembyrepodb
|
||||
|
||||
class Error(pisi.Error):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user