From 2323efc7994e60e471579ed7a7ff385f33cc5dba Mon Sep 17 00:00:00 2001 From: Peter Seebach Date: Thu, 22 Jan 2015 20:23:56 -0600 Subject: pseudo_1.6.x.bb/pseudo_git.bb: Pseudo 1.6.4 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] (From OE-Core rev: 67298d4fe6d96692a4e0578a44cc1a0bbf2cdc2b) Signed-off-by: Peter Seebach Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- ...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 --------------------- meta/recipes-devtools/pseudo/pseudo_1.6.2.bb | 22 ---- meta/recipes-devtools/pseudo/pseudo_1.6.4.bb | 19 ++++ meta/recipes-devtools/pseudo/pseudo_git.bb | 4 +- 6 files changed, 21 insertions(+), 266 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 delete mode 100644 meta/recipes-devtools/pseudo/pseudo_1.6.2.bb create mode 100644 meta/recipes-devtools/pseudo/pseudo_1.6.4.bb (limited to 'meta/recipes-devtools/pseudo') 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 d0c0a27e54..0000000000 --- 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 c7006ef6df..0000000000 --- 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 e6c6284a24..0000000000 --- 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.2.bb deleted file mode 100644 index 261c8d3abd..0000000000 --- a/meta/recipes-devtools/pseudo/pseudo_1.6.2.bb +++ /dev/null @@ -1,22 +0,0 @@ -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" - -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 -} diff --git a/meta/recipes-devtools/pseudo/pseudo_1.6.4.bb b/meta/recipes-devtools/pseudo/pseudo_1.6.4.bb new file mode 100644 index 0000000000..3d5b1fbd3e --- /dev/null +++ b/meta/recipes-devtools/pseudo/pseudo_1.6.4.bb @@ -0,0 +1,19 @@ +require pseudo.inc + +SRC_URI = " \ + http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2 \ + file://fallback-passwd \ + file://fallback-group \ +" + +SRC_URI[md5sum] = "2fb800c90d643bfce55e1ce5ca67f3b3" +SRC_URI[sha256sum] = "25a7528f9191f74cceccc08a90c00086f2b3a9f6b900ea419a4f092de9a06775" + +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 +} diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb index 8c6f06ab46..b505910fb5 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" -- cgit v1.2.3-54-g00ecf