aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPA4WDH2021-07-13 19:47:04 +0200
committerPA4WDH2021-07-13 19:47:04 +0200
commit5884c94b1f92c00406d137c9f308c098e5268a59 (patch)
tree8483f1da04bf5cbed41220bafcffa502cae95eaa
downloadunmatched-patchwork-5884c94b1f92c00406d137c9f308c098e5268a59.tar.gz
unmatched-patchwork-5884c94b1f92c00406d137c9f308c098e5268a59.tar.bz2
unmatched-patchwork-5884c94b1f92c00406d137c9f308c098e5268a59.zip
Initial commit
-rw-r--r--README.html71
-rw-r--r--media-video/mplayer/Manifest11
-rw-r--r--media-video/mplayer/files/configure-riscv.patch10
-rw-r--r--media-video/mplayer/files/dump_ffmpeg.sh74
-rw-r--r--media-video/mplayer/files/ffmpeg44.patch12
-rw-r--r--media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch24
-rw-r--r--media-video/mplayer/files/prepare_mplayer.sh25
-rw-r--r--media-video/mplayer/metadata.xml40
-rw-r--r--media-video/mplayer/mplayer-1.4-r1.ebuild609
-rw-r--r--metadata/layout.conf2
-rw-r--r--profiles/repo_name1
-rw-r--r--sys-apps/sysvinit/Manifest10
-rw-r--r--sys-apps/sysvinit/files/bootlogd.initd8
-rw-r--r--sys-apps/sysvinit/files/halt.sh6
-rw-r--r--sys-apps/sysvinit/files/inittab-2.98-r163
-rw-r--r--sys-apps/sysvinit/files/sysvinit-2.86-kexec.patch142
-rw-r--r--sys-apps/sysvinit/files/sysvinit-2.94_beta-shutdown-single.patch39
-rw-r--r--sys-apps/sysvinit/files/sysvinit-2.99-force-poweroff.patch16
-rw-r--r--sys-apps/sysvinit/files/sysvinit-2.99-shutdown-h.patch82
-rw-r--r--sys-apps/sysvinit/metadata.xml12
-rw-r--r--sys-apps/sysvinit/sysvinit-2.99.ebuild146
-rw-r--r--sys-boot/grub/Manifest12
-rw-r--r--sys-boot/grub/files/gfxpayload.patch29
-rw-r--r--sys-boot/grub/files/grub-2.02_beta2-KERNEL_GLOBS.patch67
-rw-r--r--sys-boot/grub/files/grub-2.06-add-boot-hartid-to-fdt.patch35
-rw-r--r--sys-boot/grub/files/grub-2.06-linux-riscv.patch416
-rw-r--r--sys-boot/grub/files/grub-2.06-magic-number.patch42
-rw-r--r--sys-boot/grub/files/grub-2.06-test-words.patch25
-rw-r--r--sys-boot/grub/files/grub.default-373
-rw-r--r--sys-boot/grub/grub-2.06.ebuild308
-rw-r--r--sys-boot/grub/metadata.xml32
-rw-r--r--sys-boot/opensbi/Manifest3
-rw-r--r--sys-boot/opensbi/opensbi-0.9.ebuild39
-rw-r--r--sys-boot/u-boot/Manifest5
-rw-r--r--sys-boot/u-boot/files/efi-priority.patch16
-rw-r--r--sys-boot/u-boot/metadata.xml19
-rw-r--r--sys-boot/u-boot/u-boot-2021.01_rc5.ebuild89
-rw-r--r--sys-kernel/sifive-sources/Manifest6
-rw-r--r--sys-kernel/sifive-sources/sifive-sources-5.12.11.ebuild38
39 files changed, 2657 insertions, 0 deletions
diff --git a/README.html b/README.html
new file mode 100644
index 0000000..2a6e140
--- /dev/null
+++ b/README.html
@@ -0,0 +1,71 @@
+<h1>Unmatched Patchwork</h1>
+<p>
+ This is an overlay voor the Gentoo Linux distribution, it is intended for
+ owners of the <a href="https://www.sifive.com/boards/hifive-unmatched">SiFive
+ HiFive Unmatched RISC-V PC</a>.
+</p>
+<h2>Why this overlay?</h2>
+<p>
+ Running Gentoo Linux on the Unmatched requires some modifications to some
+ packages. Some are specific to this specific board, others are for RISC-V in
+ general.
+</p>
+<p>
+ Instead of keeping all those patches for myself I decided to share and hope it
+ will help someone else too. This is actually the first overlay I'm sharing, so
+ feedback is appreciated. You're quite likely to find me on the
+ <a href="https://forums.gentoo.org">Gentoo forums</a> or the
+ <a href="https://forums.sifive.com">SiFive forums</a>.
+</p>
+<h2>What is in this overlay?</h2>
+<p>
+ This overlay contains a few packages:
+</p>
+<ul>
+ <li>media-video/mplayer: mplayer with a patch for it's configure script to accept RISC-V</li>
+ <li>sys-apps/sysvinit: sysvinit patched so that the "reboot" command does the
+ same als "halt" because the Unmatched can't rebooti and will be stuck
+ if you do</li>
+ <li>sys-boot/grub: Grub with patches to allow loading linux</li>
+ <li>sys-boot/opensbi: OpenSBI with patches from SiFive</li>
+ <li>sys-boot/u-boot: u-boot with patches from SiFive. Also has USE flags to
+ set the CPU Frequency and prioritize EFI booting (required for grub)</li>
+ <li>sys-kernel/sifive-sources: gentoo-sources with patches from SiFive</li>
+</ul>
+<h2>How to use this overlay?</h2>
+<p>
+ First you'll have to clone this overlay on a place you like. A common place
+ these days is <b>/var/db/repos</b>. So cd into that direcoty and use
+ <b>git clone https://code.pa4wdh.nl.eu.org/gentoo/unmatched-patchwork</b>,
+ this will create a directory called unmatched-patchwork with the overlay in
+ it.
+</p>
+<p>
+ Next you have to make portage aware of the repo, for that you'll have to
+ create a config file under <b>/etc/portage/repos.conf</b>. Create a file
+ called <b>unmatched-patchwork.conf</b> and give it these contents:
+</p>
+<pre>
+[unmatched-patchwork]
+location = /var/db/repos/unmatched-patchwork
+sync-type = git
+sync-uri = https://code.pa4wdh.nl.eu.org/gentoo/unmatched-patchwork
+</pre>
+<p>
+ If you placed the overlay on a different place than <b>/var/db/repos</b> make
+ sure to adapt the <b>location</b> line to your needs.
+</p>
+<h2>What can i do with this?</h2>
+<p>
+ For me booting with grub has great value, it allows me to boot different
+ kernels via it's menu. This allows me to experiment with different kernel
+ versions and configurations, and i don't run into problems if it somehow
+ doesn't boot.
+</p>
+<p>
+ Mplayer is my favorite media player and is nice to get quick results. Even
+ if you don't have a GPU you can test video with aalib :-).
+</p>
+<p>
+ Have fun!
+</p>
diff --git a/media-video/mplayer/Manifest b/media-video/mplayer/Manifest
new file mode 100644
index 0000000..2c97459
--- /dev/null
+++ b/media-video/mplayer/Manifest
@@ -0,0 +1,11 @@
+AUX configure-riscv.patch 328 BLAKE2B 048b569b8e93ec6f09d3fcf9858736e42da71cd04be71edfd604ad93380c819c3036a37b899db2d8e66faa3cb818c675b61152ec3c54c3de226f59175d8d373f SHA512 795199a484b652b25cd07dc096bf37d4337ea8fe3075cab3ca6b721f8a0326dd6a173b74103b9a6fb09d1d2ff5b74b31ec223c850ac6e8720bacff53e1a641c4
+AUX dump_ffmpeg.sh 2529 BLAKE2B 2c945fcf0b430d74c85557f82497dbc4a2a8308ecb34c86e42cc3c6a5eed20496691839355c068ccabf6d20d11d62035231aa208341a1ce9affc44b3e30acfde SHA512 12c15efa5cdb99eac92ff808fa56c6137343cca48b73d5875a7a6b08cf36ebeda5022eb3bae0ba567ff9031d2a0f3b5dbe69ee191ae8ecf48b98a779504df66c
+AUX ffmpeg44.patch 517 BLAKE2B 432b42b5e89707739768b83332e17eb16008fd636a14e57ea8cef73aaac057e4a33ea1071ff7d1ef56c106a35b297cf9106ccb5ffab383f23e1a98cf451c021d SHA512 95eaa2a524d6b12b87e5f1548fc0565904f6478bce5353da5fbe6892e25da595376c25bfbfd4030b267b9adb2850b1a2c7a3b2f41a19091f4fd35535140865db
+AUX mplayer-1.3-CVE-2016-4352.patch 617 BLAKE2B 57f85be46230fa0576c6569bafc8c65f24b0a59d3b083c06d2e14fe176505567feca5024bafd73fb1b48960ea95a4705132ed6e2166a31aabcd1e34fc41e3803 SHA512 654bfa8368a02669ba249aa0c1a605f285d4d967b7038285df0ba7b83cd034ac3aff933a564fd6f33c7a153267be19d9eb517a52c8f4b53a6f81b6b2c5558512
+AUX prepare_mplayer.sh 757 BLAKE2B 5de1cb4b17628dd5443f98a20717f8ed028a76446104a471a669b1c7ed7a5b76a8e86203f436240312ac4814a0ba7dba7856bb4f3723da850188a3003aae8bbb SHA512 0add0707e15d58cee331fc82f884a44b29908c503f9ddcbb63dc01e237e2f457f599bae8644ce49f1af2cc7b3183529364ce30e6748889355c17cb96cecee71a
+DIST MPlayer-1.4.tar.xz 15054920 BLAKE2B 4777cb31a32d62c393778c581c1913fbf355a36cbe6bcf6f426c90c2c8c70123e8aed4d01faf52ee6b1fba3c49e11fa13185f81ae8582f90c901b90955a1f42b SHA512 8ef71cad187d8c8f81c837279bd3a421b440c892d3347a667670b21c954007e35cf0d15828f0901f347b9c1b053e8da4bc7f0fb6de34382d1e463074923d7b34
+DIST font-arial-cp1250.tar.bz2 249705 BLAKE2B eb4366a110d917dc975b8add168ab43b1e8a0db7342647f69f5421fc1170719015c97ffa770e89892cbb4cee8e5b2fb74a4772c8f6cbef9606ee12c3746d78c9 SHA512 4f77ff5ceb8ec6e5d9f8f34d8950a6a6276d1fd5a947772fcbdb6554988b1ea665c12b82f45164f91fb7bd08000cb4afc26fa35beb4c760464160e22b9b8c340
+DIST font-arial-iso-8859-1.tar.bz2 234242 BLAKE2B 0671854e1a257d27b502affb59de681942a93990d3ac2575bbf1a6dd9eef026969f2f9ce4e9c11a68ea3d8aed48063f826a1e153f7468437a39791672c92a5d0 SHA512 a1d03b6f09c48f48b7733f3bc0402ceab239a9abf88b860d852ea9fe69b4da690208a79d6f29d30204f5b37becf10672e8e8c0bfef201846d80ec54df617d029
+DIST font-arial-iso-8859-2.tar.bz2 222208 BLAKE2B 94b1a04672bf9b4b20a0e6981591e761f751bd637deddcb801855296c525bf3b5e8feb1cb11cef282c0269f2c963ded22846089076e7e6763f258b8a932af454 SHA512 5671e628303fd816f64a51ad10e2f4dd9c3dc1b34c379a2ecf489b83931db7af668aaa4e00e96a00cacd63ed98daeae6b6a4d5925edfb06fc98d3a923f70257d
+EBUILD mplayer-1.4-r1.ebuild 16739 BLAKE2B a3c13ce9f73c024ba31d642034bde1c194f4f9c9e43ca3993a7ab86493f34e30f77fa6e0eea595e0a4e2697f3911d96f64814fe402d90e9c2d00aadf5a361ac3 SHA512 a0092afc167366e69f9667a47b45dd195cee76410aa03db10a38385408779a7283220c2907a4c91b5902349b9b5ac95e3ee37680766463241ca48f6c2790ccbf
+MISC metadata.xml 2463 BLAKE2B 74bd1f6f4d85fb5b55b3cfd6ca6350a9c4c6baf52c8cced69b7d37b84b5f5f154038e8c81c14ddc57d34037cabe3d638c49994c9bea7bba87852f792fa766aae SHA512 3fa8f536d01cb7fae5f4c56d2f66949cd4a237fabec8f2eb2941a436e0319e6c04652e97747384bd106ad6d9a31f1e14b605e47a73b3829cb0b7f37ab745ce88
diff --git a/media-video/mplayer/files/configure-riscv.patch b/media-video/mplayer/files/configure-riscv.patch
new file mode 100644
index 0000000..debec44
--- /dev/null
+++ b/media-video/mplayer/files/configure-riscv.patch
@@ -0,0 +1,10 @@
+--- MPlayer-1.4/configure 2018-12-15 16:38:24.000000000 +0100
++++ MPlayer-1.4-mod/configure 2021-06-19 20:41:00.735402324 +0200
+@@ -1761,6 +1761,7 @@
+ nios2) host_arch=nios2 ;;
+ vax) host_arch=vax ;;
+ xtensa*) host_arch=xtensa ;;
++ riscv*) host_arch=generic ;;
+ *) host_arch=UNKNOWN ;;
+ esac
+ }
diff --git a/media-video/mplayer/files/dump_ffmpeg.sh b/media-video/mplayer/files/dump_ffmpeg.sh
new file mode 100644
index 0000000..885946d
--- /dev/null
+++ b/media-video/mplayer/files/dump_ffmpeg.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+FFMPEG_DIR=ffmpeg
+FFMPEG_MOVED_DIR=ffmpeg_removed
+SYSTEM_FFMPEG_DIR=${EPREFIX}/usr/include
+
+# Move directories
+
+[ -d "${FFMPEG_DIR}" ] && mv "${FFMPEG_DIR}" "${FFMPEG_MOVED_DIR}"
+[ -d "${FFMPEG_MOVED_DIR}" ] || exit 1
+[ -d "${FFMPEG_DIR}" ] || mkdir "${FFMPEG_DIR}"
+
+# Keep required files and check them
+
+SANITIZED_REGEXP='^\#[[:space:]]*include.*\".*[.]h\"'
+sanitize_includes() {
+ sed -e "s/^\#[[:space:]]*include.*\"config[.]h\"/#include <config.h>/" \
+ -e "s/^\#[[:space:]]*include.*\"\(libav.*\/.*[.]h\)\"/#include \<\1\>/" \
+ -e "/${SANITIZED_REGEXP}/{s:\"\(.*\)\":\<${2}\/\1\>:}" ${1}
+}
+
+check_sanitized_includes() {
+ grep -q "${SANITIZED_REGEXP}" $1
+}
+
+get_header_deps() {
+ grep "^#[[:space:]]*include.*\<libav.*[.]h\>" ${1} | \
+ sed -e "s/^#[[:space:]]*include.*\<\(libav.*[.]h\)\>/\1/" | \
+ tr -d '<>' | tr '\n' ' '
+}
+
+check_header_deps() {
+ for i ; do
+ printf "Checking for the presence of ${i}...\n"
+ if [ ! -f "${SYSTEM_FFMPEG_DIR}/${i}" -a ! -f "${FFMPEG_DIR}/${i}" ] ; then
+ printf "Header depends on ${i}\n"
+ printf "... but that file cannot be found, aborting\n"
+ exit 1
+ fi
+ done
+}
+
+move_file() {
+ mydir="$(dirname $1)"
+ printf "Moving and checking file: ${1}\n"
+ [ -d "${FFMPEG_DIR}/${mydir}" ] || mkdir -p "${FFMPEG_DIR}/${mydir}"
+ if [ ! -f "${FFMPEG_DIR}/${1}" ] ; then
+ sanitize_includes "${FFMPEG_MOVED_DIR}/${1}" ${mydir} > "${FFMPEG_DIR}/${1}"
+ fi
+ if $(check_sanitized_includes "${FFMPEG_DIR}/${1}") ; then
+ printf "Error, found non sanitized file in ffmpeg:\n"
+ printf "${FFMPEG_DIR}/${1}\n"
+ printf "Please report it at bugs.gentoo.org\n"
+ exit 1
+ fi
+ if [ "${1%.h}" != "${1}" ] ; then
+ mydeps=$(get_header_deps "${FFMPEG_DIR}/${1}")
+ check_header_deps ${mydeps}
+ fi
+}
+
+# HEADERS (order matters for the consistency checks: leaves come first)
+FILES="libavutil/wchar_filename.h libavformat/os_support.h libavformat/internal.h libavutil/x86/asm.h"
+# Files that are sed'ed but not compiled, used to check for availability of
+# some codecs
+FILES="${FILES} libavcodec/allcodecs.c libavformat/allformats.c libavfilter/allfilters.c"
+
+for i in ${FILES} ; do
+ move_file $i
+done
+
+rm -rf "${FFMPEG_MOVED_DIR}"
+
+exit 0
diff --git a/media-video/mplayer/files/ffmpeg44.patch b/media-video/mplayer/files/ffmpeg44.patch
new file mode 100644
index 0000000..99d5407
--- /dev/null
+++ b/media-video/mplayer/files/ffmpeg44.patch
@@ -0,0 +1,12 @@
+Index: MPlayer-1.4/libmpcodecs/ad_spdif.c
+===================================================================
+--- MPlayer-1.4.orig/libmpcodecs/ad_spdif.c
++++ MPlayer-1.4/libmpcodecs/ad_spdif.c
+@@ -300,7 +300,6 @@ static void uninit(sh_audio_t *sh)
+ av_freep(&lavf_ctx->pb);
+ if (lavf_ctx->streams) {
+ av_freep(&lavf_ctx->streams[0]->codec);
+- av_freep(&lavf_ctx->streams[0]->info);
+ av_freep(&lavf_ctx->streams[0]);
+ }
+ av_freep(&lavf_ctx->streams);
diff --git a/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch b/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch
new file mode 100644
index 0000000..4eabf8b
--- /dev/null
+++ b/media-video/mplayer/files/mplayer-1.3-CVE-2016-4352.patch
@@ -0,0 +1,24 @@
+https://trac.mplayerhq.hu/ticket/2295
+
+r37857
+
+--- old/libmpdemux/demux_gif.c
++++ new/libmpdemux/demux_gif.c
+@@ -304,6 +304,17 @@
+ return NULL;
+ }
+
++ // Validate image size, most code in this demuxer assumes w*h <= INT_MAX
++ if ((int64_t)gif->SWidth * gif->SHeight > INT_MAX) {
++ mp_msg(MSGT_DEMUX, MSGL_ERR,
++ "[demux_gif] Unsupported picture size %dx%d.\n", gif->SWidth,
++ gif->SHeight);
++ if (DGifCloseFile(gif) == GIF_ERROR)
++ print_gif_error(NULL);
++ free(priv);
++ return NULL;
++ }
++
+ // create a new video stream header
+ sh_video = new_sh_video(demuxer, 0);
+
diff --git a/media-video/mplayer/files/prepare_mplayer.sh b/media-video/mplayer/files/prepare_mplayer.sh
new file mode 100644
index 0000000..57d4742
--- /dev/null
+++ b/media-video/mplayer/files/prepare_mplayer.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+VERSION=$(date +%Y%m%d)
+PACKAGE="mplayer-1.2_pre${VERSION}"
+DUMP_FFMPEG="$(dirname $0)/dump_ffmpeg.sh"
+
+svn checkout svn://svn.mplayerhq.hu/mplayer/trunk ${PACKAGE}
+
+pushd ${PACKAGE} > /dev/null
+ # ffmpeg is in git now so no svn external anymore
+ rm -rf ffmpeg
+ git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg/
+ sh "$DUMP_FFMPEG"
+ STORE_VERSION=$(LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2)
+ printf "$STORE_VERSION" > snapshot_version
+popd > /dev/null
+
+find "${PACKAGE}" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
+find "${PACKAGE}" -type d -name '.git' -prune -print0 | xargs -0 rm -rf
+
+tar cJf ${PACKAGE}.tar.xz ${PACKAGE}
+rm -rf ${PACKAGE}/
+
+echo "Tarball: \"${PACKAGE}.tar.xz\""
+
+echo "** all done **"
diff --git a/media-video/mplayer/metadata.xml b/media-video/mplayer/metadata.xml
new file mode 100644
index 0000000..11e093c
--- /dev/null
+++ b/media-video/mplayer/metadata.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>media-video@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="bl">Blinkenlights video output</flag>
+ <flag name="bluray">Enable playback of Blu-ray filesystems</flag>
+ <flag name="bs2b">Enable Bauer stereophonic-to-binaural headphone filter</flag>
+ <flag name="cdio">Use libcdio for CD support (instead of cdparanoia)</flag>
+ <flag name="cdparanoia">Enable cdparanoia (audio CD ripper) support</flag>
+ <flag name="cpudetection">Enables runtime CPU detection (useful for binpkgs, compatibility on other CPUs)</flag>
+ <flag name="dvdnav">Use forked libdvdnav, navigate menus in GUIs</flag>
+ <flag name="enca">Enables support for charset discovery and conversion</flag>
+ <flag name="faac">Use external faac library for AAC encoding</flag>
+ <flag name="faad">Use external faad library for AAC decoding</flag>
+ <flag name="libmpeg2">Build support for mpeg2 over media-libs/libmpeg2 rather than using ffmpeg.</flag>
+ <flag name="live">Enables live.com streaming media support</flag>
+ <flag name="md5sum">Enables md5sum video output</flag>
+ <flag name="mng">MNG input support</flag>
+ <flag name="network">Enables network streaming support</flag>
+ <flag name="osdmenu">Enables support for on-screen display (OSD) menus</flag>
+ <flag name="pnm">Add PNM video output option, to create PPM/PGM/PGMYUV images</flag>
+ <flag name="pvr">Enable Video4Linux2 MPEG PVR</flag>
+ <flag name="radio">Enable V4L2 radio interface and support</flag>
+ <flag name="rar">Enable Unique RAR File Library</flag>
+ <flag name="rtc">Enables usage of the linux real time clock. The alternative is software emulation of rtc</flag>
+ <flag name="rtmp">Enables RTMPDump Streaming Media support</flag>
+ <flag name="shm">Enable support for shm</flag>
+ <flag name="tga">Enables Targa video output</flag>
+ <flag name="toolame">Enable toolame MPEG-2 encoding</flag>
+ <flag name="tremor">Enable internal support for Vorbis</flag>
+ <flag name="twolame">Enable twolame MPEG-2 encoding</flag>
+ <flag name="vcd">Enables VCD support</flag>
+ <flag name="vidix">Support for vidix video output</flag>
+ <flag name="yuv4mpeg">Enables yuv4mpeg video output</flag>
+ <flag name="zoran">Enables ZR360[56]7/ZR36060 video output</flag>
+ </use>
+</pkgmetadata>
diff --git a/media-video/mplayer/mplayer-1.4-r1.ebuild b/media-video/mplayer/mplayer-1.4-r1.ebuild
new file mode 100644
index 0000000..6724af6
--- /dev/null
+++ b/media-video/mplayer/mplayer-1.4-r1.ebuild
@@ -0,0 +1,609 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git"
+ESVN_REPO_URI="svn://svn.mplayerhq.hu/mplayer/trunk"
+[[ ${PV} = *9999* ]] && SVN_ECLASS="subversion git-r3"
+
+inherit toolchain-funcs flag-o-matic ${SVN_ECLASS}
+
+IUSE="cpu_flags_x86_3dnow cpu_flags_x86_3dnowext a52 aalib +alsa altivec aqua bidi bl bluray
+bs2b cddb +cdio cdparanoia cpudetection debug dga
+doc dts dv dvb +dvd +dvdnav +enca +encode faac faad fbcon
+ftp ggi gsm +iconv ipv6 jack joystick jpeg kernel_linux ladspa
++libass libcaca libmpeg2 lirc live lzo mad md5sum cpu_flags_x86_mmx cpu_flags_x86_mmxext mng mp3 nas
++network openal opengl +osdmenu oss png pnm pulseaudio pvr
+radio rar rtc rtmp samba selinux +shm sdl speex cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_ssse3
+tga theora tremor +truetype toolame twolame +unicode v4l vcd vdpau vidix
+vorbis +X x264 xinerama +xscreensaver +xv xvid yuv4mpeg zoran"
+
+VIDEO_CARDS="mga"
+for x in ${VIDEO_CARDS}; do
+ IUSE+=" video_cards_${x}"
+done
+
+FONT_URI="
+ mirror://mplayer/releases/fonts/font-arial-iso-8859-1.tar.bz2
+ mirror://mplayer/releases/fonts/font-arial-iso-8859-2.tar.bz2
+ mirror://mplayer/releases/fonts/font-arial-cp1250.tar.bz2
+"
+if [[ ${PV} == *9999* ]]; then
+ RELEASE_URI=""
+elif [ "${PV%_rc*}" = "${PV}" -a "${PV%_pre*}" = "${PV}" ]; then
+ MY_P="MPlayer-${PV}"
+ S="${WORKDIR}/${MY_P}"
+ RELEASE_URI="mirror://mplayer/releases/${MY_P}.tar.xz"
+else
+ RELEASE_URI="mirror://gentoo/${P}.tar.xz"
+fi
+SRC_URI="${RELEASE_URI}
+ !truetype? ( ${FONT_URI} )"
+
+DESCRIPTION="Media Player for Linux"
+HOMEPAGE="http://www.mplayerhq.hu/"
+
+FONT_RDEPS="
+ virtual/ttf-fonts
+ media-libs/fontconfig
+ >=media-libs/freetype-2.2.1:2
+"
+X_RDEPS="
+ x11-libs/libXext
+ x11-libs/libXxf86vm
+"
+# Rar: althrought -gpl version is nice, it cant do most functions normal rars can
+# nemesi? ( net-libs/libnemesi )
+# mplayer relies on private APIs in giflib that have been removed:
+# https://sourceforge.net/p/giflib/bugs/132/
+RDEPEND+="
+ sys-libs/ncurses:0=
+ app-arch/bzip2
+ sys-libs/zlib
+ >=media-video/ffmpeg-4.0:0=[vdpau?]
+ a52? ( media-libs/a52dec )
+ aalib? ( media-libs/aalib )
+ alsa? ( media-libs/alsa-lib )
+ bidi? ( dev-libs/fribidi )
+ bluray? ( >=media-libs/libbluray-0.2.1:= )
+ bs2b? ( media-libs/libbs2b )
+ cdio? ( dev-libs/libcdio:0= dev-libs/libcdio-paranoia )
+ cdparanoia? ( !cdio? ( media-sound/cdparanoia ) )
+ dga? ( x11-libs/libXxf86dga )
+ dts? ( media-libs/libdca )
+ dv? ( media-libs/libdv )
+ dvd? ( >=media-libs/libdvdread-4.1.3:0= )
+ dvdnav? ( >=media-libs/libdvdnav-4.1.3:0= )
+ encode? (
+ !twolame? ( toolame? ( media-sound/toolame ) )
+ twolame? ( media-sound/twolame )
+ faac? ( media-libs/faac )
+ mp3? ( media-sound/lame )
+ x264? ( >=media-libs/x264-0.0.20100423:= )
+ xvid? ( media-libs/xvid )
+ )
+ enca? ( app-i18n/enca )
+ faad? ( media-libs/faad2 )
+ ggi? ( media-libs/libggi media-libs/libggiwmh )
+ gsm? ( media-sound/gsm )
+ iconv? ( virtual/libiconv )
+ jack? ( virtual/jack )
+ jpeg? ( virtual/jpeg:0 )
+ ladspa? ( media-libs/ladspa-sdk )
+ libass? ( >=media-libs/libass-0.9.10:= )
+ libcaca? ( media-libs/libcaca )
+ libmpeg2? ( media-libs/libmpeg2 )
+ lirc? ( app-misc/lirc )
+ live? ( media-plugins/live )
+ lzo? ( >=dev-libs/lzo-2 )
+ mad? ( media-libs/libmad )
+ mng? ( media-libs/libmng:= )
+ mp3? ( media-sound/mpg123 )
+ nas? ( media-libs/nas )
+ openal? ( media-libs/openal )
+ opengl? ( virtual/opengl )
+ png? ( media-libs/libpng:0= )
+ pnm? ( media-libs/netpbm )
+ pulseaudio? ( media-sound/pulseaudio )
+ rar? (
+ || (
+ app-arch/unrar
+ app-arch/rar
+ )
+ )
+ rtmp? ( media-video/rtmpdump )
+ samba? ( net-fs/samba )
+ sdl? ( media-libs/libsdl )
+ speex? ( media-libs/speex )
+ theora? ( media-libs/libtheora[encode?] )
+ tremor? ( media-libs/tremor )
+ truetype? ( ${FONT_RDEPS} )
+ vdpau? ( x11-libs/libvdpau )
+ vorbis? ( !tremor? ( media-libs/libvorbis ) )
+ X? ( ${X_RDEPS} )
+ xinerama? ( x11-libs/libXinerama )
+ xscreensaver? ( x11-libs/libXScrnSaver )
+ xv? ( x11-libs/libXv )
+"
+
+ASM_DEP="dev-lang/yasm"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ dga? ( x11-base/xorg-proto )
+ dvb? ( virtual/linuxtv-dvb-headers )
+ X? ( x11-base/xorg-proto )
+ xinerama? ( x11-base/xorg-proto )
+ xscreensaver? ( x11-base/xorg-proto )
+ amd64? ( ${ASM_DEP} )
+ doc? (
+ dev-libs/libxslt app-text/docbook-xml-dtd
+ app-text/docbook-xsl-stylesheets
+ )
+ x86? ( ${ASM_DEP} )
+ x86-fbsd? ( ${ASM_DEP} )
+"
+RDEPEND+="
+ selinux? ( sec-policy/selinux-mplayer )
+"
+
+SLOT="0"
+LICENSE="GPL-2"
+if [[ ${PV} != *9999* ]]; then
+ KEYWORDS="~alpha amd64 arm ~hppa ~ia64 ppc ppc64 ~sparc x86"
+fi
+
+# faac codecs are nonfree
+# libcdio support: prefer libcdio over cdparanoia and don't check for cddb w/cdio
+# dvd navigation requires dvd read support
+# ass and freetype font require iconv and ass requires freetype fonts
+# unicode transformations are usefull only with iconv
+# radio requires oss or alsa backend
+REQUIRED_USE="
+ dga? ( X )
+ dvdnav? ( dvd )
+ enca? ( iconv )
+ ggi? ( X )
+ libass? ( truetype )
+ opengl? ( X )
+ osdmenu? ( X )
+ truetype? ( iconv )
+ vdpau? ( X )
+ vidix? ( X )
+ xinerama? ( X )
+ xscreensaver? ( X )
+ xv? ( X )"
+RESTRICT="faac? ( bindist )"
+
+pkg_setup() {
+ if [[ ${PV} == *9999* ]]; then
+ elog
+ elog "This is a live ebuild which installs the latest from upstream's"
+ elog "subversion repository, and is unsupported by Gentoo."
+ elog "Everything but bugs in the ebuild itself will be ignored."
+ elog
+ fi
+
+ if use cpudetection; then
+ ewarn
+ ewarn "You've enabled the cpudetection flag. This feature is"
+ ewarn "included mainly for people who want to use the same"
+ ewarn "binary on another system with a different CPU architecture."
+ ewarn "MPlayer will already detect your CPU settings by default at"
+ ewarn "buildtime; this flag is used for runtime detection."
+ ewarn "You won't need this turned on if you are only building"
+ ewarn "mplayer for this system. Also, if your compile fails, try"
+ ewarn "disabling this use flag."
+ fi
+}
+
+src_unpack() {
+ if [[ ${PV} = *9999* ]]; then
+ subversion_src_unpack
+ cd "${WORKDIR}"
+ rm -rf "${WORKDIR}/${P}/ffmpeg/"
+ ( EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/ffmpeg/" git-r3_src_unpack )
+ else
+ unpack ${A}
+ fi
+
+ if [[ ${PV} = *9999* ]] || [[ "${PV%_rc*}" = "${PV}" ]]; then
+ cd "${S}"
+ cp "${FILESDIR}/dump_ffmpeg.sh" . || die
+ chmod +x dump_ffmpeg.sh
+ ./dump_ffmpeg.sh || die
+ fi
+
+ if ! use truetype; then
+ unpack font-arial-iso-8859-1.tar.bz2 \
+ font-arial-iso-8859-2.tar.bz2 \
+ font-arial-cp1250.tar.bz2
+ fi
+}
+
+src_prepare() {
+ default
+
+ local svf=snapshot_version
+ if [[ ${PV} = *9999* ]]; then
+ # Set SVN version manually
+ subversion_wc_info
+ printf "${ESVN_WC_REVISION}" > $svf
+ else
+ eapply "${FILESDIR}"/${PN}-1.3-CVE-2016-4352.patch
+ fi
+ eapply "${FILESDIR}"/ffmpeg44.patch
+ if [ ! -f VERSION ] ; then
+ [ -f "$svf" ] || die "Missing ${svf}. Did you generate your snapshot with prepare_mplayer.sh?"
+ local sv=$(<$svf)
+ printf "SVN-r${sv} (Gentoo)" > VERSION
+ fi
+
+ # fix path to bash executable in configure scripts
+ sed -i -e "1c\#!${EPREFIX}/bin/bash" configure version.sh || die
+
+ # Use sane default for >=virtual/udev-197
+ sed -i -e '/default_dvd_device/s:/dev/dvd:/dev/cdrom:' configure || die
+
+ # Patch the configure script for the RISC-V architecture
+ epatch "${FILESDIR}/configure-riscv.patch"
+}
+
+src_configure() {
+ local myconf=""
+ local uses i
+
+ # set LINGUAS
+ [[ -n $LINGUAS ]] && LINGUAS="${LINGUAS/da/dk}"
+ [[ -n $LINGUAS ]] && LINGUAS="${LINGUAS/zh/zh_CN}" #482968
+
+ # mplayer ebuild uses "use foo || --disable-foo" to forcibly disable
+ # compilation in almost every situation. The reason for this is
+ # because if --enable is used, it will force the build of that option,
+ # regardless of whether the dependency is available or not.
+
+ ###################
+ #Optional features#
+ ###################
+ # disable svga since we don't want it
+ # disable arts since we don't have kde3
+ # always disable internal ass
+ # disable opus and ilbc since it only controls support in internal
+ # ffmpeg which we do not use
+ myconf+="
+ --disable-arts
+ --disable-ass-internal
+ --disable-directfb
+ --disable-kai
+ --disable-libilbc
+ --disable-libnut
+ --disable-libopus
+ --disable-svga --disable-svgalib_helper
+ --disable-xvmc
+ $(use_enable network networking)
+ $(use_enable joystick)
+ "
+ uses="bl bluray enca ftp rtc vcd" # nemesi <- not working with in-tree ebuild
+ myconf+=" --disable-nemesi" # nemesi automagic disable
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-${i}"
+ done
+ use bidi || myconf+=" --disable-fribidi"
+ use ipv6 || myconf+=" --disable-inet6"
+ use libass || myconf+=" --disable-ass"
+ use rar || myconf+=" --disable-unrarexec"
+ use samba || myconf+=" --disable-smb"
+ use lirc || myconf+=" --disable-lirc --disable-lircc --disable-apple-ir"
+
+ # libcdio support: prefer libcdio over cdparanoia
+ # don't check for cddb w/cdio
+ if use cdio; then
+ myconf+=" --disable-cdparanoia"
+ else
+ myconf+=" --disable-libcdio"
+ use cdparanoia || myconf+=" --disable-cdparanoia"
+ use cddb || myconf+=" --disable-cddb"
+ fi
+
+ ################################
+ # DVD read, navigation support #
+ ################################
+ #
+ # dvdread - accessing a DVD
+ # dvdnav - navigation of menus
+ use dvd || myconf+=" --disable-dvdread"
+ use dvdnav || myconf+=" --disable-dvdnav"
+
+ #############
+ # Subtitles #
+ #############
+ #
+ # SRT/ASS/SSA (subtitles) requires freetype support
+ # freetype support requires iconv
+ # iconv optionally can use unicode
+ use truetype || myconf+=" --disable-freetype"
+ use iconv || myconf+=" --disable-iconv --charset=noconv"
+ use iconv && use unicode && myconf+=" --charset=UTF-8"
+
+ #####################################
+ # DVB / Video4Linux / Radio support #
+ #####################################
+ myconf+=" --disable-tv-bsdbt848"
+ # broken upstream, won't work with recent kernels
+ myconf+=" --disable-ivtv"
+ # gone since linux-headers-2.6.38
+ myconf+=" --disable-tv-v4l1"
+ if { use dvb || use v4l || use pvr || use radio; }; then
+ use dvb || myconf+=" --disable-dvb"
+ use pvr || myconf+=" --disable-pvr"
+ use v4l || myconf+=" --disable-tv-v4l2"
+ if use radio && { use dvb || use v4l; }; then
+ myconf+="
+ --enable-radio
+ $(use_enable encode radio-capture)
+ "
+ else
+ myconf+="
+ --disable-radio-v4l2
+ --disable-radio-bsdbt848
+ "
+ fi
+ else
+ myconf+="
+ --disable-tv
+ --disable-tv-v4l2
+ --disable-radio
+ --disable-radio-v4l2
+ --disable-radio-bsdbt848
+ --disable-dvb
+ --disable-v4l2
+ --disable-pvr"
+ fi
+
+ ##########
+ # Codecs #
+ ##########
+ myconf+=" --disable-musepack" # Use internal musepack codecs for SV7 and SV8 support
+ myconf+=" --disable-libmpeg2-internal" # always use system media-libs/libmpeg2
+ myconf+=" --disable-gif" # relies on to-be-removed giflib internals https://sourceforge.net/p/giflib/bugs/132/
+ use dts || myconf+=" --disable-libdca"
+ if ! use mp3; then
+ myconf+="
+ --disable-mp3lame
+ --disable-mpg123
+ "
+ fi
+ uses="a52 bs2b dv gsm lzo rtmp vorbis"
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-lib${i}"
+ done
+
+ uses="faad jpeg libmpeg2 live mad mng png pnm speex tga theora tremor"
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-${i}"
+ done
+ # Pulls an outdated libopenjpeg, ffmpeg provides better support for it
+ myconf+=" --disable-libopenjpeg"
+
+ # Encoding
+ uses="faac x264 xvid toolame twolame"
+ if use encode; then
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-${i}"
+ done
+ else
+ myconf+=" --disable-mencoder"
+ for i in ${uses}; do
+ myconf+=" --disable-${i}"
+ use ${i} && elog "Useflag \"${i}\" will only be useful for encoding, i.e., with \"encode\" useflag enabled."
+ done
+ fi
+
+ #################
+ # Binary codecs #
+ #################
+ myconf+=" --disable-qtx --disable-real --disable-win32dll"
+
+ ################
+ # Video Output #
+ ################
+ uses="md5sum sdl yuv4mpeg"
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-${i}"
+ done
+ use aalib || myconf+=" --disable-aa"
+ use fbcon || myconf+=" --disable-fbdev"
+ use libcaca || myconf+=" --disable-caca"
+ use zoran || myconf+=" --disable-zr"
+
+ if ! use kernel_linux || ! use video_cards_mga; then
+ myconf+=" --disable-mga --disable-xmga"
+ fi
+
+ myconf+="
+ --disable-3dfx
+ --disable-tdfxvid
+ --disable-tdfxfb
+ "
+
+ # sun card, disable by default, see bug #258729
+ myconf+=" --disable-xvr100"
+
+ ################
+ # Audio Output #
+ ################
+ myconf+=" --disable-esd"
+ uses="alsa jack ladspa nas openal"
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-${i}"
+ done
+ use pulseaudio || myconf+=" --disable-pulse"
+ if ! use radio; then
+ use oss || myconf+=" --disable-ossaudio"
+ fi
+
+ ####################
+ # Advanced Options #
+ ####################
+ # Platform specific flags, hardcoded on amd64 (see below)
+ use cpudetection && myconf+=" --enable-runtime-cpudetection"
+
+ uses="3dnow 3dnowext mmx mmxext sse sse2 ssse3"
+ for i in ${uses}; do
+ myconf+=" $(use_enable cpu_flags_x86_${i} ${i})"
+ done
+
+ uses="altivec shm"
+ for i in ${uses}; do
+ myconf+=" $(use_enable ${i})"
+ done
+
+ use debug && myconf+=" --enable-debug=3"
+
+ if use x86 && gcc-specs-pie; then
+ filter-flags -fPIC -fPIE
+ append-ldflags -nopie
+ fi
+
+ ###########################
+ # X enabled configuration #
+ ###########################
+ myconf+=" --disable-gui"
+ myconf+=" --disable-vesa"
+ uses="ggi vdpau xinerama xv"
+ for i in ${uses}; do
+ use ${i} || myconf+=" --disable-${i}"
+ done
+ use dga || myconf+=" --disable-dga1 --disable-dga2"
+ use opengl || myconf+=" --disable-gl"
+ use osdmenu && myconf+=" --enable-menu"
+ use vidix || myconf+=" --disable-vidix --disable-vidix-pcidb"
+ use xscreensaver || myconf+=" --disable-xss"
+ use X || myconf+=" --disable-x11"
+
+ ############################
+ # OSX (aqua) configuration #
+ ############################
+ if use aqua; then
+ myconf+="
+ --enable-macosx-finder
+ --enable-macosx-bundle
+ "
+ fi
+
+ # Note: --enable-gnutls only makes sense with --enable-ffmpeg_a
+ ./configure \
+ --cc="$(tc-getCC)" \
+ --host-cc="$(tc-getBUILD_CC)" \
+ --prefix="${EPREFIX}/usr" \
+ --bindir="${EPREFIX}/usr/bin" \
+ --libdir="${EPREFIX}/usr/$(get_libdir)" \
+ --confdir="${EPREFIX}/etc/mplayer" \
+ --datadir="${EPREFIX}/usr/share/mplayer${namesuf}" \
+ --mandir="${EPREFIX}/usr/share/man" \
+ --disable-ffmpeg_a \
+ --disable-gnutls \
+ ${myconf} || die
+}
+
+src_compile() {
+ default
+
+ # Build only user-requested docs if they're available.
+ if use doc ; then
+ # select available languages from $LINGUAS
+ local ALLOWED_LINGUAS="cs de en es fr hu it pl ru zh_CN"
+ local BUILT_DOCS=""
+ for i in ${LINGUAS} ; do
+ has ${i} ${ALLOWED_LINGUAS} && BUILT_DOCS+=" ${i}"
+ done
+ if [[ -z $BUILT_DOCS ]]; then
+ emake -j1 html-chunked
+ else
+ for i in ${BUILT_DOCS}; do
+ emake -j1 html-chunked-${i}
+ done
+ fi
+ fi
+}
+
+src_install() {
+ local i
+
+ emake \
+ DESTDIR="${D}" \
+ INSTALLSTRIP="" \
+ install
+
+ dodoc AUTHORS Changelog Copyright README etc/codecs.conf
+
+ docinto tech/
+ dodoc DOCS/tech/{*.txt,MAINTAINERS,mpsub.sub,playtree,TODO,wishlist}
+ docinto TOOLS/
+ dodoc -r TOOLS/*
+ docinto tech/mirrors/
+ dodoc DOCS/tech/mirrors/*
+
+ if use doc; then
+ docinto html/
+ dodoc -r "${S}"/DOCS/HTML/*
+ fi
+
+ if ! use truetype; then
+ dodir /usr/share/mplayer/fonts
+ # Do this generic, as the mplayer people like to change the structure
+ # of their zips ...
+ for i in $(find "${WORKDIR}/" -type d -name 'font-arial-*'); do
+ cp -pPR "${i}" "${ED}/usr/share/mplayer/fonts"
+ done
+ # Fix the font symlink ...
+ rm -rf "${ED}/usr/share/mplayer/font"
+ dosym fonts/font-arial-14-iso-8859-1 /usr/share/mplayer/font
+ fi
+
+ insinto /etc/mplayer
+ newins "${S}/etc/example.conf" mplayer.conf
+ cat >> "${ED}/etc/mplayer/mplayer.conf" << _EOF_
+# Config options can be section specific, global
+# options should go in the default section
+[default]
+_EOF_
+ doins "${S}/etc/input.conf"
+ if use osdmenu; then
+ doins "${S}/etc/menu.conf"
+ fi
+
+ if use truetype; then
+ cat >> "${ED}/etc/mplayer/mplayer.conf" << _EOF_
+fontconfig=1
+subfont-osd-scale=4
+subfont-text-scale=3
+_EOF_
+ fi
+
+ # bug 256203
+ if use rar; then
+ cat >> "${ED}/etc/mplayer/mplayer.conf" << _EOF_
+unrarexec=${EPREFIX}/usr/bin/unrar
+_EOF_
+ fi
+
+ dosym ../../../etc/mplayer/mplayer.conf /usr/share/mplayer/mplayer.conf
+ newbin "${S}/TOOLS/midentify.sh" midentify
+}
+
+pkg_preinst() {
+ [[ -d ${EROOT}/usr/share/mplayer/Skin/default ]] && \
+ rm -rf "${EROOT}/usr/share/mplayer/Skin/default"
+}
+
+pkg_postrm() {
+ # Cleanup stale symlinks
+ [ -L "${EROOT}/usr/share/mplayer/font" -a \
+ ! -e "${EROOT}/usr/share/mplayer/font" ] && \
+ rm -f "${EROOT}/usr/share/mplayer/font"
+
+ [ -L "${EROOT}/usr/share/mplayer/subfont.ttf" -a \
+ ! -e "${EROOT}/usr/share/mplayer/subfont.ttf" ] && \
+ rm -f "${EROOT}/usr/share/mplayer/subfont.ttf"
+}
diff --git a/metadata/layout.conf b/metadata/layout.conf
new file mode 100644
index 0000000..c673a95
--- /dev/null
+++ b/metadata/layout.conf
@@ -0,0 +1,2 @@
+masters = gentoo
+auto-sync = false
diff --git a/profiles/repo_name b/profiles/repo_name
new file mode 100644
index 0000000..2dc30aa
--- /dev/null
+++ b/profiles/repo_name
@@ -0,0 +1 @@
+unmatched-patchwork
diff --git a/sys-apps/sysvinit/Manifest b/sys-apps/sysvinit/Manifest
new file mode 100644
index 0000000..bd46056
--- /dev/null
+++ b/sys-apps/sysvinit/Manifest
@@ -0,0 +1,10 @@
+AUX bootlogd.initd 259 BLAKE2B 78c1a1fe8583685656edb85e29f8dbed40bdd7272590bbdaccb52fe6e54cce0a077a28501c7c87bec55f046172545d940c52345551cd3c01cff0895d12b32a15 SHA512 05a3c2542ceaff85c02c5c30a52be8f1bb95741fffef306777ad1b248b527cdd921f009571e1f43d7a6ede0cc61cf490a1dbbbfe0a50b234c258ad7688a37ad9
+AUX halt.sh 101 BLAKE2B f3b8a24b6efce0ccffeb76f401af9f9bce752a541ea646dd6d357eaaa834be2049411148ec18b591283d85f42b0c3c1e41f442ba95c5f5b4cd9e87b39a83d51e SHA512 aaf46f9c74ae58027e59f32e5e929ff6529206d07fdf4e3f17962ccbc46c68d34e4e2839019708a763dead93b83ca8f457379491830ab43d6407247fd7ac2a77
+AUX inittab-2.98-r1 2124 BLAKE2B 57e40e8410a31ec73f581e2feb142c600e2ce687745a6135961c0f1ea31e77f1acf9b9be1cf4c1d55685802a913304056cf1f137686f14d89caa9ec973d751c2 SHA512 6ce22ba933158d1a0fc7d0eaa9536b1cdcd8baa90cddfe8b1bf7a1f7292ba7fc14b6b46968848301a2e573939b4e21ce8d64bf3a9eaeb4d038de7d113fd3b9fb
+AUX sysvinit-2.86-kexec.patch 3910 BLAKE2B fb62326925c78960142123da82ffd1de6319153cce234b0d1dc7546beecf67296f8b7d6e3eb0f633d8a4ebc83fc4cc586c4f92cdb48df1f766aa4af72b0fa0e1 SHA512 6ce3adf698554d15394edbe6dbfc62822859854d503b201c9f96bd81c2a8cd249ed44229a85dd8b97f454f9311abc5792e349f5cc512ff6d5570500d88044bee
+AUX sysvinit-2.94_beta-shutdown-single.patch 1261 BLAKE2B 571b7cf40ccdbb27e65b31e507ea8331ae1e9b8b012570cdc4099a15c864f2abc92f84c44ef9dbd35dfe43c68e491d347266abaa0156536edae4c35231f17ccb SHA512 2f26201e8634b380dafdf42678cd0241a93f0e473f5c8680d4206d97dfe3510c2ceeb4cd066d1af3ae97fe411f7a5452a9586f8f5c5e65653bf9241fea1edaf0
+AUX sysvinit-2.99-force-poweroff.patch 470 BLAKE2B 9d7ec8d81641b57a3ffac35a8fe53491028dd6b71866cf43593e5d9a9f270af31c5fa959aded213e3bd38a5c5bb0e055015545c35aa627f4d9a427cff627e174 SHA512 d28654a122055169b4bc51f4081d5f770885e6ae13d9467308f26721cb9774a37623d7e1f4e8da993944f35328a82cd157d6f5bedcbb5d4baf172da752b84d72
+AUX sysvinit-2.99-shutdown-h.patch 2684 BLAKE2B 57c27b8646a0b47f66eb103450e645fa45220a1bf79da86207ffa1393c311cb4c4a2ad9b8b7bf81cc4ae2ccb2acb19b66fd575935d8a0b0a2a9b3899c0088c9f SHA512 ef33da0d5673180275c8120c6904a4214cf1308827a626d8d6a2aab67d7d25b5407f9efcaf6a7a4a09a8c409899242943f6a95881cc8c8898b780224f991f2f7
+DIST sysvinit-2.99.tar.xz 126908 BLAKE2B b82c745d5b695f918d4a163e7b9eaceccc07a46f73c3782c7771cc29a8600be13de4ff30891086df5773d60f37fa3b0f58566ccaf72cd70af68083b51152a38b SHA512 34f328d7d2e6ceddcddfebab49eb9c34e90dc96decf2caeb89dffd2ade54322fa4a3cb9fa1e1a4bc687e07fcb0a13e5aebe6186582a9f5c9153e1513baa87ddd
+EBUILD sysvinit-2.99.ebuild 4089 BLAKE2B a9893ec8278e5f53528e15dab927b4f14e083861ef6017302ea6c5023bf108544c457c4d1a75c83801db10f3784694150828432e8986bdaf114aeb4d85ea876e SHA512 c53a1713ca68fccab0ad9e5483ecc0281546a14f7b04f59cb2bb949ad42a4b645ba2c31b4fc1a1a75b0431110bd22fb6e6dcb9ed5e8a12cd876f8c4e1db134f7
+MISC metadata.xml 358 BLAKE2B c1093363e2c2f9cbce13e3a7025cf2f767b526e90bcdbe32714aba5aef411483e013facfc014c89ac591feae0fa733902be185ac8a0c673e56799b8168ad77ed SHA512 37306b4ebf69803889059875a22ceccde18725cc21e5a598496c30a377e6cb1d3d9ca88123121b2a70c2436b3a77530415169b53165de93ea8510cc41fbb589f
diff --git a/sys-apps/sysvinit/files/bootlogd.initd b/sys-apps/sysvinit/files/bootlogd.initd
new file mode 100644
index 0000000..a422192
--- /dev/null
+++ b/sys-apps/sysvinit/files/bootlogd.initd
@@ -0,0 +1,8 @@
+#!/sbin/openrc-run
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+description="bootlogd - record boot messages (sysvinit)"
+pidfile="/run/bootlogd"
+command="/sbin/bootlogd"
+command_args="-p ${pidfile}"
diff --git a/sys-apps/sysvinit/files/halt.sh b/sys-apps/sysvinit/files/halt.sh
new file mode 100644
index 0000000..ff68c42
--- /dev/null
+++ b/sys-apps/sysvinit/files/halt.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+if [ "${INIT_HALT}" = HALT ]; then
+ exec /sbin/halt -dhn
+else
+ exec /sbin/poweroff -dhn
+fi
diff --git a/sys-apps/sysvinit/files/inittab-2.98-r1 b/sys-apps/sysvinit/files/inittab-2.98-r1
new file mode 100644
index 0000000..89c8bd9
--- /dev/null
+++ b/sys-apps/sysvinit/files/inittab-2.98-r1
@@ -0,0 +1,63 @@
+#
+# /etc/inittab: This file describes how the INIT process should set up
+# the system in a certain run-level.
+#
+# Author: Miquel van Smoorenburg, <miquels@cistron.nl>
+# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>
+# Modified by: Daniel Robbins, <drobbins@gentoo.org>
+# Modified by: Martin Schlemmer, <azarah@gentoo.org>
+# Modified by: Mike Frysinger, <vapier@gentoo.org>
+# Modified by: Robin H. Johnson, <robbat2@gentoo.org>
+# Modified by: William Hubbs, <williamh@gentoo.org>
+# Modified by: Lars Wendler, <polynomial-c@gentoo.org>
+# Modified by: Aisha Tammy, <gentoo@aisha.cc>
+#
+
+# Default runlevel.
+id:3:initdefault:
+
+# System initialization, mount local filesystems, etc.
+si::sysinit:/sbin/openrc sysinit
+
+# Further system initialization, brings up the boot runlevel.
+rc::bootwait:/sbin/openrc boot
+
+l0u:0:wait:/sbin/telinit u
+l0:0:wait:/sbin/openrc shutdown
+l0s:0:wait:/sbin/halt.sh
+l1:1:wait:/sbin/openrc single
+l2:2:wait:/sbin/openrc nonetwork
+l3:3:wait:/sbin/openrc default
+l4:4:wait:/sbin/openrc default
+l5:5:wait:/sbin/openrc default
+l6u:6:wait:/sbin/telinit u
+l6:6:wait:/sbin/openrc reboot
+l6r:6:wait:/sbin/reboot -dkn
+#z6:6:respawn:/sbin/sulogin
+
+# new-style single-user
+su0:S:wait:/sbin/openrc single
+su1:S:wait:/sbin/sulogin
+
+# TERMINALS
+#x1:12345:respawn:/sbin/agetty 38400 console linux
+c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
+c2:2345:respawn:/sbin/agetty 38400 tty2 linux
+c3:2345:respawn:/sbin/agetty 38400 tty3 linux
+c4:2345:respawn:/sbin/agetty 38400 tty4 linux
+c5:2345:respawn:/sbin/agetty 38400 tty5 linux
+c6:2345:respawn:/sbin/agetty 38400 tty6 linux
+
+# SERIAL CONSOLES
+#s0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100
+#s1:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
+
+# What to do at the "Three Finger Salute".
+ca:12345:ctrlaltdel:/sbin/shutdown -r now
+
+# Used by /etc/init.d/display-manager to control DM startup.
+# Read the comments in /etc/init.d/display-manager for more
+# info. Do NOT remove, as this will start nothing
+# extra at boot if /etc/init.d/display-manager is not added
+# to the "default" runlevel.
+x:a:once:/usr/bin/startDM
diff --git a/sys-apps/sysvinit/files/sysvinit-2.86-kexec.patch b/sys-apps/sysvinit/files/sysvinit-2.86-kexec.patch
new file mode 100644
index 0000000..4948806
--- /dev/null
+++ b/sys-apps/sysvinit/files/sysvinit-2.86-kexec.patch
@@ -0,0 +1,142 @@
+halt: add a -k kexec flag
+
+--- a/man/halt.8
++++ b/man/halt.8
+@@ -40,6 +40,7 @@ halt, reboot, poweroff \- stop the system.
+ .RB [ \-d ]
+ .RB [ \-f ]
+ .RB [ \-i ]
++.RB [ \-k ]
+ .br
+ .B /sbin/poweroff
+ .RB [ \-n ]
+@@ -83,6 +84,8 @@ Put all hard drives on the system in stand-by mode just before halt or power-off
+ .IP \fB\-p\fP
+ When halting the system, switch off the power. This is the default when halt is
+ called as \fBpoweroff\fP.
++.IP \fB\-k\fP
++Try to reboot using \fBkexec\fP, if kernel supports it.
+ .\"}}}
+ .\"{{{ Diagnostics
+ .SH DIAGNOSTICS
+--- a/src/halt.c
++++ b/src/halt.c
+@@ -8,7 +8,7 @@
+ * execute an "shutdown -r". This is for compatibility with
+ * sysvinit 2.4.
+ *
+- * Usage: halt [-n] [-w] [-d] [-f] [-h] [-i] [-p]
++ * Usage: halt [-n] [-w] [-d] [-f] [-h] [-i] [-p] [-k]
+ * -n: don't sync before halting the system
+ * -w: only write a wtmp reboot record and exit.
+ * -d: don't write a wtmp record.
+@@ -16,6 +16,7 @@
+ * -h: put harddisks in standby mode
+ * -i: shut down all network interfaces.
+ * -p: power down the system (if possible, otherwise halt).
++ * -k: reboot the system using kexec.
+ *
+ * Reboot and halt are both this program. Reboot
+ * is just a link to halt. Invoking the program
+@@ -74,8 +75,10 @@ extern void write_wtmp(char *user, char *id, int pid, int type, char *line);
+ */
+ void usage(void)
+ {
+- fprintf(stderr, "usage: %s [-n] [-w] [-d] [-f] [-h] [-i]%s\n",
+- progname, strcmp(progname, "halt") ? "" : " [-p]");
++ fprintf(stderr, "usage: %s [-n] [-w] [-d] [-f] [-h] [-i]%s%s\n",
++ progname,
++ strcmp(progname, "halt") ? "" : " [-p]",
++ strcmp(progname, "reboot") ? "" : " [-k]");
+ fprintf(stderr, "\t-n: don't sync before halting the system\n");
+ fprintf(stderr, "\t-w: only write a wtmp reboot record and exit.\n");
+ fprintf(stderr, "\t-d: don't write a wtmp record.\n");
+@@ -84,6 +87,8 @@ void usage(void)
+ fprintf(stderr, "\t-i: shut down all network interfaces.\n");
+ if (!strcmp(progname, "halt"))
+ fprintf(stderr, "\t-p: power down the system (if possible, otherwise halt).\n");
++ if (!strcmp(progname, "reboot"))
++ fprintf(stderr, "\t-k: reboot the system using kexec.\n");
+ exit(1);
+ }
+
+@@ -182,6 +187,7 @@ int main(int argc, char **argv)
+ int do_ifdown = 0;
+ int do_hddown = 0;
+ int do_poweroff = 0;
++ int do_kexec = 0;
+ int c;
+ char *tm = NULL;
+
+@@ -201,7 +207,7 @@ int main(int argc, char **argv)
+ /*
+ * Get flags
+ */
+- while((c = getopt(argc, argv, ":ihdfnpwt:")) != EOF) {
++ while((c = getopt(argc, argv, ":ihdfnpwkt:")) != EOF) {
+ switch(c) {
+ case 'n':
+ do_sync = 0;
+@@ -225,6 +231,9 @@ int main(int argc, char **argv)
+ case 'p':
+ do_poweroff = 1;
+ break;
++ case 'k':
++ do_kexec = 1;
++ break;
+ case 't':
+ tm = optarg;
+ break;
+@@ -242,10 +251,24 @@ int main(int argc, char **argv)
+ (void)chdir("/");
+
+ if (!do_hard && !do_nothing) {
++ c = get_runlevel();
++
++ /*
++ * We can't reboot using kexec through this path.
++ */
++ if (c != '6' && do_reboot && do_kexec) {
++ fprintf(stderr, "ERROR: using -k at this"
++ " runlevel requires also -f\n"
++ " (You probably want instead to reboot"
++ " normally and let your reboot\n"
++ " script, usually /etc/init.d/reboot,"
++ " specify -k)\n");
++ exit(1);
++ }
++
+ /*
+ * See if we are in runlevel 0 or 6.
+ */
+- c = get_runlevel();
+ if (c != '0' && c != '6')
+ do_shutdown(do_reboot ? "-r" : "-h", tm);
+ }
+@@ -277,6 +300,15 @@ int main(int argc, char **argv)
+ if (do_nothing) exit(0);
+
+ if (do_reboot) {
++ /*
++ * kexec or reboot
++ */
++ if (do_kexec)
++ init_reboot(BMAGIC_KEXEC);
++
++ /*
++ * Fall through if failed
++ */
+ init_reboot(BMAGIC_REBOOT);
+ } else {
+ /*
+--- a/src/reboot.h
++++ b/src/reboot.h
+@@ -47,5 +47,8 @@
+ # define BMAGIC_POWEROFF BMAGIC_HALT
+ #endif
+
++/* for kexec support */
++#define BMAGIC_KEXEC 0x45584543
++
+ #define init_reboot(magic) reboot(magic)
+
diff --git a/sys-apps/sysvinit/files/sysvinit-2.94_beta-shutdown-single.patch b/sys-apps/sysvinit/files/sysvinit-2.94_beta-shutdown-single.patch
new file mode 100644
index 0000000..9aa8522
--- /dev/null
+++ b/sys-apps/sysvinit/files/sysvinit-2.94_beta-shutdown-single.patch
@@ -0,0 +1,39 @@
+This patch makes shutdown use the Single User runlevel by default so
+the gettys are shutdown too.
+
+Roy Marples <uberlord@gentoo.org>
+
+Forward-ported from v2.86 to v2.94_beta
+Lars Wendler <polynomial-c@gentoo.org>
+
+--- sysvinit-2.94/man/shutdown.8
++++ sysvinit-2.94/man/shutdown.8
+@@ -44,7 +44,7 @@
+ \fBshutdown\fP does its job by signalling the \fBinit\fP process,
+ asking it to change the runlevel.
+ Runlevel \fB0\fP is used to halt the system, runlevel \fB6\fP is used
+-to reboot the system, and runlevel \fB1\fP is used to put to system into
++to reboot the system, and runlevel \fBS\fP is used to put to system into
+ a state where administrative tasks can be performed; this is the default
+ if neither the \fI-h\fP or \fI-r\fP flag is given to \fBshutdown\fP.
+ To see which actions are taken on halt or reboot see the appropriate
+--- sysvinit-2.94/src/shutdown.c
++++ sysvinit-2.94/src/shutdown.c
+@@ -547,7 +547,7 @@
+ usage();
+ exit(1);
+ }
+- strcpy(down_level, "1");
++ strcpy(down_level, "S");
+ halttype = NULL;
+ memset(when, '\0', WHEN_SIZE);
+
+@@ -734,6 +734,8 @@
+ strncpy(newstate, "for reboot", STATELEN);
+ break;
+ case '1':
++ case 'S':
++ case 's':
+ strncpy(newstate, "to maintenance mode", STATELEN);
+ break;
+ default:
diff --git a/sys-apps/sysvinit/files/sysvinit-2.99-force-poweroff.patch b/sys-apps/sysvinit/files/sysvinit-2.99-force-poweroff.patch
new file mode 100644
index 0000000..d9dc0ef
--- /dev/null
+++ b/sys-apps/sysvinit/files/sysvinit-2.99-force-poweroff.patch
@@ -0,0 +1,16 @@
+diff -Naur sysvinit-2.99/src/halt.c sysvinit-2.99-mod/src/halt.c
+--- sysvinit-2.99/src/halt.c 2021-02-21 19:02:25.000000000 +0100
++++ sysvinit-2.99-mod/src/halt.c 2021-06-26 17:00:41.577268981 +0200
+@@ -209,6 +209,12 @@
+ if (!strcmp(progname, "reboot")) do_reboot = 1;
+ if (!strcmp(progname, "poweroff")) do_poweroff = 1;
+
++ /* The unmatched doen't reboot, so force poweroff */
++ if (do_reboot) {
++ do_reboot = 0;
++ do_poweroff = 1;
++ }
++
+ /*
+ * Get flags
+ */
diff --git a/sys-apps/sysvinit/files/sysvinit-2.99-shutdown-h.patch b/sys-apps/sysvinit/files/sysvinit-2.99-shutdown-h.patch
new file mode 100644
index 0000000..a4ceeda
--- /dev/null
+++ b/sys-apps/sysvinit/files/sysvinit-2.99-shutdown-h.patch
@@ -0,0 +1,82 @@
+other inits have moved to not requiring the -h flag when used with -H/-P.
+modify sysvinit to be the same since it really doesn't matter.
+
+https://bugs.gentoo.org/449354
+
+patch by Doug Goldstein
+
+--- sysvinit-2.99/man/shutdown.8
++++ sysvinit-2.99/man/shutdown.8
+@@ -66,22 +66,19 @@
+ .\"}}}
+ .\"{{{ -h
+ .IP \fB\-h\fP
+-Halt or power off after shutdown. Usually used with the \fI-P\fP or \fI-H\fP flags,
+-depending on whether we want to poweroff or simply stop the operating system.
++Equivalent to \fI-P\fP, unless \fI-H\fP is specified.
+ .\"}}}
+ .\"{{{ -P
+ .IP \fB\-P\fP
+-Modifier to the \fI-h\fP flag. Halt action is to turn off the power.
+-Must be used with the \fI-h\fP flag.
++Halt action is to turn off the power.
+ .\"}}}
+ .\"{{{ -H
+ .IP \fB\-H\fP
+-Modifier to the \fI-h\fP flag. Halt action is to halt or drop into boot
+-monitor on systems that support it. Must be used with the \fI-h\fP flag.
++Action is to halt or drop into boot monitor on systems that support it.
+ Halting is often used to run through the shutdown process and leave
+ output on the screen for debugging purposes. Or when the user wants the OS to
+ stop, but leave the power on. To power off at the end of the shutdown sequence
+-use the \fI-P\fP modifier instead.
++use the \fI-P\fP option instead.
+ .\"}}}
+ .\"{{{ -f
+ .IP \fB\-f\fP
+--- sysvinit-2.99/src/shutdown.c
++++ sysvinit-2.99/src/shutdown.c
+@@ -144,9 +144,7 @@
+ "\t\t -r: reboot after shutdown.\n"
+ "\t\t -h: halt after shutdown.\n"
+ "\t\t -P: halt action is to turn off power.\n"
+- "\t\t can only be used along with -h flag.\n"
+ "\t\t -H: halt action is to just halt.\n"
+- "\t\t can only be used along with -h flag.\n"
+ "\t\t -f: do a 'fast' reboot (skip fsck).\n"
+ "\t\t -F: Force fsck on reboot.\n"
+ "\t\t -n: do not go through \"init\" but go down real fast.\n"
+@@ -556,9 +554,11 @@
+ switch(c) {
+ case 'H':
+ halttype = "HALT";
++ down_level[0] = '0';
+ break;
+ case 'P':
+ halttype = "POWEROFF";
++ down_level[0] = '0';
+ break;
+ case 'a': /* Access control. */
+ useacl = 1;
+@@ -574,6 +574,8 @@
+ break;
+ case 'h': /* Halt after shutdown */
+ down_level[0] = '0';
++ if (!halttype)
++ halttype = "POWEROFF";
+ break;
+ case 'f': /* Don't perform fsck after next boot */
+ fastboot = 1;
+@@ -613,12 +615,6 @@
+ }
+ }
+
+- if (NULL != halttype && down_level[0] != '0') {
+- fprintf(stderr, "shutdown: -H and -P flags can only be used along with -h flag.\n");
+- usage();
+- exit(1);
+- }
+-
+ /* Do we need to use the shutdown.allow file ? */
+ if (useacl && (fp = fopen(SDALLOW, "r")) != NULL) {
+
diff --git a/sys-apps/sysvinit/metadata.xml b/sys-apps/sysvinit/metadata.xml
new file mode 100644
index 0000000..53e0495
--- /dev/null
+++ b/sys-apps/sysvinit/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+ <email>williamh@gentoo.org</email>
+ <name>William Hubbs</name>
+</maintainer>
+<maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ <name>Gentoo Base System</name>
+</maintainer>
+</pkgmetadata>
diff --git a/sys-apps/sysvinit/sysvinit-2.99.ebuild b/sys-apps/sysvinit/sysvinit-2.99.ebuild
new file mode 100644
index 0000000..24ce189
--- /dev/null
+++ b/sys-apps/sysvinit/sysvinit-2.99.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs flag-o-matic
+
+DESCRIPTION="/sbin/init - parent of all processes"
+HOMEPAGE="https://savannah.nongnu.org/projects/sysvinit"
+SRC_URI="mirror://nongnu/${PN}/${P/_/-}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+[[ "${PV}" == *beta* ]] || \
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+IUSE="selinux ibm static kernel_FreeBSD"
+
+CDEPEND="
+ selinux? (
+ >=sys-libs/libselinux-1.28
+ )"
+DEPEND="${CDEPEND}
+ virtual/os-headers"
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-shutdown )
+ !<sys-apps/openrc-0.13
+"
+
+S="${WORKDIR}/${P/_*}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.86-kexec.patch" #80220
+ "${FILESDIR}/${PN}-2.94_beta-shutdown-single.patch" #158615
+ "${FILESDIR}/${PN}-2.99-shutdown-h.patch" #449354
+ "${FILESDIR}/${PN}-2.99-force-poweroff.patch"
+)
+
+src_prepare() {
+ default
+
+ sed -i \
+ -e '/^CPPFLAGS =$/d' \
+ -e '/^override CFLAGS +=/s/ -fstack-protector-strong//' \
+ src/Makefile || die
+
+ # last/lastb/mesg/mountpoint/sulogin/utmpdump/wall have moved to util-linux
+ sed -i -r \
+ -e '/^(USR)?S?BIN/s:\<(last|lastb|mesg|mountpoint|sulogin|utmpdump|wall)\>::g' \
+ -e '/^MAN[18]/s:\<(last|lastb|mesg|mountpoint|sulogin|utmpdump|wall)[.][18]\>::g' \
+ src/Makefile || die
+
+ # pidof has moved to >=procps-3.3.9
+ sed -i -r \
+ -e '/\/bin\/pidof/d' \
+ -e '/^MAN8/s:\<pidof.8\>::g' \
+ src/Makefile || die
+
+ # logsave is already in e2fsprogs
+ sed -i -r \
+ -e '/^(USR)?S?BIN/s:\<logsave\>::g' \
+ -e '/^MAN8/s:\<logsave.8\>::g' \
+ src/Makefile || die
+
+ # Mung inittab for specific architectures
+ cd "${WORKDIR}" || die
+ cp "${FILESDIR}"/inittab-2.98-r1 inittab || die "cp inittab"
+ local insert=()
+ use ppc && insert=( '#psc0:12345:respawn:/sbin/agetty 115200 ttyPSC0 linux' )
+ use arm && insert=( '#f0:12345:respawn:/sbin/agetty 9600 ttyFB0 vt100' )
+ use arm64 && insert=( 'f0:12345:respawn:/sbin/agetty 9600 ttyAMA0 vt100' )
+ use hppa && insert=( 'b0:12345:respawn:/sbin/agetty 9600 ttyB0 vt100' )
+ use s390 && insert=( 's0:12345:respawn:/sbin/agetty 38400 console dumb' )
+ use riscv && insert=( 'sif0:12345:respawn:/sbin/agetty -L 115200 ttySIF0 vt100' )
+ if use ibm ; then
+ insert+=(
+ '#hvc0:2345:respawn:/sbin/agetty -L 9600 hvc0'
+ '#hvsi:2345:respawn:/sbin/agetty -L 19200 hvsi0'
+ )
+ fi
+ (use arm || use mips || use sparc) && sed -i '/ttyS0/s:#::' inittab
+ if use kernel_FreeBSD ; then
+ sed -i \
+ -e 's/linux/cons25/g' \
+ -e 's/ttyS0/cuaa0/g' \
+ -e 's/ttyS1/cuaa1/g' \
+ inittab #121786
+ fi
+ if use x86 || use amd64 ; then
+ sed -i \
+ -e '/ttyS[01]/s:9600:115200:' \
+ inittab
+ fi
+ if [[ ${#insert[@]} -gt 0 ]] ; then
+ printf '%s\n' '' '# Architecture specific features' "${insert[@]}" >> inittab
+ fi
+}
+
+src_compile() {
+ tc-export CC
+ append-lfs-flags
+ export DISTRO= #381311
+ export VERSION="${PV}"
+ use static && append-ldflags -static
+ emake -C src $(usex selinux 'WITH_SELINUX=yes' '')
+}
+
+src_install() {
+ emake -C src install ROOT="${D}"
+ dodoc README doc/*
+
+ insinto /etc
+ doins "${WORKDIR}"/inittab
+
+ newinitd "${FILESDIR}"/bootlogd.initd bootlogd
+ into /
+ dosbin "${FILESDIR}"/halt.sh
+
+ keepdir /etc/inittab.d
+
+ # dead symlink
+ find "${ED}" -xtype l -delete || die
+
+ find "${ED}" -type d -empty -delete || die
+}
+
+pkg_postinst() {
+ # Reload init to fix unmounting problems of / on next reboot.
+ # This is really needed, as without the new version of init cause init
+ # not to quit properly on reboot, and causes a fsck of / on next reboot.
+ if [[ -z ${ROOT} ]] ; then
+ if [[ -e /dev/initctl ]] && [[ ! -e /run/initctl ]] ; then
+ ln -s /dev/initctl /run/initctl \
+ || ewarn "Failed to set /run/initctl symlink!"
+ fi
+ # Do not return an error if this fails
+ /sbin/telinit U &>/dev/null
+ fi
+
+ elog "The last/lastb/mesg/mountpoint/sulogin/utmpdump/wall tools have been moved to"
+ elog "sys-apps/util-linux. The pidof tool has been moved to sys-process/procps."
+
+ # Required for new bootlogd service
+ if [[ ! -e "${EROOT}/var/log/boot" ]] ; then
+ touch "${EROOT}/var/log/boot"
+ fi
+}
diff --git a/sys-boot/grub/Manifest b/sys-boot/grub/Manifest
new file mode 100644
index 0000000..f61a2e5
--- /dev/null
+++ b/sys-boot/grub/Manifest
@@ -0,0 +1,12 @@
+AUX gfxpayload.patch 1118 BLAKE2B 4104fc696535b1c3feba5876bccc64f9b2e52319ee992c59e7f17b8310cc9addf7545630fff78c73ca3f4b0dcd44e1bf69f4df5264d6f58777f7e5aeae93cbcb SHA512 00324825c369902a0383b792cd21e161853eadccbdc5abe2420f2d443bf6a74f72be6c15243107b936acd38c3547387c3771dc2cb566003c4c754c9260b4aa00
+AUX grub-2.02_beta2-KERNEL_GLOBS.patch 2121 BLAKE2B 398195f59537d40a4f61eadf5be974b8f9eb56a4eb07b798f0dc18e29588b3a9f8daa8d6e64980a835ec1960fab60b8c96d6552ef2920fe6604170abf7d5e7da SHA512 f85bc538ae647c46efbe07d7b87acf49daa7b07e9752af3aa3f77019f48ea24cd1b6a095a6f9c19d50128701753f453c531b9b068e11ee22a259f3fdf8ac205e
+AUX grub-2.06-add-boot-hartid-to-fdt.patch 995 BLAKE2B 86ab277819eeab08d552e1d5300f8f5e798823e56e66d8dd39ae442b3b4777a22d155dd85f9b38778a644c7f52b61f673b6c856c66492da412d2ee2587125484 SHA512 5d334050165dd648bd3547ede9cc62380f75a5d9625a4282972a4e71e34e14d72cf6acb363c513942375c84c79a48acd6331bbcbc56f4999a339e29391fbb5ae
+AUX grub-2.06-linux-riscv.patch 12599 BLAKE2B bfbb85e8824586d1a13d142020d591e0e103c77c193ef7a82e1770b3ffcd23f6daec9729a9d1cb579d5dcaeb6be40f23682fdab8e2e5c7067b382362faee2c36 SHA512 5f964e98caff6c57fc4ac7d57bbd86c8cc1ab35ca25c58a1e8c7a2db232b7b1470b6fe8a6a372c62fc3bfe939ce64c75027ed4b3d3d4db141b73a709557275c1
+AUX grub-2.06-magic-number.patch 1826 BLAKE2B 83dc3e86b2ae3d96d3459641fda67b47178688410cacdc54ee79ccbab129cabfd1aa087ff1afc6fcdb607c1e183a7b55d54f5c0d5cbca951178129c50b26bb35 SHA512 44e03d1cbef8ca7128c4a91647d1095453f5f9c9aa9329f20bb5af178a766c6ed22b4c2ea3e515bac7b0c977f8248401590a6e76561d86146729c9cc1d931700
+AUX grub-2.06-test-words.patch 2553 BLAKE2B 21d6167945b461be7cc73198451ae0dc15ce0dfe2a301342f1a3bb75d6fcb5d73da9997fb8a93f36dffb43a351f056a1a4db9eed3147b0f3e77c65034b805c64 SHA512 627422377bdad97d0197f178814d6616a0f7ec07357182b00166a455d38ba0c5a60185c5febf4dfb7a11b35f26c7af607508cb5f418acdb7290517240fbd99e4
+AUX grub.default-3 2528 BLAKE2B c32de43644eca5fae8d8d727ff443600917a93e015f8a83dde555e3bca7506a817b08a2fc926970eeb5b7f40028f4951c6cdcd281f9fc0b6504f26c8e76bf0c5 SHA512 505960e62b44c70af0a90c7ff486bd57101831d7c6e9d80084013e374070ff02b40f77b0790aebb926e1e0854e375867cba1d4977dbb00c2ba54ebaa9f6a1a0b
+DIST dejavu-sans-ttf-2.37.zip 417746 BLAKE2B c8904f3cd5a49370a7dc10e456684c88aeae998a99090bf4d0a5baa4f36cc8fb8f70586cf6d610a5ffeee97261d28c80f55bbe9dcfc3ed796d5c2d60e79adb58 SHA512 ede5899daa1984c5aa8cacb1c850eb53f189dddef3d9bb78bf9774d8976b7c0d6eb0bcf86237cd7d11f5b36cf5b5058d42cd94d3bd76f2bd0931c7ceb1271fae
+DIST grub-2.06.tar.xz 6581924 BLAKE2B 2a40b9b03d7bb3b9e7b1309ab274d686f01b3c42e7035ebc6e5a0e59a59c3b7362ba518341664b314cb0dbc8222bb10ea05ce09f08ce9d58a293207cb909e417 SHA512 4f11c648f3078567e53fc0c74d5026fdc6da4be27d188975e79d9a4df817ade0fe5ad2ddd694238a07edc45adfa02943d83c57767dd51548102b375e529e8efe
+DIST unifont-12.1.02.pcf.gz 1335424 BLAKE2B 97080312468e3f3c8aa6f49cef08f5622641e8c9c035f3ede1e09d8d98de4e78d3b23c8aba2e8070eb46cbebd2d55e8568e467d7f15f35aa8fc8db792b7e5f14 SHA512 b280b2db7cf5f480b0668c331130dede2c0cc87d5e02e44566b77787113d0f6604d0105522858288f2ac6b8e77df7a2d9878725013a6c778dc5bfb183156e2f0
+EBUILD grub-2.06.ebuild 7548 BLAKE2B d8c7ba5110cd4b8483a80255e80f3d61c99d8ced45c862ac319c5b5196b3cc2f7d7a4b9eeae378d6c1da01863dec3a7e86ed092559db9c7f47ac46b6be515599 SHA512 aabf4dc758ed3a0fb07f57eede1130f9e48e92c20cfb1992e629c2b4bca0e8e446b28deb7c74f4230b74bbf6240a6e027955133126c9592158afed9ae17e8506
+MISC metadata.xml 985 BLAKE2B 36f108b5d3441f8576609c77ab3547c60ac2c508b55472bd0ec0e3af8d0fa018d305d7267c0e2e84c8526affced9ed5ce51738b9fcf05b31ac36c1b4d5c2702a SHA512 bd28dd88d4eb76a32cfa757eb5bf7641d033f670280ab7230b72a66b1bd8fd65c777473b1d7f81257004a215fe5a858a79a6a912e0ceaecd586867e9a76f6b4e
diff --git a/sys-boot/grub/files/gfxpayload.patch b/sys-boot/grub/files/gfxpayload.patch
new file mode 100644
index 0000000..6c63ef8
--- /dev/null
+++ b/sys-boot/grub/files/gfxpayload.patch
@@ -0,0 +1,29 @@
+From e2d5bf1bc6aaaabeba538c1ca94ea8601e4e1474 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Thu, 16 Oct 2014 23:43:51 -0400
+Subject: [PATCH] 10_linux: Default gfxpayload=keep only when booting using efi
+
+vesafb seems to be unreliable when using BIOS compat mode.
+
+---
+ util/grub.d/10_linux.in | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index d2e2a8f..a54b888 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -104,7 +104,9 @@ linux_entry ()
+ echo " load_video" | sed "s/^/$submenu_indentation/"
+ if grep -qx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \
+ && grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then
+- echo " set gfxpayload=keep" | sed "s/^/$submenu_indentation/"
++ echo ' if [ "x$grub_platform" = xefi ]; then' | sed "s/^/$submenu_indentation/"
++ echo " set gfxpayload=keep" | sed "s/^/$submenu_indentation/"
++ echo ' fi' | sed "s/^/$submenu_indentation/"
+ fi
+ else
+ if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
+--
+2.7.2
+
diff --git a/sys-boot/grub/files/grub-2.02_beta2-KERNEL_GLOBS.patch b/sys-boot/grub/files/grub-2.02_beta2-KERNEL_GLOBS.patch
new file mode 100644
index 0000000..c66ee68
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.02_beta2-KERNEL_GLOBS.patch
@@ -0,0 +1,67 @@
+From 43e3295aaad5278a1e53c5282e2660b72cd76d28 Mon Sep 17 00:00:00 2001
+From: "Robin H. Johnson" <robbat2@gentoo.org>
+Date: Tue, 29 Dec 2015 15:29:14 -0800
+Subject: [PATCH] GRUB_LINUX_KERNEL_GLOBS: configurable kernel selection
+
+* util/grub.d/10_linux.in: Implement GRUB_LINUX_KERNEL_GLOBS
+* docs/grub.texi: Document GRUB_LINUX_KERNEL_GLOBS
+
+Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
+---
+ docs/grub.texi | 5 +++++
+ util/grub.d/10_linux.in | 21 +++++++++++----------
+ 2 files changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/docs/grub.texi b/docs/grub.texi
+index 9a25a0b..d1129ec 100644
+--- a/docs/grub.texi
++++ b/docs/grub.texi
+@@ -1490,6 +1490,11 @@ This option may be set to a list of GRUB module names separated by spaces.
+ Each module will be loaded as early as possible, at the start of
+ @file{grub.cfg}.
+
++@item GRUB_LINUX_KERNEL_GLOBS
++This option may be set to override the list of path globs used to find Linux
++kernels. The defaults vary by architecture, and generally include both
++@file{/boot} and @file{/}.
++
+ @end table
+
+ The following options are still accepted for compatibility with existing
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 859b608..e5ac11d 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -145,18 +145,19 @@ EOF
+ }
+
+ machine=`uname -m`
+-case "x$machine" in
++globs="$GRUB_LINUX_KERNEL_GLOBS"
++[ -z "$globs" ] && case "x$machine" in
+ xi?86 | xx86_64)
+- list=
+- for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
+- if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
+- done ;;
+- *)
+- list=
+- for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
+- if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
+- done ;;
++ globs="/boot/vmlinuz-* /vmlinuz-* /boot/kernel-*"
++ ;;
++ *)
++ globs="/boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-*"
++ ;;
+ esac
++list=
++for i in ${globs} ; do
++ if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
++done
+
+ case "$machine" in
+ i?86) GENKERNEL_ARCH="x86" ;;
+--
+2.3.0
+
diff --git a/sys-boot/grub/files/grub-2.06-add-boot-hartid-to-fdt.patch b/sys-boot/grub/files/grub-2.06-add-boot-hartid-to-fdt.patch
new file mode 100644
index 0000000..3b6b464
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.06-add-boot-hartid-to-fdt.patch
@@ -0,0 +1,35 @@
+diff -Naur grub-2.06/grub-core/loader/riscv64/linux.c grub-2.06-mod/grub-core/loader/riscv64/linux.c
+--- grub-2.06/grub-core/loader/riscv64/linux.c 2021-07-03 19:45:08.797409969 +0200
++++ grub-2.06-mod/grub-core/loader/riscv64/linux.c 2021-07-03 19:43:54.673239976 +0200
+@@ -48,6 +48,13 @@
+ static grub_addr_t initrd_start;
+ static grub_addr_t initrd_end;
+
++#define get_hartid(__v) \
++{ \
++ __asm__ __volatile__ ("mv %0, tp" \
++ : "=r" (__v) : \
++ : "memory"); \
++}
++
+ grub_err_t
+ grub_arch_efi_linux_check_image (struct linux_arch_kernel_header * lh)
+ {
+@@ -68,6 +75,7 @@
+ finalize_params_linux (void)
+ {
+ int node, retval;
++ int hartid;
+
+ void *fdt;
+
+@@ -83,6 +91,9 @@
+ if (node < 1)
+ goto failure;
+
++ get_hartid(hartid);
++ grub_fdt_set_prop32 (fdt, node, "boot-hartid", hartid);
++
+ /* Set initrd info */
+ if (initrd_start && initrd_end > initrd_start)
+ {
diff --git a/sys-boot/grub/files/grub-2.06-linux-riscv.patch b/sys-boot/grub/files/grub-2.06-linux-riscv.patch
new file mode 100644
index 0000000..cbc37f8
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.06-linux-riscv.patch
@@ -0,0 +1,416 @@
+Signed-off-by: Nikita Ermakov <arei@altlinux.org>
+---
+ grub-core/Makefile.core.def | 4 +-
+ grub-core/loader/{riscv => riscv32}/linux.c | 0
+ grub-core/loader/riscv64/linux.c | 380 ++++++++++++++++++++
+ 3 files changed, 382 insertions(+), 2 deletions(-)
+ rename grub-core/loader/{riscv => riscv32}/linux.c (100%)
+ create mode 100644 grub-core/loader/riscv64/linux.c
+
+diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
+index 8022e1c0a..655a45de7 100644
+--- a/grub-core/Makefile.core.def
++++ b/grub-core/Makefile.core.def
+@@ -1809,8 +1809,8 @@ module = {
+ arm_efi = loader/arm64/linux.c;
+ arm_uboot = loader/arm/linux.c;
+ arm64 = loader/arm64/linux.c;
+- riscv32 = loader/riscv/linux.c;
+- riscv64 = loader/riscv/linux.c;
++ riscv32 = loader/riscv32/linux.c;
++ riscv64 = loader/riscv64/linux.c;
+ common = loader/linux.c;
+ common = lib/cmdline.c;
+ enable = noemu;
+diff --git a/grub-core/loader/riscv/linux.c b/grub-core/loader/riscv32/linux.c
+similarity index 100%
+rename from grub-core/loader/riscv/linux.c
+rename to grub-core/loader/riscv32/linux.c
+diff --git a/grub-core/loader/riscv64/linux.c b/grub-core/loader/riscv64/linux.c
+new file mode 100644
+index 000000000..630015495
+--- /dev/null
++++ b/grub-core/loader/riscv64/linux.c
+@@ -0,0 +1,380 @@
++/*
++ * GRUB -- GRand Unified Bootloader
++ * Copyright (C) 2018 Free Software Foundation, Inc.
++ *
++ * GRUB is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation, either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * GRUB is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#include <grub/charset.h>
++#include <grub/command.h>
++#include <grub/err.h>
++#include <grub/file.h>
++#include <grub/fdt.h>
++#include <grub/linux.h>
++#include <grub/loader.h>
++#include <grub/mm.h>
++#include <grub/types.h>
++#include <grub/cpu/linux.h>
++#include <grub/efi/efi.h>
++#include <grub/efi/fdtload.h>
++#include <grub/efi/memory.h>
++#include <grub/efi/pe32.h>
++#include <grub/i18n.h>
++#include <grub/lib/cmdline.h>
++#include <grub/verify.h>
++
++GRUB_MOD_LICENSE ("GPLv3+");
++
++static grub_dl_t my_mod;
++static int loaded;
++
++static void *kernel_addr;
++static grub_uint64_t kernel_size;
++
++static char *linux_args;
++static grub_uint32_t cmdline_size;
++
++static grub_addr_t initrd_start;
++static grub_addr_t initrd_end;
++
++grub_err_t
++grub_arch_efi_linux_check_image (struct linux_arch_kernel_header * lh)
++{
++ if (lh->magic != GRUB_LINUX_RISCV_MAGIC_SIGNATURE)
++ return grub_error(GRUB_ERR_BAD_OS, "invalid magic number");
++
++ if ((lh->code0 & 0xffff) != GRUB_PE32_MAGIC)
++ return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
++ N_("plain image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled"));
++
++ grub_dprintf ("linux", "UEFI stub kernel:\n");
++ grub_dprintf ("linux", "PE/COFF header @ %08x\n", lh->hdr_offset);
++
++ return GRUB_ERR_NONE;
++}
++
++static grub_err_t
++finalize_params_linux (void)
++{
++ int node, retval;
++
++ void *fdt;
++
++ fdt = grub_fdt_load (GRUB_EFI_LINUX_FDT_EXTRA_SPACE);
++
++ if (!fdt)
++ goto failure;
++
++ node = grub_fdt_find_subnode (fdt, 0, "chosen");
++ if (node < 0)
++ node = grub_fdt_add_subnode (fdt, 0, "chosen");
++
++ if (node < 1)
++ goto failure;
++
++ /* Set initrd info */
++ if (initrd_start && initrd_end > initrd_start)
++ {
++ grub_dprintf ("linux", "Initrd @ %p-%p\n",
++ (void *) initrd_start, (void *) initrd_end);
++
++ retval = grub_fdt_set_prop64 (fdt, node, "linux,initrd-start",
++ initrd_start);
++ if (retval)
++ goto failure;
++ retval = grub_fdt_set_prop64 (fdt, node, "linux,initrd-end",
++ initrd_end);
++ if (retval)
++ goto failure;
++ }
++
++ if (grub_fdt_install() != GRUB_ERR_NONE)
++ goto failure;
++
++ return GRUB_ERR_NONE;
++
++failure:
++ grub_fdt_unload();
++ return grub_error(GRUB_ERR_BAD_OS, "failed to install/update FDT");
++}
++
++grub_err_t
++grub_arch_efi_linux_boot_image (grub_addr_t addr, grub_size_t size, char *args)
++{
++ grub_efi_loaded_image_t *loaded_image = NULL;
++ grub_efi_memory_mapped_device_path_t *mempath;
++ grub_efi_handle_t image_handle;
++ grub_efi_boot_services_t *b;
++ grub_efi_status_t status;
++ int len;
++
++ mempath = grub_malloc (2 * sizeof (grub_efi_memory_mapped_device_path_t));
++ if (!mempath)
++ return grub_errno;
++
++ mempath[0].header.type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE;
++ mempath[0].header.subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE;
++ mempath[0].header.length = grub_cpu_to_le16_compile_time (sizeof (*mempath));
++ mempath[0].memory_type = GRUB_EFI_LOADER_DATA;
++ mempath[0].start_address = addr;
++ mempath[0].end_address = addr + size;
++
++ mempath[1].header.type = GRUB_EFI_END_DEVICE_PATH_TYPE;
++ mempath[1].header.subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
++ mempath[1].header.length = sizeof (grub_efi_device_path_t);
++
++ b = grub_efi_system_table->boot_services;
++ status = b->load_image (0, grub_efi_image_handle,
++ (grub_efi_device_path_t *) mempath,
++ (void *) addr, size, &image_handle);
++ if (status != GRUB_EFI_SUCCESS)
++ return grub_error (GRUB_ERR_BAD_OS, "cannot load image");
++
++ grub_dprintf ("linux", "linux command line: '%s'\n", args);
++
++ /* Convert command line to UCS-2 */
++ loaded_image = grub_efi_get_loaded_image (image_handle);
++ if (!loaded_image)
++ return grub_error(GRUB_ERR_BAD_OS, "cannot get image");
++ loaded_image->load_options_size = len =
++ (grub_strlen (args) + 1) * sizeof (grub_efi_char16_t);
++ loaded_image->load_options =
++ grub_efi_allocate_any_pages (GRUB_EFI_BYTES_TO_PAGES (loaded_image->load_options_size));
++ if (!loaded_image->load_options)
++ return grub_errno;
++
++ loaded_image->load_options_size =
++ 2 * grub_utf8_to_utf16 (loaded_image->load_options, len,
++ (grub_uint8_t *) args, len, NULL);
++
++ grub_dprintf ("linux", "starting image %p\n", image_handle);
++ status = b->start_image (image_handle, 0, NULL);
++
++ /* When successful, not reached */
++ b->unload_image (image_handle);
++ grub_efi_free_pages ((grub_addr_t) loaded_image->load_options,
++ GRUB_EFI_BYTES_TO_PAGES (loaded_image->load_options_size));
++
++ return grub_errno;
++}
++
++static grub_err_t
++grub_linux_boot (void)
++{
++ if (finalize_params_linux () != GRUB_ERR_NONE)
++ return grub_errno;
++
++ return (grub_arch_efi_linux_boot_image((grub_addr_t)kernel_addr,
++ kernel_size, linux_args));
++}
++
++static grub_err_t
++grub_linux_unload (void)
++{
++ grub_dl_unref (my_mod);
++ loaded = 0;
++ if (initrd_start)
++ grub_efi_free_pages ((grub_efi_physical_address_t) initrd_start,
++ GRUB_EFI_BYTES_TO_PAGES (initrd_end - initrd_start));
++ initrd_start = initrd_end = 0;
++ grub_free (linux_args);
++ if (kernel_addr)
++ grub_efi_free_pages ((grub_addr_t) kernel_addr,
++ GRUB_EFI_BYTES_TO_PAGES (kernel_size));
++ grub_fdt_unload ();
++ return GRUB_ERR_NONE;
++}
++
++/* According to the Linux arch/riscv/include/asm/efi.h */
++#define INITRD_MAX_ADDRESS_OFFSET (256ULL << 20)
++
++/*
++ * This function returns a pointer to a legally allocated initrd buffer,
++ * or NULL if unsuccessful
++ */
++static void *
++allocate_initrd_mem (int initrd_pages)
++{
++ grub_addr_t max_addr;
++
++ if (grub_efi_get_ram_base (&max_addr) != GRUB_ERR_NONE)
++ return NULL;
++
++ max_addr += INITRD_MAX_ADDRESS_OFFSET - 1;
++
++ return grub_efi_allocate_pages_real (max_addr, initrd_pages,
++ GRUB_EFI_ALLOCATE_MAX_ADDRESS,
++ GRUB_EFI_LOADER_DATA);
++}
++
++static grub_err_t
++grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
++ int argc, char *argv[])
++{
++ struct grub_linux_initrd_context initrd_ctx = { 0, 0, 0 };
++ int initrd_size, initrd_pages;
++ void *initrd_mem = NULL;
++
++ if (argc == 0)
++ {
++ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
++ goto fail;
++ }
++
++ if (!loaded)
++ {
++ grub_error (GRUB_ERR_BAD_ARGUMENT,
++ N_("you need to load the kernel first"));
++ goto fail;
++ }
++
++ if (grub_initrd_init (argc, argv, &initrd_ctx))
++ goto fail;
++
++ initrd_size = grub_get_initrd_size (&initrd_ctx);
++ grub_dprintf ("linux", "Loading initrd\n");
++
++ initrd_pages = (GRUB_EFI_BYTES_TO_PAGES (initrd_size));
++ initrd_mem = allocate_initrd_mem (initrd_pages);
++
++ if (!initrd_mem)
++ {
++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
++ goto fail;
++ }
++
++ if (grub_initrd_load (&initrd_ctx, argv, initrd_mem))
++ goto fail;
++
++ initrd_start = (grub_addr_t) initrd_mem;
++ initrd_end = initrd_start + initrd_size;
++ grub_dprintf ("linux", "[addr=%p, size=0x%x]\n",
++ (void *) initrd_start, initrd_size);
++
++fail:
++ grub_initrd_close (&initrd_ctx);
++ if (initrd_mem && !initrd_start)
++ grub_efi_free_pages ((grub_addr_t) initrd_mem, initrd_pages);
++
++ return grub_errno;
++}
++
++static grub_err_t
++grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
++ int argc, char *argv[])
++{
++ grub_file_t file = 0;
++ struct linux_arch_kernel_header lh;
++ grub_err_t err;
++
++ grub_dl_ref (my_mod);
++
++ if (argc == 0)
++ {
++ grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
++ goto fail;
++ }
++
++ file = grub_file_open (argv[0], GRUB_FILE_TYPE_LINUX_KERNEL);
++ if (!file)
++ goto fail;
++
++ kernel_size = grub_file_size (file);
++
++ if (grub_file_read (file, &lh, sizeof (lh)) < (long) sizeof (lh))
++ return grub_errno;
++
++ if (grub_arch_efi_linux_check_image (&lh) != GRUB_ERR_NONE)
++ goto fail;
++
++ grub_loader_unset();
++
++ grub_dprintf ("linux", "kernel file size: %lld\n", (long long) kernel_size);
++ kernel_addr = grub_efi_allocate_any_pages (GRUB_EFI_BYTES_TO_PAGES (kernel_size));
++ grub_dprintf ("linux", "kernel numpages: %lld\n",
++ (long long) GRUB_EFI_BYTES_TO_PAGES (kernel_size));
++ if (!kernel_addr)
++ {
++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
++ goto fail;
++ }
++
++ grub_file_seek (file, 0);
++ if (grub_file_read (file, kernel_addr, kernel_size)
++ < (grub_int64_t) kernel_size)
++ {
++ if (!grub_errno)
++ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"), argv[0]);
++ goto fail;
++ }
++
++ grub_dprintf ("linux", "kernel @ %p\n", kernel_addr);
++
++ cmdline_size = grub_loader_cmdline_size (argc, argv) + sizeof (LINUX_IMAGE);
++ linux_args = grub_malloc (cmdline_size);
++ if (!linux_args)
++ {
++ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
++ goto fail;
++ }
++ grub_memcpy (linux_args, LINUX_IMAGE, sizeof (LINUX_IMAGE));
++ err = grub_create_loader_cmdline (argc, argv,
++ linux_args + sizeof (LINUX_IMAGE) - 1,
++ cmdline_size,
++ GRUB_VERIFY_KERNEL_CMDLINE);
++ if (err)
++ goto fail;
++
++ if (grub_errno == GRUB_ERR_NONE)
++ {
++ grub_loader_set (grub_linux_boot, grub_linux_unload, 0);
++ loaded = 1;
++ }
++
++fail:
++ if (file)
++ grub_file_close (file);
++
++ if (grub_errno != GRUB_ERR_NONE)
++ {
++ grub_dl_unref (my_mod);
++ loaded = 0;
++ }
++
++ if (linux_args && !loaded)
++ grub_free (linux_args);
++
++ if (kernel_addr && !loaded)
++ grub_efi_free_pages ((grub_addr_t) kernel_addr,
++ GRUB_EFI_BYTES_TO_PAGES (kernel_size));
++
++ return grub_errno;
++}
++
++static grub_command_t cmd_linux, cmd_initrd;
++
++GRUB_MOD_INIT (linux)
++{
++ cmd_linux = grub_register_command ("linux", grub_cmd_linux, 0,
++ N_("Load Linux."));
++ cmd_initrd = grub_register_command ("initrd", grub_cmd_initrd, 0,
++ N_("Load initrd."));
++ my_mod = mod;
++}
++
++GRUB_MOD_FINI (linux)
++{
++ grub_unregister_command (cmd_linux);
++ grub_unregister_command (cmd_initrd);
++}
+--
+2.25.4
diff --git a/sys-boot/grub/files/grub-2.06-magic-number.patch b/sys-boot/grub/files/grub-2.06-magic-number.patch
new file mode 100644
index 0000000..c43e771
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.06-magic-number.patch
@@ -0,0 +1,42 @@
+diff -Naur grub-2.06~rc1/include/grub/riscv32/linux.h grub-2.06~rc1-mod/include/grub/riscv32/linux.h
+--- grub-2.06~rc1/include/grub/riscv32/linux.h 2019-04-23 10:54:47.000000000 +0200
++++ grub-2.06~rc1-mod/include/grub/riscv32/linux.h 2021-07-02 07:33:27.504051015 +0200
+@@ -19,7 +19,7 @@
+ #ifndef GRUB_RISCV32_LINUX_HEADER
+ #define GRUB_RISCV32_LINUX_HEADER 1
+
+-#define GRUB_LINUX_RISCV_MAGIC_SIGNATURE 0x52534356 /* 'RSCV' */
++#define GRUB_LINUX_RISCV_MAGIC_SIGNATURE 0x05435352 /* little endian, 'RSC\x05' */
+
+ /* From linux/Documentation/riscv/booting.txt */
+ struct linux_riscv_kernel_header
+@@ -32,7 +32,7 @@
+ grub_uint64_t res2; /* reserved */
+ grub_uint64_t res3; /* reserved */
+ grub_uint64_t res4; /* reserved */
+- grub_uint32_t magic; /* Magic number, little endian, "RSCV" */
++ grub_uint32_t magic; /* Magic number, little endian, "RSC\x05" */
+ grub_uint32_t hdr_offset; /* Offset of PE/COFF header */
+ };
+
+diff -Naur grub-2.06~rc1/include/grub/riscv64/linux.h grub-2.06~rc1-mod/include/grub/riscv64/linux.h
+--- grub-2.06~rc1/include/grub/riscv64/linux.h 2019-04-23 10:54:47.000000000 +0200
++++ grub-2.06~rc1-mod/include/grub/riscv64/linux.h 2021-07-02 07:35:33.173217754 +0200
+@@ -19,7 +19,7 @@
+ #ifndef GRUB_RISCV64_LINUX_HEADER
+ #define GRUB_RISCV64_LINUX_HEADER 1
+
+-#define GRUB_LINUX_RISCV_MAGIC_SIGNATURE 0x52534356 /* 'RSCV' */
++#define GRUB_LINUX_RISCV_MAGIC_SIGNATURE 0x05435352 /* little endian, 'RSC\x05' */
+
+ #define GRUB_EFI_PE_MAGIC 0x5A4D
+
+@@ -34,7 +34,7 @@
+ grub_uint64_t res2; /* reserved */
+ grub_uint64_t res3; /* reserved */
+ grub_uint64_t res4; /* reserved */
+- grub_uint32_t magic; /* Magic number, little endian, "RSCV" */
++ grub_uint32_t magic; /* Magic number, little endian, "RSC\x05" */
+ grub_uint32_t hdr_offset; /* Offset of PE/COFF header */
+ };
+
diff --git a/sys-boot/grub/files/grub-2.06-test-words.patch b/sys-boot/grub/files/grub-2.06-test-words.patch
new file mode 100644
index 0000000..a3fe060
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.06-test-words.patch
@@ -0,0 +1,25 @@
+From 0f5080a2f3c952e2ee00bd271f42c56bb955dc19 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Sun, 14 Mar 2021 12:44:52 -0400
+Subject: [PATCH] Use /usr/share/dict/words as a 'compressible' file
+
+---
+ tests/util/grub-fs-tester.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/util/grub-fs-tester.in b/tests/util/grub-fs-tester.in
+index bfc425e1f..efd2977b0 100644
+--- a/tests/util/grub-fs-tester.in
++++ b/tests/util/grub-fs-tester.in
+@@ -265,7 +265,7 @@ for LOGSECSIZE in $(range "$MINLOGSECSIZE" "$MAXLOGSECSIZE" 1); do
+ MASTER="${tempdir}/master"
+ FSLABEL="grub_;/testé莭莽茝😁киритi urewfceniuewruevrewnuuireurevueurnievrewfnerfcnevirivinrewvnirewnivrewiuvcrewvnuewvrrrewniuerwreiuviurewiuviurewnuvewnvrenurnunuvrevuurerejiremvreijnvcreivire nverivnreivrevnureiorfnfrvoeoiroireoireoifrefoieroifoireoifoirefoireoifoijfoirereoireoivoioirevoinvoinreoinvnoieoinreoinveoinveoinreoinvoineoinoinoineoinernoiveoinvreoiioewdioewoirvnoireoivfoirewfewoifoijewoijfoijewfoijfewoijoijoijoijoijoijoijfewceniuewruevrewnuuireurevueurnievrewfnerfcnevirivinrewvnirewnivrewiuvcrewvnuewvrrrewniuerwreiuviurewiuviurewnuvewnvrenurnunuvrevuurerejiremvreijnvcreivire nverivnreivrevnureiorfnfrvoeoiroireoireoifrefoieroifoireoifoirefoireoifoijfoirereoireoivoioirevoinvoinreoinvnoieoinreoinveoinveoinreoinvoineoinoinoineoinernoiveoinvreoiioewdioewoirvnoireoivfoirewfewoifoijewoijfoijewfoijfewoijoijoijoijoijoijoijfewrewfceniuewruevrewnuuireurevueurnievrewfnerfcnevirivinrewvnirewnivrewiuvcrewvnuewvrrrewniuerwreiuviurewiuviurewnuvewnvrenurnunuvrevuurerejiremvreijnvcreivire nverivnreivrevnureiorfnfrvoeoiroireoireoifrefoieroifoireoifoirefoireoifoijfoirereoireoivoioirevoinvoinreoinvnoieoinreoinveoinveoinreoinvoineoinoinoineoinernoiveoinvreoiioewdioewoirvnoireoivfoirewfewoifoijewoijfoijewfoijfewoijoijoijoijoijoijoijfewceniuewruevrewnuuireurevueurnievrewfnerfcnevirivinrewvnirewnivrewiuvcrewvnuewvrrrewniuerwreiuviurewiuviurewnuvewnvrenurnunuvrevuurerejiremvreijnvcreivire nverivnreivrevnureiorfnfrvoeoiroireoireoifrefoieroifoireoifoirefoireoifoijfoirereoireoivoioirevoinvoinreoinvnoieoinreoinveoinveoinreoinvoineoinoinoineoinernoiveoinvreoiioewdioewoirvnoireoivfoirewfewoifoijewoijfoijewfoijfewoijoijoijoijoijoijoijfew"
+ CFILESRC=
+- for cand in /usr/share/dict/american-english /usr/share/dict/linux.words /data/data/com.termux/files/usr/share/hunspell/en_US.dic; do
++ for cand in /usr/share/dict/words; do
+ if test -f "$cand" ; then
+ CFILESRC="$cand"
+ break
+--
+2.31.0.rc1
+
diff --git a/sys-boot/grub/files/grub.default-3 b/sys-boot/grub/files/grub.default-3
new file mode 100644
index 0000000..3faabf9
--- /dev/null
+++ b/sys-boot/grub/files/grub.default-3
@@ -0,0 +1,73 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+#
+# To populate all changes in this file you need to regenerate your
+# grub configuration file afterwards:
+# 'grub-mkconfig -o /boot/grub/grub.cfg'
+#
+# See the grub info page for documentation on possible variables and
+# their associated values.
+
+GRUB_DISTRIBUTOR="Gentoo"
+
+# Default menu entry
+#GRUB_DEFAULT=0
+
+# Boot the default entry this many seconds after the menu is displayed
+#GRUB_TIMEOUT=5
+#GRUB_TIMEOUT_STYLE=menu
+
+# Append parameters to the linux kernel command line
+#GRUB_CMDLINE_LINUX=""
+#
+# Examples:
+#
+# Boot with network interface renaming disabled
+# GRUB_CMDLINE_LINUX="net.ifnames=0"
+#
+# Boot with systemd instead of sysvinit (openrc)
+# GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
+
+# Append parameters to the linux kernel command line for non-recovery entries
+#GRUB_CMDLINE_LINUX_DEFAULT=""
+
+# Uncomment to disable graphical terminal (grub-pc only)
+#GRUB_TERMINAL=console
+
+# The resolution used on graphical terminal.
+# Note that you can use only modes which your graphic card supports via VBE.
+# You can see them in real GRUB with the command `vbeinfo'.
+#GRUB_GFXMODE=640x480
+
+# Set to 'text' to force the Linux kernel to boot in normal text
+# mode, 'keep' to preserve the graphics mode set using
+# 'GRUB_GFXMODE', 'WIDTHxHEIGHT'['xDEPTH'] to set a particular
+# graphics mode, or a sequence of these separated by commas or
+# semicolons to try several modes in sequence.
+#GRUB_GFXPAYLOAD_LINUX=
+
+# Path to theme spec txt file.
+# The starfield is by default provided with use truetype.
+# NOTE: when enabling custom theme, ensure you have required font/etc.
+#GRUB_THEME="/boot/grub/themes/starfield/theme.txt"
+
+# Background image used on graphical terminal.
+# Can be in various bitmap formats.
+#GRUB_BACKGROUND="/boot/grub/mybackground.png"
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY=true
+
+# Uncomment to disable generation of the submenu and put all choices on
+# the top-level menu.
+# Besides the visual affect of no sub menu, this makes navigation of the
+# menu easier for a user who can't see the screen.
+#GRUB_DISABLE_SUBMENU=y
+
+# Uncomment to play a tone when the main menu is displayed.
+# This is useful, for example, to allow users who can't see the screen
+# to know when they can make a choice on the menu.
+#GRUB_INIT_TUNE="60 800 1"
diff --git a/sys-boot/grub/grub-2.06.ebuild b/sys-boot/grub/grub-2.06.ebuild
new file mode 100644
index 0000000..15c765a
--- /dev/null
+++ b/sys-boot/grub/grub-2.06.ebuild
@@ -0,0 +1,308 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+if [[ ${PV} == 9999 ]]; then
+ GRUB_AUTORECONF=1
+ GRUB_BOOTSTRAP=1
+fi
+GRUB_AUTOGEN=1
+GRUB_AUTORECONF=1
+
+PYTHON_COMPAT=( python{2_7,3_{6,7,8,9}} )
+WANT_LIBTOOL=none
+
+if [[ -n ${GRUB_AUTOGEN} || -n ${GRUB_BOOTSTRAP} ]]; then
+ inherit python-any-r1
+fi
+
+if [[ -n ${GRUB_AUTORECONF} ]]; then
+ inherit autotools
+fi
+
+inherit bash-completion-r1 flag-o-matic multibuild optfeature pax-utils toolchain-funcs
+
+if [[ ${PV} != 9999 ]]; then
+ if [[ ${PV} == *_alpha* || ${PV} == *_beta* || ${PV} == *_rc* ]]; then
+ # The quote style is to work with <=bash-4.2 and >=bash-4.3 #503860
+ MY_P=${P/_/'~'}
+ SRC_URI="https://alpha.gnu.org/gnu/${PN}/${MY_P}.tar.xz"
+ S=${WORKDIR}/${MY_P}
+ else
+ SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
+ S=${WORKDIR}/${P%_*}
+ fi
+ KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+else
+ inherit git-r3
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/grub.git"
+fi
+
+PATCHES=(
+ "${FILESDIR}"/gfxpayload.patch
+ "${FILESDIR}"/grub-2.02_beta2-KERNEL_GLOBS.patch
+ "${FILESDIR}"/grub-2.06-test-words.patch
+ "${FILESDIR}"/grub-2.06-magic-number.patch
+ "${FILESDIR}"/grub-2.06-linux-riscv.patch
+ "${FILESDIR}"/grub-2.06-add-boot-hartid-to-fdt.patch
+)
+
+
+DEJAVU=dejavu-sans-ttf-2.37
+UNIFONT=unifont-12.1.02
+SRC_URI+=" fonts? ( mirror://gnu/unifont/${UNIFONT}/${UNIFONT}.pcf.gz )
+ themes? ( mirror://sourceforge/dejavu/${DEJAVU}.zip )"
+
+DESCRIPTION="GNU GRUB boot loader"
+HOMEPAGE="https://www.gnu.org/software/grub/"
+
+# Includes licenses for dejavu and unifont
+LICENSE="GPL-3+ BSD MIT fonts? ( GPL-2-with-font-exception ) themes? ( CC-BY-SA-3.0 BitstreamVera )"
+SLOT="2/${PVR}"
+IUSE="device-mapper doc efiemu +fonts mount nls sdl test +themes truetype libzfs"
+
+GRUB_ALL_PLATFORMS=( coreboot efi-32 efi-64 emu ieee1275 loongson multiboot qemu qemu-mips pc uboot xen xen-32 xen-pvh efi )
+IUSE+=" ${GRUB_ALL_PLATFORMS[@]/#/grub_platforms_}"
+
+REQUIRED_USE="
+ grub_platforms_coreboot? ( fonts )
+ grub_platforms_qemu? ( fonts )
+ grub_platforms_ieee1275? ( fonts )
+ grub_platforms_loongson? ( fonts )
+"
+
+BDEPEND="
+ ${PYTHON_DEPS}
+ app-misc/pax-utils
+ sys-devel/flex
+ sys-devel/bison
+ sys-apps/help2man
+ sys-apps/texinfo
+ fonts? (
+ media-libs/freetype:2
+ virtual/pkgconfig
+ )
+ test? (
+ app-admin/genromfs
+ app-arch/cpio
+ app-arch/lzop
+ app-emulation/qemu
+ dev-libs/libisoburn
+ sys-apps/miscfiles
+ sys-block/parted
+ sys-fs/squashfs-tools
+ )
+ themes? (
+ app-arch/unzip
+ media-libs/freetype:2
+ virtual/pkgconfig
+ )
+ truetype? ( virtual/pkgconfig )
+"
+DEPEND="
+ app-arch/xz-utils
+ >=sys-libs/ncurses-5.2-r5:0=
+ grub_platforms_emu? (
+ sdl? ( media-libs/libsdl )
+ )
+ device-mapper? ( >=sys-fs/lvm2-2.02.45 )
+ libzfs? ( sys-fs/zfs:= )
+ mount? ( sys-fs/fuse:0 )
+ truetype? ( media-libs/freetype:2= )
+ ppc? ( >=sys-apps/ibm-powerpc-utils-1.3.5 )
+ ppc64? ( >=sys-apps/ibm-powerpc-utils-1.3.5 )
+"
+RDEPEND="${DEPEND}
+ kernel_linux? (
+ grub_platforms_efi-32? ( sys-boot/efibootmgr )
+ grub_platforms_efi-64? ( sys-boot/efibootmgr )
+ )
+ !sys-boot/grub:0
+ nls? ( sys-devel/gettext )
+"
+
+RESTRICT="!test? ( test )"
+
+QA_EXECSTACK="usr/bin/grub-emu* usr/lib/grub/*"
+QA_PRESTRIPPED="usr/lib/grub/.*"
+QA_MULTILIB_PATHS="usr/lib/grub/.*"
+QA_WX_LOAD="usr/lib/grub/*"
+
+pkg_setup() {
+ :
+}
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ pushd "${P}" >/dev/null || die
+ local GNULIB_URI="https://git.savannah.gnu.org/git/gnulib.git"
+ local GNULIB_REVISION=$(source bootstrap.conf >/dev/null; echo "${GNULIB_REVISION}")
+ git-r3_fetch "${GNULIB_URI}" "${GNULIB_REVISION}"
+ git-r3_checkout "${GNULIB_URI}" gnulib
+ popd >/dev/null || die
+ fi
+ default
+}
+
+src_prepare() {
+ default
+
+ sed -i -e /autoreconf/d autogen.sh || die
+
+ if [[ -n ${GRUB_AUTOGEN} || -n ${GRUB_BOOTSTRAP} ]]; then
+ python_setup
+ else
+ export PYTHON=true
+ fi
+
+ if [[ -n ${GRUB_BOOTSTRAP} ]]; then
+ eautopoint --force
+ AUTOPOINT=: AUTORECONF=: ./bootstrap || die
+ elif [[ -n ${GRUB_AUTOGEN} ]]; then
+ ./autogen.sh || die
+ fi
+
+ if [[ -n ${GRUB_AUTORECONF} ]]; then
+ eautoreconf
+ fi
+}
+
+grub_do() {
+ multibuild_foreach_variant run_in_build_dir "$@"
+}
+
+grub_do_once() {
+ multibuild_for_best_variant run_in_build_dir "$@"
+}
+
+grub_configure() {
+ local platform
+
+ case ${MULTIBUILD_VARIANT} in
+ efi*) platform=efi ;;
+ xen-pvh) platform=xen_pvh ;;
+ xen*) platform=xen ;;
+ guessed) ;;
+ *) platform=${MULTIBUILD_VARIANT} ;;
+ esac
+
+ case ${MULTIBUILD_VARIANT} in
+ *-32)
+ if [[ ${CTARGET:-${CHOST}} == x86_64* ]]; then
+ local CTARGET=i386
+ fi ;;
+ *-64)
+ if [[ ${CTARGET:-${CHOST}} == i?86* ]]; then
+ local CTARGET=x86_64
+ local -x TARGET_CFLAGS="-Os -march=x86-64 ${TARGET_CFLAGS}"
+ local -x TARGET_CPPFLAGS="-march=x86-64 ${TARGET_CPPFLAGS}"
+ fi ;;
+ esac
+
+ local myeconfargs=(
+ --disable-werror
+ --program-prefix=
+ --libdir="${EPREFIX}"/usr/lib
+ $(use_enable device-mapper)
+ $(use_enable mount grub-mount)
+ $(use_enable nls)
+ $(use_enable themes grub-themes)
+ $(use_enable truetype grub-mkfont)
+ $(use_enable libzfs)
+ $(use_enable sdl grub-emu-sdl)
+ ${platform:+--with-platform=}${platform}
+
+ # Let configure detect this where supported
+ $(usex efiemu '' '--disable-efiemu')
+ )
+
+ if use fonts; then
+ ln -rs "${WORKDIR}/${UNIFONT}.pcf" unifont.pcf || die
+ fi
+
+ if use themes; then
+ ln -rs "${WORKDIR}/${DEJAVU}/ttf/DejaVuSans.ttf" DejaVuSans.ttf || die
+ fi
+
+ local ECONF_SOURCE="${S}"
+ econf "${myeconfargs[@]}"
+}
+
+src_configure() {
+ # Bug 508758.
+ replace-flags -O3 -O2
+
+ # We don't want to leak flags onto boot code.
+ export HOST_CCASFLAGS=${CCASFLAGS}
+ export HOST_CFLAGS=${CFLAGS}
+ export HOST_CPPFLAGS=${CPPFLAGS}
+ export HOST_LDFLAGS=${LDFLAGS}
+ unset CCASFLAGS CFLAGS CPPFLAGS LDFLAGS
+
+ tc-ld-disable-gold #439082 #466536 #526348
+ export TARGET_LDFLAGS="${TARGET_LDFLAGS} ${LDFLAGS}"
+ unset LDFLAGS
+
+ tc-export CC NM OBJCOPY RANLIB STRIP
+ tc-export BUILD_CC BUILD_PKG_CONFIG
+
+ MULTIBUILD_VARIANTS=()
+ local p
+ for p in "${GRUB_ALL_PLATFORMS[@]}"; do
+ use "grub_platforms_${p}" && MULTIBUILD_VARIANTS+=( "${p}" )
+ done
+ [[ ${#MULTIBUILD_VARIANTS[@]} -eq 0 ]] && MULTIBUILD_VARIANTS=( guessed )
+ grub_do grub_configure
+}
+
+src_compile() {
+ # Sandbox bug 404013.
+ use libzfs && addpredict /etc/dfs:/dev/zfs
+
+ grub_do emake
+
+ use doc && grub_do_once emake -C docs html
+}
+
+src_test() {
+ # The qemu dependency is a bit complex.
+ # You will need to adjust QEMU_SOFTMMU_TARGETS to match the cpu/platform.
+ grub_do emake check
+}
+
+src_install() {
+ grub_do emake install DESTDIR="${D}" bashcompletiondir="$(get_bashcompdir)"
+ use doc && grub_do_once emake -C docs install-html DESTDIR="${D}"
+
+ einstalldocs
+
+ insinto /etc/default
+ newins "${FILESDIR}"/grub.default-3 grub
+
+ # https://bugs.gentoo.org/231935
+ dostrip -x /usr/lib/grub
+}
+
+pkg_postinst() {
+ elog "For information on how to configure GRUB2 please refer to the guide:"
+ elog " https://wiki.gentoo.org/wiki/GRUB2_Quick_Start"
+
+ if has_version 'sys-boot/grub:0'; then
+ elog "A migration guide for GRUB Legacy users is available:"
+ elog " https://wiki.gentoo.org/wiki/GRUB2_Migration"
+ fi
+
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ elog
+ optfeature "detecting other operating systems (grub-mkconfig)" sys-boot/os-prober
+ optfeature "creating rescue media (grub-mkrescue)" dev-libs/libisoburn
+ optfeature "enabling RAID device detection" sys-fs/mdadm
+ fi
+
+ if has_version sys-boot/os-prober; then
+ ewarn "Due to security concerns, os-prober is disabled by default."
+ ewarn "Set GRUB_DISABLE_OS_PROBER=false in /etc/default/grub to enable it."
+ fi
+}
diff --git a/sys-boot/grub/metadata.xml b/sys-boot/grub/metadata.xml
new file mode 100644
index 0000000..a2fdb7a
--- /dev/null
+++ b/sys-boot/grub/metadata.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+ <email>floppym@gentoo.org</email>
+ <name>Mike Gilbert</name>
+</maintainer>
+<maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ <name>Gentoo Base System</name>
+</maintainer>
+<use>
+ <flag name="device-mapper">
+ Enable support for device-mapper from <pkg>sys-fs/lvm2</pkg>
+ </flag>
+ <flag name="efiemu">
+ Build and install the efiemu runtimes
+ </flag>
+ <flag name="fonts">Build and install fonts for the gfxterm module</flag>
+ <flag name="mount">
+ Build and install the grub-mount utility
+ </flag>
+ <flag name="libzfs">
+ Enable support for <pkg>sys-fs/zfs</pkg>
+ </flag>
+ <flag name="themes">Build and install GRUB themes (starfield)</flag>
+ <flag name="truetype">Build and install grub-mkfont conversion utility</flag>
+</use>
+<upstream>
+ <remote-id type="cpe">cpe:/a:gnu:grub</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/sys-boot/opensbi/Manifest b/sys-boot/opensbi/Manifest
new file mode 100644
index 0000000..3ea0225
--- /dev/null
+++ b/sys-boot/opensbi/Manifest
@@ -0,0 +1,3 @@
+DIST meta-sifive-2021.05.zip 664346 BLAKE2B ca98d75c4fc255f3ec99c3e9667e1a5e43fc1db88b83010db3766ff8e70acfaf2741dde96da65265aeef5ca82e1cc93a96ea771dd48cc2c9ff4af24d3feb4b82 SHA512 e60052fc183ddd89a4b0a2a443aedfe22c20ce1134925d6c0d52946ce9a5ca04750408fcb7b191ecc30b4d4b21c9e2f262d0d2b89527923a7cd82dc01a7f2345
+DIST opensbi-0.9.zip 290818 BLAKE2B 5a8903c118faea18fc8e6b023ca0b1a393da2deb57f8b2d685c0547d9dadb1ebf7dc60e442a8976f10809e3ef54d03dfd81c853bc75991f193427cc28c68b360 SHA512 2caf042db0437207f33791d6e2a250311b2c805c0da79bfbb6cbec193e24c2ba26a69ef9c4f56d0c3d4a7a66cf2c656c8e453a8da0f492382464145b231cc690
+EBUILD opensbi-0.9.ebuild 1078 BLAKE2B e0c862d73eeeac60869c95acdc3a8138a4b0169d90fa2a38d65fdf53bf132e306defa4971f004132e093136bc8a1c4e2a5407cfd2f20ef312f1fe9323c6e1397 SHA512 2d1c2ecb7a663ff637eab3f383d3c046834ebd7018d85bde7a7efe4a0bb47965f140488de4cbd39911dac8029c941410f1baa5384d81349f6f84a2d4b16c8fba
diff --git a/sys-boot/opensbi/opensbi-0.9.ebuild b/sys-boot/opensbi/opensbi-0.9.ebuild
new file mode 100644
index 0000000..746e0b3
--- /dev/null
+++ b/sys-boot/opensbi/opensbi-0.9.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+META_SIFIVE="2021.05"
+
+DESCRIPTION="RISC-V Supervisor Binary Interface (SBI) with meta-sifive-${META_SIFIVE} patches"
+HOMEPAGE="https://github.com/riscv/${PN}/tree/v${PV}"
+SRC_URI="https://github.com/riscv/${PN}/archive/refs/tags/v${PV}.zip -> ${P}.zip
+ https://github.com/sifive/meta-sifive/archive/refs/heads/${META_SIFIVE}.zip -> meta-sifive-${META_SIFIVE}.zip"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~riscv"
+
+DEPEND=""
+RDEPEND="${DEPEND}"
+BDEPEND=""
+
+src_prepare() {
+ eapply "${WORKDIR}/meta-sifive-${META_SIFIVE}/recipes-bsp/opensbi/files"
+ eapply "${WORKDIR}/meta-sifive-${META_SIFIVE}/recipes-bsp/opensbi/files/unmatched"
+ default
+}
+
+src_compile() {
+ emake PLATFORM=generic
+}
+
+src_install() {
+ mkdir -p "${D}/usr/share/${P}"
+ cp "${WORKDIR}/${P}/build/platform/generic/firmware/fw_dynamic.bin" "${D}/usr/share/${P}"
+ elog "Installed OpenSBI at /usr/share/${P}/fw_dynamic.bin"
+ dodoc CONTRIBUTORS.md
+ dodoc COPYING.BSD
+ dodoc README.md
+ dodoc ThirdPartyNotices.md
+}
diff --git a/sys-boot/u-boot/Manifest b/sys-boot/u-boot/Manifest
new file mode 100644
index 0000000..bec3d4c
--- /dev/null
+++ b/sys-boot/u-boot/Manifest
@@ -0,0 +1,5 @@
+AUX efi-priority.patch 1008 BLAKE2B f054f8f6a06f81bfbb79ef87e5ade7f6df8d7fe11bff4742a7988deaa4bfa0f64332571a30a475689b0e86994462b4e66750d3059e594bd5d72067ae0be97e2c SHA512 d7266dd81e6c1bd20f27513ac046a70d88d064238e250ff3a430c6c588f2ff594512d4374ced7cf9edabbaeacd6f1d901ac679edacb47f5dee76b17f45193f50
+DIST meta-sifive-2021.05.zip 664346 BLAKE2B ca98d75c4fc255f3ec99c3e9667e1a5e43fc1db88b83010db3766ff8e70acfaf2741dde96da65265aeef5ca82e1cc93a96ea771dd48cc2c9ff4af24d3feb4b82 SHA512 e60052fc183ddd89a4b0a2a443aedfe22c20ce1134925d6c0d52946ce9a5ca04750408fcb7b191ecc30b4d4b21c9e2f262d0d2b89527923a7cd82dc01a7f2345
+DIST u-boot-2021.01_rc5.tar.gz 20920395 BLAKE2B ba28811074191d97cdfa2e1e70083a113531a69285ad5e1f662f9d9715007b5441a043adf2592ab406295b1f85089aab7193068bf6f5a92af224bdde4aae21c7 SHA512 1c215c1b71e24d24838249e72ca2d97e3b857176d761a99a6a94597a3ab65940dc3f302c451559411691c716a4c73267f280a46a52d1f4ad97fec7eb13951444
+EBUILD u-boot-2021.01_rc5.ebuild 2659 BLAKE2B 0db14b146e2b876ccfe602fa2b3a6a1693717b8d7e4669b0b02c1b4787466ae7e136798ca85767c3c9613684fc541de1e3ec8eae17de26abe859e95b525c04da SHA512 edf949380cf957797e6e41790f440ad8351edba0037970767eafc28a1ed77b82b63f23900994c3746a4c7ebe28f77a426e8a3fd6a243ecde797f8294b5d80bda
+MISC metadata.xml 785 BLAKE2B fcfc4e1be03d1b5d8c03200e016576c99b31a415ec1a7177993ca9629bd4c979c68bafe2dbfe57cae5eefae4140349e2984f43ed0e1a183606b3e3235ea93062 SHA512 f5d6160b664ec093929760ed4c83ad9505dc2f0c285d05e2a63b403f7e9674af6a96f9eedbf6b692fb4a56336365f822f96e6608d0aaea50400d9615c995297d
diff --git a/sys-boot/u-boot/files/efi-priority.patch b/sys-boot/u-boot/files/efi-priority.patch
new file mode 100644
index 0000000..aee2f94
--- /dev/null
+++ b/sys-boot/u-boot/files/efi-priority.patch
@@ -0,0 +1,16 @@
+diff -Naur u-boot-2021.01_rc5/include/config_distro_bootcmd.h u-boot-2021.01_rc5-mod/include/config_distro_bootcmd.h
+--- u-boot-2021.01_rc5/include/config_distro_bootcmd.h 2021-07-04 11:32:47.978321442 +0200
++++ u-boot-2021.01_rc5-mod/include/config_distro_bootcmd.h 2021-07-04 11:34:05.930534226 +0200
+@@ -462,11 +462,11 @@
+ "scan_dev_for_boot=" \
+ "echo Scanning ${devtype} " \
+ "${devnum}:${distro_bootpart}...; " \
++ SCAN_DEV_FOR_EFI \
+ "for prefix in ${boot_prefixes}; do " \
+ "run scan_dev_for_extlinux; " \
+ "run scan_dev_for_scripts; " \
+ "done;" \
+- SCAN_DEV_FOR_EFI \
+ "\0" \
+ \
+ "scan_dev_for_boot_part=" \
diff --git a/sys-boot/u-boot/metadata.xml b/sys-boot/u-boot/metadata.xml
new file mode 100644
index 0000000..125d2ed
--- /dev/null
+++ b/sys-boot/u-boot/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+<email>root@localhost</email>
+<name>root</name>
+</maintainer>
+ <use>
+ <flag name="1000">Set CPU frequency to 1000 MHz</flag>
+ <flag name="1100">Set CPU frequency to 1100 MHz</flag>
+ <flag name="1200">Set CPU frequency to 1200 MHz</flag>
+ <flag name="1300">Set CPU frequency to 1300 MHz</flag>
+ <flag name="1400">Set CPU frequency to 1400 MHz</flag>
+ <flag name="1500">Set CPU frequency to 1500 MHz</flag>
+ <flag name="1600">Set CPU frequency to 1600 MHz</flag>
+ <flag name="1700">Set CPU frequency to 1700 MHz</flag>
+ <flag name="efi-priority">Try EFI boot before other methods</flag>
+ </use>
+</pkgmetadata>
diff --git a/sys-boot/u-boot/u-boot-2021.01_rc5.ebuild b/sys-boot/u-boot/u-boot-2021.01_rc5.ebuild
new file mode 100644
index 0000000..7f293a6
--- /dev/null
+++ b/sys-boot/u-boot/u-boot-2021.01_rc5.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+META_SIFIVE="2021.05"
+UBOOT_COMMIT="c4fddedc48f336eabc4ce3f74940e6aa372de18c"
+
+DESCRIPTION="U-Boot with meta-sifive-${META_SIFIVE} patches"
+HOMEPAGE="https://source.denx.de/u-boot/u-boot"
+SRC_URI="https://source.denx.de/u-boot/u-boot/-/archive/${UBOOT_COMMIT}/u-boot-${UBOOT_COMMIT}.tar.gz -> ${P}.tar.gz
+ https://github.com/sifive/meta-sifive/archive/refs/heads/${META_SIFIVE}.zip -> meta-sifive-${META_SIFIVE}.zip"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~riscv"
+
+DEPEND="sys-boot/opensbi sys-apps/dtc"
+RDEPEND="${DEPEND}"
+BDEPEND=""
+
+IUSE="-1000 -1100 +1200 -1300 -1400 -1500 -1600 -1700 efi-priority"
+REQUIRED_USE="^^ ( 1000 1100 1200 1300 1400 1500 1600 1700 )"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ unpack meta-sifive-${META_SIFIVE}.zip
+ mv "${WORKDIR}/u-boot-${UBOOT_COMMIT}" "${WORKDIR}/${P}"
+}
+
+src_prepare() {
+ eapply "${WORKDIR}/meta-sifive-${META_SIFIVE}/recipes-bsp/u-boot/files/unmatched"
+
+ # A default, just to be sure
+ CONFIG_SPEED=1200000000
+
+ # Check use flags
+ use 1000 && CONFIG_SPEED=1000000000
+ use 1100 && CONFIG_SPEED=1100000000
+ use 1200 && CONFIG_SPEED=1200000000
+ use 1300 && CONFIG_SPEED=1300000000
+ use 1400 && CONFIG_SPEED=1400000000
+ use 1500 && CONFIG_SPEED=1500000000
+ use 1600 && CONFIG_SPEED=1600000000
+ use 1700 && CONFIG_SPEED=1700000000
+
+ # Actaually modify the dtsi file
+ sed -i -E -e "/cpus/,/cpu0/ s/assigned-clock-rates = <[0-9]+>/assigned-clock-rates = <${CONFIG_SPEED}>/" "${WORKDIR}/${P}/arch/riscv/dts/fu740-c000-u-boot.dtsi"
+ elog "Set CPU frquency to $((CONFIG_SPEED/1000000)) Mhz"
+
+ if use efi-priority; then
+ eapply "${FILESDIR}/efi-priority.patch"
+ fi
+
+ eapply_user
+}
+
+src_configure()
+{
+ # Apply Unmatched defconfig
+ emake sifive_hifive_unmatched_fu740_defconfig
+}
+
+src_compile() {
+ # Find opensbi
+ export OPENSBI=`find /usr/share/opensbi-* -name fw_dynamic.bin | sort | tail -n 1`
+ if [ -z "$OPENSBI" ]; then
+ die "Can't find OpenSBI, is sys-boot/opensbi installed?"
+ fi
+ elog "Using OpenSBI at ${OPENSBI}"
+
+ # Start the build
+ emake
+}
+
+src_install() {
+ mkdir -p "${D}/usr/share/${P}"
+ cp "${WORKDIR}/${P}/u-boot.itb" "${D}/usr/share/${P}"
+ cp "${WORKDIR}/${P}/spl/u-boot-spl.bin" "${D}/usr/share/${P}"
+}
+
+pkg_postinst()
+{
+ einfo "U-Boot files have been installed in /usr/share/${P}. In order"
+ einfo "to boot with this U-Boot you need to install it to the correct partitions with"
+ einfo "dd. For example:"
+ einfo "dd if=/usr/share/${P}/u-boot-spl.bin of=<partition with type \"HiFive Unleashed FSBL\">"
+ einfo "dd if=/usr/share/${P}/u-boot.itb of=<partition with type \"HiFive Unleashed BBL\">"
+}
diff --git a/sys-kernel/sifive-sources/Manifest b/sys-kernel/sifive-sources/Manifest
new file mode 100644
index 0000000..e6e78a0
--- /dev/null
+++ b/sys-kernel/sifive-sources/Manifest
@@ -0,0 +1,6 @@
+DIST genpatches-5.12-12.base.tar.xz 650292 BLAKE2B 81b5a3b95390522c328acdb390fd1e8515028e55dee9a3693992ce2aa5c2defcea37b14c385d72e0c6a9b31f239c7d02eea45e4428332f477e897fa94c02d71e SHA512 bea0fee6fade3b1322a52ec2201b828ab28bfb3c0528ea562ac7e3cfaebeb758b971820a2b1ba695dafe219ceb2548c07713b3684491b893e6055ce4f8943916
+DIST genpatches-5.12-12.experimental.tar.xz 70008 BLAKE2B 6f1504992cb0c7ee60c0473a6665c4f24c86e712e922fd35ccd74120d8ac087a259a2f3a684c56d5cf92338718ed32fa43f9ef270cfc92cb0ca6b0534cf4d4cb SHA512 61b7883d2d852fbb25540072a0a05daa90d346249c13418b7e40e23e5f5aaf3e6940ea8a03bfee7a823c205a363c5be420d1e578de4bebc1187e27b9d2dc2e88
+DIST genpatches-5.12-12.extras.tar.xz 3412 BLAKE2B 8fcf6c407be25db368dbb3e6be3907d3431228b5c39819dba7c67d61e5171a7ad9a86f3e117b99b9e0d626219ad9db0938c15c4b96c934b88f693a3e9661d458 SHA512 39750768e4822ea8e3f88540fc8ebad9fd721e2a3a8703102d58e30513b47069cb8a77e15e41d0f90d1d69053007bd476ce0741cd3135a428d039ebd426cdc57
+DIST linux-5.12.tar.xz 118112412 BLAKE2B 842d921b9a73d2aaade763dbd2ec67bdfe0275baa6d628b775f5c87574ad7dc86f0419afcd48c10c1235f4bffa16084243f2cf4556e6afcd391e975fe8ba530b SHA512 be03b6fee1d1ea8087b09874d27c0a602c0b04fd90ad38b975bd2c8455a07e83c29b56814aaf1389e82305fae0e4c2d1701075a7f0a7295dd28149f967ec5b3d
+DIST meta-sifive-2021.05.zip 664346 BLAKE2B ca98d75c4fc255f3ec99c3e9667e1a5e43fc1db88b83010db3766ff8e70acfaf2741dde96da65265aeef5ca82e1cc93a96ea771dd48cc2c9ff4af24d3feb4b82 SHA512 e60052fc183ddd89a4b0a2a443aedfe22c20ce1134925d6c0d52946ce9a5ca04750408fcb7b191ecc30b4d4b21c9e2f262d0d2b89527923a7cd82dc01a7f2345
+EBUILD sifive-sources-5.12.11.ebuild 1303 BLAKE2B 52e5effae7594eefa58f8107a015ab94c0ea634b033f6cc2b60bcb071ec1e7855f47e327de57244aaf83bc18dd2ecb1296155cc62897d58324b88334b9b69a87 SHA512 702387f07a537e77fa4f515e0a2ac8cb01c7a25359b058d92ddabad5530cb69f5cbd0bc5e38441566ff5b016f819095de58566d8998710410dc831104674cc5e
diff --git a/sys-kernel/sifive-sources/sifive-sources-5.12.11.ebuild b/sys-kernel/sifive-sources/sifive-sources-5.12.11.ebuild
new file mode 100644
index 0000000..f7f197d
--- /dev/null
+++ b/sys-kernel/sifive-sources/sifive-sources-5.12.11.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+ETYPE="sources"
+K_WANT_GENPATCHES="base extras experimental"
+K_GENPATCHES_VER="12"
+
+inherit kernel-2
+detect_version
+detect_arch
+
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+HOMEPAGE="https://github.com/sifive/meta-sifive"
+IUSE="experimental"
+
+META_SIFIVE="2021.05"
+
+DESCRIPTION="Full sources including the Gentoo patchset for the ${KV_MAJOR}.${KV_MINOR} kernel tree and meta-sifive-${META_SIFIVE} patches"
+SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI} https://github.com/sifive/meta-sifive/archive/refs/heads/${META_SIFIVE}.zip -> meta-sifive-${META_SIFIVE}.zip"
+
+src_prepare() {
+ unpack meta-sifive-${META_SIFIVE}.zip
+ eapply "${WORKDIR}/linux-${KV_FULL}/meta-sifive-${META_SIFIVE}/recipes-kernel/linux/files"
+ cp "${WORKDIR}/linux-${KV_FULL}/meta-sifive-${META_SIFIVE}/recipes-kernel/linux/files/defconfig" "${WORKDIR}/linux-${KV_FULL}/arch/riscv/configs/unmatched_defconfig"
+ rm -R "${WORKDIR}/linux-${KV_FULL}/meta-sifive-${META_SIFIVE}"
+ eapply_user
+}
+
+pkg_postinst() {
+ kernel-2_pkg_postinst
+ einfo "For more info on this patchset, and how to report problems, see:"
+ einfo "${HOMEPAGE}"
+}
+
+pkg_postrm() {
+ kernel-2_pkg_postrm
+}