Skip to content

Commit f9a89fe

Browse files
authored
Merge pull request #3704 from Flamefire/file-open
Avoid leaking file handles in `PythonPackage`
2 parents 41cbdb3 + 33e748c commit f9a89fe

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

easybuild/easyblocks/generic/pythonpackage.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
from easybuild.framework.extensioneasyblock import ExtensionEasyBlock
5050
from easybuild.tools.build_log import EasyBuildError, print_msg
5151
from easybuild.tools.config import build_option, PYTHONPATH, EBPYTHONPREFIXES
52-
from easybuild.tools.filetools import change_dir, mkdir, remove_dir, symlink, which
52+
from easybuild.tools.filetools import change_dir, mkdir, read_file, remove_dir, symlink, which, write_file
5353
from easybuild.tools.modules import ModEnvVarType, get_software_root
5454
from easybuild.tools.run import run_shell_cmd
5555
from easybuild.tools.utilities import nub
@@ -860,15 +860,10 @@ def configure_step(self):
860860
finaltxt = finaltxt.replace('SITECFGINCDIR', repl)
861861

862862
self.log.debug("Using %s: %s" % (self.sitecfgfn, finaltxt))
863-
try:
864-
if os.path.exists(self.sitecfgfn):
865-
txt = open(self.sitecfgfn).read()
866-
self.log.debug("Found %s: %s" % (self.sitecfgfn, txt))
867-
config = open(self.sitecfgfn, 'w')
868-
config.write(finaltxt)
869-
config.close()
870-
except IOError:
871-
raise EasyBuildError("Creating %s failed", self.sitecfgfn)
863+
if os.path.exists(self.sitecfgfn):
864+
txt = read_file(self.sitecfgfn)
865+
self.log.debug("Found %s: %s" % (self.sitecfgfn, txt))
866+
write_file(self.sitecfgfn, finaltxt)
872867

873868
# conservatively auto-enable checking of $LDSHARED if it is not explicitely enabled or disabled
874869
# only do this for sufficiently recent Python versions (>= 3.7 or Python 2.x >= 2.7.15)
@@ -1024,7 +1019,7 @@ def install_step(self):
10241019
abs_bindir = os.path.join(actual_installdir, 'bin')
10251020

10261021
# set PYTHONPATH and PATH as expected
1027-
old_values = dict()
1022+
old_values = {}
10281023
for name, new_values in (('PYTHONPATH', abs_pylibdirs), ('PATH', [abs_bindir])):
10291024
old_value = os.getenv(name)
10301025
old_values[name] = old_value

0 commit comments

Comments
 (0)