scons: file removed from python3

Change-Id: I95794fec5cc9c6e72c9ae53f586052be71436c87
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/26249
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
diff --git a/SConstruct b/SConstruct
index 110f9c8..932eb81 100755
--- a/SConstruct
+++ b/SConstruct
@@ -1014,9 +1014,8 @@
 # value of the variable.
 def build_config_file(target, source, env):
     (variable, value) = [s.get_contents() for s in source]
-    f = file(str(target[0]), 'w')
-    print('#define', variable, value, file=f)
-    f.close()
+    with open(str(target[0]), 'w') as f:
+        print('#define', variable, value, file=f)
     return None
 
 # Combine the two functions into a scons Action object.
diff --git a/src/SConscript b/src/SConscript
index d377ff5..e8b90ac 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -284,7 +284,8 @@
     cpp_path = path_noext + '.cc'
     hpp_path = path_noext + '.hh'
     def embedBlob(target, source, env):
-        data = file(str(source[0]), 'r').read()
+        with open(str(source[0]), 'rb') as f:
+            data = f.read()
         cpp_code = code_formatter()
         hpp_code = code_formatter()
         blobToCpp(data, symbol, cpp_code, hpp_code, namespace='Blobs')
@@ -767,7 +768,8 @@
             mod.__path__ = source.modpath
         mod.__file__ = source.abspath
 
-        exec file(source.abspath, 'r') in mod.__dict__
+        compiled = compile(open(source.abspath).read(), source.abspath, 'exec')
+        exec(compiled, mod.__dict__)
 
         return mod
 
@@ -850,7 +852,8 @@
 def makeInfoPyFile(target, source, env):
     code = code_formatter()
     for src in source:
-        data = ''.join(file(src.srcnode().abspath, 'r').xreadlines())
+        with open(src.srcnode().abspath, 'r') as f:
+            data = ''.join(f)
         code('$src = ${{repr(data)}}')
     code.write(str(target[0]))
 
diff --git a/src/mem/ruby/SConscript b/src/mem/ruby/SConscript
index a9c3394..8c22ae4 100644
--- a/src/mem/ruby/SConscript
+++ b/src/mem/ruby/SConscript
@@ -99,10 +99,9 @@
 generated_dir = Dir('protocol')
 
 def MakeIncludeAction(target, source, env):
-    f = file(str(target[0]), 'w')
-    for s in source:
-        print('#include "%s"' % str(s.abspath), file=f)
-    f.close()
+    with open(str(target[0]), 'w') as f:
+        for s in source:
+            print('#include "%s"' % str(s.abspath), file=f)
 
 def MakeInclude(source):
     target = generated_dir.File(basename(source))