[oe-commits] Elizabeth Flanagan : license.bbclass: optimize pkg runtime data

git at git.openembedded.org git at git.openembedded.org
Tue Jun 5 21:58:06 UTC 2012


Module: openembedded-core.git
Branch: master
Commit: 664bbf3207c229eef5ef94a08713a652f33a8466
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=664bbf3207c229eef5ef94a08713a652f33a8466

Author: Elizabeth Flanagan <elizabeth.flanagan at intel.com>
Date:   Wed May 30 12:01:15 2012 -0700

license.bbclass: optimize pkg runtime data

This fixes an ugly way I was trying to find pkg runtime
data for package and license manifest creation.

rootfs generation times for core-image-minimal:

Prior to patch
real	0m41.570s
user	1m40.466s
sys	0m6.768s

With patch
real	0m27.527s
user	0m9.833s
sys	0m3.496s

Signed-off-by: Elizabeth Flanagan <elizabeth.flanagan at intel.com>

Conflicts:

	meta/classes/license.bbclass

---

 meta/classes/license.bbclass |   44 ++++++++++++++++++++---------------------
 1 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index a537496..e6096a6 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -86,30 +86,28 @@ license_create_manifest() {
 	# list of installed packages is broken for deb
 	for pkg in ${INSTALLED_PKGS}; do
 		# not the best way to do this but licenses are not arch dependant iirc
-		files=`find ${TMPDIR}/pkgdata/*/runtime -name ${pkg}| head -1`
-		for filename in $files; do
-			pkged_pn="$(sed -n 's/^PN: //p' ${filename})"
-			pkged_lic="$(sed -n '/^LICENSE: /{ s/^LICENSE: //; s/[+|&()*]/ /g; s/  */ /g; p }' ${filename})"
-			pkged_pv="$(sed -n 's/^PV: //p' ${filename})"
-			# check to see if the package name exists in the manifest. if so, bail.
-			if ! grep -q "PACKAGE NAME: ${pkg}" ${filename}; then
-				# exclude local recipes
-				if [ ! "${pkged_pn}" = "*locale*" ]; then
-					echo "PACKAGE NAME:" ${pkg} >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-					echo "PACKAGE VERSION:" ${pkged_pv} >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-					echo "RECIPE NAME:" ${pkged_pn} >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-					echo "LICENSE: " >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-					for lic in ${pkged_lic}; do
-						if [ -e "${LICENSE_DIRECTORY}/${pkged_pn}/generic_${lic}" ]; then
-							echo ${lic}|sed s'/generic_//'g >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-						else
-							echo "WARNING: The license listed, " ${lic} " was not in the licenses collected for " ${pkged_pn}>> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-						fi
-					done
-					echo "" >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
-				fi
+		filename=`ls ${TMPDIR}/pkgdata/*/runtime/${pkg}| head -1`
+		pkged_pn="$(sed -n 's/^PN: //p' ${filename})"
+		pkged_lic="$(sed -n '/^LICENSE: /{ s/^LICENSE: //; s/[+|&()*]/ /g; s/  */ /g; p }' ${filename})"
+		pkged_pv="$(sed -n 's/^PV: //p' ${filename})"
+		# check to see if the package name exists in the manifest. if so, bail.
+		if ! grep -q "PACKAGE NAME: ${pkg}" ${filename}; then
+			# exclude local recipes
+			if [ ! "${pkged_pn}" = "*locale*" ]; then
+				echo "PACKAGE NAME:" ${pkg} >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
+				echo "PACKAGE VERSION:" ${pkged_pv} >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
+				echo "RECIPE NAME:" ${pkged_pn} >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
+				echo "LICENSE: " >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
+				for lic in ${pkged_lic}; do
+					if [ -e "${LICENSE_DIRECTORY}/${pkged_pn}/generic_${lic}" ]; then
+						echo ${lic}|sed s'/generic_//'g >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
+					else
+						echo "WARNING: The license listed, " ${lic} " was not in the licenses collected for " ${pkged_pn}>> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
+					fi
+				done
+				echo "" >> ${LICENSE_DIRECTORY}/${IMAGE_NAME}/license.manifest
 			fi
-		done
+		fi
 	done
 
 	# Two options here:





More information about the Openembedded-commits mailing list