* (v3) [PATCH 0/1] pseudo 1.6.*4*
@ 2015-01-23 2:23 Peter Seebach
2015-01-23 2:23 ` [PATCH 1/1] pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4 Peter Seebach
0 siblings, 1 reply; 3+ messages in thread
From: Peter Seebach @ 2015-01-23 2:23 UTC (permalink / raw)
To: openembedded-core
So, pseudo 1.6.3 had a silly configure bug which could prevent it
from configuring under what turn out to be very common circumstances
if you're not me doing internal development, and very rare circumstances
in my normal pseudo development cycle, and I am not quite sure why
it worked at all in my build tests. Basically, "configure ... --prefix="
needed to specify an *existing* directory, or the configure would fail.
This is now fixed.
The other changes appear to have survived, and the one chown problem that
Mark Hatle ran into turns out to have been a task running outside of pseudo,
not a bug in pseudo itself.
Sorry for the mixup with the configure thing. The issue was a naive test:
if [ "$(cd "$opt_prefix"; pwd)" = "$(pwd)" ]; ...
and this fails if the cd doesn't work because pwd is then just the current
directory.
The reason this test came into existence is that my usual local-dev
habit involves
configure --prefix=~/pseudo/f
("f" being a historical name), and one time I typoed it and it appeared
to configure and build, but "make install" failed strangely.
And my normal dev cycle does include nuking that directory, but I tend
to first configure, *then* nuke that directory, and that works fine.
This Root Cause Analysis was brought to you by the letters D'OH!
The following changes since commit 0bcc01121e928d0be7a0550e500425852c63cf98:
arch-mips.inc: Add the MIPS ABIEXTENSION to toolchain name (2015-01-21 14:28:43 +0000)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib seebs/pseudo_164
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=seebs/pseudo_164
Peter Seebach (1):
pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4
...do_client.c-protect-pwd_lck-against-magic.patch | 56 ----------
..._util-modify-interface-to-pseudo_etc_file.patch | 70 ------------
...nt.c-support-multiple-directories-in-PSEU.patch | 116 --------------------
.../pseudo/{pseudo_1.6.2.bb => pseudo_1.6.4.bb} | 7 +-
meta/recipes-devtools/pseudo/pseudo_git.bb | 4 +-
5 files changed, 4 insertions(+), 249 deletions(-)
delete mode 100644 meta/recipes-devtools/pseudo/pseudo-1.6.2/0001-pseudo_client.c-protect-pwd_lck-against-magic.patch
delete mode 100644 meta/recipes-devtools/pseudo/pseudo-1.6.2/0002-pseudo_util-modify-interface-to-pseudo_etc_file.patch
delete mode 100644 meta/recipes-devtools/pseudo/pseudo-1.6.2/0003-pseudo_client.c-support-multiple-directories-in-PSEU.patch
rename meta/recipes-devtools/pseudo/{pseudo_1.6.2.bb => pseudo_1.6.4.bb} (57%)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/1] pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4
2015-01-23 2:23 (v3) [PATCH 0/1] pseudo 1.6.*4* Peter Seebach
@ 2015-01-23 2:23 ` Peter Seebach
2015-01-23 12:10 ` Burton, Ross
0 siblings, 1 reply; 3+ messages in thread
From: Peter Seebach @ 2015-01-23 2:23 UTC (permalink / raw)
To: openembedded-core
pseudo 1.6.3 merges (with some changes) the changes from
Peter A. Bigot to make --without-fallback-passwd work. It
also adds a proposed fix for Yocto bug #7097, which has
passed the obvious tests I could think of.
pseudo 1.6.4 fixes a silly configure bug introduced with
1.6.3.
[YOCTO: #7097]
Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
---
...do_client.c-protect-pwd_lck-against-magic.patch | 56 ----------
..._util-modify-interface-to-pseudo_etc_file.patch | 70 ------------
...nt.c-support-multiple-directories-in-PSEU.patch | 116 --------------------
.../pseudo/{pseudo_1.6.2.bb => pseudo_1.6.4.bb} | 7 +-
meta/recipes-devtools/pseudo/pseudo_git.bb | 4 +-
5 files changed, 4 insertions(+), 249 deletions(-)
delete mode 100644 meta/recipes-devtools/pseudo/pseudo-1.6.2/0001-pseudo_client.c-protect-pwd_lck-against-magic.patch
delete mode 100644 meta/recipes-devtools/pseudo/pseudo-1.6.2/0002-pseudo_util-modify-interface-to-pseudo_etc_file.patch
delete mode 100644 meta/recipes-devtools/pseudo/pseudo-1.6.2/0003-pseudo_client.c-support-multiple-directories-in-PSEU.patch
rename meta/recipes-devtools/pseudo/{pseudo_1.6.2.bb => pseudo_1.6.4.bb} (57%)
diff --git a/meta/recipes-devtools/pseudo/pseudo-1.6.2/0001-pseudo_client.c-protect-pwd_lck-against-magic.patch b/meta/recipes-devtools/pseudo/pseudo-1.6.2/0001-pseudo_client.c-protect-pwd_lck-against-magic.patch
deleted file mode 100644
index d0c0a27..0000000
--- a/meta/recipes-devtools/pseudo/pseudo-1.6.2/0001-pseudo_client.c-protect-pwd_lck-against-magic.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From e11468a47369596f57c5e99bd0a3dd58b2c6d5e0 Mon Sep 17 00:00:00 2001
-From: "Peter A. Bigot" <pab@pabigot.com>
-Date: Sun, 12 Oct 2014 08:27:14 -0500
-Subject: [PATCH 1/3] pseudo_client.c: protect pwd_lck against magic
-
-While attempting to diagnose unexpected uid/gid assignment I added
---without-passwd-fallback to the pseudo build. This caused build
-failures due to inability to lock /etc/passwd.
-
-Instrumentation revealed that attempts to create the lock file ended up
-with pseudo_etc_file() creating the correct lock name, but the
-subsequent open had an extra PSEUDO_PASSWD directory prefix causing
-it to fail.
-
-Inspection of pseudo_client shows the only other use of PSEUDO_ETC_FILE
-to be protected against magic. Applying the same shield to the
-unprotected calls in pseudo_pwd_lck_{open,close} fixes the issue.
-
-Upstream-Status: Pending
-Signed-off-by: Peter A. Bigot <pab@pabigot.com>
----
- pseudo_client.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/pseudo_client.c b/pseudo_client.c
-index 8deaa1b..442dd19 100644
---- a/pseudo_client.c
-+++ b/pseudo_client.c
-@@ -416,20 +416,24 @@ pseudo_pwd_lck_open(void) {
- }
- }
- pseudo_pwd_lck_close();
-+ pseudo_antimagic();
- pseudo_pwd_lck_fd = PSEUDO_ETC_FILE(".pwd.lock",
- pseudo_pwd_lck_name, O_RDWR | O_CREAT);
-+ pseudo_magic();
- return pseudo_pwd_lck_fd;
- }
-
- int
- pseudo_pwd_lck_close(void) {
- if (pseudo_pwd_lck_fd != -1) {
-+ pseudo_antimagic();
- close(pseudo_pwd_lck_fd);
- if (pseudo_pwd_lck_name) {
- unlink(pseudo_pwd_lck_name);
- free(pseudo_pwd_lck_name);
- pseudo_pwd_lck_name = 0;
- }
-+ pseudo_magic();
- pseudo_pwd_lck_fd = -1;
- return 0;
- } else {
---
-1.8.5.5
-
diff --git a/meta/recipes-devtools/pseudo/pseudo-1.6.2/0002-pseudo_util-modify-interface-to-pseudo_etc_file.patch b/meta/recipes-devtools/pseudo/pseudo-1.6.2/0002-pseudo_util-modify-interface-to-pseudo_etc_file.patch
deleted file mode 100644
index c7006ef..0000000
--- a/meta/recipes-devtools/pseudo/pseudo-1.6.2/0002-pseudo_util-modify-interface-to-pseudo_etc_file.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From f05def2bbd5507084672bc9072ffe0e5101e9b47 Mon Sep 17 00:00:00 2001
-From: "Peter A. Bigot" <pab@pabigot.com>
-Date: Sun, 12 Oct 2014 11:35:57 -0500
-Subject: [PATCH 2/3] pseudo_util: modify interface to pseudo_etc_file
-
-* Make the search directory pointers const: there is no reason why this
- function should be allowed to mutate the directories.
-
-* Change the search directory argument from an array of pointers to a
- pointer-to-pointers to prepare for an upcoming enhancement.
-
-Upstream-Status: Pending
-Signed-off-by: Peter A. Bigot <pab@pabigot.com>
----
- pseudo.h | 2 +-
- pseudo_client.c | 2 +-
- pseudo_util.c | 4 ++--
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/pseudo.h b/pseudo.h
-index 92020e4..05813c1 100644
---- a/pseudo.h
-+++ b/pseudo.h
-@@ -86,7 +86,7 @@ extern int pseudo_logfile(char *defname);
- extern ssize_t pseudo_sys_path_max(void);
- extern ssize_t pseudo_path_max(void);
- #define PSEUDO_PWD_MAX 4096
--extern int pseudo_etc_file(const char *filename, char *realname, int flags, char *path[], int dircount);
-+extern int pseudo_etc_file(const char *filename, char *realname, int flags, const char **search_dirs, int dircount);
- extern void pseudo_stat32_from64(struct stat *, const struct stat64 *);
- extern void pseudo_stat64_from32(struct stat64 *, const struct stat *);
-
-diff --git a/pseudo_client.c b/pseudo_client.c
-index 442dd19..7a4d7fa 100644
---- a/pseudo_client.c
-+++ b/pseudo_client.c
-@@ -93,7 +93,7 @@ gid_t pseudo_egid;
- gid_t pseudo_sgid;
- gid_t pseudo_fgid;
-
--#define PSEUDO_ETC_FILE(filename, realname, flags) pseudo_etc_file(filename, realname, flags, (char *[]) { pseudo_chroot, pseudo_passwd, PSEUDO_PASSWD_FALLBACK }, PSEUDO_PASSWD_FALLBACK ? 3 : 2)
-+#define PSEUDO_ETC_FILE(filename, realname, flags) pseudo_etc_file(filename, realname, flags, (const char *[]) { pseudo_chroot, pseudo_passwd, PSEUDO_PASSWD_FALLBACK }, PSEUDO_PASSWD_FALLBACK ? 3 : 2)
-
- /* helper function to make a directory, just like mkdir -p.
- * Can't use system() because the child shell would end up trying
-diff --git a/pseudo_util.c b/pseudo_util.c
-index e4e1fc8..647d3ad 100644
---- a/pseudo_util.c
-+++ b/pseudo_util.c
-@@ -1264,7 +1264,7 @@ FILE *pseudo_host_etc_group_file = &pseudo_fake_group_file;
- #endif
-
- int
--pseudo_etc_file(const char *file, char *realname, int flags, char *search_dirs[], int dircount) {
-+pseudo_etc_file(const char *file, char *realname, int flags, const char **search_dirs, int dircount) {
- char filename[pseudo_path_max()];
- int rc = -1;
-
-@@ -1280,7 +1280,7 @@ pseudo_etc_file(const char *file, char *realname, int flags, char *search_dirs[]
- return -1;
- }
- for (i = 0; i < dircount; ++i) {
-- char *s = search_dirs[i];
-+ const char *s = search_dirs[i];
- if (!s)
- continue;
- #if PSEUDO_PORT_DARWIN
---
-1.8.5.5
-
diff --git a/meta/recipes-devtools/pseudo/pseudo-1.6.2/0003-pseudo_client.c-support-multiple-directories-in-PSEU.patch b/meta/recipes-devtools/pseudo/pseudo-1.6.2/0003-pseudo_client.c-support-multiple-directories-in-PSEU.patch
deleted file mode 100644
index e6c6284..0000000
--- a/meta/recipes-devtools/pseudo/pseudo-1.6.2/0003-pseudo_client.c-support-multiple-directories-in-PSEU.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 09f04dc36f21c179235109b3dcddce9dda9a8ba8 Mon Sep 17 00:00:00 2001
-From: "Peter A. Bigot" <pab@pabigot.com>
-Date: Sun, 12 Oct 2014 12:17:48 -0500
-Subject: [PATCH 3/3] pseudo_client.c: support multiple directories in
- PSEUDO_PASSWD
-
-For OpenEmbedded it is highly unlikely that using the build host passwd
-file is the right approach. Most packages can be built with a pseudo
-that was configured --without-passwd-fallback, since
-PSEUDO_PASSWD=${STAGING_DIR_TARGET} suffices.
-
-This fails when building images, because image.bbclass (correctly)
-overrides to PSEUDO_PASSWD=${IMAGE_ROOTFS}. However, the rootfs
-/etc/passwd is not created until the post-install phase of base-passwd,
-which is long after a passwd file is required. For example, the smart
-RPM interface wants to look up uid 0 right away. The right solution
-here is to look first in ${IMAGE_ROOTFS}, then fallback to
-a location holding immutable files with the minimum user/group settings
-necessary to successfully get base-passwd onto the target.
-
-Rather than rework pseudo to change PSEUDO_PASSWD_FALLBACK to be a
-run-time rather than compile-time specification, rework the handling of
-PSEUDO_PASSWD so that it is a colon-separated list of directories that
-are processed in order.
-
-Upstream-Status: Pending
-Signed-off-by: Peter A. Bigot <pab@pabigot.com>
----
- pseudo_client.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 49 insertions(+), 1 deletion(-)
-
-diff --git a/pseudo_client.c b/pseudo_client.c
-index 7a4d7fa..b52b86a 100644
---- a/pseudo_client.c
-+++ b/pseudo_client.c
-@@ -75,6 +75,8 @@ int pseudo_umask = 022;
-
- static char **fd_paths = NULL;
- static int nfds = 0;
-+static const char **passwd_paths = NULL;
-+static int npasswd_paths = 0;
- static int messages = 0;
- static struct timeval message_time = { .tv_sec = 0 };
- static int pseudo_inited = 0;
-@@ -93,7 +95,7 @@ gid_t pseudo_egid;
- gid_t pseudo_sgid;
- gid_t pseudo_fgid;
-
--#define PSEUDO_ETC_FILE(filename, realname, flags) pseudo_etc_file(filename, realname, flags, (const char *[]) { pseudo_chroot, pseudo_passwd, PSEUDO_PASSWD_FALLBACK }, PSEUDO_PASSWD_FALLBACK ? 3 : 2)
-+#define PSEUDO_ETC_FILE(filename, realname, flags) pseudo_etc_file(filename, realname, flags, passwd_paths, npasswd_paths)
-
- /* helper function to make a directory, just like mkdir -p.
- * Can't use system() because the child shell would end up trying
-@@ -117,6 +119,42 @@ mkdir_p(char *path) {
- (void) mkdir(path, 0755);
- }
-
-+static int
-+build_passwd_paths(const char **paths)
-+{
-+ int np = 0;
-+
-+ if (pseudo_chroot) {
-+ if (paths) {
-+ paths[np] = pseudo_chroot;
-+ }
-+ ++np;
-+ }
-+ if (pseudo_passwd) {
-+ const char *cp = pseudo_passwd;
-+ const char *next = strchr(cp, ':');
-+ while (next) {
-+ if (paths) {
-+ paths[np] = strndup(cp, next-cp);
-+ }
-+ ++np;
-+ cp = next+1;
-+ next = strchr(cp, ':');
-+ }
-+ if (paths) {
-+ paths[np] = strdup(cp);
-+ }
-+ ++np;
-+ }
-+ if (PSEUDO_PASSWD_FALLBACK) {
-+ if (paths) {
-+ paths[np] = PSEUDO_PASSWD_FALLBACK;
-+ }
-+ ++np;
-+ }
-+ return np;
-+}
-+
- void
- pseudo_init_client(void) {
- char *env;
-@@ -329,6 +367,16 @@ pseudo_init_client(void) {
- }
- free(env);
-
-+ npasswd_paths = build_passwd_paths(NULL);
-+ if (npasswd_paths) {
-+ passwd_paths = malloc(npasswd_paths * sizeof(*passwd_paths));
-+ if (!passwd_paths) {
-+ pseudo_diag("couldn't allocate space for passwd paths.\n");
-+ exit(1);
-+ }
-+ build_passwd_paths(passwd_paths);
-+ }
-+
- pseudo_inited = 1;
- }
- if (!pseudo_disabled)
---
-1.8.5.5
-
diff --git a/meta/recipes-devtools/pseudo/pseudo_1.6.2.bb b/meta/recipes-devtools/pseudo/pseudo_1.6.4.bb
similarity index 57%
rename from meta/recipes-devtools/pseudo/pseudo_1.6.2.bb
rename to meta/recipes-devtools/pseudo/pseudo_1.6.4.bb
index 261c8d3..3d5b1fb 100644
--- a/meta/recipes-devtools/pseudo/pseudo_1.6.2.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_1.6.4.bb
@@ -2,15 +2,12 @@ require pseudo.inc
SRC_URI = " \
http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://0001-pseudo_client.c-protect-pwd_lck-against-magic.patch \
- file://0002-pseudo_util-modify-interface-to-pseudo_etc_file.patch \
- file://0003-pseudo_client.c-support-multiple-directories-in-PSEU.patch \
file://fallback-passwd \
file://fallback-group \
"
-SRC_URI[md5sum] = "4d7b4f9d1b4aafa680ce94a5a9a52f1f"
-SRC_URI[sha256sum] = "c72be92689511ced7c419149c6aaa1b1a9e4dfc6409d1f16ab72cc35bc1e376a"
+SRC_URI[md5sum] = "2fb800c90d643bfce55e1ce5ca67f3b3"
+SRC_URI[sha256sum] = "25a7528f9191f74cceccc08a90c00086f2b3a9f6b900ea419a4f092de9a06775"
PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback"
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 8c6f06a..b505910 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 = "0dc29e7c67f25d0978a7da5cd8965514912c5b36"
-PV = "1.6.2+git${SRCPV}"
+SRCREV = "41389d4279d6a5f694615906217f481605b183b7"
+PV = "1.6.4+git${SRCPV}"
DEFAULT_PREFERENCE = "-1"
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4
2015-01-23 2:23 ` [PATCH 1/1] pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4 Peter Seebach
@ 2015-01-23 12:10 ` Burton, Ross
0 siblings, 0 replies; 3+ messages in thread
From: Burton, Ross @ 2015-01-23 12:10 UTC (permalink / raw)
To: Peter Seebach; +Cc: OE-core
[-- Attachment #1: Type: text/plain, Size: 202 bytes --]
On 23 January 2015 at 02:23, Peter Seebach <peter.seebach@windriver.com>
wrote:
> pseudo 1.6.4 fixes a silly configure bug introduced with
> 1.6.3.
>
Thanks for the quick fix Peter :)
Ross
[-- Attachment #2: Type: text/html, Size: 617 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-01-23 12:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-23 2:23 (v3) [PATCH 0/1] pseudo 1.6.*4* Peter Seebach
2015-01-23 2:23 ` [PATCH 1/1] pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4 Peter Seebach
2015-01-23 12:10 ` Burton, Ross
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox