aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJader H. Silva <jader@2mi.com.br>2009-03-12 10:10:12 -0300
committerMarcin Juszkiewicz <hrw@openembedded.org>2009-03-12 17:26:15 +0100
commitbf59c40c3eccf42e098c7374e2bcfe7f2ec2f77d (patch)
tree54f4abe7f911025d9ab33bcb44c79ee430d19145
parent337be70ba5f4e1642680b154dea11fdb978bcc63 (diff)
downloadopenembedded-bf59c40c3eccf42e098c7374e2bcfe7f2ec2f77d.tar.gz
Kernel bbclass "too many open files" bugfix
tempfile.mkstemp() is used to create a temporary file. This function return a tuple with an OS file descriptor and a filename. Filename is stored in "tmpfile" but descriptor is not stored anywhere, but it is still open because it's only an integer to python so it is not closed at the end of the function. For each iteration in which this function is called, a new OS file descriptor is opened, but not closed. The solution is to store the file descriptor and close it.
-rw-r--r--classes/kernel.bbclass4
1 files changed, 3 insertions, 1 deletions
diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass
index 86f00da5cf..4c1dbda35c 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -295,12 +295,14 @@ python populate_packages_prepend () {
def extract_modinfo(file):
import tempfile, os, re
tempfile.tempdir = bb.data.getVar("WORKDIR", d, 1)
- tmpfile = tempfile.mkstemp()[1]
+ tf = tempfile.mkstemp()
+ tmpfile = tf[1]
cmd = "PATH=\"%s\" %sobjcopy -j .modinfo -O binary %s %s" % (bb.data.getVar("PATH", d, 1), bb.data.getVar("HOST_PREFIX", d, 1) or "", file, tmpfile)
os.system(cmd)
f = open(tmpfile)
l = f.read().split("\000")
f.close()
+ os.close(tf[0])
os.unlink(tmpfile)
exp = re.compile("([^=]+)=(.*)")
vals = {}