From bf59c40c3eccf42e098c7374e2bcfe7f2ec2f77d Mon Sep 17 00:00:00 2001 From: "Jader H. Silva" Date: Thu, 12 Mar 2009 10:10:12 -0300 Subject: 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. --- classes/kernel.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 = {} -- cgit 1.2.3-korg