Github messages for voidlinux
 help / color / Atom feed
From: voidlinux-github@inbox.vuxu.org
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] refind: add hook to update refind.conf on changing kernel
Date: Sun, 10 Nov 2019 10:21:31 +0100
Message-ID: <20191110092131.uwR5VFwChFTHq9UPJ0awuEeGI_sWimg8_GH11j6IJGY@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-16251@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 386 bytes --]

There is an updated pull request by zdtcd against master on the void-packages repository

https://github.com/zdtcd/void-packages refind-kernel-hook
https://github.com/void-linux/void-packages/pull/16251

refind: add hook to update refind.conf on changing kernel
Someone asked in IRC, here is it

A patch file from https://github.com/void-linux/void-packages/pull/16251.patch is attached

[-- Warning: decoded text below may be mangled --]
[-- Attachment #2: github-pr-refind-kernel-hook-16251.patch --]
[-- Type: text/x-diff, Size: 5000 bytes --]

From 55b087f5e57aab092222a7e436f730b49e20fcc5 Mon Sep 17 00:00:00 2001
From: Doan Tran Cong Danh <congdanhqx@gmail.com>
Date: Sat, 9 Nov 2019 16:02:49 +0700
Subject: [PATCH] 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                      |  8 ++-
 4 files changed, 111 insertions(+), 1 deletion(-)
 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..20dd149a807
--- /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
+		# Do not merge into /expr/,/}/d, it doesn't work
+		printf '%s\n' "/$zexpr/" '.,/}/d'
+	fi
+
+	cat <<EOF
+1
+/^menuentry /
+i
+menuentry "Void Linux $VERSION" {
+	icon     $zicon
+	volume   "Void Linux"
+	loader   /vmlinuz-$VERSION
+	initrd   /initramfs-$VERSION.img
+	options  "$OPTIONS"
+}
+.
+EOF
+
+	if ! grep -q '^timeout ' "$REFIND_CONF"; then
+		printf '%s\n' 1i "timeout 20" .
+	fi
+	echo wq
+}
+
+mkedscript | ed "$REFIND_CONF" >/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..98ff754f570
--- /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
+
+tmpfile=$(mktemp /tmp/refind.XXXXXXX)
+zversion=$(echo $VERSION | sed 's/[.]/[.]/g')
+sed "/^menuentry \"Void Linux $zversion\" [{]\$/,/[}]/d" "$REFIND_CONF" >"$tmpfile"
+
+if ! cmp -s "$REFIND_CONF" "$tmpfile"; then
+	mv "$tmpfile" "$REFIND_CONF"
+else
+	rm -f "$tmpfile"
+fi
diff --git a/srcpkgs/refind/files/refind-kernel-hook.conf b/srcpkgs/refind/files/refind-kernel-hook.conf
new file mode 100644
index 00000000000..c674f477a22
--- /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=1
+
+# 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..5417f03a46b 100644
--- a/srcpkgs/refind/template
+++ b/srcpkgs/refind/template
@@ -1,7 +1,7 @@
 # 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"
@@ -10,6 +10,7 @@ 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
 }

  reply index

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-09 10:13 [PR PATCH] " voidlinux-github
2019-11-10  9:21 ` voidlinux-github [this message]
2019-11-11 10:28 ` [PR PATCH] [Updated] " voidlinux-github
2019-11-11 11:12 ` refind: add hook to update refind.conf on changing kernel, also unbroken musl voidlinux-github

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=20191110092131.uwR5VFwChFTHq9UPJ0awuEeGI_sWimg8_GH11j6IJGY@z \
    --to=voidlinux-github@inbox.vuxu.org \
    --cc=ml@inbox.vuxu.org \
    /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

Github messages for voidlinux

Archives are clonable: git clone --mirror http://inbox.vuxu.org/voidlinux-github

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.github.voidlinux


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git