Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Khem Raj <raj.khem@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH] systemd-boot: Fix build on musl
Date: Thu, 10 Aug 2023 15:05:27 +0200	[thread overview]
Message-ID: <202308101305271063afd1@mail.local> (raw)
In-Reply-To: <20230809210227.2723296-1-raj.khem@gmail.com>

Hello,

I tested this with the meson/systemd series from Ross and it actually
breaks the build:

https://autobuilder.yoctoproject.org/typhoon/#/builders/64/builds/7581/steps/12/logs/stdio

On 09/08/2023 14:02:27-0700, Khem Raj wrote:
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  .../0001-efi-Use-char16_t-on-musl.patch       | 79 +++++++++++++++++++
>  meta/recipes-core/systemd/systemd-boot_254.bb |  2 +
>  2 files changed, 81 insertions(+)
>  create mode 100644 meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
> 
> diff --git a/meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch b/meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
> new file mode 100644
> index 00000000000..1988d50ac90
> --- /dev/null
> +++ b/meta/recipes-core/systemd/systemd-boot/0001-efi-Use-char16_t-on-musl.patch
> @@ -0,0 +1,79 @@
> +From efe1720de61534c814580fec61fe0025308482b2 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Tue, 8 Aug 2023 00:57:12 -0700
> +Subject: [PATCH] efi: Use char16_t on musl
> +
> +musl does not support configurations with under-sized definitions of
> +types like 16-bit wchar_t or 32-bit off_t. Only the sizes that can
> +represent the full range of values are supported. musl does however
> +have the C11 uchar.h functions which can operate on char16_t, so you
> +could use char16_t and the corresponding c16 conversion functions
> +instead of the wc versions
> +
> +Upstream-Status: Inappropriate [Musl specific]
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +---
> + src/boot/efi/efi-string.c                 | 2 +-
> + src/boot/efi/efi.h                        | 2 ++
> + src/boot/efi/meson.build                  | 1 -
> + src/fundamental/string-util-fundamental.h | 4 ++++
> + 4 files changed, 7 insertions(+), 2 deletions(-)
> +
> +diff --git a/src/boot/efi/efi-string.c b/src/boot/efi/efi-string.c
> +index 4400591255..421b2c262d 100644
> +--- a/src/boot/efi/efi-string.c
> ++++ b/src/boot/efi/efi-string.c
> +@@ -735,7 +735,7 @@ static bool handle_format_specifier(FormatContext *ctx, SpecifierContext *sp) {
> +         case 's':
> +                 if (sp->long_arg) {
> +                         sp->wstr = va_arg(ctx->ap, const wchar_t *) ?: L"(null)";
> +-                        sp->len = wcsnlen(sp->wstr, sp->len);
> ++                        sp->len = wcsnlen((char16_t*)sp->wstr, sp->len);
> +                 } else {
> +                         sp->str = va_arg(ctx->ap, const char *) ?: "(null)";
> +                         sp->len = strnlen8(sp->str, sp->len);
> +diff --git a/src/boot/efi/efi.h b/src/boot/efi/efi.h
> +index 5c34668383..459f675ea5 100644
> +--- a/src/boot/efi/efi.h
> ++++ b/src/boot/efi/efi.h
> +@@ -21,7 +21,9 @@ assert_cc(sizeof(uint8_t) == 1);
> + assert_cc(sizeof(uint16_t) == 2);
> + assert_cc(sizeof(uint32_t) == 4);
> + assert_cc(sizeof(uint64_t) == 8);
> ++#if defined(__linux__) && defined(__GLIBC__)
> + assert_cc(sizeof(wchar_t) == 2);
> ++#endif
> + assert_cc(sizeof(char16_t) == 2);
> + assert_cc(sizeof(char32_t) == 4);
> + assert_cc(sizeof(size_t) == sizeof(void *));
> +diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
> +index 1c52629651..4a64838295 100644
> +--- a/src/boot/efi/meson.build
> ++++ b/src/boot/efi/meson.build
> +@@ -132,7 +132,6 @@ efi_c_args = [
> +         '-DSD_BOOT=1',
> +         '-ffreestanding',
> +         '-fno-strict-aliasing',
> +-        '-fshort-wchar',
> +         '-include', 'efi_config.h',
> + ]
> + 
> +diff --git a/src/fundamental/string-util-fundamental.h b/src/fundamental/string-util-fundamental.h
> +index 9019542b16..1b46f42995 100644
> +--- a/src/fundamental/string-util-fundamental.h
> ++++ b/src/fundamental/string-util-fundamental.h
> +@@ -16,7 +16,11 @@
> + #  define strncmp strncmp16
> + #  define strcasecmp strcasecmp16
> + #  define strncasecmp strncasecmp16
> ++#if defined (__linux__) && !defined(__GLIBC__)
> ++#  define STR_C(str)       (u ## str)
> ++#else
> + #  define STR_C(str)       (L ## str)
> ++#endif
> + typedef char16_t sd_char;
> + #else
> + #  define STR_C(str)       (str)
> +-- 
> +2.41.0
> +
> diff --git a/meta/recipes-core/systemd/systemd-boot_254.bb b/meta/recipes-core/systemd/systemd-boot_254.bb
> index 5d69cf83abc..ae86450d2a6 100644
> --- a/meta/recipes-core/systemd/systemd-boot_254.bb
> +++ b/meta/recipes-core/systemd/systemd-boot_254.bb
> @@ -1,6 +1,8 @@
>  require systemd.inc
>  FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:"
>  
> +SRC_URI:append:libc-musl = " file://0001-efi-Use-char16_t-on-musl.patch "
> +
>  require conf/image-uefi.conf
>  
>  DEPENDS = "intltool-native libcap util-linux gperf-native python3-jinja2-native python3-pyelftools-native"
> -- 
> 2.41.0
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#185718): https://lists.openembedded.org/g/openembedded-core/message/185718
> Mute This Topic: https://lists.openembedded.org/mt/100652047/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


  reply	other threads:[~2023-08-10 13:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-09 21:02 [PATCH] systemd-boot: Fix build on musl Khem Raj
2023-08-10 13:05 ` Alexandre Belloni [this message]
2023-08-10 14:36   ` [OE-core] " Khem Raj
2023-08-10 14:45     ` Khem Raj
2023-08-10 15:01       ` Alexandre Belloni
2023-08-10 16:49         ` Khem Raj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202308101305271063afd1@mail.local \
    --to=alexandre.belloni@bootlin.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox