* [PATCH 0/1] Inefficient find of pkg data
@ 2012-05-30 23:21 Elizabeth Flanagan
2012-05-30 23:21 ` [PATCH 1/1] license.bbclass: optimize pkg runtime data Elizabeth Flanagan
0 siblings, 1 reply; 2+ messages in thread
From: Elizabeth Flanagan @ 2012-05-30 23:21 UTC (permalink / raw)
To: openembedded-core
[YOCTO #2419]
find -name is a horrible way to find files (.025s per exec). Changing this
to shell expansion (.002 per exec). Also, no point in having a big for loop when
I pipe this into head anyway.
I tried this a few ways and this seems the most efficient reducing rootfs
generation down to around 30s from around 50s.
The following changes since commit 348da93e283b2b8454fd9cde80d4b17378e2a168:
webkit-gtk: Use glib as unicode backend to avoid browser crash (2012-05-30 17:38:02 +0100)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib eflanagan/license_1.3
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=eflanagan/license_1.3
Elizabeth Flanagan (1):
license.bbclass: optimize pkg runtime data
meta/classes/license.bbclass | 40 +++++++++++++++++++---------------------
1 files changed, 19 insertions(+), 21 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/1] license.bbclass: optimize pkg runtime data
2012-05-30 23:21 [PATCH 0/1] Inefficient find of pkg data Elizabeth Flanagan
@ 2012-05-30 23:21 ` Elizabeth Flanagan
0 siblings, 0 replies; 2+ messages in thread
From: Elizabeth Flanagan @ 2012-05-30 23:21 UTC (permalink / raw)
To: openembedded-core
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@intel.com>
---
meta/classes/license.bbclass | 40 +++++++++++++++++++---------------------
1 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index 6c4a673..d93ddf9 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -86,28 +86,26 @@ 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})"
- # 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 "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})"
+ # 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 "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:
--
1.7.5.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-05-30 23:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-30 23:21 [PATCH 0/1] Inefficient find of pkg data Elizabeth Flanagan
2012-05-30 23:21 ` [PATCH 1/1] license.bbclass: optimize pkg runtime data Elizabeth Flanagan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.