From: Jader H. Silva Date: Thu, 12 Mar 2009 13:10:12 +0000 (-0300) Subject: Kernel bbclass "too many open files" bugfix X-Git-Tag: Release-2010-05/1~3800^2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf59c40c3eccf42e098c7374e2bcfe7f2ec2f77d;p=openembedded.git 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. --- 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 = {}