From 3800755944ed2df524cdf33adcf141e9349562a2 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Wed, 8 Mar 2023 19:24:00 -0500 Subject: [PATCH] New package: systemd-boot-efistub-253 --- .../systemd-boot-efistub/patches/musl.patch | 41 +++++++++++++++ srcpkgs/systemd-boot-efistub/template | 52 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 srcpkgs/systemd-boot-efistub/patches/musl.patch create mode 100644 srcpkgs/systemd-boot-efistub/template diff --git a/srcpkgs/systemd-boot-efistub/patches/musl.patch b/srcpkgs/systemd-boot-efistub/patches/musl.patch new file mode 100644 index 000000000000..85d5a7fd2642 --- /dev/null +++ b/srcpkgs/systemd-boot-efistub/patches/musl.patch @@ -0,0 +1,41 @@ +From a4ff7772acf1d983921833aa20ccd7c4d5e59a1c Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Mon, 6 Mar 2023 15:24:49 +0100 +Subject: [PATCH] src/boot/efi/efi-string.c: define wchar_t from __WCHAR_TYPE__ + +systemd-boot relies on wchar_t being 16 bit, and breaks at build time otherwise. + +To set wchar_t to 16 bit it is passing -fshort-wchar to gcc; this has the +desired effect on glibc (which sets wchar_t from __WCHAR_TYPE__) but not on +musl (which hardcodes it to 32 bit). + +This patch ensures wchar_t is set from the compiler flags on all systems; note +that systemd-boot is not actually using functions from musl or other libc, just their headers. + +Meanwhile upstream has refactored the code to not rely on libc headers at all; +however this will not be backported to v253 and we need a different fix. + +Upstream-Status: Inappropriate [fixed differently in trunk according to https://github.com/systemd/systemd/pull/26689] +Signed-off-by: Alexander Kanavin +--- + src/boot/efi/efi-string.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/boot/efi/efi-string.c b/src/boot/efi/efi-string.c +index 22923d60f6..22a8d1ef71 100644 +--- a/src/boot/efi/efi-string.c ++++ b/src/boot/efi/efi-string.c +@@ -2,7 +2,13 @@ + + #include + #include ++ ++#if SD_BOOT ++typedef __WCHAR_TYPE__ wchar_t; ++#define __DEFINED_wchar_t ++#else + #include ++#endif + + #include "efi-string.h" + diff --git a/srcpkgs/systemd-boot-efistub/template b/srcpkgs/systemd-boot-efistub/template new file mode 100644 index 000000000000..77e7f93a7910 --- /dev/null +++ b/srcpkgs/systemd-boot-efistub/template @@ -0,0 +1,52 @@ +# Template file for 'systemd-boot-efistub' +pkgname=systemd-boot-efistub +version=253 +revision=1 +build_style=meson +configure_args="-Defi=true -Dgnu-efi=true -Defi-libdir=${XBPS_CROSS_BASE}/usr/lib + -Defi-includedir=${XBPS_CROSS_BASE}/usr/include/efi + -Dlink-boot-shared=false -Dstandalone-binaries=true + -Dacl=false -Dkmod=false -Dselinux=false -Dsysusers=false -Dtmpfiles=false + -Dadm-group=false -Danalyze=false -Dapparmor=false -Daudit=false + -Dbacklight=false -Dbinfmt=false -Dbpf-framework=false -Dbzip2=false + -Dcoredump=false -Ddbus=false -Delfutils=false -Denvironment-d=false + -Dfdisk=false -Dgcrypt=false -Dglib=false -Dgshadow=false -Dgnutls=false + -Dhibernate=false -Dhostnamed=false -Didn=false -Dima=false -Dinitrd=false + -Dfirstboot=false -Dldconfig=false -Dlibcryptsetup=false -Dlibcurl=false + -Dlibfido2=false -Dlibidn=false -Dlibidn2=false -Dlibiptc=false -Dlocaled=false + -Dlogind=false -Dlz4=false -Dmachined=false -Dmicrohttpd=false -Dnetworkd=false + -Dnscd=false -Dnss-myhostname=false -Dnss-resolve=false -Dnss-systemd=false + -Doomd=false -Dopenssl=false -Dp11kit=false -Dpam=false -Dpcre2=false + -Dpolkit=false -Dportabled=false -Dpstore=false -Dpwquality=false + -Drandomseed=false -Dresolve=false -Drfkill=false -Dseccomp=false -Dsmack=false + -Dsysext=false -Dtimedated=false -Dtimesyncd=false -Dtpm=false -Dqrencode=false + -Dquotacheck=false -Duserdb=false -Dutmp=false -Dvconsole=false -Dwheel-group=false + -Dxdg-autostart=false -Dxkbcommon=false -Dxz=false -Dzlib=false -Dzstd=false + -Dblkid=false -Dkernel-install=false + -Dsbat-distro=void -Dsbat-distro-summary=Void + -Dsbat-distro-url='https://github.com/void-linux/void-packages/issues' + -Dtests=false" +# most of these aren't needed for what we're building but it's easier than patching +hostmakedepends="pkg-config gperf python3-Jinja2" +makedepends="gnu-efi-libs libcap-devel libmount-devel" +short_desc="Linux UEFI stub from systemd-boot" +maintainer="classabbyamp " +license="LGPL-2.1-or-later" +homepage="https://systemd.io" +distfiles="https://github.com/systemd/systemd/archive/refs/tags/v${version}.tar.gz" +checksum=acbd86d42ebc2b443722cb469ad215a140f504689c7a9133ecf91b235275a491 +make_check=no # missing printf.h + +case "${XBPS_TARGET_MACHINE}" in + x86_64*) _efi_arch="x64" ;; + i686*) _efi_arch="ia32" ;; + aarch64*) _efi_arch="aa64" ;; + arm*) _efi_arch="arm" ;; + riscv64*) _efi_arch="riscv64" ;; + *) broken="unknown efi architecture" ;; +esac +make_build_target="src/boot/efi/linux${_efi_arch}.efi.stub" + +do_install() { + vinstall build/src/boot/efi/linux${_efi_arch}.efi.stub 644 usr/lib/systemd/boot/efi +}