Skip to contentSkip to conversation

pseudo 1.7.0

PATCH New Peter Seebach 1 participant 2 messages Aug 24, 2015

lore
Share & tools
lore
#0 lore raw

cover pseudo 1.7.0

This patch updates to pseudo 1.7.0. At this point, it does *not* enable the new database behavior by default, because while I can't make it fail anymore, there were some weird behaviors occasionally which I would like reproduce and track down before switching.

It does, however, add the profiling support, and the two easier/simpler changes I made based on profiling results. My experience was that for core-image-base, this cut about 8% off total build time. For tasks like tar extractions, it can be quite a bit better.

Seconds to extract a tarball of a large /usr/include on an SSD-backed laptop:
Clean Over Existing Files
No pseudo 0.463 0.527
Pseudo 1.6.7 1.294 2.102
Pseudo 1.7.0 1.217 1.901
1.7.0+xattrdb 0.790 1.478

The xattrdb code will only work if the user_xattr feature is active on the filesystem the files are on, and will only work with plain files and directories. (Note that nodes which are emulated with plain files will work.)

It is probably worth considering the xattrdb option for heavily-used build servers and the like, but be on the lookout for bugs. (I am super interested in bug reports, especially with reproducers, for that code.)

There are some cases where the underlying-filesystem permissions for files will change in 1.7.0 (usually towards 0600), but there should be no changes in database modes reported.

The tarball has been sent to Michael Halstad, but I don't think it's up on the servers yet. The git build should work, though.

The following changes since commit c38acd720b3f6ffbeb544063692eb471dada8593:

binconfig-disabled: write an message to stderr to help confused developers (2015-08-19 17:57:58 +0100)

are available in the git repository at:

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

Peter Seebach (1):
pseudo_1.7.0.bb: New version of pseudo

 meta/recipes-devtools/pseudo/pseudo_1.7.0.bb | 20 ++++++++++++++++++++
 meta/recipes-devtools/pseudo/pseudo_git.bb   |  4 ++--
 2 files changed, 22 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/pseudo/pseudo_1.7.0.bb
Signature · 1 line
2.3.1
#1 lore raw

PATCH 1/1 pseudo_1.7.0.bb: New version of pseudo

Pseudo 1.7 adds an experimental feature (which I think needs more testing before it becomes the default) allowing the pseudo client to store modes and uid/gid values in extended attributes rather than using the sqlite database. On most Linux-like systems, this works only if the underlying file is a plain file or a directory.

Also added is a profiling feature to allow some amount of reporting on the wall-clock time the client spends in wrappers, processing operations, or in IPC. This feature is not intendeded to be precisely accurate, but gives a good overview of where time is going.

Based on the results from the profiling feature, the client now suppresses OP_OPEN and OP_EXEC messages if the server is not logging messages, and no longer uses constant dynamic allocation and free cycles for canonicalized paths.

There's a few other likely-looking optimizations being considered, but this seemed like a good cutoff for now.

---
 meta/recipes-devtools/pseudo/pseudo_1.7.0.bb | 20 ++++++++++++++++++++
 meta/recipes-devtools/pseudo/pseudo_git.bb   |  4 ++--
 2 files changed, 22 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/pseudo/pseudo_1.7.0.bb
meta/recipes-devtools/pseudo/pseudo_1.7.0.bb new file +20 -0
new file mode 100644
index 0000000..00dce03
@@ -0,0 +1,20 @@
+require pseudo.inc
+
+SRC_URI = " \
+    http://downloads.yoctoproject.org/releases/pseudo/${BPN}-${PV}.tar.bz2 \
+    file://fallback-passwd \
+    file://fallback-group \
+"
+
+
+SRC_URI[md5sum] = "de0fdfb12c76d98d654068ce7d9f9b56"
+SRC_URI[sha256sum] = "5caadb1cad228c0c69e1ecb1af715a6feeefc2dd88b9b726a8d1a5b6db054e7c"
+
+PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback"
+
+do_install_append_class-native () {
+	install -d ${D}${sysconfdir}
+	# The fallback files should never be modified
+	install -m 444 ${WORKDIR}/fallback-passwd ${D}${sysconfdir}/passwd
+	install -m 444 ${WORKDIR}/fallback-group ${D}${sysconfdir}/group
+}
meta/recipes-devtools/pseudo/pseudo_git.bb +2 -2
index aa315d3..6930fd1 100644
@@ -1,7 +1,7 @@
 require pseudo.inc
 
-SRCREV = "db758fb11167c79d9682a17d359568e2a3c4acd5"
-PV = "1.6.5+git${SRCPV}"
+SRCREV = "cbcbe467c147f8c985bd38e34ab9adb72440f539"
+PV = "1.7.0+git${SRCPV}"
 
 DEFAULT_PREFERENCE = "-1"
 
Signature · 1 line
2.3.1