diff -rup createrepo-0.9.5-orig/createrepo/yumbased.py createrepo-0.9.5/createrepo/yumbased.py --- createrepo-0.9.5-orig/createrepo/yumbased.py 2008-02-18 15:30:13.000000000 -0500 +++ createrepo-0.9.5/createrepo/yumbased.py 2008-10-09 13:51:48.000000000 -0400 @@ -30,6 +30,7 @@ from rpmUtils.transaction import initRea from rpmUtils.miscutils import flagToString, stringToVersion import libxml2 import utils +import tempfile #FIXME - merge into class with config stuff fileglobs = ['.*bin\/.*', '^\/etc\/.*', '^\/usr\/lib\/sendmail$'] @@ -106,9 +107,17 @@ class CreateRepoPackage(YumLocalPackage) else: checksum = misc.checksum('sha', self.localpath) - csumo = open(csumfile, 'w') - csumo.write(checksum) - csumo.close() + + # This is atomic cache creation via. rename, so we can have two + # tasks using the same cachedir ... mash does this. + try: + (csumo, tmpfilename) = tempfile.mkstemp(dir=self.crp_cachedir) + csumo = os.fdopen(csumo, 'w', -1) + csumo.write(checksum) + csumo.close() + os.rename(tmpfilename, csumfile) + except: + pass self._checksum = checksum Only in createrepo-0.9.5/createrepo: yumbased.py.orig