summaryrefslogtreecommitdiffstats
path: root/bin/repoman
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-02-22 13:21:17 +0000
committerZac Medico <zmedico@gentoo.org>2007-02-22 13:21:17 +0000
commitde9a3214a6aa46b86c62772a25adaee27b347a43 (patch)
tree4faf27c7c04b37e77d2a2cfa78fce4661f06befa /bin/repoman
parentf89c2bc66307995339606d20c89418144b16122d (diff)
downloadportage-de9a3214a6aa46b86c62772a25adaee27b347a43.tar.gz
portage-de9a3214a6aa46b86c62772a25adaee27b347a43.tar.bz2
portage-de9a3214a6aa46b86c62772a25adaee27b347a43.zip
Fix broken file list handling for FEATUES=sign when only the Manifest has changed. Add some sanity checks for file list handling when repolevel < 3. (trunk r6034:6036)
svn path=/main/branches/2.1.2/; revision=6037
Diffstat (limited to 'bin/repoman')
-rwxr-xr-xbin/repoman18
1 files changed, 18 insertions, 0 deletions
diff --git a/bin/repoman b/bin/repoman
index 67eab93a5..ca38d4f7c 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -1550,6 +1550,7 @@ else:
# Manifests need to be regenerated after all other commits, so don't commit
# them now even if they have changed.
+ mymanifests = [f for f in mychanged if "Manifest" == os.path.basename(f)]
mychanged = [f for f in mychanged if "Manifest" != os.path.basename(f)]
myupdates=mychanged+mynew
myheaders=[]
@@ -1669,24 +1670,32 @@ else:
elif repolevel==2: # In a category dir
for x in myfiles:
xs=x.split("/")
+ if len(xs) < 4-repolevel:
+ continue
if xs[0]==".":
xs=xs[1:]
if xs[0] in mydone:
continue
mydone.append(xs[0])
repoman_settings["O"] = os.path.join(startdir, xs[0])
+ if not os.path.isdir(repoman_settings["O"]):
+ continue
portage.digestgen([], repoman_settings, manifestonly=1,
myportdb=portdb)
elif repolevel==1: # repo-cvsroot
print green("RepoMan sez:"), "\"You're rather crazy... doing the entire repository.\"\n"
for x in myfiles:
xs=x.split("/")
+ if len(xs) < 4-repolevel:
+ continue
if xs[0]==".":
xs=xs[1:]
if "/".join(xs[:2]) in mydone:
continue
mydone.append("/".join(xs[:2]))
repoman_settings["O"] = os.path.join(startdir, xs[0], xs[1])
+ if not os.path.isdir(repoman_settings["O"]):
+ continue
portage.digestgen([], repoman_settings, manifestonly=1,
myportdb=portdb)
else:
@@ -1716,6 +1725,7 @@ else:
signed = False
if "sign" in repoman_settings.features:
signed = True
+ myfiles = myupdates + myremoved + mymanifests
try:
if repolevel==3: # In a package dir
repoman_settings["O"] = "."
@@ -1724,24 +1734,32 @@ else:
mydone=[]
for x in myfiles:
xs=x.split("/")
+ if len(xs) < 4-repolevel:
+ continue
if xs[0]==".":
xs=xs[1:]
if xs[0] in mydone:
continue
mydone.append(xs[0])
repoman_settings["O"] = os.path.join(".", xs[0])
+ if not os.path.isdir(repoman_settings["O"]):
+ continue
gpgsign(os.path.join(repoman_settings["O"], "Manifest"))
elif repolevel==1: # repo-cvsroot
print green("RepoMan sez:"), "\"You're rather crazy... doing the entire repository.\"\n"
mydone=[]
for x in myfiles:
xs=x.split("/")
+ if len(xs) < 4-repolevel:
+ continue
if xs[0]==".":
xs=xs[1:]
if "/".join(xs[:2]) in mydone:
continue
mydone.append("/".join(xs[:2]))
repoman_settings["O"] = os.path.join(".", xs[0], xs[1])
+ if not os.path.isdir(repoman_settings["O"]):
+ continue
gpgsign(os.path.join(repoman_settings["O"], "Manifest"))
except portage_exception.PortageException, e:
portage.writemsg("!!! %s\n" % str(e))