From dccd37dcf766a8ddbb5d9a839305502a1fb3e6a4 Mon Sep 17 00:00:00 2001 From: Ulrich Mueller Date: Fri, 3 Sep 2010 19:33:41 +0200 Subject: [PATCH] Don't regenerate GNU Info if the dir contains a .keepinfodir file, bug 257260. --- bin/ebuild-helpers/prepinfo | 3 +++ pym/_emerge/main.py | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/bin/ebuild-helpers/prepinfo b/bin/ebuild-helpers/prepinfo index fa37e5e..cbbba3e 100755 --- a/bin/ebuild-helpers/prepinfo +++ b/bin/ebuild-helpers/prepinfo @@ -24,6 +24,9 @@ if [[ ! -d ${D}${infodir} ]] ; then fi find "${D}${infodir}" -type d -print0 | while read -d $'\0' x ; do + for f in "${x}"/.keepinfodir*; do + [[ -e ${f} ]] && continue 2 + done rm -f "${x}"/dir{,.info}{,.gz,.bz2} done diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py index 4550726..080d593 100644 --- a/pym/_emerge/main.py +++ b/pym/_emerge/main.py @@ -107,11 +107,13 @@ def chk_updated_info_files(root, infodirs, prev_mtimes, retval): if z=='': continue inforoot=normpath(root+z) - if os.path.isdir(inforoot): - infomtime = os.stat(inforoot)[stat.ST_MTIME] - if inforoot not in prev_mtimes or \ - prev_mtimes[inforoot] != infomtime: - regen_infodirs.append(inforoot) + if os.path.isdir(inforoot) and \ + not [x for x in os.listdir(inforoot) \ + if x.startswith('.keepinfodir')]: + infomtime = os.stat(inforoot)[stat.ST_MTIME] + if inforoot not in prev_mtimes or \ + prev_mtimes[inforoot] != infomtime: + regen_infodirs.append(inforoot) if not regen_infodirs: portage.writemsg_stdout("\n") -- 1.7.2.2