public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [PATCH 0/1] pseudo 1.5 -- now up to 25% faster!
@ 2013-02-17 23:42 Peter Seebach
  2013-02-17 23:42 ` [PATCH 1/1] pseudo.inc: pseudo 1.5 uprev, support extra config flags Peter Seebach
  0 siblings, 1 reply; 2+ messages in thread
From: Peter Seebach @ 2013-02-17 23:42 UTC (permalink / raw)
  To: OpenEmbedded Core Mailing List

pseudo 1.5 is a significant update to a few internals, focused on
improving build performance. Of particular note, pseudo 1.5 suppresses
fsync() and fdatasync() calls for any part of the build running
under pseudo, even when pseudo is disabled. (This is controlled
by the --enable-force-async configure option; if you want to try
this out with the git package, you'll have to add it to pseudo_git.bb.)

The 1.5 tarball has been submitted to Michael Halstead for inclusion
on the Yocto servers, but I don't think it's up yet. (And it's been
nearly two whole minutes, too!)

You will note that this proposed patch does NOT remove the pseudo
1.4.5 tarball. This is a large enough change that I am inclined to
leave 1.4.5 very conveniently available (just a single PREFERRED_VERSION
away) until this has been shaken out a bit.

The following changes since commit cd503c7f7fec6d177209832f73cec9c5d490be6b:
  Richard Purdie (1):
        package_tar: Fix so it actually works

are available in the git repository at:

  git://git.yoctoproject.org/poky-contrib seebs/pseudo_15
  http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=seebs/pseudo_15

Peter Seebach (1):
  pseudo.inc: pseudo 1.5 uprev, support extra config flags

 meta/recipes-devtools/pseudo/pseudo.inc    |    8 ++++----
 meta/recipes-devtools/pseudo/pseudo_1.5.bb |   10 ++++++++++
 meta/recipes-devtools/pseudo/pseudo_git.bb |    4 ++--
 3 files changed, 16 insertions(+), 6 deletions(-)
 create mode 100644 meta/recipes-devtools/pseudo/pseudo_1.5.bb




^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH 1/1] pseudo.inc: pseudo 1.5 uprev, support extra config flags
  2013-02-17 23:42 [PATCH 0/1] pseudo 1.5 -- now up to 25% faster! Peter Seebach
@ 2013-02-17 23:42 ` Peter Seebach
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Seebach @ 2013-02-17 23:42 UTC (permalink / raw)
  To: OpenEmbedded Core Mailing List

The pseudo 1.5 update is a moderately experimental set of changes
which ought to improve performance. With these changes, pseudo
uses an in-memory sqlite database which is lushed on exit,
the protocol is changed to reduce waiting for server responses,
and pseudo can suppress any and all fsync/fdatasync type operations.

This last feature is optional, and not on by default, so we need
to pass in an extra configure argument, but that argument wouldn't
be known to an older configure, so... Enter PSEUDO_EXTRA_OPTS which
is passed to configure, and which pseudo_1.5.bb sets by default to
"--enable-force-async". (I haven't added it in pseudo_git.bb, but
maybe it should be changed; I'm not quite as sure there.)

The justification for these changes is that, for most of the real-world
build cases I deal with, they produce a 25% or more reduction in the
build time of a project. This increases when a system is heavily
loaded.

Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
---
 meta/recipes-devtools/pseudo/pseudo.inc    |    8 ++++----
 meta/recipes-devtools/pseudo/pseudo_1.5.bb |   10 ++++++++++
 meta/recipes-devtools/pseudo/pseudo_git.bb |    4 ++--
 3 files changed, 16 insertions(+), 6 deletions(-)
 create mode 100644 meta/recipes-devtools/pseudo/pseudo_1.5.bb

diff --git a/meta/recipes-devtools/pseudo/pseudo.inc b/meta/recipes-devtools/pseudo/pseudo.inc
index 9748d54..3baf3af 100644
--- a/meta/recipes-devtools/pseudo/pseudo.inc
+++ b/meta/recipes-devtools/pseudo/pseudo.inc
@@ -30,9 +30,9 @@ NO32LIBS ??= "1"
 # Compile for the local machine arch...
 do_compile () {
 	if [ "${SITEINFO_BITS}" = "64" ]; then
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
+	  ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
 	else
-	  ${S}/configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
+	  ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
 	fi
 	oe_runmake ${MAKEOPTS}
 }
@@ -51,7 +51,7 @@ do_compile_prepend_class-native () {
 		# built this will fail and be ignored.
 		make ${MAKEOPTS} distclean || :
 
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
+		./configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
 		oe_runmake ${MAKEOPTS} libpseudo
 		# prevent it from removing the lib, but remove everything else
 		make 'LIB=foo' ${MAKEOPTS} distclean 
@@ -63,7 +63,7 @@ do_compile_prepend_class-nativesdk () {
 		# We need the 32-bit libpseudo on a 64-bit machine...
                 # ... and we really, really, hope that the native host is
                 # x86, or else --bits may not work.
-		./configure --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
+		./configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --bits=32 --without-rpath
 		oe_runmake ${MAKEOPTS} libpseudo
 		# prevent it from removing the lib, but remove everything else
 		make 'LIB=foo' ${MAKEOPTS} distclean 
diff --git a/meta/recipes-devtools/pseudo/pseudo_1.5.bb b/meta/recipes-devtools/pseudo/pseudo_1.5.bb
new file mode 100644
index 0000000..66ff646
--- /dev/null
+++ b/meta/recipes-devtools/pseudo/pseudo_1.5.bb
@@ -0,0 +1,10 @@
+require pseudo.inc
+
+PR = "r3"
+
+SRC_URI = "http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "e735bc099f2b9fd6d3f152a8c71e6315"
+SRC_URI[sha256sum] = "41a73c59296b9d48005e0f911dd1becf25ffc3ff4cf4268020f2332efcffbf49"
+
+PSEUDO_EXTRA_OPTS ?= "--enable-force-async"
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index b895d2f..0c872e3 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -1,7 +1,7 @@
 require pseudo.inc
 
-SRCREV = "011b401fb6be38d739215e455588af4dcd707e17"
-PV = "1.4.5+git${SRCPV}"
+SRCREV = "e076225ccdd10dabe3d6097c0682d8c88bd58753"
+PV = "1.5+git${SRCPV}"
 PR = "r0"
 
 DEFAULT_PREFERENCE = "-1"
-- 
1.7.0.4




^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-02-17 23:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-17 23:42 [PATCH 0/1] pseudo 1.5 -- now up to 25% faster! Peter Seebach
2013-02-17 23:42 ` [PATCH 1/1] pseudo.inc: pseudo 1.5 uprev, support extra config flags Peter Seebach

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox