From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mail.openembedded.org (Postfix) with ESMTP id 9E5DE71F1B for ; Tue, 20 Jan 2015 21:48:41 +0000 (UTC) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga101.jf.intel.com with ESMTP; 20 Jan 2015 13:48:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,437,1418112000"; d="scan'208";a="515069196" Received: from unknown (HELO swold-mobl5.amr.corp.intel.com) ([10.252.252.118]) by orsmga003.jf.intel.com with ESMTP; 20 Jan 2015 13:42:00 -0800 Message-ID: <54BECD36.1040705@linux.intel.com> Date: Tue, 20 Jan 2015 13:48:38 -0800 From: Saul Wold User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Peter Seebach , openembedded-core@lists.openembedded.org References: In-Reply-To: Subject: Re: [PATCH 1/1] pseudo_1.6.2.bb/pseudo_git.bb: Pseudo 1.6.3 X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Jan 2015 21:48:45 -0000 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit On 01/20/2015 01:21 PM, Peter Seebach wrote: > 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. Can you add the [YOCTO #7097] tag so we can track that way. Thanks Sau! > --- > ...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.3.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.3.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" > -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 > ---- > - 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" > -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 > ---- > - 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" > -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 > ---- > - 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.3.bb > similarity index 57% > rename from meta/recipes-devtools/pseudo/pseudo_1.6.2.bb > rename to meta/recipes-devtools/pseudo/pseudo_1.6.3.bb > index 261c8d3..867c255 100644 > --- a/meta/recipes-devtools/pseudo/pseudo_1.6.2.bb > +++ b/meta/recipes-devtools/pseudo/pseudo_1.6.3.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] = "af84506e6ecbd9e112d3573c0f2af6d4" > +SRC_URI[sha256sum] = "2f1ace3475866d26feffa706e1bdf51ce77502091dc670c1ace4dcbb0c544faa" > > 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..3c501e1 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 = "01fed630e636337cfb11bea72c21d45d80a2c10e" > +PV = "1.6.3+git${SRCPV}" > > DEFAULT_PREFERENCE = "-1" > >