[entropy.server] make sure to remove tmp_repo_orig_path

This commit is contained in:
Fabio Erculiani
2011-08-08 06:19:03 +02:00
parent 3167370543
commit 0e169cd9f3

View File

@@ -2599,78 +2599,79 @@ class Server(Client):
if orig_fd is not None:
os.close(orig_fd)
for idpackage, package_path in injection_data:
try:
for idpackage, package_path in injection_data:
tmp_repo_file = None
tmp_fd = None
try:
tmp_fd, tmp_repo_file = tempfile.mkstemp(
prefix="entropy.server._inject_for")
with os.fdopen(tmp_fd, "wb") as tmp_f:
with open(tmp_repo_orig_path, "rb") as empty_f:
shutil.copyfileobj(empty_f, tmp_f)
tmp_repo_file = None
tmp_fd = None
try:
tmp_fd, tmp_repo_file = tempfile.mkstemp(
prefix="entropy.server._inject_for")
with os.fdopen(tmp_fd, "wb") as tmp_f:
with open(tmp_repo_orig_path, "rb") as empty_f:
shutil.copyfileobj(empty_f, tmp_f)
self.output(
"[%s|%s] %s: %s" % (
darkgreen(repository_id),
brown(str(idpackage)),
blue(_("injecting entropy metadata")),
darkgreen(os.path.basename(package_path)),
),
importance = 1,
level = "info",
header = blue(" @@ "),
back = True
)
data = dbconn.getPackageData(idpackage)
self._inject_entropy_database_into_package(
package_path, data,
treeupdates_actions = treeupdates_actions,
initialized_repository_path = tmp_repo_file)
finally:
if tmp_repo_file is not None:
os.remove(tmp_repo_file)
if tmp_fd is not None:
try:
os.close(tmp_fd)
except OSError as err:
if err.errno != errno.EBADF:
raise
# GPG-sign package if GPG signature is set
gpg_sign = None
if repo_sec is not None:
gpg_sign = self._get_gpg_signature(repo_sec, repository_id,
package_path)
digest = entropy.tools.md5sum(package_path)
# update digest
dbconn.setDigest(idpackage, digest)
# update signatures
signatures = data['signatures'].copy()
for hash_key in sorted(signatures):
if hash_key == "gpg": # gpg already created
continue
hash_func = getattr(entropy.tools, hash_key)
signatures[hash_key] = hash_func(package_path)
dbconn.setSignatures(idpackage, signatures['sha1'],
signatures['sha256'], signatures['sha512'],
gpg_sign)
dbconn.commit()
const_setup_file(package_path, etpConst['entropygid'], 0o664)
self.output(
"[%s|%s] %s: %s" % (
darkgreen(repository_id),
brown(str(idpackage)),
blue(_("injecting entropy metadata")),
blue(_("injection complete")),
darkgreen(os.path.basename(package_path)),
),
importance = 1,
level = "info",
header = blue(" @@ "),
back = True
header = red(" @@ ")
)
data = dbconn.getPackageData(idpackage)
self._inject_entropy_database_into_package(
package_path, data,
treeupdates_actions = treeupdates_actions,
initialized_repository_path = tmp_repo_file)
finally:
if tmp_repo_file is not None:
os.remove(tmp_repo_file)
if tmp_fd is not None:
try:
os.close(tmp_fd)
except OSError as err:
if err.errno != errno.EBADF:
raise
# GPG-sign package if GPG signature is set
gpg_sign = None
if repo_sec is not None:
gpg_sign = self._get_gpg_signature(repo_sec, repository_id,
package_path)
digest = entropy.tools.md5sum(package_path)
# update digest
dbconn.setDigest(idpackage, digest)
# update signatures
signatures = data['signatures'].copy()
for hash_key in sorted(signatures):
if hash_key == "gpg": # gpg already created
continue
hash_func = getattr(entropy.tools, hash_key)
signatures[hash_key] = hash_func(package_path)
dbconn.setSignatures(idpackage, signatures['sha1'],
signatures['sha256'], signatures['sha512'],
gpg_sign)
dbconn.commit()
const_setup_file(package_path, etpConst['entropygid'], 0o664)
self.output(
"[%s|%s] %s: %s" % (
darkgreen(repository_id),
brown(str(idpackage)),
blue(_("injection complete")),
darkgreen(os.path.basename(package_path)),
),
importance = 1,
level = "info",
header = red(" @@ ")
)
os.remove(tmp_repo_orig_path)
finally:
os.remove(tmp_repo_orig_path)
def remove_packages(self, repository_id, package_ids):
"""