summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-02-07 23:44:49 +0000
committerZac Medico <zmedico@gentoo.org>2007-02-07 23:44:49 +0000
commit65306df580fc319ce3478dc802a88b189155294d (patch)
tree63e838e7d7e6841787ac1566f02abb349f7b02e9
parentFor bug #165783, handle a potential InvalidDependString exception in repoman ... (diff)
downloadportage-65306df580fc319ce3478dc802a88b189155294d.tar.gz
portage-65306df580fc319ce3478dc802a88b189155294d.tar.bz2
portage-65306df580fc319ce3478dc802a88b189155294d.zip
Synchronize required hash code in all relevant places. (trunk r5924)
svn path=/main/branches/2.1.2/; revision=5925
-rw-r--r--pym/portage.py9
-rw-r--r--pym/portage_const.py5
-rw-r--r--pym/portage_manifest.py7
3 files changed, 13 insertions, 8 deletions
diff --git a/pym/portage.py b/pym/portage.py
index a3dcd7b06..32907c32e 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -2686,9 +2686,9 @@ def digestgen(myarchives, mysettings, overwrite=1, manifestonly=0, myportdb=None
# fetches when sufficient digests already exist. To ease transition
# while Manifest 1 is being removed, only require hashes that will
# exist before and after the transition.
- required_hash_types = set(portage_const.MANIFEST1_HASH_FUNCTIONS
- ).intersection(portage_const.MANIFEST2_HASH_FUNCTIONS)
+ required_hash_types = set()
required_hash_types.add("size")
+ required_hash_types.add(portage_const.MANIFEST2_REQUIRED_HASH)
dist_hashes = mf.fhashdict.get("DIST", {})
missing_hashes = set()
for myfile in distfiles_map:
@@ -3554,8 +3554,11 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
# Skip files that we already have digests for.
mf = Manifest(mysettings["O"], mysettings["DISTDIR"])
mydigests = mf.getTypeDigests("DIST")
+ required_hash_types = set()
+ required_hash_types.add("size")
+ required_hash_types.add(portage_const.MANIFEST2_REQUIRED_HASH)
for filename, hashes in mydigests.iteritems():
- if len(hashes) == len(mf.hashes):
+ if not required_hash_types.difference(hashes):
checkme = [i for i in checkme if i != filename]
fetchme = [i for i in fetchme \
if os.path.basename(i) != filename]
diff --git a/pym/portage_const.py b/pym/portage_const.py
index 7b44a6c1a..4f0d04ecb 100644
--- a/pym/portage_const.py
+++ b/pym/portage_const.py
@@ -23,7 +23,6 @@ CUSTOM_PROFILE_PATH = USER_CONFIG_PATH+"/profile"
PORTAGE_BASE_PATH = os.path.join(os.sep, os.sep.join(__file__.split(os.sep)[:-2]))
PORTAGE_BIN_PATH = PORTAGE_BASE_PATH+"/bin"
PORTAGE_PYM_PATH = PORTAGE_BASE_PATH+"/pym"
-NEWS_LIB_PATH = "/var/lib/gentoo"
PROFILE_PATH = "/etc/make.profile"
LOCALE_DATA_PATH = PORTAGE_BASE_PATH+"/locale"
@@ -45,9 +44,6 @@ CUSTOM_MIRRORS_FILE = USER_CONFIG_PATH+"/mirrors"
CONFIG_MEMORY_FILE = PRIVATE_PATH + "/config"
COLOR_MAP_FILE = USER_CONFIG_PATH + "/color.map"
-REPO_NAME_FILE = "repo_name"
-REPO_NAME_LOC = "profiles" + "/" + REPO_NAME_FILE
-
INCREMENTALS=["USE","USE_EXPAND","USE_EXPAND_HIDDEN","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"]
EBUILD_PHASES = ["setup", "unpack", "compile", "test", "install",
"preinst", "postinst", "prerm", "postrm", "other"]
@@ -57,6 +53,7 @@ EAPI = 0
HASHING_BLOCKSIZE = 32768
MANIFEST1_HASH_FUNCTIONS = ["MD5","SHA256","RMD160"]
MANIFEST2_HASH_FUNCTIONS = ["SHA1","SHA256","RMD160"]
+MANIFEST2_REQUIRED_HASH = "SHA1"
MANIFEST2_IDENTIFIERS = ["AUX","MISC","DIST","EBUILD"]
# ===========================================================================
diff --git a/pym/portage_manifest.py b/pym/portage_manifest.py
index 1266e33df..225638e50 100644
--- a/pym/portage_manifest.py
+++ b/pym/portage_manifest.py
@@ -459,6 +459,10 @@ class Manifest(object):
# repoman passes in an empty list, which implies that all distfiles
# are required.
requiredDistfiles = distlist.copy()
+ required_hash_types = set()
+ required_hash_types.add("size")
+ required_hash_types.add(portage_const.MANIFEST2_REQUIRED_HASH)
+
for f in distlist:
fname = os.path.join(self.distdir, f)
mystat = None
@@ -471,7 +475,8 @@ class Manifest(object):
(assumeDistHashesAlways and mystat is None) or \
(assumeDistHashesAlways and mystat is not None and \
len(distfilehashes[f]) == len(self.hashes) and \
- distfilehashes[f]["size"] == mystat.st_size)):
+ distfilehashes[f]["size"] == mystat.st_size)) and \
+ not required_hash_types.difference(distfilehashes[f]):
self.fhashdict["DIST"][f] = distfilehashes[f]
else:
try: