### <http://www.gnu.org/licenses/>.
import contextlib as CTX
+import grp as GR
import os as OS
+import pwd as PW
import shlex as SL
import shutil as SH
import subprocess as SUB
import sys as SYS
import tarfile as TAR
import tempfile as TF
+import time as T
+
+from cStringIO import StringIO
from auto import PACKAGE, VERSION
import util as U
else:
tf = TAR.open(fileobj = out, mode = 'w|gz')
tf.posix = True
- for d in dirs_to_dump():
- dump_dir(d, tf, '%s-%s' % (PACKAGE, VERSION))
+ root = '%s-%s' % (PACKAGE, VERSION)
+ seen = set()
+ dirmap = []
+ festout = StringIO()
+ for dir in dirs_to_dump():
+ dir = dir.rstrip('/')
+ base = OS.path.basename(dir)
+ if base not in seen:
+ name = base
+ else:
+ for i in I.count():
+ name = '%s.%d' % (base, i)
+ if name not in seen: break
+ dirmap.append((dir + '/', name))
+ festout.write('%s = %s\n' % (name, dir))
+ fest = festout.getvalue()
+ ti = TAR.TarInfo(OS.path.join(root, 'MANIFEST'))
+ ti.size = len(fest)
+ ti.mtime = T.time()
+ ti.mode = 0664
+ ti.type = TAR.REGTYPE
+ uid = OS.getuid(); ti.uid, ti.uname = uid, PW.getpwuid(uid).pw_name
+ gid = OS.getgid(); ti.gid, ti.gname = gid, GR.getgrgid(gid).gr_name
+ tf.addfile(ti, fileobj = StringIO(fest))
+ for dir, name in dirmap:
+ dump_dir(dir, tf, root)
tf.close()
###----- That's all, folks --------------------------------------------------