[OE-core] [PATCH 10/13] busybox: Add config for musl

Khem Raj raj.khem at gmail.com
Wed Dec 9 01:25:48 UTC 2015


> On Dec 8, 2015, at 12:12 AM, Khem Raj <raj.khem at gmail.com> wrote:
> 
> Default config is enabling additional features that dont compile with
> musl so lets disable them for musl case and use posix compliant
> getpwent()

0001-linedit-deluser-use-POSIX-getpwent-instead-of-getpwe.patch is no longer needed after 1.24 upgrade
so I have dropped it from pull request branch.


> 
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> ---
> ...user-use-POSIX-getpwent-instead-of-getpwe.patch | 71 ++++++++++++++++++++++
> meta/recipes-core/busybox/busybox/musl.cfg         | 12 ++++
> meta/recipes-core/busybox/busybox_1.24.1.bb        |  2 +
> 3 files changed, 85 insertions(+)
> create mode 100644 meta/recipes-core/busybox/busybox/0001-linedit-deluser-use-POSIX-getpwent-instead-of-getpwe.patch
> create mode 100644 meta/recipes-core/busybox/busybox/musl.cfg
> 
> diff --git a/meta/recipes-core/busybox/busybox/0001-linedit-deluser-use-POSIX-getpwent-instead-of-getpwe.patch b/meta/recipes-core/busybox/busybox/0001-linedit-deluser-use-POSIX-getpwent-instead-of-getpwe.patch
> new file mode 100644
> index 0000000..4cb9a73
> --- /dev/null
> +++ b/meta/recipes-core/busybox/busybox/0001-linedit-deluser-use-POSIX-getpwent-instead-of-getpwe.patch
> @@ -0,0 +1,71 @@
> +From f47fa75ef19a43848dedb4a2bff79368878362bf Mon Sep 17 00:00:00 2001
> +From: Natanael Copa <ncopa at alpinelinux.org>
> +Date: Tue, 22 Apr 2014 12:41:20 +0000
> +Subject: [PATCH] linedit, deluser: use POSIX getpwent instead of getpwent_r
> +
> +This fixes building with musl libc.
> +
> +Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
> +---
> +Upstream-Status: backport
> +
> + libbb/lineedit.c     | 11 ++++-------
> + loginutils/deluser.c | 11 +++++------
> + 2 files changed, 9 insertions(+), 13 deletions(-)
> +
> +diff --git a/libbb/lineedit.c b/libbb/lineedit.c
> +index 8564307..99e6e2c 100644
> +--- a/libbb/lineedit.c
> ++++ b/libbb/lineedit.c
> +@@ -672,20 +672,17 @@ static char *username_path_completion(char *ud)
> +  */
> + static NOINLINE unsigned complete_username(const char *ud)
> + {
> +-	/* Using _r function to avoid pulling in static buffers */
> +-	char line_buff[256];
> +-	struct passwd pwd;
> +-	struct passwd *result;
> ++	struct passwd *pw;
> + 	unsigned userlen;
> +
> + 	ud++; /* skip ~ */
> + 	userlen = strlen(ud);
> +
> + 	setpwent();
> +-	while (!getpwent_r(&pwd, line_buff, sizeof(line_buff), &result)) {
> ++	while ((pw = getpwent())) {
> + 		/* Null usernames should result in all users as possible completions. */
> +-		if (/*!userlen || */ strncmp(ud, pwd.pw_name, userlen) == 0) {
> +-			add_match(xasprintf("~%s/", pwd.pw_name));
> ++		if (/*!userlen || */ strncmp(ud, pw->pw_name, userlen) == 0) {
> ++			add_match(xasprintf("~%s/", pw->pw_name));
> + 		}
> + 	}
> + 	endpwent();
> +diff --git a/loginutils/deluser.c b/loginutils/deluser.c
> +index e39ac55..d7d9b24 100644
> +--- a/loginutils/deluser.c
> ++++ b/loginutils/deluser.c
> +@@ -73,14 +73,13 @@ int deluser_main(int argc, char **argv)
> + 			if (!member) {
> + 				/* "delgroup GROUP" */
> + 				struct passwd *pw;
> +-				struct passwd pwent;
> + 				/* Check if the group is in use */
> +-#define passwd_buf bb_common_bufsiz1
> +-				while (!getpwent_r(&pwent, passwd_buf, sizeof(passwd_buf), &pw)) {
> +-					if (pwent.pw_gid == gr->gr_gid)
> +-						bb_error_msg_and_die("'%s' still has '%s' as their primary group!", pwent.pw_name, name);
> ++				setpwent();
> ++				while ((pw = getpwent())) {
> ++					if (pw->pw_gid == gr->gr_gid)
> ++						bb_error_msg_and_die("'%s' still has '%s' as their primary group!", pw->pw_name, name);
> + 				}
> +-				//endpwent();
> ++				endpwent();
> + 			}
> + 			pfile = bb_path_group_file;
> + 			if (ENABLE_FEATURE_SHADOWPASSWDS)
> +--
> +1.9.2
> +
> diff --git a/meta/recipes-core/busybox/busybox/musl.cfg b/meta/recipes-core/busybox/busybox/musl.cfg
> new file mode 100644
> index 0000000..facfe85
> --- /dev/null
> +++ b/meta/recipes-core/busybox/busybox/musl.cfg
> @@ -0,0 +1,12 @@
> +# CONFIG_EXTRA_COMPAT is not set
> +# CONFIG_SELINUX is not set
> +# CONFIG_FEATURE_HAVE_RPC is not set
> +# CONFIG_WERROR is not set
> +# CONFIG_FEATURE_SYSTEMD is not set
> +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
> +# CONFIG_PAM is not set
> +# CONFIG_FEATURE_INETD_RPC is not set
> +# CONFIG_SELINUXENABLED is not set
> +# CONFIG_FEATURE_MOUNT_NFS is not set
> +# CONFIG_FEATURE_UTMP is not set
> +
> diff --git a/meta/recipes-core/busybox/busybox_1.24.1.bb b/meta/recipes-core/busybox/busybox_1.24.1.bb
> index 7d2a7b2..7c9e5ea 100644
> --- a/meta/recipes-core/busybox/busybox_1.24.1.bb
> +++ b/meta/recipes-core/busybox/busybox_1.24.1.bb
> @@ -32,12 +32,14 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
>            file://busybox-cross-menuconfig.patch \
>            file://0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch \
>            file://0002-Passthrough-r-to-linker.patch \
> +           file://0001-linedit-deluser-use-POSIX-getpwent-instead-of-getpwe.patch \
>            file://mount-via-label.cfg \
>            file://sha1sum.cfg \
>            file://sha256sum.cfg \
>            file://getopts.cfg \
>            file://resize.cfg \
> "
> +SRC_URI_append_libc-musl = " file://musl.cfg "
> 
> SRC_URI[tarball.md5sum] = "be98a40cadf84ce2d6b05fa41a275c6a"
> SRC_URI[tarball.sha256sum] = "37d03132cc078937360b392170b7a1d0e5b322eee9f57c0b82292a8b1f0afe3d"
> --
> 2.6.3
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 204 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20151208/39228813/attachment-0002.sig>


More information about the Openembedded-core mailing list