aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/scripts/depfixer.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-09-01 23:12:06 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2016-09-01 23:12:06 +0300
commitcdf0c4f1a945f1262ae604047fd240b25cf44050 (patch)
treeefb861fa017c1f8663b75570fe61fa644c2bd3d0 /mesonbuild/scripts/depfixer.py
parent389259c229b30d38ec9de503dff965973b24ee26 (diff)
parent859c5e28df90851838aacc4b9ad49d3630e4992a (diff)
downloadmeson-cdf0c4f1a945f1262ae604047fd240b25cf44050.zip
meson-cdf0c4f1a945f1262ae604047fd240b25cf44050.tar.gz
meson-cdf0c4f1a945f1262ae604047fd240b25cf44050.tar.bz2
Merge branch 'QuLogic-context-managers'
Diffstat (limited to 'mesonbuild/scripts/depfixer.py')
-rw-r--r--mesonbuild/scripts/depfixer.py34
1 files changed, 22 insertions, 12 deletions
diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py
index cb136f4..7124c6f 100644
--- a/mesonbuild/scripts/depfixer.py
+++ b/mesonbuild/scripts/depfixer.py
@@ -115,11 +115,21 @@ class Elf(DataSizes):
self.bfile = bfile
self.verbose = verbose
self.bf = open(bfile, 'r+b')
- (self.ptrsize, self.is_le) = self.detect_elf_type()
- super().__init__(self.ptrsize, self.is_le)
- self.parse_header()
- self.parse_sections()
- self.parse_dynamic()
+ try:
+ (self.ptrsize, self.is_le) = self.detect_elf_type()
+ super().__init__(self.ptrsize, self.is_le)
+ self.parse_header()
+ self.parse_sections()
+ self.parse_dynamic()
+ except:
+ self.bf.close()
+ raise
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self.bf.close()
def detect_elf_type(self):
data = self.bf.read(6)
@@ -308,13 +318,13 @@ def run(args):
print('Don\'t run this unless you know what you are doing.')
print('%s: <binary file> <prefix>' % sys.argv[0])
exit(1)
- e = Elf(args[0])
- if len(args) == 1:
- e.print_rpath()
- e.print_runpath()
- else:
- new_rpath = args[1]
- e.fix_rpath(new_rpath)
+ with Elf(args[0]) as e:
+ if len(args) == 1:
+ e.print_rpath()
+ e.print_runpath()
+ else:
+ new_rpath = args[1]
+ e.fix_rpath(new_rpath)
return 0
if __name__ == '__main__':