1 |
commit: dacd3b42154210e1d50fbe947a9bf9a7136d3081 |
2 |
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun May 31 06:38:58 2020 +0000 |
4 |
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun May 31 06:38:58 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/qa-scripts.git/commit/?id=dacd3b42 |
7 |
|
8 |
genrdeps-index: safely create/overwrite rdeps tarball |
9 |
|
10 |
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org> |
11 |
|
12 |
genrdeps-index.py | 25 +++++++++++++++++++------ |
13 |
1 file changed, 19 insertions(+), 6 deletions(-) |
14 |
|
15 |
diff --git a/genrdeps-index.py b/genrdeps-index.py |
16 |
index 1f0b24c..feea62c 100755 |
17 |
--- a/genrdeps-index.py |
18 |
+++ b/genrdeps-index.py |
19 |
@@ -11,6 +11,7 @@ import os.path |
20 |
import shutil |
21 |
import subprocess |
22 |
import sys |
23 |
+import tempfile |
24 |
|
25 |
import pkgcore.config |
26 |
from pkgcore.ebuild.atom import atom |
27 |
@@ -102,12 +103,24 @@ def main(): |
28 |
os.rename(newdir, outdir) |
29 |
shutil.rmtree(olddir, onerror=rmtree_ignore_enoent) |
30 |
|
31 |
- subprocess.check_call( |
32 |
- ['tar', '-cf', 'rdeps.tar'] + [gi for g, gi in GROUPS], |
33 |
- cwd=args.outputdir) |
34 |
- subprocess.check_call( |
35 |
- ['xz', '-9', 'rdeps.tar'], |
36 |
- cwd=args.outputdir) |
37 |
+ with tempfile.NamedTemporaryFile(prefix='.tmp.rdeps-', suffix='.tar', dir=args.outputdir, delete=False) as tmpf: |
38 |
+ try: |
39 |
+ subprocess.check_call( |
40 |
+ ['tar', '-cf', tmpf.name] + [gi for g, gi in GROUPS], |
41 |
+ cwd=args.outputdir) |
42 |
+ subprocess.check_call( |
43 |
+ ['xz', '-9', tmpf.name], |
44 |
+ cwd=args.outputdir) |
45 |
+ os.rename(tmpf.name + '.xz', os.path.join(args.outputdir, 'rdeps.tar.xz')) |
46 |
+ except Exception as e: |
47 |
+ raise e |
48 |
+ finally: |
49 |
+ # Cleanup: |
50 |
+ for f in [tmpf.name, (tmpf.name + '.xz')]: |
51 |
+ try: |
52 |
+ os.unlink(f) |
53 |
+ except FileNotFoundError as e: |
54 |
+ pass |
55 |
|
56 |
return 0 |