[oe-commits] org.oe.dev Micro-Optimisation decreasing initial parsing time by 10%
freyther commit
openembedded-commits at lists.openembedded.org
Sat Nov 18 17:02:44 UTC 2006
Micro-Optimisation decreasing initial parsing time by 10%
python () {} and python __anonymous () {} are as the same
says functions without a name. They get executed when the
main bb file is completely parsed. This is used to set
information like FILESDIR.
This is a python method so it gets evaled which means compiled
and executed a lot of times. By moving the code of the anonfunc
into a proper method this is only compiled once. The result is
is the 10% speed up when parsing.
Reindent anonfuncs and new defs without tabs and four spaces
Author: freyther at openembedded.org
Branch: org.openembedded.dev
Revision: c46bb9f689f52b3847b41ebdb10f140c0819e788
ViewMTN: http://monotone.openembedded.org/revision.psp?id=c46bb9f689f52b3847b41ebdb10f140c0819e788
Files:
1
packages/glib-2.0/glib-2.0.inc
classes/base.bbclass
classes/flow-lossage.bbclass
classes/gettext.bbclass
classes/multimachine.bbclass
classes/update-alternatives.bbclass
classes/update-rc.d.bbclass
packages/apache/apache_2.0.54.bb
packages/glib-2.0/glib-2.0_2.12.0.bb
packages/glib-2.0/glib-2.0_2.12.1.bb
packages/glib-2.0/glib-2.0_2.12.3.bb
packages/glib-2.0/glib-2.0_2.2.3.bb
packages/glib-2.0/glib-2.0_2.4.5.bb
packages/glib-2.0/glib-2.0_2.4.6.bb
packages/glib-2.0/glib-2.0_2.6.0.bb
packages/glib-2.0/glib-2.0_2.6.1.bb
packages/glib-2.0/glib-2.0_2.6.2.bb
packages/glib-2.0/glib-2.0_2.6.3.bb
packages/glib-2.0/glib-2.0_2.6.4.bb
packages/glib-2.0/glib-2.0_2.8.1.bb
packages/glib-2.0/glib-2.0_2.8.2.bb
packages/glib-2.0/glib-2.0_2.8.4.bb
packages/glib-2.0/glib-2.0_2.8.6.bb
packages/grub/grub_0.97.bb
packages/images/slugos-image.bb
packages/linux/ixp4xx-kernel.inc
packages/linux/linux-amsdelta-2.6_2.6.16-omap2.bb
packages/lockstat/lockstat_1.4.10.bb
packages/nis/nis.inc
packages/pam/libpam_0.79.bb
Diffs:
#
# mt diff -rd1a0881398079c71fde72e9e44bbf4b2971f8692 -rc46bb9f689f52b3847b41ebdb10f140c0819e788
#
#
#
# add_file "packages/glib-2.0/glib-2.0.inc"
# content [1e6fafdbaa9eb8f82752a7fadd52056b49497816]
#
# patch "classes/base.bbclass"
# from [b758fd377f73dbd24e9a65108ba3fd0de0ae0772]
# to [fb4ec935de39df61ed43eaa0815eccf38d958af8]
#
# patch "classes/flow-lossage.bbclass"
# from [7f6390b14b53c7d943959bbac432306d160540df]
# to [c8f4c9f10721ec716a75fafe3f8340096bb367e4]
#
# patch "classes/gettext.bbclass"
# from [eb6d555d268d72dbe6c336c5b2e029f77c8e8527]
# to [a0ba1057eaf6a5619d05a1d4fe7e262095b34168]
#
# patch "classes/multimachine.bbclass"
# from [facafe4d437231f4b680149eac4fe289fe188d7e]
# to [39bec0079b9e0bad6abd2637e242bb97bb66cce2]
#
# patch "classes/update-alternatives.bbclass"
# from [eca20324b882c46f0e96d4b48244fc90c2f7261a]
# to [bb1e120963bfcd8e1ce95ab8abf3d22f86450925]
#
# patch "classes/update-rc.d.bbclass"
# from [1b9303ddb644bddb4cd6e70eaf0a759b2085f781]
# to [426fa6a0f46eb899a61e0f53f9f1f30b89668ba3]
#
# patch "packages/apache/apache_2.0.54.bb"
# from [4c911dac08ef4049d7a574f89f37b5cc9b1b151b]
# to [2b9f05cd22adb9adced3f45dd03c55639a99a1da]
#
# patch "packages/glib-2.0/glib-2.0_2.12.0.bb"
# from [60c9e09b1b2bddf5c2941586bf2e7dae4fbae65f]
# to [24e76bde05749207d76e41b22cf5fa360ed20b8b]
#
# patch "packages/glib-2.0/glib-2.0_2.12.1.bb"
# from [bbeae6d920204980804b9f6e20902d26a16ed70c]
# to [32b2403c5b547ee78c94f515f907de1676d6fa4f]
#
# patch "packages/glib-2.0/glib-2.0_2.12.3.bb"
# from [bbeae6d920204980804b9f6e20902d26a16ed70c]
# to [32b2403c5b547ee78c94f515f907de1676d6fa4f]
#
# patch "packages/glib-2.0/glib-2.0_2.2.3.bb"
# from [61e181130a0b6a57aed77674c0b2228afcc04d62]
# to [4f7cfa5bea610fb7f5649dde45b26e2be972b545]
#
# patch "packages/glib-2.0/glib-2.0_2.4.5.bb"
# from [bafb03b54863bc5f933316ead694671d51dadb44]
# to [48a1a3c786e015b238b109abf000877b04ca93cc]
#
# patch "packages/glib-2.0/glib-2.0_2.4.6.bb"
# from [3f460dc396407edb42fbb3c3a6cb133d2c387e5a]
# to [c98a1e3d3b355287f2186d3503bb7286663fca5d]
#
# patch "packages/glib-2.0/glib-2.0_2.6.0.bb"
# from [25028959ff2f2a44add209fdaf00e543f9d760f9]
# to [0d2e1f94d336f0cf7e5649953935749b721a04c4]
#
# patch "packages/glib-2.0/glib-2.0_2.6.1.bb"
# from [eb040186dbe41d727ad41b2938c4d33ebf17e50b]
# to [e063f9900f14648873af787583884bf36c20dfbc]
#
# patch "packages/glib-2.0/glib-2.0_2.6.2.bb"
# from [eb040186dbe41d727ad41b2938c4d33ebf17e50b]
# to [e063f9900f14648873af787583884bf36c20dfbc]
#
# patch "packages/glib-2.0/glib-2.0_2.6.3.bb"
# from [eb040186dbe41d727ad41b2938c4d33ebf17e50b]
# to [e063f9900f14648873af787583884bf36c20dfbc]
#
# patch "packages/glib-2.0/glib-2.0_2.6.4.bb"
# from [eb040186dbe41d727ad41b2938c4d33ebf17e50b]
# to [e063f9900f14648873af787583884bf36c20dfbc]
#
# patch "packages/glib-2.0/glib-2.0_2.8.1.bb"
# from [0b183e2cecc662fdcff6625b2bad174876935c2b]
# to [9c6634d339bb668303a1664884989b57fb9c5b24]
#
# patch "packages/glib-2.0/glib-2.0_2.8.2.bb"
# from [ffff27ba46f9043370fb3fd1d0e68374ae14272c]
# to [606a0ed99aaab6d5d204f65c17ec2598fb43086b]
#
# patch "packages/glib-2.0/glib-2.0_2.8.4.bb"
# from [8f65cd30b0353967ffe9275dd26f7949a76bb7a3]
# to [22de6bac45463ee170a6109d63cc65bb11cc19db]
#
# patch "packages/glib-2.0/glib-2.0_2.8.6.bb"
# from [23ee3a907566f4491cff597f29e64c8d58af6a14]
# to [9b443b48573e869f90bc0a2ebb4d789d541e270b]
#
# patch "packages/grub/grub_0.97.bb"
# from [e5cf4ae4a465cca8d9f888d829239651419d4239]
# to [3af10d9a8bdaaa1c4fbf92fb5288d906a07b6588]
#
# patch "packages/images/slugos-image.bb"
# from [44e999c723d9bdca9403901a0ab0f00c98a26bc0]
# to [34d9be51d514ffcfe5f2ee355cded7b7eb5a9cfe]
#
# patch "packages/linux/ixp4xx-kernel.inc"
# from [2231906856b07126b637ffea6dc6d1a00a3090af]
# to [3e65d9298bc48c67b050e4ba594159c3c1969471]
#
# patch "packages/linux/linux-amsdelta-2.6_2.6.16-omap2.bb"
# from [aa6eab02eb3a7b434c37ddc01f84ba0cf3f2a0e1]
# to [a6b7a5e9fa46ce963973d915d80f8cbe94db9486]
#
# patch "packages/lockstat/lockstat_1.4.10.bb"
# from [b8bf1c7a710c5e155a3a74eaaea6614d52c5d6a0]
# to [2efc6c23f08c9160db1db00f4b2d3822d01749e8]
#
# patch "packages/nis/nis.inc"
# from [2653edd2e22ad3a90e2622346e7b29aca0ee50c1]
# to [5a74852374463a6288b5fd3dff78751170555a5f]
#
# patch "packages/pam/libpam_0.79.bb"
# from [57bcd07ebc5ef77ee50ff79e0659be063b38d641]
# to [95327ea30ce56a35ba78c444fb2b89c3034165b1]
#
============================================================
--- packages/glib-2.0/glib-2.0.inc 1e6fafdbaa9eb8f82752a7fadd52056b49497816
+++ packages/glib-2.0/glib-2.0.inc 1e6fafdbaa9eb8f82752a7fadd52056b49497816
@@ -0,0 +1,5 @@
+
+python () {
+ if bb.data.getVar("USE_NLS", d, 1) == "no":
+ raise bb.parse.SkipPackage("${PN} requires native language support.")
+}
============================================================
--- classes/base.bbclass b758fd377f73dbd24e9a65108ba3fd0de0ae0772
+++ classes/base.bbclass fb4ec935de39df61ed43eaa0815eccf38d958af8
@@ -676,55 +676,61 @@ python read_subpackage_metadata () {
bb.data.setVar(key, sdata[key], d)
}
-python __anonymous () {
- import exceptions
- need_host = bb.data.getVar('COMPATIBLE_HOST', d, 1)
- if need_host:
- import re
- this_host = bb.data.getVar('HOST_SYS', d, 1)
- if not re.match(need_host, this_host):
- raise bb.parse.SkipPackage("incompatible with host %s" % this_host)
+def base_after_parse_two(d):
+ import bb
+ import exceptions
+ need_host = bb.data.getVar('COMPATIBLE_HOST', d, 1)
+ if need_host:
+ import re
+ this_host = bb.data.getVar('HOST_SYS', d, 1)
+ if not re.match(need_host, this_host):
+ raise bb.parse.SkipPackage("incompatible with host %s" % this_host)
- need_machine = bb.data.getVar('COMPATIBLE_MACHINE', d, 1)
- if need_machine:
- import re
- this_machine = bb.data.getVar('MACHINE', d, 1)
- if this_machine and not re.match(need_machine, this_machine):
- raise bb.parse.SkipPackage("incompatible with machine %s" % this_machine)
+ need_machine = bb.data.getVar('COMPATIBLE_MACHINE', d, 1)
+ if need_machine:
+ import re
+ this_machine = bb.data.getVar('MACHINE', d, 1)
+ if this_machine and not re.match(need_machine, this_machine):
+ raise bb.parse.SkipPackage("incompatible with machine %s" % this_machine)
- pn = bb.data.getVar('PN', d, 1)
+ pn = bb.data.getVar('PN', d, 1)
- # OBSOLETE in bitbake 1.7.4
- srcdate = bb.data.getVar('SRCDATE_%s' % pn, d, 1)
- if srcdate != None:
- bb.data.setVar('SRCDATE', srcdate, d)
+ # OBSOLETE in bitbake 1.7.4
+ srcdate = bb.data.getVar('SRCDATE_%s' % pn, d, 1)
+ if srcdate != None:
+ bb.data.setVar('SRCDATE', srcdate, d)
- use_nls = bb.data.getVar('USE_NLS_%s' % pn, d, 1)
- if use_nls != None:
- bb.data.setVar('USE_NLS', use_nls, d)
-}
+ use_nls = bb.data.getVar('USE_NLS_%s' % pn, d, 1)
+ if use_nls != None:
+ bb.data.setVar('USE_NLS', use_nls, d)
+def base_after_parse(d):
+ import bb, os
+ mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1)
+ old_arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
+ if (old_arch == mach_arch):
+ # Nothing to do
+ return
+ if (bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1) == '0'):
+ return
+ paths = []
+ for p in [ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ]:
+ paths.append(bb.data.expand(os.path.join(p, mach_arch), d))
+ for s in bb.data.getVar('SRC_URI', d, 1).split():
+ local = bb.data.expand(bb.fetch.localpath(s, d), d)
+ for mp in paths:
+ if local.startswith(mp):
+ #bb.note("overriding PACKAGE_ARCH from %s to %s" % (old_arch, mach_arch))
+ bb.data.setVar('PACKAGE_ARCH', mach_arch, d)
+ return
+
+
python () {
- import bb, os
- mach_arch = bb.data.getVar('MACHINE_ARCH', d, 1)
- old_arch = bb.data.getVar('PACKAGE_ARCH', d, 1)
- if (old_arch == mach_arch):
- # Nothing to do
- return
- if (bb.data.getVar('SRC_URI_OVERRIDES_PACKAGE_ARCH', d, 1) == '0'):
- return
- paths = []
- for p in [ "${FILE_DIRNAME}/${PF}", "${FILE_DIRNAME}/${P}", "${FILE_DIRNAME}/${PN}", "${FILE_DIRNAME}/files", "${FILE_DIRNAME}" ]:
- paths.append(bb.data.expand(os.path.join(p, mach_arch), d))
- for s in bb.data.getVar('SRC_URI', d, 1).split():
- local = bb.data.expand(bb.fetch.localpath(s, d), d)
- for mp in paths:
- if local.startswith(mp):
-# bb.note("overriding PACKAGE_ARCH from %s to %s" % (old_arch, mach_arch))
- bb.data.setVar('PACKAGE_ARCH', mach_arch, d)
- return
+ base_after_parse_two(d)
+ base_after_parse(d)
}
+
# Patch handling
inherit patch
============================================================
--- classes/flow-lossage.bbclass 7f6390b14b53c7d943959bbac432306d160540df
+++ classes/flow-lossage.bbclass c8f4c9f10721ec716a75fafe3f8340096bb367e4
@@ -1,5 +1,5 @@ python () {
# gcc-3.4 blows up in gtktext with -frename-registers on arm-linux
python () {
- cflags = (bb.data.getVar('CFLAGS', d, 1) or '').replace('-frename-registers', '')
- bb.data.setVar('CFLAGS', cflags, d)
+ cflags = (bb.data.getVar('CFLAGS', d, 1) or '').replace('-frename-registers', '')
+ bb.data.setVar('CFLAGS', cflags, d)
}
============================================================
--- classes/gettext.bbclass eb6d555d268d72dbe6c336c5b2e029f77c8e8527
+++ classes/gettext.bbclass a0ba1057eaf6a5619d05a1d4fe7e262095b34168
@@ -1,11 +1,15 @@
+def gettext_after_parse(d):
+ import bb
+ # Remove the NLS bits if USE_NLS is no.
+ if bb.data.getVar('USE_NLS', d, 1) == 'no':
+ cfg = oe_filter_out('^--(dis|en)able-nls$', bb.data.getVar('EXTRA_OECONF', d, 1) or "", d)
+ cfg += " --disable-nls"
+ depends = bb.data.getVar('DEPENDS', d, 1) or ""
+ bb.data.setVar('DEPENDS', oe_filter_out('^(virtual/libiconv|virtual/libintl)$', depends, d), d)
+ bb.data.setVar('EXTRA_OECONF', cfg, d)
+
python () {
- # Remove the NLS bits if USE_NLS is no.
- if bb.data.getVar('USE_NLS', d, 1) == 'no':
- cfg = oe_filter_out('^--(dis|en)able-nls$', bb.data.getVar('EXTRA_OECONF', d, 1) or "", d)
- cfg += " --disable-nls"
- depends = bb.data.getVar('DEPENDS', d, 1) or ""
- bb.data.setVar('DEPENDS', oe_filter_out('^(virtual/libiconv|virtual/libintl)$', depends, d), d)
- bb.data.setVar('EXTRA_OECONF', cfg, d)
+ gettext_after_parse(d)
}
DEPENDS =+ "gettext-native"
============================================================
--- classes/multimachine.bbclass facafe4d437231f4b680149eac4fe289fe188d7e
+++ classes/multimachine.bbclass 39bec0079b9e0bad6abd2637e242bb97bb66cce2
@@ -1,22 +1,29 @@ STAGING_KERNEL_DIR = "${STAGING_DIR}/${M
STAMP = "${TMPDIR}/stamps/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/${PF}"
WORKDIR = "${TMPDIR}/work/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/${PF}"
STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}/kernel"
# Find any machine specific sub packages and if present, mark the
# whole package as machine specific for multimachine purposes.
-python __anonymous () {
- packages = bb.data.getVar('PACKAGES', d, 1).split()
- macharch = bb.data.getVar('MACHINE_ARCH', d, 1)
- multiarch = bb.data.getVar('PACKAGE_ARCH', d, 1)
- for pkg in packages:
- pkgarch = bb.data.getVar("PACKAGE_ARCH_%s" % pkg, d, 1)
- # We could look for != PACKAGE_ARCH here but how to choose
- # if multiple differences are present?
- # Look through IPKG_ARCHS for the priority order?
- if pkgarch and pkgarch == macharch:
- multiarch = macharch
+def multi_machine_after_parse(d):
+ import bb
+ packages = bb.data.getVar('PACKAGES', d, 1).split()
+ macharch = bb.data.getVar('MACHINE_ARCH', d, 1)
+ multiarch = bb.data.getVar('PACKAGE_ARCH', d, 1)
- bb.data.setVar('MULTIMACH_ARCH', multiarch, d)
+ for pkg in packages:
+ pkgarch = bb.data.getVar("PACKAGE_ARCH_%s" % pkg, d, 1)
+
+ # We could look for != PACKAGE_ARCH here but how to choose
+ # if multiple differences are present?
+ # Look through IPKG_ARCHS for the priority order?
+ if pkgarch and pkgarch == macharch:
+ multiarch = macharch
+
+ bb.data.setVar('MULTIMACH_ARCH', multiarch, d)
+
+
+python __anonymous () {
+ multi_machine_after_parse(d)
}
============================================================
--- classes/update-alternatives.bbclass eca20324b882c46f0e96d4b48244fc90c2f7261a
+++ classes/update-alternatives.bbclass bb1e120963bfcd8e1ce95ab8abf3d22f86450925
@@ -10,11 +10,15 @@ update-alternatives --remove ${ALTERNATI
update-alternatives --remove ${ALTERNATIVE_NAME} ${ALTERNATIVE_PATH}
}
+def updatealternativesafterparse(d):
+ import bb
+ if bb.data.getVar('ALTERNATIVE_NAME', d) == None:
+ raise bb.build.FuncFailed, "%s inherits update-alternatives but doesn't set ALTERNATIVE_NAME" % bb.data.getVar('FILE', d)
+ if bb.data.getVar('ALTERNATIVE_PATH', d) == None:
+ raise bb.build.FuncFailed, "%s inherits update-alternatives but doesn't set ALTERNATIVE_PATH" % bb.data.getVar('FILE', d)
+
python __anonymous() {
- if bb.data.getVar('ALTERNATIVE_NAME', d) == None:
- raise bb.build.FuncFailed, "%s inherits update-alternatives but doesn't set ALTERNATIVE_NAME" % bb.data.getVar('FILE', d)
- if bb.data.getVar('ALTERNATIVE_PATH', d) == None:
- raise bb.build.FuncFailed, "%s inherits update-alternatives but doesn't set ALTERNATIVE_PATH" % bb.data.getVar('FILE', d)
+ updatealternativesafterparse(d)
}
python populate_packages_prepend () {
============================================================
--- classes/update-rc.d.bbclass 1b9303ddb644bddb4cd6e70eaf0a759b2085f781
+++ classes/update-rc.d.bbclass 426fa6a0f46eb899a61e0f53f9f1f30b89668ba3
@@ -26,12 +26,17 @@ update-rc.d $D ${INITSCRIPT_NAME} remove
update-rc.d $D ${INITSCRIPT_NAME} remove
}
+
+def update_rc_after_parse(d):
+ import bb
+ if bb.data.getVar('INITSCRIPT_PACKAGES', d) == None:
+ if bb.data.getVar('INITSCRIPT_NAME', d) == None:
+ raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_NAME" % bb.data.getVar('FILE', d)
+ if bb.data.getVar('INITSCRIPT_PARAMS', d) == None:
+ raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_PARAMS" % bb.data.getVar('FILE', d)
+
python __anonymous() {
- if bb.data.getVar('INITSCRIPT_PACKAGES', d) == None:
- if bb.data.getVar('INITSCRIPT_NAME', d) == None:
- raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_NAME" % bb.data.getVar('FILE', d)
- if bb.data.getVar('INITSCRIPT_PARAMS', d) == None:
- raise bb.build.FuncFailed, "%s inherits update-rc.d but doesn't set INITSCRIPT_PARAMS" % bb.data.getVar('FILE', d)
+ update_rc_after_parse(d)
}
python populate_packages_prepend () {
============================================================
--- packages/apache/apache_2.0.54.bb 4c911dac08ef4049d7a574f89f37b5cc9b1b151b
+++ packages/apache/apache_2.0.54.bb 2b9f05cd22adb9adced3f45dd03c55639a99a1da
@@ -82,10 +82,10 @@ python () {
}
python () {
- # Don't build apache unless we are building nativly
- target = bb.data.getVar("TARGET_ARCH", d, 1)
- build = bb.data.getVar("BUILD_ARCH", d, 1)
- if target != build:
- raise bb.parse.SkipPackage("Apache will only build nativly (TARGET_ARCH == BUILD_ARCH)")
+ # Don't build apache unless we are building nativly
+ target = bb.data.getVar("TARGET_ARCH", d, 1)
+ build = bb.data.getVar("BUILD_ARCH", d, 1)
+ if target != build:
+ raise bb.parse.SkipPackage("Apache will only build nativly (TARGET_ARCH == BUILD_ARCH)")
}
============================================================
--- packages/glib-2.0/glib-2.0_2.12.0.bb 60c9e09b1b2bddf5c2941586bf2e7dae4fbae65f
+++ packages/glib-2.0/glib-2.0_2.12.0.bb 24e76bde05749207d76e41b22cf5fa360ed20b8b
@@ -24,10 +24,7 @@ inherit autotools pkgconfig gettext
inherit autotools pkgconfig gettext
-python () {
- if bb.data.getVar("USE_NLS", d, 1) == "no":
- raise bb.parse.SkipPackage("${PN} requires native language support.")
-}
+require glib-2.0.inc
acpaths = ""
do_configure_prepend () {
============================================================
--- packages/glib-2.0/glib-2.0_2.12.1.bb bbeae6d920204980804b9f6e20902d26a16ed70c
+++ packages/glib-2.0/glib-2.0_2.12.1.bb 32b2403c5b547ee78%s
>>> DIFF TRUNCATED @ 16K
More information about the Openembedded-commits
mailing list