From 35826178e4096692dd254565c426a0eef8b0cc45 Mon Sep 17 00:00:00 2001 From: Georgy Yakovlev Date: Sat, 3 Jul 2021 14:50:27 -0700 Subject: [PATCH] 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 --- .../portage/isos/env/sys-kernel/genkernel | 35 ++++++++++++++ .../isos/patches/genkernel-ppc64-iso.patch | 47 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 releases/portage/isos/env/sys-kernel/genkernel create mode 100644 releases/portage/isos/patches/genkernel-ppc64-iso.patch 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 +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 +--- + 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 +