From 76de439ba2a4d25e308e987677bc6a9f4e0cc360 Mon Sep 17 00:00:00 2001 From: Doan Tran Cong Danh Date: Sat, 9 Nov 2019 16:02:49 +0700 Subject: [PATCH 1/2] refind: add hook to update refind.conf on changing kernel --- srcpkgs/refind/files/kernel.post-install | 54 ++++++++++++++++++++ srcpkgs/refind/files/kernel.post-remove | 28 ++++++++++ srcpkgs/refind/files/refind-kernel-hook.conf | 22 ++++++++ srcpkgs/refind/template | 10 +++- 4 files changed, 112 insertions(+), 2 deletions(-) create mode 100755 srcpkgs/refind/files/kernel.post-install create mode 100755 srcpkgs/refind/files/kernel.post-remove create mode 100644 srcpkgs/refind/files/refind-kernel-hook.conf diff --git a/srcpkgs/refind/files/kernel.post-install b/srcpkgs/refind/files/kernel.post-install new file mode 100755 index 00000000000..2de729462d7 --- /dev/null +++ b/srcpkgs/refind/files/kernel.post-install @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Kernel hook for refind. +# +# Arguments passed to this script: $1 pkgname, $2 version. +# +PKGNAME="$1" +VERSION="$2" + +. "${ROOTDIR}/etc/default/refind-kernel-hook.conf" +if [ "z$UPDATE_REFIND_CONF" != "z1" ]; then + exit 0; +fi + +# Default refind.conf +REFIND_CONF="${REFIND_CONF:-/boot/EFI/refind/refind.conf}" + +zrefind_dir="${REFIND_CONF%/*}" +mkdir -p "$zrefind_dir" +touch "$REFIND_CONF" + +zefi_mountpoint=$(df -P "$REFIND_CONF" | awk 'NR==2{print $6}') +zicon="${zrefind_dir#$zefi_mountpoint}/icons/os_void.png" + +mkedscript() { + zversion=$(echo $VERSION | sed 's/[.]/[.]/g') + zexpr='^menuentry "Void Linux '"$zversion"'" {$' + if grep -q "$zexpr" "$REFIND_CONF"; then + printf '%s\n' "/$zexpr/" '.,/}/d' + fi + + cat </dev/null +exit 0 diff --git a/srcpkgs/refind/files/kernel.post-remove b/srcpkgs/refind/files/kernel.post-remove new file mode 100755 index 00000000000..977bb820985 --- /dev/null +++ b/srcpkgs/refind/files/kernel.post-remove @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Kernel hook for refind. +# +# Arguments passed to this script: $1 pkgname, $2 version. +# +PKGNAME="$1" +VERSION="$2" + +. "${ROOTDIR}/etc/default/refind-kernel-hook.conf" +if [ "z$UPDATE_REFIND_CONF" != "z1" ]; then + exit 0; +fi + +# Default refind.conf +REFIND_CONF="${REFIND_CONF:-/boot/EFI/refind/refind.conf}" + +[ -f "$REFIND_CONF" ] || exit 0 + +zversion=$(echo $VERSION | sed 's/[.]/[.]/g') +zexpr="^menuentry \"Void Linux $zversion\" [{]\$" +grep -q "$zexpr" "$REFIND_CONF" || exit 0 + +ed "$REFIND_CONF" </dev/null +/$zexpr/ +.,/[}]/d +wq +EOF diff --git a/srcpkgs/refind/files/refind-kernel-hook.conf b/srcpkgs/refind/files/refind-kernel-hook.conf new file mode 100644 index 00000000000..511c58a7114 --- /dev/null +++ b/srcpkgs/refind/files/refind-kernel-hook.conf @@ -0,0 +1,22 @@ +#!/bin/sh + +# Change this line to 1 to update refind conf whenever new kernel is installed +UPDATE_REFIND_CONF=0 + +# refind.conf location +# It usually stay in +# +# /boot/EFI/refind/refind.conf +# if you use all default configuration and EFI partition mounted to /boot +# /boot/efi/EFI/refind/refind.conf +# if using default configuration and EFI partition mounted to /boot/efi +# /boot/EFI/BOOT/refind.conf +# if you run refind-install ==usedefault and EFI partition mounted to /boot +# /boot/efi/EFI/BOOT/refind.conf +# likewise, EFI mounted to /boot/efi +# /efi/EFI/refind/refind.conf +# /eif/EFI/BOOT/refind.conf +REFIND_CONF=/boot/EFI/refind/refind.conf + +# addition kernel cmdline +OPTIONS="quiet" diff --git a/srcpkgs/refind/template b/srcpkgs/refind/template index dd247174d5f..2765acd5b55 100644 --- a/srcpkgs/refind/template +++ b/srcpkgs/refind/template @@ -1,15 +1,16 @@ # Template file for 'refind' pkgname=refind version=0.11.4 -revision=1 +revision=2 makedepends="gnu-efi-libs git" depends="bash dosfstools efibootmgr" -short_desc="An EFI boot manager utility" +short_desc="EFI boot manager utility" maintainer="Julio Galvan " license="GPL-3.0-only, BSD-3-Clause" homepage="https://sourceforge.net/projects/refind/" distfiles="${SOURCEFORGE_SITE}/refind/refind-src-${version}.tar.gz" checksum=39baf140603951da098238c1cbf4176fdd7d4a45fab0399e9985ad7368034dae +conf_files="/etc/default/refind-kernel-hook.conf" case "$XBPS_TARGET_MACHINE" in x86_64|i686|aarch64) ;; @@ -85,4 +86,9 @@ do_install() { vmkdir etc/refind.d vcopy keys /etc/refind.d/ + vinstall "${FILESDIR}/refind-kernel-hook.conf" 644 etc/default + vinstall ${FILESDIR}/kernel.post-install 744 \ + etc/kernel.d/post-install 50-refind + vinstall ${FILESDIR}/kernel.post-remove 744 \ + etc/kernel.d/post-remove 50-refind } From 9e4a7237743222d74e3d9290f978b5bd3057e790 Mon Sep 17 00:00:00 2001 From: Doan Tran Cong Danh Date: Mon, 11 Nov 2019 17:26:42 +0700 Subject: [PATCH 2/2] refind: support musl libc --- .../refind/patches/force-inline-musl.patch | 33 +++++++++++++++++++ srcpkgs/refind/template | 3 +- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/refind/patches/force-inline-musl.patch diff --git a/srcpkgs/refind/patches/force-inline-musl.patch b/srcpkgs/refind/patches/force-inline-musl.patch new file mode 100644 index 00000000000..98b985fc3a2 --- /dev/null +++ b/srcpkgs/refind/patches/force-inline-musl.patch @@ -0,0 +1,33 @@ +--- filesystems/zstd/fse_decompress.c.orig 2019-11-11 17:00:57.423347660 +0700 ++++ filesystems/zstd/fse_decompress.c 2019-11-11 17:01:52.654692140 +0700 +@@ -40,7 +40,7 @@ + /* ************************************************************** + * Compiler specifics + ****************************************************************/ +-#define FORCE_INLINE static __always_inline ++#define FORCE_INLINE static inline __attribute__((__always_inline__)) + + /* ************************************************************** + * Includes +--- filesystems/zstd/zstd_internal.h.orig 2019-11-11 15:56:42.258217148 +0700 ++++ filesystems/zstd/zstd_internal.h 2019-11-11 16:04:09.433867777 +0700 +@@ -20,7 +20,7 @@ + /*-******************************************************* + * Compiler specifics + *********************************************************/ +-#define FORCE_INLINE static __always_inline ++#define FORCE_INLINE static inline __attribute__((__always_inline__)) + #define FORCE_NOINLINE static /*noinline*/ + + /*-************************************* +--- filesystems/zstd/huf_decompress.c.orig 2019-11-11 17:00:46.487280468 +0700 ++++ filesystems/zstd/huf_decompress.c 2019-11-11 17:01:20.095488026 +0700 +@@ -40,7 +40,7 @@ + /* ************************************************************** + * Compiler specifics + ****************************************************************/ +-#define FORCE_INLINE static __always_inline ++#define FORCE_INLINE static inline __attribute__((__always_inline__)) + + /* ************************************************************** + * Dependencies diff --git a/srcpkgs/refind/template b/srcpkgs/refind/template index 2765acd5b55..55bda995204 100644 --- a/srcpkgs/refind/template +++ b/srcpkgs/refind/template @@ -13,8 +13,7 @@ checksum=39baf140603951da098238c1cbf4176fdd7d4a45fab0399e9985ad7368034dae conf_files="/etc/default/refind-kernel-hook.conf" case "$XBPS_TARGET_MACHINE" in - x86_64|i686|aarch64) ;; - *-musl) broken="requires patching on musl arches" ;; + x86_64*|i686*|aarch64*) ;; *) broken="${XBPS_TARGET_MACHINE} is unsupported" ;; esac