Done(File, F, None)
def GenCDB(accounts, File, key):
- Fdb = None
+ prefix = ["/usr/bin/eatmydata"] if os.path.exists('/usr/bin/eatmydata') else []
+ # nothing else does the fsync stuff, so why do it here?
+ Fdb = subprocess.Popen(prefix + ["cdbmake", File, "%s.tmp" % File],
+ preexec_fn=lambda: os.umask(0022),
+ stdin=subprocess.PIPE)
try:
- OldMask = os.umask(0022)
- # nothing else does the fsync stuff, so why do it here?
- prefix = "/usr/bin/eatmydata " if os.path.exists('/usr/bin/eatmydata') else ''
- Fdb = os.popen("%scdbmake %s %s.tmp"%(prefix, File, File), "w")
- os.umask(OldMask)
-
# Write out the email address for each user
for a in accounts:
if not key in a: continue
value = a[key]
user = a['uid']
- Fdb.write("+%d,%d:%s->%s\n" % (len(user), len(value), user, value))
+ Fdb.stdin.write("+%d,%d:%s->%s\n" % (len(user), len(value), user, value))
- Fdb.write("\n")
- # Oops, something unspeakable happened.
- except:
- Fdb.close()
- raise
- if Fdb.close() != None:
- raise "cdbmake gave an error"
+ Fdb.stdin.write("\n")
+ finally:
+ Fdb.stdin.close()
+ if Fdb.wait() != 0:
+ raise Exception("cdbmake gave an error")
def GenDBM(accounts, File, key):
Fdb = None
GenDBM(accounts, global_dir + "mail-forward.db", 'emailForward')
GenCDB(accounts, global_dir + "mail-contentinspectionaction.cdb", 'mailContentInspectionAction')
GenDBM(accounts, global_dir + "mail-contentinspectionaction.db", 'mailContentInspectionAction')
+ GenCDB(accounts, global_dir + "default-mail-options.cdb", 'mailDefaultOptions')
+ GenDBM(accounts, global_dir + "default-mail-options.db", 'mailDefaultOptions')
GenPrivate(accounts, global_dir + "debian-private")
GenSSHKnown(host_attrs, global_dir+"authorized_keys", 'authorized_keys', global_dir+'ud-generate.lock')
GenMailBool(accounts, global_dir + "mail-greylist", "mailGreylisting")
DoLink(global_dir, OutDir, "mail-rhsbl")
DoLink(global_dir, OutDir, "mail-whitelist")
DoLink(global_dir, OutDir, "all-accounts.json")
+ DoLink(global_dir, Outdir, "default-mail-options.cdb")
+ DoLink(global_dir, Outdir, "default-mail-options.db")
GenCDB(accounts, OutDir + "user-forward.cdb", 'emailForward')
GenDBM(accounts, OutDir + "user-forward.db", 'emailForward')
GenCDB(accounts, OutDir + "batv-tokens.cdb", 'bATVToken')
GenDBM(accounts, OutDir + "batv-tokens.db", 'bATVToken')
- GenCDB(accounts, OutDir + "default-mail-options.cdb", 'mailDefaultOptions')
- GenDBM(accounts, OutDir + "default-mail-options.db", 'mailDefaultOptions')
# Compatibility.
DoLink(global_dir, OutDir, "forward-alias")