commit:     35826178e4096692dd254565c426a0eef8b0cc45
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Sat Jul  3 21:50:27 2021 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Sun Jul  4 20:48:13 2021 +0000
URL:        https://gitweb.gentoo.org/proj/releng.git/commit/?id=35826178

releases/portage/isos: add genkernel patch for ppc64

since it's still not fixed in genkernel, we can carry a
local patch.

patch is conditional for ppc64 only, it will affect only ppc64le
iso for now. ppc64 installcd is ppc, not ppc64.

Bug: https://bugs.gentoo.org/796272
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 releases/portage/isos/env/sys-kernel/genkernel     | 35 ++++++++++++++++
 .../portage/isos/patches/genkernel-ppc64-iso.patch | 47 ++++++++++++++++++++++
 2 files changed, 82 insertions(+)

diff --git a/releases/portage/isos/env/sys-kernel/genkernel 
b/releases/portage/isos/env/sys-kernel/genkernel
new file mode 100644
index 00000000..67cb7b05
--- /dev/null
+++ b/releases/portage/isos/env/sys-kernel/genkernel
@@ -0,0 +1,35 @@
+post_src_unpack() {
+       if use ppc64; then
+               einfo "hooked by ${BASH_SOURCE[0]} in ${FUNCNAME[0]}"
+               local patchfile
+               
patchfile="${PORTAGE_CONFIGROOT%/}/etc/portage/patches/genkernel-ppc64-iso.patch"
+               if [[ -f ${patchfile} ]]; then
+                       einfo "found genkernel patch for bug 
https://bugs.gentoo.org/796272";
+                       cd "${S}" || die
+                       eapply "${patchfile}"
+               else
+                       ewarn "no genkernel patch found, skipping hook"
+               fi
+       fi
+}
+
+post_pkg_postinst() {
+       einfo "hooked by ${BASH_SOURCE[0]} in ${FUNCNAME[0]}"
+       einfo "cleaning up bug https://bugs.gentoo.org/796272 workarounds"
+       # cleanup after ourselves, we don't want workarounds shipped to users
+       # and don't want updating all the spec files with new removal 
directives.
+       local envfile patchfile
+       envfile="${PORTAGE_CONFIGROOT%/}/etc/portage/env/sys-kernel/genkernel"
+       
patchfile="${PORTAGE_CONFIGROOT%/}/etc/portage/patches/genkernel-ppc64-iso.patch"
+       
+       local _x
+       for _x in "${envfile}" "${patchfile}"; do
+               if [[ -f ${_x} ]]; then
+                       rm -vf "${_x}"
+               fi
+       done
+       rmdir -v --ignore-fail-on-non-empty 
"${PORTAGE_CONFIGROOT%/}/etc/portage/env/sys-kernel"
+       rmdir -v --ignore-fail-on-non-empty 
"${PORTAGE_CONFIGROOT%/}/etc/portage/env"
+       rmdir -v --ignore-fail-on-non-empty 
"${PORTAGE_CONFIGROOT%/}/etc/portage/patches"
+}
+       

diff --git a/releases/portage/isos/patches/genkernel-ppc64-iso.patch 
b/releases/portage/isos/patches/genkernel-ppc64-iso.patch
new file mode 100644
index 00000000..61c85942
--- /dev/null
+++ b/releases/portage/isos/patches/genkernel-ppc64-iso.patch
@@ -0,0 +1,47 @@
+From 628e1a30b384a900cf7095cf86441fed7a0300dc Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <gyakov...@gentoo.org>
+Date: Fri, 14 May 2021 22:05:33 -0700
+Subject: [PATCH] defaults/initrd.scripts: don't skip top level devices with
+ partitions
+
+ppc64 media should be mounted as /dev/sdX, not as /dev/sdX1
+this loop was skipping /dev/sdX if /dev/sdX1 is present.
+
+Bug: https://bugs.gentoo.org/796272
+Signed-off-by: Georgy Yakovlev <gyakov...@gentoo.org>
+---
+ defaults/initrd.scripts | 18 ------------------
+ 1 file changed, 18 deletions(-)
+
+diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
+index 5ec8adb..bfc36cf 100644
+--- a/defaults/initrd.scripts
++++ b/defaults/initrd.scripts
+@@ -178,24 +178,6 @@ findmediamount() {
+                       # Check for a block device to mount
+                       if [ -b "${x}" ]
+                       then
+-                              skip=0
+-                              bsn=$(basename "${x}")
+-                              #
+-                              # If disk and it has at least one partition, 
skip.
+-                              # We use /sys/block/${bsn}/${bsn}[0-9]* to make 
sure that we
+-                              # don't skip device mapper devices. Even the 
craziest scenario
+-                              # deserves a fair chance.
+-                              #
+-                              # shellcheck disable=SC2045
+-                              for part in $(ls 
/sys/block/${bsn}/${bsn}*[0-9]* 2>/dev/null)
+-                              do
+-                                      skip=1
+-                                      break;
+-                              done
+-                              if [ ${skip} -eq 1 ]
+-                              then
+-                                      continue
+-                              fi
+                               good_msg "Attempting to mount media: ${x}" 
${CRYPT_SILENT}
+ 
+                               CDROOT_TYPE=$(determine_fs "${x}" 
"${CDROOT_TYPE}")
+-- 
+2.31.1
+

Reply via email to