summaryrefslogtreecommitdiffstats
path: root/bin/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-08-12 15:13:28 +0000
committerZac Medico <zmedico@gentoo.org>2007-08-12 15:13:28 +0000
commitfc90fd2eb2a0a68b6fb2ac4acd5bb4e66d986609 (patch)
treec9ba6fec57c5b9c669d208e3fe68a781e33ab4fc /bin/emerge
parent0361d498fa8aa7e9366c1abd601a8fd4464b1e5b (diff)
downloadportage-fc90fd2eb2a0a68b6fb2ac4acd5bb4e66d986609.tar.gz
portage-fc90fd2eb2a0a68b6fb2ac4acd5bb4e66d986609.tar.bz2
portage-fc90fd2eb2a0a68b6fb2ac4acd5bb4e66d986609.zip
For bug #33585, leave the old info dir file in place if there is nothing to generate. (trunk r7593)
svn path=/main/branches/2.1.2/; revision=7594
Diffstat (limited to 'bin/emerge')
-rwxr-xr-xbin/emerge44
1 files changed, 35 insertions, 9 deletions
diff --git a/bin/emerge b/bin/emerge
index 3272172ca..805e86e0e 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -4283,28 +4283,43 @@ def chk_updated_info_files(root, infodirs, prev_mtimes, retval):
else:
portage.writemsg_stdout(" "+green("*")+" Regenerating GNU info directory index...\n")
+ dir_extensions = ("", ".gz", ".bz2")
icount=0
badcount=0
for inforoot in regen_infodirs:
if inforoot=='':
continue
- for filename in ("dir", "dir.gz", "dir.bz2"):
- file_path = os.path.join(inforoot, filename)
- try:
- os.rename(file_path, file_path + ".old")
- except OSError, e:
- if e.errno != errno.ENOENT:
- raise
- del e
if not os.path.isdir(inforoot):
continue
errmsg = ""
file_list = os.listdir(inforoot)
file_list.sort()
+ dir_file = os.path.join(inforoot, "dir")
+ moved_old_dir = False
+ processed_count = 0
for x in file_list:
- if (x[0] == ".") or (x in ["dir","dir.old"]) or (os.path.isdir(inforoot+"/"+x)):
+ if x.startswith(".") or \
+ os.path.isdir(os.path.join(inforoot, x)):
continue
+ if x.startswith("dir"):
+ skip = False
+ for ext in dir_extensions:
+ if x == "dir" + ext:
+ skip = True
+ break
+ if skip:
+ continue
+ if processed_count == 0:
+ for ext in dir_extensions:
+ try:
+ os.rename(dir_file + ext, dir_file + ext + ".old")
+ moved_old_dir = True
+ except EnvironmentError, e:
+ if e.errno != errno.ENOENT:
+ raise
+ del e
+ processed_count += 1
myso=commands.getstatusoutput("LANG=C LANGUAGE=C /usr/bin/install-info --dir-file="+inforoot+"/dir "+inforoot+"/"+x)[1]
existsstr="already exists, for file `"
if myso!="":
@@ -4321,6 +4336,17 @@ def chk_updated_info_files(root, infodirs, prev_mtimes, retval):
errmsg += myso + "\n"
icount=icount+1
+ if moved_old_dir and not os.path.exists(dir_file):
+ # We didn't generate a new dir file, so put the old file
+ # back where it was originally found.
+ for ext in dir_extensions:
+ try:
+ os.rename(dir_file + ext + ".old", dir_file + ext)
+ except EnvironmentError, e:
+ if e.errno != errno.ENOENT:
+ raise
+ del e
+
#update mtime so we can potentially avoid regenerating.
prev_mtimes[inforoot] = long(os.stat(inforoot).st_mtime)