# Copyright 2020-2022 Gentoo Authors, projectmoon # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit kernel-build BASE_VER="$(ver_cut 1).$(ver_cut 2).$(ver_cut 3)" RESTRICT="mirror" # https://koji.fedoraproject.org/koji/packageinfo?packageID=8 CONFIG_VER=5.15.19 CONFIG_HASH=ec69da7a42b5b7c3da91572ef22097b069ddbd01 GENTOO_CONFIG_VER=g1 DESCRIPTION="GNU Linux-libre kernel built from upstream sources" HOMEPAGE="https://www.fsfla.org/ikiwiki/selibre/linux-libre/" SRC_URI+=" https://linux-libre.fsfla.org/pub/linux-libre/releases/${BASE_VER}-gnu/linux-libre-${BASE_VER}-gnu.tar.xz https://github.com/projg2/gentoo-kernel-config/archive/${GENTOO_CONFIG_VER}.tar.gz -> gentoo-kernel-config-${GENTOO_CONFIG_VER}.tar.gz amd64? ( https://src.fedoraproject.org/rpms/kernel/raw/${CONFIG_HASH}/f/kernel-x86_64-fedora.config -> kernel-x86_64-fedora.config.${CONFIG_VER} ) " # Workdir is named linux-PV. MY_P=linux-${PV} S=${WORKDIR}/${MY_P} LICENSE="GPL-2" KEYWORDS="amd64" IUSE="debug" BDEPEND=" debug? ( dev-util/pahole ) " PDEPEND=" >=virtual/dist-kernel-${PV} " pkg_pretend() { if has_version -d sys-kernel/linux-firmware[redistributable]; then ewarn "sys-kernel/linux-firmware was found installed on your system," ewarn "but it is configured to install non-Free firmware files." ewarn "The non-Free firmware files may be required for some hardware" ewarn "work. The Linux-libre kernel cannot load non-Free firmware." ewarn "To install only the Free firmware, set the -redistributable" ewarn "USE flag on sys-kernel/linux-firmware." if use initramfs; then elog elog "If you decide to change or remove linux-firmware later, you" elog "can rebuild the initramfs via issuing a command equivalent to:" elog elog " emerge --config ${CATEGORY}/${PN}:${SLOT}" fi else if ! has_version -d sys-kernel/linux-firmware; then ewarn "sys-kernel/linux-firmware[-redistributable] not found installed" ewarn "on your system. This package provides various firmware files that" ewarn "may be needed for your hardware to work. If in doubt, it is recommended" ewarn "to pause or abort the build process and install it before" ewarn "resuming." if use initramfs; then elog elog "If you decide to install linux-firmware later, you can rebuild" elog "the initramfs via issuing a command equivalent to:" elog elog " emerge --config ${CATEGORY}/${PN}:${SLOT}" fi fi fi } src_unpack() { default } src_prepare() { default local biendian=false # prepare the default config case ${ARCH} in amd64) cp "${DISTDIR}/kernel-x86_64-fedora.config.${CONFIG_VER}" .config || die ;; arm) return ;; arm64) cp "${DISTDIR}/kernel-aarch64-fedora.config.${CONFIG_VER}" .config || die biendian=true ;; hppa) return ;; ppc) # assume powermac/powerbook defconfig # we still package.use.force savedconfig cp "${WORKDIR}/${MY_P}/arch/powerpc/configs/pmac32_defconfig" .config || die ;; ppc64) cp "${DISTDIR}/kernel-ppc64le-fedora.config.${CONFIG_VER}" .config || die biendian=true ;; x86) cp "${DISTDIR}/kernel-i686-fedora.config.${CONFIG_VER}" .config || die ;; *) die "Unsupported arch ${ARCH}" ;; esac sed -i 's/EXTRAVERSION = -gnu/EXTRAVERSION = /' "${S}"/Makefile || die 'could not remove EXTRAVERSION' local myversion="-gnu-dist" echo "CONFIG_LOCALVERSION=\"${myversion}\"" > "${T}"/version.config || die local dist_conf_path="${WORKDIR}/gentoo-kernel-config-${GENTOO_CONFIG_VER}" local merge_configs=( "${T}"/version.config "${dist_conf_path}"/base.config ) use debug || merge_configs+=( "${dist_conf_path}"/no-debug.config ) # this covers ppc64 and aarch64_be only for now if [[ ${biendian} == true && $(tc-endian) == big ]]; then merge_configs+=( "${dist_conf_path}/big-endian.config" ) fi kernel-build_merge_configs "${merge_configs[@]}" }