LGTM

On Wed, Feb 19, 2025 at 10:51 AM Fabio Estevam <[email protected]> wrote:
>
> Move the libexecinfo recipe from meta-openembedded to meta-oe.
>
> The motivation for doing this is building mtd-utils 2.3.0 with musl.
>
> Musl requires an external libexecinfo to provide backtrace support.
>
> Signed-off-by: Fabio Estevam <[email protected]>
> ---
> Changes since v2:
> - Use Upstream-Status: Inactive-Upstream. (Alexander)
>
>  meta/conf/distro/include/maintainers.inc      |  1 +
>  .../0001-makefile-Fix-build-on-linux.patch    | 60 ++++++++++++++
>  ...piler-errors-found-with-newer-gcc-cl.patch | 79 +++++++++++++++++++
>  meta/recipes-core/musl/libexecinfo_1.1.bb     | 30 +++++++
>  4 files changed, 170 insertions(+)
>  create mode 100644 
> meta/recipes-core/musl/libexecinfo/0001-makefile-Fix-build-on-linux.patch
>  create mode 100644 
> meta/recipes-core/musl/libexecinfo/0002-execinfo-Fix-compiler-errors-found-with-newer-gcc-cl.patch
>  create mode 100644 meta/recipes-core/musl/libexecinfo_1.1.bb
>
> diff --git a/meta/conf/distro/include/maintainers.inc 
> b/meta/conf/distro/include/maintainers.inc
> index e85a0c9563..c9885e7253 100644
> --- a/meta/conf/distro/include/maintainers.inc
> +++ b/meta/conf/distro/include/maintainers.inc
> @@ -333,6 +333,7 @@ RECIPE_MAINTAINER:pn-libepoxy = "Anuj Mittal 
> <[email protected]>"
>  RECIPE_MAINTAINER:pn-liberation-fonts = "Unassigned 
> <[email protected]>"
>  RECIPE_MAINTAINER:pn-libevdev = "Anuj Mittal <[email protected]>"
>  RECIPE_MAINTAINER:pn-libevent = "Anuj Mittal <[email protected]>"
> +RECIPE_MAINTAINER:pn-libexecinfo = "Khem Raj <[email protected]>"
>  RECIPE_MAINTAINER:pn-libexif = "Unassigned <[email protected]>"
>  RECIPE_MAINTAINER:pn-libfakekey = "Unassigned <[email protected]>"
>  RECIPE_MAINTAINER:pn-libffi = "Unassigned <[email protected]>"
> diff --git 
> a/meta/recipes-core/musl/libexecinfo/0001-makefile-Fix-build-on-linux.patch 
> b/meta/recipes-core/musl/libexecinfo/0001-makefile-Fix-build-on-linux.patch
> new file mode 100644
> index 0000000000..d4894c4256
> --- /dev/null
> +++ 
> b/meta/recipes-core/musl/libexecinfo/0001-makefile-Fix-build-on-linux.patch
> @@ -0,0 +1,60 @@
> +From 910bbc2cb6cc1cfa6deed9d170da02a639902c7c Mon Sep 17 00:00:00 2001
> +From: Khem Raj <[email protected]>
> +Date: Sun, 19 Mar 2017 16:14:54 -0700
> +Subject: [PATCH 1/2] makefile: Fix build on linux
> +
> +Upstream-Status: Inactive-Upstream [no update since 2017, no maintainer: 
> https://www.freshports.org/devel/libexecinfo]
> +Signed-off-by: Khem Raj <[email protected]>
> +---
> + Makefile | 33 +++++++++++++++++----------------
> + 1 file changed, 17 insertions(+), 16 deletions(-)
> +
> +Index: libexecinfo-1.1/Makefile
> +===================================================================
> +--- libexecinfo-1.1.orig/Makefile
> ++++ libexecinfo-1.1/Makefile
> +@@ -23,24 +23,25 @@
> + # SUCH DAMAGE.
> + #
> + # $Id: Makefile,v 1.3 2004/07/19 05:19:55 sobomax Exp $
> ++#
> ++# Linux Makefile by Matt Smith <[email protected]>, 2011/01/04
> +
> +-LIB=  execinfo
> +-
> +-SRCS= stacktraverse.c stacktraverse.h execinfo.c execinfo.h
> +-
> +-INCS= execinfo.h
> +-
> +-SHLIB_MAJOR=  1
> +-SHLIB_MINOR=  0
> +-
> +-NOPROFILE=    yes
> +-
> +-DPADD=                ${LIBM}
> +-LDADD=                -lm
> +-
> +-#WARNS?=      4
> +-
> +-#stacktraverse.c: gen.py
> +-#     ./gen.py > stacktraverse.c
> ++CC?=cc
> ++AR?=ar
> ++EXECINFO_CFLAGS=$(CFLAGS) -O2 -pipe -fno-strict-aliasing -std=gnu99 
> -fstack-protector -c
> ++EXECINFO_LDFLAGS=$(LDFLAGS)
> ++
> ++all: static dynamic
> ++
> ++static:
> ++      $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c
> ++      $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c
> ++      $(AR) rcs libexecinfo.a stacktraverse.o execinfo.o
> ++
> ++dynamic:
> ++      $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) 
> stacktraverse.c -o stacktraverse.So
> ++      $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c 
> -o execinfo.So
> ++      $(CC) -shared -Wl,-soname,libexecinfo.so.1 -o libexecinfo.so.1 
> $(EXECINFO_LDFLAGS) stacktraverse.So execinfo.So
> +
> +-.include <bsd.lib.mk>
> ++clean:
> ++      rm -rf *.o *.So *.a *.so
> diff --git 
> a/meta/recipes-core/musl/libexecinfo/0002-execinfo-Fix-compiler-errors-found-with-newer-gcc-cl.patch
>  
> b/meta/recipes-core/musl/libexecinfo/0002-execinfo-Fix-compiler-errors-found-with-newer-gcc-cl.patch
> new file mode 100644
> index 0000000000..914928d924
> --- /dev/null
> +++ 
> b/meta/recipes-core/musl/libexecinfo/0002-execinfo-Fix-compiler-errors-found-with-newer-gcc-cl.patch
> @@ -0,0 +1,79 @@
> +From 0810817773fb81d7383d2fa8464244c8f79845fb Mon Sep 17 00:00:00 2001
> +From: Khem Raj <[email protected]>
> +Date: Sun, 19 Mar 2017 16:16:18 -0700
> +Subject: [PATCH 2/2] execinfo: Fix compiler errors found with newer gcc/clang
> +
> +Upstream-Status: Inactive-Upstream [no update since 2017, no maintainer: 
> https://www.freshports.org/devel/libexecinfo]
> +Signed-off-by: Khem Raj <[email protected]>
> +---
> + execinfo.c | 19 +++++++++++--------
> + 1 file changed, 11 insertions(+), 8 deletions(-)
> +
> +diff --git a/execinfo.c b/execinfo.c
> +index 906fb14..9448b60 100644
> +--- a/execinfo.c
> ++++ b/execinfo.c
> +@@ -69,7 +69,8 @@ backtrace(void **buffer, int size)
> + char **
> + backtrace_symbols(void *const *buffer, int size)
> + {
> +-    int i, clen, alen, offset;
> ++    size_t clen, alen;
> ++    int i, offset;
> +     char **rval;
> +     char *cp;
> +     Dl_info info;
> +@@ -78,7 +79,6 @@ backtrace_symbols(void *const *buffer, int size)
> +     rval = malloc(clen);
> +     if (rval == NULL)
> +         return NULL;
> +-    (char **)cp = &(rval[size]);
> +     for (i = 0; i < size; i++) {
> +         if (dladdr(buffer[i], &info) != 0) {
> +             if (info.dli_sname == NULL)
> +@@ -92,14 +92,14 @@ backtrace_symbols(void *const *buffer, int size)
> +                    2 +                      /* " <" */
> +                    strlen(info.dli_sname) + /* "function" */
> +                    1 +                      /* "+" */
> +-                   D10(offset) +            /* "offset */
> ++                   10 +                     /* "offset */
> +                    5 +                      /* "> at " */
> +                    strlen(info.dli_fname) + /* "filename" */
> +                    1;                       /* "\0" */
> +             rval = realloc_safe(rval, clen + alen);
> +             if (rval == NULL)
> +                 return NULL;
> +-            snprintf(cp, alen, "%p <%s+%d> at %s",
> ++            snprintf((char *) rval + clen, alen, "%p <%s+%d> at %s",
> +               buffer[i], info.dli_sname, offset, info.dli_fname);
> +         } else {
> +             alen = 2 +                      /* "0x" */
> +@@ -108,12 +108,15 @@ backtrace_symbols(void *const *buffer, int size)
> +             rval = realloc_safe(rval, clen + alen);
> +             if (rval == NULL)
> +                 return NULL;
> +-            snprintf(cp, alen, "%p", buffer[i]);
> ++            snprintf((char *) rval + clen, alen, "%p", buffer[i]);
> +         }
> +-        rval[i] = cp;
> +-        cp += alen;
> ++        rval[i] = (char *) clen;
> ++        clen += alen;
> +     }
> +
> ++    for (i = 0; i < size; i++)
> ++        rval[i] += (long) rval;
> ++
> +     return rval;
> + }
> +
> +@@ -155,6 +158,6 @@ backtrace_symbols_fd(void *const *buffer, int size, int 
> fd)
> +                 return;
> +             snprintf(buf, len, "%p\n", buffer[i]);
> +         }
> +-        write(fd, buf, len - 1);
> ++        write(fd, buf, strlen(buf));
> +     }
> + }
> +--
> +2.12.0
> diff --git a/meta/recipes-core/musl/libexecinfo_1.1.bb 
> b/meta/recipes-core/musl/libexecinfo_1.1.bb
> new file mode 100644
> index 0000000000..3711ceeebd
> --- /dev/null
> +++ b/meta/recipes-core/musl/libexecinfo_1.1.bb
> @@ -0,0 +1,30 @@
> +# Copyright (C) 2017 Khem Raj <[email protected]>
> +# Released under the MIT license (see COPYING.MIT for the terms)
> +
> +SUMMARY = "Library for inspecting program's backtrace"
> +DESCRIPTION = "A quick-n-dirty BSD licensed clone of the GNU libc backtrace 
> facility."
> +HOMEPAGE = "http://www.freshports.org/devel/libexecinfo";
> +LIC_FILES_CHKSUM = 
> "file://execinfo.c;endline=25;md5=85bd3fa4ea9acae5182e29db063fe2e5"
> +LICENSE = "BSD-2-Clause"
> +SECTION = "libs"
> +DEPENDS = ""
> +
> +SRC_URI = "http://distcache.freebsd.org/local-distfiles/itetcu/${BP}.tar.bz2 
> \
> +           file://0001-makefile-Fix-build-on-linux.patch \
> +           
> file://0002-execinfo-Fix-compiler-errors-found-with-newer-gcc-cl.patch \
> +           "
> +SRC_URI[sha256sum] = 
> "c9a21913e7fdac8ef6b33250b167aa1fc0a7b8a175145e26913a4c19d8a59b1f"
> +
> +CFLAGS += "-fno-omit-frame-pointer  -D_GNU_SOURCE"
> +
> +do_install() {
> +    install -D -m 0744 ${S}/execinfo.h ${D}${includedir}/execinfo.h
> +    install -D -m 0744 ${S}/stacktraverse.h ${D}${includedir}/stacktraverse.h
> +    install -D -m 0744 ${B}/libexecinfo.a ${D}${libdir}/libexecinfo.a
> +    install -D -m 0755 ${B}/libexecinfo.so.1 ${D}${libdir}/libexecinfo.so.1
> +    ln -s libexecinfo.so.1 ${D}${libdir}/libexecinfo.so
> +}
> +#
> +# We will skip parsing for non-musl systems
> +#
> +COMPATIBLE_HOST = ".*-musl.*"
> --
> 2.40.1
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#211729): 
https://lists.openembedded.org/g/openembedded-core/message/211729
Mute This Topic: https://lists.openembedded.org/mt/111275284/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to