diff options
Diffstat (limited to 'meta/recipes-core/musl')
21 files changed, 444 insertions, 95 deletions
diff --git a/meta/recipes-core/musl/bsd-headers.bb b/meta/recipes-core/musl/bsd-headers.bb index cf8af0da3c..887a816031 100644 --- a/meta/recipes-core/musl/bsd-headers.bb +++ b/meta/recipes-core/musl/bsd-headers.bb @@ -27,5 +27,5 @@ do_install() { # COMPATIBLE_HOST = ".*-musl.*" -RDEPENDS:${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" diff --git a/meta/recipes-core/musl/bsd-headers/sys-cdefs.h b/meta/recipes-core/musl/bsd-headers/sys-cdefs.h index 209a623c0f..841a5da8ba 100644 --- a/meta/recipes-core/musl/bsd-headers/sys-cdefs.h +++ b/meta/recipes-core/musl/bsd-headers/sys-cdefs.h @@ -1,3 +1,6 @@ +#ifndef _SYS_CDEFS_H_ +#define _SYS_CDEFS_H_ + #warning usage of non-standard #include <sys/cdefs.h> is deprecated #undef __P @@ -24,3 +27,8 @@ # define __THROW # define __NTH(fct) fct #endif + +#define __CONCAT(x,y) x ## y +#define __STRING(x) #x + +#endif /* _SYS_CDEFS_H_ */ diff --git a/meta/recipes-core/musl/gcompat/0001-Add-fcntl64-wrapper.patch b/meta/recipes-core/musl/gcompat/0001-Add-fcntl64-wrapper.patch new file mode 100644 index 0000000000..3f265e273a --- /dev/null +++ b/meta/recipes-core/musl/gcompat/0001-Add-fcntl64-wrapper.patch @@ -0,0 +1,44 @@ +From 37f70f54c74c4ceeb089cbee88311ba00638f211 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 13 Oct 2023 21:02:23 -0700 +Subject: [PATCH] Add fcntl64 wrapper + +fixes loadtime errors with pvr precompiled driver for visionfive2 + +load libpvr_dri_support.so: Error relocating /usr/lib/libpvr_dri_support.so: fcntl64: symbol not found + +Upstream-Status: Submitted [https://git.adelielinux.org/adelie/gcompat/-/merge_requests/28] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + libgcompat/unistd.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/libgcompat/unistd.c b/libgcompat/unistd.c +index 011fba2..400abf3 100644 +--- a/libgcompat/unistd.c ++++ b/libgcompat/unistd.c +@@ -1,6 +1,7 @@ + #include <assert.h> /* assert */ + #include <fcntl.h> /* O_CREAT */ + #include <limits.h> /* NGROUPS_MAX */ ++#include <stdarg.h> /* va_list, va_start, va_end */ + #include <stddef.h> /* NULL, size_t */ + #include <unistd.h> /* confstr, getcwd, getgroups, ... */ + #include <errno.h> /* ENOSYS, ENOMEM */ +@@ -250,3 +251,13 @@ int __close(int fd) + { + return close(fd); + } ++ ++int fcntl64 (int fd, int cmd, ...) ++{ ++ int ret; ++ va_list ap; ++ va_start(ap, cmd); ++ ret = fcntl(fd, cmd, ap); ++ va_end(ap); ++ return ret; ++} +-- +2.42.0 + diff --git a/meta/recipes-core/musl/gcompat/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch b/meta/recipes-core/musl/gcompat/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch new file mode 100644 index 0000000000..1d731163d0 --- /dev/null +++ b/meta/recipes-core/musl/gcompat/0001-make-Static-PIE-does-not-work-on-musl-ppc.patch @@ -0,0 +1,30 @@ +From 01180e78fe9568e7fb2673ba61801c42f0f70115 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 11 Mar 2022 10:37:51 -0800 +Subject: [PATCH] make: Static PIE does not work on musl/ppc + +Fixes linker error e.g. +"read-only segment has dynamic relocations" + +Upstream-Status: Inappropriate [OE specific] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index cbb7634..69ee228 100644 +--- a/Makefile ++++ b/Makefile +@@ -76,7 +76,7 @@ ${LIBGCOMPAT_NAME}: ${LIBGCOMPAT_OBJ} + ${LIBGCOMPAT_OBJ}: ${LIBGCOMPAT_INCLUDE} + + ${LOADER_NAME}: ${LOADER_OBJ} +- ${CC} ${CFLAGS} ${LDFLAGS} -static-pie -o ${LOADER_NAME} ${LOADER_OBJ} ++ ${CC} ${CFLAGS} ${LDFLAGS} -static -o ${LOADER_NAME} ${LOADER_OBJ} + + .c.o: + ${CC} ${CPPFLAGS} ${CFLAGS} -c -D_BSD_SOURCE \ +-- +2.35.1 + diff --git a/meta/recipes-core/musl/gcompat_git.bb b/meta/recipes-core/musl/gcompat_git.bb index 6e5cc11d5d..40fe8c6a5f 100644 --- a/meta/recipes-core/musl/gcompat_git.bb +++ b/meta/recipes-core/musl/gcompat_git.bb @@ -5,12 +5,16 @@ SUMMARY = "A library which provides glibc-compatible APIs for use on musl libc s HOMEPAGE = "https://git.adelielinux.org/adelie/gcompat" LICENSE = "NCSA" -LIC_FILES_CHKSUM = "file://LICENSE;md5=eb33ef4af05a9c7602843afb7adfe792" +LIC_FILES_CHKSUM = "file://LICENSE;md5=802b1aed7330d90086be4de63a3188e3" -SRC_URI = "git://git.adelielinux.org/adelie/gcompat.git;protocol=https;branch=current" - -PV = "1.0.0+1.1+git${SRCPV}" -SRCREV = "af5a49e489fdc04b9cf02547650d7aeaccd43793" +SRC_URI = "git://git.adelielinux.org/adelie/gcompat.git;protocol=https;branch=current \ + file://0001-Add-fcntl64-wrapper.patch \ + " +SRC_URI:append:powerpc = "\ + file://0001-make-Static-PIE-does-not-work-on-musl-ppc.patch \ + " +PV = "1.1.0" +SRCREV = "b7bfe0b08c52fdc72e0c1d9d4dcb2129f1642bd6" S = "${WORKDIR}/git" @@ -34,14 +38,16 @@ do_compile () { } do_install () { - oe_runmake install 'DESTDIR=${D}' + oe_runmake install 'DESTDIR=${D}${root_prefix}' if [ "${SITEINFO_BITS}" = "64" ]; then - install -d ${D}/lib64 - lnr ${D}${GLIBC_LDSO} ${D}/lib64/`basename ${GLIBC_LDSO}` + install -d ${D}${nonarch_base_libdir}${SITEINFO_BITS} + ln -rs ${D}${GLIBC_LDSO} ${D}${nonarch_base_libdir}${SITEINFO_BITS}/`basename ${GLIBC_LDSO}` fi + install -d ${D}${libdir} + ln -sf ${base_libdir}/libgcompat.so.0 ${D}${libdir}/libgcompat.so } -FILES:${PN} += "/lib64" +FILES:${PN} += "${nonarch_base_libdir}${SITEINFO_BITS}" INSANE_SKIP:${PN} = "libdir" diff --git a/meta/recipes-core/musl/libc-test/run-libc-ptests b/meta/recipes-core/musl/libc-test/run-libc-ptests new file mode 100644 index 0000000000..0b4b687dec --- /dev/null +++ b/meta/recipes-core/musl/libc-test/run-libc-ptests @@ -0,0 +1,28 @@ +#!/bin/sh + +set -e + +cd /opt/libc-test +make cleanall +make run || true + +echo "" +echo "--- ptest result ---" +# libc-test runs tests by module(e.g. src/api) and generates sub-module test +# report(e.g. src/api/REPORT) first. After all tests finish, it generates the +# consolidated report file src/REPORT. +report="/opt/libc-test/src/REPORT" +if ! [ -f "${report}" ]; then + echo "${report} not found!" + echo "FAIL: libc-test" + exit 1 +# libc-test prints error on failure and prints nothing on success. +elif grep -q '^FAIL src.*\.exe.*' "${report}"; then + # Print test failure in ptest format. + # e.g. "FAIL src/api/main.exe [status 1]" -> "FAIL: api_main" + grep '^FAIL src.*\.exe.*' "${report}" \ + | sed 's|^FAIL src/|FAIL: |;s|/|_|;s|\.exe.*\]||' + exit 1 +else + echo "PASS: libc-test" +fi diff --git a/meta/recipes-core/musl/libc-test/run-ptest b/meta/recipes-core/musl/libc-test/run-ptest new file mode 100644 index 0000000000..53cd34f506 --- /dev/null +++ b/meta/recipes-core/musl/libc-test/run-ptest @@ -0,0 +1,3 @@ +#!/bin/sh +chown -R ptest:ptest /opt/libc-test + su -c ./run-libc-ptests ptest diff --git a/meta/recipes-core/musl/libc-test_git.bb b/meta/recipes-core/musl/libc-test_git.bb new file mode 100644 index 0000000000..619a959fd2 --- /dev/null +++ b/meta/recipes-core/musl/libc-test_git.bb @@ -0,0 +1,57 @@ +SUMMARY = "Musl libc unit tests" +HOMEPAGE = "https://wiki.musl-libc.org/libc-test.html" +DESCRIPTION = "libc-test is a collection of unit tests to measure the \ +correctness and robustness of a C/POSIX standard library implementation. It is \ +developed as part of the musl project." +SECTION = "tests" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=43ed1245085be90dc934288117d55a3b" + +inherit ptest + +SRCREV = "18e28496adee3d84fefdda6efcb9c5b8996a2398" +SRC_URI = " \ + git://repo.or.cz/libc-test;branch=master;protocol=https \ + file://run-ptest \ + file://run-libc-ptests \ +" + +PV = "0+git" + +S = "${WORKDIR}/git" + +# libc-test 'make' or 'make run' command is designed to build and run tests. It +# reports both build and test failures. The commands should be run on target. +do_compile() { + : +} + +RDEPENDS:${PN} = " \ + bash \ + grep \ + musl \ + packagegroup-core-buildessential \ +" + +RDEPENDS:${PN}-ptest = " \ + ${PN} \ + musl-staticdev \ + sed \ +" + +install_path = "/opt/${PN}" +FILES:${PN} += "${install_path}/*" + +do_install () { + install -d ${D}${install_path}/ + cp ${S}/Makefile ${D}${install_path} + cp ${S}/config.mak.def ${D}${install_path}/config.mak + cp -r ${S}/src ${D}${install_path} +} + +do_install_ptest_base:append() { + install -Dm 0755 ${WORKDIR}/run-libc-ptests ${D}${PTEST_PATH}/run-libc-ptests +} + +COMPATIBLE_HOST = "null" +COMPATIBLE_HOST:libc-musl = "(.*)" diff --git a/meta/recipes-core/musl/libssp-nonshared.bb b/meta/recipes-core/musl/libssp-nonshared.bb index 748dacf312..3faf8f00c3 100644 --- a/meta/recipes-core/musl/libssp-nonshared.bb +++ b/meta/recipes-core/musl/libssp-nonshared.bb @@ -31,5 +31,5 @@ do_install() { # COMPATIBLE_HOST = ".*-musl.*" RDEPENDS:${PN}-staticdev = "" -RDEPENDS:${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" RRECOMMENDS:${PN}-dbg = "${PN}-staticdev (= ${EXTENDPKGV})" diff --git a/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch b/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch deleted file mode 100644 index 1fdc9f739d..0000000000 --- a/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch +++ /dev/null @@ -1,49 +0,0 @@ -From a530eed9e7e6872e10fe92efaf1e9739471c30ca Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sun, 30 May 2021 08:30:28 -0700 -Subject: [PATCH] meson: Add option to pass cpu - -This helps with cross compile setups, where host_cpu != target_cpu -therefore detecting it on the fly will end up with wrong cpu to build -for - -Upstream-Status: Submitted [https://github.com/kaniini/libucontext/pull/28] -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - meson.build | 6 +++++- - meson_options.txt | 4 +++- - 2 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/meson.build b/meson.build -index e863780..2b4bdbd 100644 ---- a/meson.build -+++ b/meson.build -@@ -6,7 +6,11 @@ project( - version : run_command('head', files('VERSION')).stdout() - ) - --cpu = host_machine.cpu_family() -+cpu = get_option('cpu') -+if cpu == '' -+ cpu = host_machine.cpu_family() -+endif -+ - if cpu == 'sh4' - cpu = 'sh' - endif -diff --git a/meson_options.txt b/meson_options.txt -index d4201d1..864d83c 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -1,4 +1,6 @@ - option('freestanding', type : 'boolean', value : false, - description: 'Do not use system headers') - option('export_unprefixed', type : 'boolean', value : true, -- description: 'Export POSIX 2004 ucontext names as alises') -\ No newline at end of file -+ description: 'Export POSIX 2004 ucontext names as alises') -+option('cpu', type : 'string', value : '', -+ description: 'Target CPU architecture for cross compile') --- -2.31.1 - diff --git a/meta/recipes-core/musl/libucontext_git.bb b/meta/recipes-core/musl/libucontext_1.2.bb index d8ae8242c5..4e34df1439 100644 --- a/meta/recipes-core/musl/libucontext_git.bb +++ b/meta/recipes-core/musl/libucontext_1.2.bb @@ -4,14 +4,12 @@ SUMMARY = "ucontext implementation featuring glibc-compatible ABI" HOMEPAGE = "https://github.com/kaniini/libucontext" LICENSE = "ISC" -LIC_FILES_CHKSUM = "file://LICENSE;md5=6eed01fa0e673c76f5a5715438f65b1d" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ebea527af0602d509b7f4c49533fb1bd" SECTION = "libs" DEPENDS = "" -PV = "1.1+${SRCPV}" -SRCREV = "335ee864ef6f4a5d4b525453fd9dbfb3507cfecc" -SRC_URI = "git://github.com/kaniini/libucontext \ - file://0001-meson-Add-option-to-pass-cpu.patch \ +SRCREV = "4dde3417b4bb4b1b1545bd913be337680b5e28c3" +SRC_URI = "git://github.com/kaniini/libucontext;branch=master;protocol=https \ " S = "${WORKDIR}/git" diff --git a/meta/recipes-core/musl/musl-legacy-error.bb b/meta/recipes-core/musl/musl-legacy-error.bb new file mode 100644 index 0000000000..5ce5a233ab --- /dev/null +++ b/meta/recipes-core/musl/musl-legacy-error.bb @@ -0,0 +1,26 @@ +# Copyright (C) 2023 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "error API GNU extention implementation" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://error.h;beginline=1;md5=2ee396b23e8507fbf8f98af0471a77c6" +SECTION = "devel" + +SRC_URI = "file://error.h" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +INHIBIT_DEFAULT_DEPS = "1" + +S = "${WORKDIR}" + +do_install() { + install -Dm 0644 ${S}/error.h -t ${D}${includedir} +} +# +# We will skip parsing for non-musl systems +# +COMPATIBLE_HOST = ".*-musl.*" +DEV_PKG_DEPENDENCY = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" diff --git a/meta/recipes-core/musl/musl-legacy-error/error.h b/meta/recipes-core/musl/musl-legacy-error/error.h new file mode 100644 index 0000000000..9a4e1f8d00 --- /dev/null +++ b/meta/recipes-core/musl/musl-legacy-error/error.h @@ -0,0 +1,60 @@ +#ifndef _ERROR_H_ +#define _ERROR_H_ + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#warning usage of non-standard #include <error.h> is deprecated + +static unsigned int error_message_count = 0; + +static inline void error(int status, int errnum, const char* format, ...) +{ + /* should be fflush(stdout), but that's unspecified if stdout has been closed; + * stick with fflush(NULL) for simplicity (glibc checks if the fd is still valid) */ + fflush(NULL); + + va_list ap; + fprintf(stderr, "%s: ", program_invocation_name); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + fprintf(stderr, "\n"); + error_message_count++; + if (status) + exit(status); +} + +static int error_one_per_line = 0; + +static inline void error_at_line(int status, int errnum, const char *filename, + unsigned int linenum, const char *format, ...) +{ + va_list ap; + if (error_one_per_line) { + static const char *old_filename; + static int old_linenum; + if (linenum == old_linenum && filename == old_filename) + return; + old_filename = filename; + old_linenum = linenum; + } + fprintf(stderr, "%s: %s:%u: ", program_invocation_name, filename, linenum); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + fprintf(stderr, "\n"); + error_message_count++; + if (status) + exit(status); +} + + +#endif /* _ERROR_H_ */ diff --git a/meta/recipes-core/musl/musl-locales_git.bb b/meta/recipes-core/musl/musl-locales_git.bb new file mode 100644 index 0000000000..1373c60daf --- /dev/null +++ b/meta/recipes-core/musl/musl-locales_git.bb @@ -0,0 +1,85 @@ +# Copyright (C) 2022 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) +# +SUMMARY = "Locales support for musl" +HOMEPAGE = "https://git.adelielinux.org/adelie/musl-locales/-/wikis/home" +LICENSE = "MIT & LGPL-3.0-or-later" +LIC_FILES_CHKSUM = "file://LICENSE;md5=cf5713fba707073020b1db2acaa73e78 \ + file://LICENSE.MIT;md5=a4f1c6864a83ddf4b754cdab7d593523" + +SRC_URI = "git://git.adelielinux.org/adelie/musl-locales;protocol=https;branch=main" + +PV = "1.0+git" +SRCREV = "5663f5bfd30bf9e1e0ba3fc5fe2da6725969f30e" + +S = "${WORKDIR}/git" + +DEPENDS = "virtual/libintl gettext-native" + +PROVIDES = "virtual/libc-locale" + +inherit cmake + +# We will skip parsing for non-musl systems +python () { + if d.getVar('TCLIBC') != "musl": + raise bb.parse.SkipRecipe("Only use it with Musl C library") +} + +# only locale binaries are under GPL-3.0-or-later others are MIT +LICENSE:${PN} = "LGPL-3.0-or-later" +LICENSE:locale-base-cs-cz = "MIT" +LICENSE:locale-base-de-ch = "MIT" +LICENSE:locale-base-de-de = "MIT" +LICENSE:locale-base-en-gb = "MIT" +LICENSE:locale-base-en-us = "MIT" +LICENSE:locale-base-es-es = "MIT" +LICENSE:locale-base-fi-fi = "MIT" +LICENSE:locale-base-fr-ca = "MIT" +LICENSE:locale-base-fr-fr = "MIT" +LICENSE:locale-base-it-it = "MIT" +LICENSE:locale-base-nb-no = "MIT" +LICENSE:locale-base-nl-nl = "MIT" +LICENSE:locale-base-pt-br = "MIT" +LICENSE:locale-base-pt-pt = "MIT" +LICENSE:locale-base-ru-ru = "MIT" +LICENSE:locale-base-sr-rs = "MIT" +LICENSE:locale-base-sv-se = "MIT" + +PACKAGES =+ "locale-base-cs-cz \ + locale-base-de-ch \ + locale-base-de-de \ + locale-base-en-gb \ + locale-base-en-us \ + locale-base-es-es \ + locale-base-fi-fi \ + locale-base-fr-ca \ + locale-base-fr-fr \ + locale-base-it-it \ + locale-base-nb-no \ + locale-base-nl-nl \ + locale-base-pt-br \ + locale-base-pt-pt \ + locale-base-ru-ru \ + locale-base-sr-rs \ + locale-base-sv-se \ + " +FILES:locale-base-cs-cz += "${datadir}/i18n/locales/musl/cs_CZ.UTF-8" +FILES:locale-base-de-ch += "${datadir}/i18n/locales/musl/de_CH.UTF-8" +FILES:locale-base-de-de += "${datadir}/i18n/locales/musl/de_DE.UTF-8" +FILES:locale-base-en-gb += "${datadir}/i18n/locales/musl/en_GB.UTF-8" +FILES:locale-base-en-us += "${datadir}/i18n/locales/musl/en_US.UTF-8" +FILES:locale-base-es-es += "${datadir}/i18n/locales/musl/es_ES.UTF-8" +FILES:locale-base-fi-fi += "${datadir}/i18n/locales/musl/fi_FI.UTF-8" +FILES:locale-base-fr-ca += "${datadir}/i18n/locales/musl/fr_CA.UTF-8" +FILES:locale-base-fr-fr += "${datadir}/i18n/locales/musl/fr_FR.UTF-8" +FILES:locale-base-it-it += "${datadir}/i18n/locales/musl/it_IT.UTF-8" +FILES:locale-base-nb-no += "${datadir}/i18n/locales/musl/nb_NO.UTF-8" +FILES:locale-base-nl-nl += "${datadir}/i18n/locales/musl/nl_NL.UTF-8" +FILES:locale-base-pt-br += "${datadir}/i18n/locales/musl/pt_BR.UTF-8" +FILES:locale-base-pt-pt += "${datadir}/i18n/locales/musl/pt_PT.UTF-8" +FILES:locale-base-ru-ru += "${datadir}/i18n/locales/musl/ru_RU.UTF-8" +FILES:locale-base-sr-rs += "${datadir}/i18n/locales/musl/sr_RS.UTF-8" +FILES:locale-base-sv-se += "${datadir}/i18n/locales/musl/sv_SE.UTF-8" + +UPSTREAM_CHECK_COMMITS = "1" diff --git a/meta/recipes-core/musl/musl-obstack.bb b/meta/recipes-core/musl/musl-obstack.bb index 3003935fe5..4c71a141b2 100644 --- a/meta/recipes-core/musl/musl-obstack.bb +++ b/meta/recipes-core/musl/musl-obstack.bb @@ -4,13 +4,13 @@ SUMMARY = "A standalone library to implement GNU libc's obstack" DESCRIPTION = "copy + paste of the obstack functions and macros found in GNU gcc libiberty library for use with musl libc" HOMEPAGE = "https://github.com/pullmoll/musl-obstack" -LICENSE = "GPL-2.0+" +LICENSE = "GPL-2.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=3d23e4eef8243efcaab6f0a438078932" SECTION = "libs" -PV = "1.1" -SRCREV = "d2ad66b0df44a4b784956f7f7f2717131ddc05f4" -SRC_URI = "git://github.com/pullmoll/musl-obstack" +PV = "1.2.3" +SRCREV = "f4385255be1615688c6a5f042277304d7ab288b1" +SRC_URI = "git://github.com/void-linux/musl-obstack;branch=master;protocol=https" UPSTREAM_CHECK_COMMITS = "1" diff --git a/meta/recipes-core/musl/musl-utils.bb b/meta/recipes-core/musl/musl-utils.bb index 4f99d4324f..8280333daf 100644 --- a/meta/recipes-core/musl/musl-utils.bb +++ b/meta/recipes-core/musl/musl-utils.bb @@ -1,9 +1,9 @@ # Copyright (C) 2018 Khem Raj <raj.khem@gmail.com> # Released under the MIT license (see COPYING.MIT for the terms) -DESCRIPTION = "getconf, getent and iconv implementations for musl" +SUMMARY = "getconf, getent and iconv implementations for musl" HOMEPAGE = "https://git.alpinelinux.org/cgit/aports/tree/main/musl" -LICENSE = "BSD-2-Clause & GPL-2.0+" +LICENSE = "BSD-2-Clause & GPL-2.0-or-later" LIC_FILES_CHKSUM = "file://LICENSE;md5=9d08215e611db87b357e8674b4b42564" SECTION = "utils" @@ -11,7 +11,7 @@ SECTION = "utils" PV = "20170421" SRCREV = "fb5630138ccabbbc14a19d372096a04e42573c7d" -SRC_URI = "git://github.com/boltlinux/musl-utils" +SRC_URI = "git://github.com/boltlinux/musl-utils;branch=master;protocol=https" UPSTREAM_CHECK_COMMITS = "1" diff --git a/meta/recipes-core/musl/musl.inc b/meta/recipes-core/musl/musl.inc index 66468e92ff..6ca52b186a 100644 --- a/meta/recipes-core/musl/musl.inc +++ b/meta/recipes-core/musl/musl.inc @@ -25,6 +25,9 @@ MIPS_INSTRUCTION_SET = "mips" ARM_INSTRUCTION_SET:armv5 = "arm" ARM_INSTRUCTION_SET:armv4 = "arm" +# 1.2.4 doesn't support riscv32 +COMPATIBLE_HOST:riscv32 = "null" + # Enable out of tree build B = "${WORKDIR}/build" diff --git a/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch b/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch index ba00efe7b3..8b097f3276 100644 --- a/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch +++ b/meta/recipes-core/musl/musl/0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch @@ -1,7 +1,7 @@ -From 0ec74744a4cba7c5fdfaa2685995119a4fca0260 Mon Sep 17 00:00:00 2001 +From f95b6fd0475a95c00e886219271cb5c93838e3c3 Mon Sep 17 00:00:00 2001 From: Amarnath Valluri <amarnath.valluri@intel.com> Date: Wed, 18 Jan 2017 16:14:37 +0200 -Subject: [PATCH] Make dynamic linker a relative symlink to libc +Subject: [PATCH 1/2] Make dynamic linker a relative symlink to libc absolute symlink into $(libdir) fails to load in a cross build environment, especially when executing qemu in usermode to run target @@ -13,18 +13,19 @@ V2: Make use of 'ln -r' to create relative symlinks, as most fo the distros shipping coreutils 8.16+ +Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com> --- -Upstream-Status: Pending ---- Makefile | 2 +- tools/install.sh | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) +diff --git a/Makefile b/Makefile +index e8cc4436..466d9afd 100644 --- a/Makefile +++ b/Makefile -@@ -210,7 +210,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc +@@ -210,7 +210,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/include/% $(INSTALL) -D -m 644 $< $@ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so @@ -33,6 +34,8 @@ Upstream-Status: Pending install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),) +diff --git a/tools/install.sh b/tools/install.sh +index d913b60b..b6a7f797 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -6,18 +6,20 @@ @@ -58,7 +61,7 @@ Upstream-Status: Pending m) mode=$OPTARG ;; ?) usage ;; esac -@@ -48,7 +50,7 @@ trap 'rm -f "$tmp"' EXIT INT QUIT TERM H +@@ -48,7 +50,7 @@ trap 'rm -f "$tmp"' EXIT INT QUIT TERM HUP umask 077 if test "$symlink" ; then @@ -67,3 +70,6 @@ Upstream-Status: Pending else cat < "$1" > "$tmp" chmod "$mode" "$tmp" +-- +2.37.2 + diff --git a/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch b/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch index 0aeb5eb5c2..59bfae5a27 100644 --- a/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch +++ b/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch @@ -1,7 +1,8 @@ -From 5a2886f81dbca3f2ed28eebe7d27d471da278db8 Mon Sep 17 00:00:00 2001 +From 3cce8716c6c3ae2e0c835caeac3780ec35090b2d Mon Sep 17 00:00:00 2001 From: Serhey Popovych <serhe.popovych@gmail.com> Date: Tue, 11 Dec 2018 05:44:20 -0500 -Subject: [PATCH] ldso: Use syslibdir and libdir as default pathes to libdirs +Subject: [PATCH 2/2] ldso: Use syslibdir and libdir as default pathes to + libdirs In absence of /etc/ld-musl-$(ARCH).path ldso uses default path to search libraries /lib:/usr/local/lib:/usr/lib. @@ -20,6 +21,8 @@ Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com> ldso/dynlink.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) +diff --git a/Makefile b/Makefile +index 466d9afd..d2f458fa 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,8 @@ CFLAGS_AUTO = -Os -pipe @@ -32,6 +35,8 @@ Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com> CFLAGS_ALL += $(CPPFLAGS) $(CFLAGS_AUTO) $(CFLAGS) LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS) +diff --git a/ldso/dynlink.c b/ldso/dynlink.c +index cc677952..b0e8815b 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -29,6 +29,8 @@ @@ -40,10 +45,10 @@ Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com> +#define SYS_PATH_DFLT SYSLIBDIR ":" LIBDIR + - static void error(const char *, ...); - - #define MAXP2(a,b) (-(-(a)&-(b))) -@@ -1094,7 +1096,7 @@ static struct dso *load_library(const ch + static void error_impl(const char *, ...); + static void error_noop(const char *, ...); + static void (*error)(const char *, ...) = error_noop; +@@ -1097,7 +1099,7 @@ static struct dso *load_library(const char *name, struct dso *needed_by) sys_path = ""; } } @@ -52,3 +57,6 @@ Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com> fd = path_open(name, sys_path, buf, sizeof buf); } pathname = buf; +-- +2.37.2 + diff --git a/meta/recipes-core/musl/musl/0003-elf.h-add-typedefs-for-Elf64_Relr-and-Elf32_Relr.patch b/meta/recipes-core/musl/musl/0003-elf.h-add-typedefs-for-Elf64_Relr-and-Elf32_Relr.patch new file mode 100644 index 0000000000..45d40cd5b4 --- /dev/null +++ b/meta/recipes-core/musl/musl/0003-elf.h-add-typedefs-for-Elf64_Relr-and-Elf32_Relr.patch @@ -0,0 +1,37 @@ +From 65b0ac0d998bf0f36924a7c27ed9e702b2a5a453 Mon Sep 17 00:00:00 2001 +From: Violet Purcell <vimproved@inventati.org> +Date: Sat, 4 Nov 2023 12:09:20 -0400 +Subject: [PATCH] elf.h: add typedefs for Elf64_Relr and Elf32_Relr + +These were overlooked when DT_RELR was added in commit +d32dadd60efb9d3b255351a3b532f8e4c3dd0db1, potentially breaking +software that treats presence of the DT_RELR macro as implying they +exist. + +Upstream-Status: Backport [1.2.5] + +Signed-off-by: Zang Ruochen <zangruochen@loongson.cn> + +--- + include/elf.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/include/elf.h b/include/elf.h +index 23f2c4bc..72d17c3a 100644 +--- a/include/elf.h ++++ b/include/elf.h +@@ -558,6 +558,11 @@ typedef struct { + + + ++typedef Elf32_Word Elf32_Relr; ++typedef Elf64_Xword Elf64_Relr; ++ ++ ++ + #define ELF32_R_SYM(val) ((val) >> 8) + #define ELF32_R_TYPE(val) ((val) & 0xff) + #define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) +-- +2.25.1 + diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb index 06b0e060d0..324269a968 100644 --- a/meta/recipes-core/musl/musl_git.bb +++ b/meta/recipes-core/musl/musl_git.bb @@ -4,17 +4,16 @@ require musl.inc inherit linuxloader -SRCREV = "3f701faace7addc75d16dea8a6cd769fa5b3f260" +SRCREV = "79bdacff83a6bd5b70ff5ae5eb8b6de82c2f7c30" -BASEVER = "1.2.2" +BASEVER = "1.2.4" -PV = "${BASEVER}+git${SRCPV}" +PV = "${BASEVER}+git" -# mirror is at git://github.com/kraj/musl.git - -SRC_URI = "git://git.musl-libc.org/musl \ +SRC_URI = "git://git.etalabs.net/git/musl;branch=master;protocol=https \ file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \ file://0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch \ + file://0003-elf.h-add-typedefs-for-Elf64_Relr-and-Elf32_Relr.patch \ " S = "${WORKDIR}/git" @@ -49,7 +48,7 @@ CONFIGUREOPTS = " \ --bindir=${bindir} \ --libdir=${libdir} \ --includedir=${includedir} \ - --syslibdir=/lib \ + --syslibdir=${nonarch_base_libdir} \ " do_configure() { @@ -62,14 +61,14 @@ do_compile() { do_install() { oe_runmake install DESTDIR='${D}' - install -d ${D}${bindir} ${D}/lib ${D}${sysconfdir} + install -d ${D}${bindir} ${D}${sysconfdir} echo "${base_libdir}" > ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path echo "${libdir}" >> ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path rm -f ${D}${bindir}/ldd ${D}${GLIBC_LDSO} - lnr ${D}${libdir}/libc.so ${D}${bindir}/ldd + ln -rs ${D}${libdir}/libc.so ${D}${bindir}/ldd } -FILES:${PN} += "/lib/ld-musl-${MUSL_LDSO_ARCH}.so.1 ${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path" +FILES:${PN} += "${nonarch_base_libdir}/ld-musl-${MUSL_LDSO_ARCH}.so.1 ${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path" FILES:${PN}-staticdev = "${libdir}/libc.a" FILES:${PN}-dev =+ "${libdir}/libcrypt.a ${libdir}/libdl.a ${libdir}/libm.a \ ${libdir}/libpthread.a ${libdir}/libresolv.a \ @@ -78,7 +77,7 @@ FILES:${PN}-dev =+ "${libdir}/libcrypt.a ${libdir}/libdl.a ${libdir}/libm.a \ RDEPENDS:${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev" RPROVIDES:${PN}-dev += "libc-dev virtual-libc-dev" -RPROVIDES:${PN} += "ldd libsegfault rtld(GNU_HASH)" +RPROVIDES:${PN} += "ldd rtld(GNU_HASH)" LEAD_SONAME = "libc.so" INSANE_SKIP:${PN}-dev = "staticdev" |