def installHeaders(extraHeaders=None): """ Install the files needed to build out-of-tree kernel modules. """ extras = ["drivers/media/dvb-core", "drivers/media/dvb-frontends", "drivers/media/tuners", "drivers/media/platform"] if extraHeaders: extras.extend(extraHeaders) pruned = ["include", "scripts", "Documentation"] wanted = ["Makefile*", "Kconfig*", "Kbuild*", "*.sh", "*.pl", "*.lds"] suffix = __getSuffix() headersDirectoryName = "usr/src/linux-headers-%s" % suffix # Get the destination directory for header installation destination = os.path.join(get.installDIR(), headersDirectoryName) shelltools.makedirs(destination) # First create the skel find_cmd = "find . -path %s -prune -o -type f \( -name %s \) -print" % \ ( " -prune -o -path ".join(["'./%s/*'" % l for l in pruned]), " -o -name ".join(["'%s'" % k for k in wanted]) ) + " | cpio -pVd --preserve-modification-time %s" % destination shelltools.system(find_cmd) # Install additional headers for headers in extras: shelltools.system("cp -a %s/*.h %s/%s" % (headers, destination, headers)) # Install remaining headers shelltools.system("cp -a %s %s" % (" ".join(pruned), destination)) # Cleanup directories shelltools.system("rm -rf %s/scripts/*.o" % destination) shelltools.system("rm -rf %s/scripts/*/*.o" % destination) shelltools.system("rm -rf %s/Documentation/DocBook" % destination) # Finally copy the include directories found in arch/ shelltools.system("(find arch -name include -type d -print | \ xargs -n1 -i: find : -type f) | \ cpio -pd --preserve-modification-time %s" % destination) # Copy Modules.symvers and System.map shutil.copy("Module.symvers", "%s/" % destination) shutil.copy("System.map", "%s/" % destination) # Copy .config file which will be needed by some external modules shutil.copy(".config", "%s/" % destination) # Settle the correct build symlink to this headers pisilinuxtools.dosym("/%s" % headersDirectoryName, "/lib/modules/%s/build" % suffix) pisilinuxtools.dosym("build", "/lib/modules/%s/source" % suffix)