Files
sablink-distro/eclass/sablink-kernel.eclass.patch
T
Mario Fetka 77378ef03c Merge Sabayon sabayon-distro upstream; rename overlay to sablink-distro
- profiles/repo_name: sablink-distro
- metadata/layout.conf: add thin-manifests = true
- profiles/thirdpartymirrors: add sabayon mirrors alongside sablink
- sets.conf: update to sablink-distro repository reference
- eclass/sabayon-kernel.eclass: take upstream (newer features, K_TARBALL_EXT)
- eclass/avahi.eclass: take upstream version
- profiles/package.mask: merge both comment styles
- profiles/use.local.desc: merge both USE flag descriptions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 04:32:11 +02:00

656 lines
24 KiB
Diff

--- sablink-kernel.eclass 2014-12-08 14:16:23.384596162 +0100
+++ sablink-kernel.eclass.old 2014-01-18 14:56:43.493014069 +0100
@@ -1,33 +1,39 @@
-# Copyright 2004-2010 sablink Project
+# Copyright 2004-2010 Sabayon Project
+# Copyright 2013 Sablink Project
# Distributed under the terms of the GNU General Public License v2
# $
+# @ECLASS-VARIABLE: K_SABPATCHES_VER
+# @DESCRIPTION:
+# The version of the sablink patches tarball(s) to apply.
+# A value of "5" would apply 2.6.12-5 to my-sources-2.6.12.ebuild
+
# @ECLASS-VARIABLE: K_SABKERNEL_NAME
# @DESCRIPTION:
# The kernel name used by the ebuild, it should be the ending ${PN} part
# for example, of linux-sablink it is "${PN/${PN/-*}-}" (sablink)
K_SABKERNEL_NAME="${K_SABKERNEL_NAME:-${PN/${PN/-*}-}}"
+# @ECLASS-VARIABLE: K_SABKERNEL_URI_CONFIG
+# @DESCRIPTION:
+# Set this either to "no" or "yes" depending on the location of the
+# kernel config files. If they are inside FILESDIR (old location)
+# leave this option set to "no", otherwise set this to "yes"
+K_SABKERNEL_URI_CONFIG="${K_SABKERNEL_URI_CONFIG:-no}"
+
# @ECLASS-VARIABLE: K_SABKERNEL_SELF_TARBALL_NAME
# @DESCRIPTION:
# If the main kernel sources tarball is generated in-house and available
# on the "sablink" mirror, set this variable to the extension name (see example
# below). This will disable ALL the extra/local patches (since they have to
-# be applied inside the tarball). Moreover, K_SABKERNEL_NAME,
-# K_KERNEL_PATCH_VER will be ignored.
+# be applied inside the tarball). Moreover, K_SABKERNEL_URI_CONFIG,
+# K_SABPATCHES_VER, K_SABKERNEL_NAME, K_KERNEL_PATCH_VER will be ignored.
# Example:
# K_SABKERNEL_SELF_TARBALL_NAME="sablink"
# This would generate:
# SRC_URI="mirror://sablink/sys-kernel/linux-${PV}+sablink.tar.${K_TARBALL_EXT}"
K_SABKERNEL_SELF_TARBALL_NAME="${K_SABKERNEL_SELF_TARBALL_NAME:-}"
-# @ECLASS-VARIABLE: K_SABKERNEL_PATCH_UPSTREAM_TARBALL
-# @DESCRIPTION:
-# If set to 1, the ebuild will fetch the upstream kernel tarball and
-# apply the sablink patch against it. This strategy avoids the need of
-# creating complete kernel source tarballs. The default value is 0.
-K_SABKERNEL_PATCH_UPSTREAM_TARBALL="${K_SABKERNEL_PATCH_UPSTREAM_TARBALL:-0}"
-
# @ECLASS-VARIABLE: K_SABKERNEL_FORCE_SUBLEVEL
# @DESCRIPTION:
# Force the rewrite of SUBLEVEL in kernel sources Makefile
@@ -177,13 +183,13 @@
CKV="$(get_version_component_range 1-2)"
fi
-inherit eutils multilib kernel-2 sablink-artwork mount-boot linux-info
+inherit eutils multilib kernel-2 mount-boot linux-info
# from kernel-2 eclass
detect_version
detect_arch
-DESCRIPTION="sablink Linux kernel functions and phases"
+DESCRIPTION="Sablink Linux kernel functions and phases"
K_LONGTERM_URL_STR=""
@@ -192,15 +198,14 @@
fi
## kernel-2 eclass settings
-if [ "${K_SABKERNEL_PATCH_UPSTREAM_TARBALL}" = "1" ]; then
- _patch_name="$(get_version_component_range 1-2)-${K_SABKERNEL_SELF_TARBALL_NAME}-${PVR}.patch.xz"
- SRC_URI="${KERNEL_URI}
- mirror://sablink/${CATEGORY}/${_patch_name}
- "
- UNIPATCH_LIST="${UNIPATCH_LIST} ${DISTDIR}/${_patch_name}"
- unset _patch_name
-elif [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
+if [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
SRC_URI="mirror://sablink/${CATEGORY}/linux-${PVR}+${K_SABKERNEL_SELF_TARBALL_NAME}.tar.${K_TARBALL_EXT}"
+elif [ -n "${K_SABPATCHES_VER}" ]; then
+ UNIPATCH_STRICTORDER="yes"
+ K_SABPATCHES_PKG="sablink-patches-${PV}-${K_SABPATCHES_VER}.tar.${K_TARBALL_EXT}"
+ UNIPATCH_LIST="${DISTFILES}/${K_SABPATCHES_PKG}"
+ SRC_URI="${KERNEL_URI}
+ mirror://sablink/${CATEGORY}/linux-sablink-patches/${K_SABPATCHES_PKG}"
else
SRC_URI="${KERNEL_URI}"
fi
@@ -215,7 +220,7 @@
fi
fi
if [ -n "${K_KERNEL_PATCH_HOTFIXES}" ]; then
- UNIPATCH_LIST="${UNIPATCH_LIST} ${K_KERNEL_PATCH_HOTFIXES}"
+ UNIPATCH_LIST="${K_KERNEL_PATCH_HOTFIXES} ${UNIPATCH_LIST}"
fi
_get_real_kv_full() {
@@ -280,11 +285,22 @@
[ "${_ver}" = "3.2" ] && return 0
[ "${_ver}" = "3.4" ] && return 0
[ "${_ver}" = "3.10" ] && return 0
- [ "${_ver}" = "3.12" ] && return 0
- [ "${_ver}" = "3.14" ] && return 0
return 1
}
+# Returns the arm kernel config file extension for the current subarch
+_get_arm_subarch() {
+ local target="${CTARGET:-${CHOST}}"
+ local arm_arch=${target%%-*}
+ if [[ ${arm_arch} == armv7? ]]; then
+ echo "armv7"
+ elif [[ ${arm_arch} == armv6? ]]; then
+ echo "armv6"
+ elif [[ ${arm_arch} == armv5? ]]; then
+ echo "armv5"
+ fi
+}
+
# provide extra virtual pkg
if _is_kernel_binary; then
PROVIDE="virtual/linux-binary"
@@ -295,39 +311,40 @@
fi
if [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
- HOMEPAGE="https://github.com/sablink/kernel"
+ HOMEPAGE="http://git.disconnected-by-peer.at/sablink/kernel/"
else
HOMEPAGE="http://www.sablink.org"
fi
+# set SRC_URI
+if [ -z "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
+ if [ "${K_SABKERNEL_URI_CONFIG}" = "yes" ]; then
+ tmp_K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE:-${K_SABKERNEL_NAME}-${PVR}-__ARCH__.config}"
+ # ARM not supported, if put in SRC_URI it tries to fetch it
+ tmp_K_SABKERNEL_FW_CONFIG_FILE="${K_SABKERNEL_FW_CONFIG_FILE:-${K_SABKERNEL_NAME}-fw_env-__ARCH__.config}"
+ if [ -n "${K_SABCONFIGS_VER}" ]; then
+ K_SABCONFIGS_PKG="sablink-configs-${PV}-${K_SABCONFIGS_VER}.tar.${K_TARBALL_EXT}"
+ K_ARM_ARCH=$(_get_arm_subarch)
+ SRC_URI="${SRC_URI}
+ mirror://sablink/${CATEGORY}/linux-sablink-configs/${K_SABCONFIGS_PKG}
+ arm? ( mirror://sablink/${CATEGORY}/linux-sablink-patches/config/${tmp_K_SABKERNEL_FW_CONFIG_FILE/__ARCH__/arm} )"
+ else
+ SRC_URI="${SRC_URI}
+ arm? ( mirror://sablink/${CATEGORY}/linux-sablink-patches/config/${tmp_K_SABKERNEL_FW_CONFIG_FILE/__ARCH__/arm} )
+ amd64? ( mirror://sablink/${CATEGORY}/linux-sablink-patches/config/${tmp_K_SABKERNEL_CONFIG_FILE/__ARCH__/amd64} )
+ x86? ( mirror://sablink/${CATEGORY}/linux-sablink-patches/config/${tmp_K_SABKERNEL_CONFIG_FILE/__ARCH__/x86} )"
+ fi
+ # K_SABKERNEL_CONFIG_FILE will be set in _set_config_file_vars
+ unset tmp_K_SABKERNEL_CONFIG_FILE
+ unset tmp_K_SABKERNEL_FW_CONFIG_FILE
+ fi
+fi
+
# Returns success if _set_config_file_vars was called.
_is_config_file_set() {
[[ ${_config_file_set} = 1 ]]
}
-# Returns the arm kernel config file extension for the current subarch
-_get_arm_subarch() {
- local target="${CTARGET:-${CHOST}}"
- local arm_arch=${target%%-*}
- if [[ ${arm_arch} == armv7? ]]; then
- echo "armv7"
- elif [[ ${arm_arch} == armv6? ]]; then
- echo "armv6"
- elif [[ ${arm_arch} == armv5? ]]; then
- echo "armv5"
- fi
-}
-
-_get_arch() {
- if use arm; then
- _get_arm_subarch
- elif use amd64; then
- echo "amd64"
- elif use x86; then
- echo "x86"
- fi
-}
-
_set_config_file_vars() {
# Setup kernel configuration file name
local pvr="${PVR}"
@@ -339,11 +356,35 @@
pvr+="-${PR}"
fi
fi
-
- K_SABKERNEL_CONFIG_FILES=()
- K_SABKERNEL_CONFIG_FILES+=( "${K_SABKERNEL_NAME}-${pvr}-$(_get_arch).config" )
- K_SABKERNEL_CONFIG_FILES+=( "${K_SABKERNEL_NAME}-${pv}-$(_get_arch).config" )
- K_SABKERNEL_CONFIG_FILES+=( "${K_SABKERNEL_NAME}-$(_get_arch).config" )
+ if [ -z "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
+ if [ "${K_SABKERNEL_URI_CONFIG}" = "yes" ]; then
+ K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pvr}-__ARCH__.config}"
+ K_SABKERNEL_FW_CONFIG_FILE="${K_SABKERNEL_FW_CONFIG_FILE:-${K_SABKERNEL_NAME}-fw_env-__ARCH__.config}"
+ use arm && K_SABKERNEL_CONFIG_FILE=${K_SABKERNEL_CONFIG_FILE/__ARCH__/$(_get_arm_subarch)}
+ use arm && K_SABKERNEL_FW_CONFIG_FILE=${K_SABKERNEL_FW_CONFIG_FILE/__ARCH__/arm}
+ use amd64 && K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE/__ARCH__/amd64}"
+ use x86 && K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE/__ARCH__/x86}"
+ else
+ use arm && K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pvr}-$(_get_arm_subarch).config}"
+ use amd64 && K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pvr}-amd64.config}"
+ use x86 && K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pvr}-x86.config}"
+ fi
+ else
+ K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pvr}-__ARCH__.config}"
+ K_SABKERNEL_ALT_CONFIG_FILE="${K_SABKERNEL_ALT_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pv}-__ARCH__.config}"
+ K_SABKERNEL_FW_CONFIG_FILE="${K_SABKERNEL_FW_CONFIG_FILE:-${K_SABKERNEL_NAME}-${pvr}-fw_env-__ARCH__.config}"
+ if use amd64; then
+ K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE/__ARCH__/amd64}"
+ K_SABKERNEL_ALT_CONFIG_FILE="${K_SABKERNEL_ALT_CONFIG_FILE/__ARCH__/amd64}"
+ elif use x86; then
+ K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE/__ARCH__/x86}"
+ K_SABKERNEL_ALT_CONFIG_FILE="${K_SABKERNEL_ALT_CONFIG_FILE/__ARCH__/x86}"
+ elif use arm; then
+ K_SABKERNEL_CONFIG_FILE="${K_SABKERNEL_CONFIG_FILE/__ARCH__/$(_get_arm_subarch)}"
+ K_SABKERNEL_ALT_CONFIG_FILE="${K_SABKERNEL_ALT_CONFIG_FILE/__ARCH__/$(_get_arm_subarch)}"
+ K_SABKERNEL_FW_CONFIG_FILE="${K_SABKERNEL_FW_CONFIG_FILE/__ARCH__/arm}"
+ fi
+ fi
_config_file_set=1
}
@@ -353,7 +394,7 @@
DEPEND="sys-apps/sed"
RDEPEND="${RDEPEND}"
else
- IUSE="dmraid dracut iscsi luks lvm mdadm plymouth splash"
+ IUSE="dmraid dracut iscsi luks lvm mdadm"
if [ -n "${K_SABKERNEL_ZFS}" ]; then
IUSE="${IUSE} zfs"
fi
@@ -361,16 +402,13 @@
sys-apps/sed
sys-devel/autoconf
sys-devel/make
+ sys-fs/dosfstools
+ dev-util/ccache
|| ( >=sys-kernel/genkernel-next-5 >=sys-kernel/genkernel-3.4.45-r2 )
- arm? ( dev-embedded/u-boot-tools )
+ arm? ( dev-embedded/u-boot-tools sys-block/devio )
amd64? ( sys-apps/v86d )
x86? ( sys-apps/v86d )
- splash? ( x11-themes/sablink-artwork-core )
lvm? ( sys-fs/lvm2 sys-block/thin-provisioning-tools )
- plymouth? (
- || ( >=sys-kernel/genkernel-next-5 >=sys-kernel/genkernel-5 )
- sys-boot/plymouth
- )
dracut? ( sys-apps/v86d sys-kernel/dracut )"
RDEPEND="sys-apps/sed
sys-kernel/linux-firmware"
@@ -415,9 +453,12 @@
sablink-kernel_src_unpack() {
local okv="${OKV}"
- if [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ] && [ "${K_SABKERNEL_PATCH_UPSTREAM_TARBALL}" != "1" ]; then
+ if [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
OKV="${PVR}+${K_SABKERNEL_SELF_TARBALL_NAME}"
fi
+ if [ -n "${K_SABCONFIGS_VER}" ]; then
+ unpack "${K_SABCONFIGS_PKG}"
+ fi
if [ "${K_KERNEL_NEW_VERSIONING}" = "1" ]; then
# workaround for kernel-2's universal_unpack assumptions
UNIPATCH_LIST_DEFAULT= KV_MAJOR=0 kernel-2_src_unpack
@@ -429,6 +470,10 @@
sed -i "s:^SUBLEVEL = .*:SUBLEVEL = ${K_SABKERNEL_FORCE_SUBLEVEL}:" \
"${S}/Makefile" || die
fi
+
+ #comment out Extra verion change by CK patch
+ sed -i -e 's/\(^EXTRAVERSION :=.*$\)/# \1/' "${S}/Makefile"
+
if [ -n "${K_SABKERNEL_RESET_EXTRAVERSION}" ]; then
sed -i "s:^EXTRAVERSION =.*:EXTRAVERSION = :" "${S}/Makefile" || die
# some sources could have multiple append-based EXTRAVERSIONs
@@ -440,6 +485,11 @@
case ${EAPI:-0} in
0|1) sablink-kernel_src_prepare ;;
esac
+
+ # delete empty directories
+ pushd "${S}"
+ find . -depth -type d -empty -delete
+ popd
}
sablink-kernel_src_prepare() {
@@ -472,22 +522,33 @@
_is_config_file_set \
|| die "Kernel configuration file not set. Was sablink-kernel_src_prepare() called?"
- local base_path="${DISTDIR}"
if [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
- base_path="${S}/sablink/config"
- fi
-
- local found= cfg=
- for cfg in "${K_SABKERNEL_CONFIG_FILES[@]}"; do
- cfg="${base_path}/${cfg}"
- if [ -f "${cfg}" ]; then
- cp "${cfg}" "${1}" || die "cannot copy kernel config ${cfg} -> ${1}"
- elog "Using kernel config: ${cfg}"
- found=1
- break
+ local base_path="${S}/sablink/config"
+ if [ -f "${base_path}/${K_SABKERNEL_ALT_CONFIG_FILE}" ]; then
+ # new path, without revision
+ cp "${base_path}/${K_SABKERNEL_ALT_CONFIG_FILE}" "${1}" || die "cannot copy kernel config 1"
+ else
+ # PVR path (old)
+ cp "${base_path}/${K_SABKERNEL_CONFIG_FILE}" "${1}" || die "cannot copy kernel config 2"
fi
- done
- [[ -z "${found}" ]] && die "cannot find kernel configs among: ${K_SABKERNEL_CONFIG_FILES[*]}"
+ else
+ if [ "${K_SABKERNEL_URI_CONFIG}" = "no" ]; then
+ # Legacy stuff, not supporting K_KERNEL_NEW_VERSIONING
+ cp "${FILESDIR}/${PF/-r0/}-${ARCH}.config" "${1}" || die "cannot copy kernel config 3"
+ else
+ if [ -n "${K_SABCONFIGS_VER}" ]; then
+ rm -rf "${S}/sablink"
+ cp -rf "${WORKDIR}"/sablink "${S}"
+ pushd "${S}"
+ sablink/scripts/prepareconfig ${K_SABKERNEL_NAME}-${CHOST/-*/}
+ mv .config "${1}.tmp"
+ mv "${1}.tmp" "${1}"
+ popd
+ else
+ cp "${DISTDIR}/${K_SABKERNEL_CONFIG_FILE}" "${1}" || die "cannot copy kernel config 4"
+ fi
+ fi
+ fi
}
_kernel_src_compile() {
@@ -498,7 +559,11 @@
if use amd64 || use x86; then
mkdir -p "${WORKDIR}"/boot/grub
else
- mkdir -p "${WORKDIR}"/boot
+ if use arm; then
+ mkdir -p "${WORKDIR}"/boot/dtb
+ else
+ mkdir -p "${WORKDIR}"/boot
+ fi
fi
einfo "Starting to compile kernel..."
@@ -517,9 +582,8 @@
cd "${S}" || die
local GKARGS=()
- GKARGS+=( "--no-save-config" "--e2fsprogs" "--udev" )
- use splash && GKARGS+=( "--splash=sablink" )
- use plymouth && GKARGS+=( "--plymouth" "--plymouth-theme=${PLYMOUTH_THEME}" )
+ GKARGS+=( "--no-save-config" )
+ GKARGS+=( "--udev" )
use dmraid && GKARGS+=( "--dmraid" )
use iscsi && GKARGS+=( "--iscsi" )
use mdadm && GKARGS+=( "--mdadm" )
@@ -541,15 +605,15 @@
if [ -n "${K_KERNEL_IMAGE_NAME}" ]; then
GKARGS+=( "--kernel-target=${K_KERNEL_IMAGE_NAME}" )
- elif use arm; then
- # backward compat + provide sane defaults.
- GKARGS+=( "--kernel-target=uImage" )
+# elif use arm; then
+# # backward compat + provide sane defaults.
+# GKARGS+=( "--kernel-target=uImage" )
fi
if [ -n "${K_KERNEL_IMAGE_PATH}" ]; then
GKARGS+=( "--kernel-binary=${K_KERNEL_IMAGE_PATH}" )
- elif use arm; then
- # backward compat + provide sane defaults.
- GKARGS+=( "--kernel-binary=arch/arm/boot/uImage" )
+# elif use arm; then
+# # backward compat + provide sane defaults.
+# GKARGS+=( "--kernel-binary=arch/arm/boot/uImage" )
fi
# Workaround bug in splash_geninitramfs corrupting the initramfs
@@ -568,9 +632,142 @@
if [ -n "${K_MKIMAGE_KERNEL_ADDRESS}" ]; then
export LOADADDR="${K_MKIMAGE_KERNEL_ADDRESS}"
fi
+
+ K_SABKERNEL_DTB="none"
+
+ #################################### ARM V5 ######################################
+ # Buffalo anounced a new box named Pro Live (video transcode streaming)
+ # so the old ls_pro_live has to be split to ls_pro ls_live
+ # for now let it stay but a move schould be done to ls_pro
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_kb_pro" ]; then
+ devio > foo 'wl 0xe3a01c05,4' 'wl 0xe38110e5,4' # KuroBox Pro 1509
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo/Revogear Kurobox Pro"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_chl" ]; then
+ devio > foo 'wl 0xe3a01c0b,4' 'wl 0xe3811061,4' # Linkstation Live V3 (2.6.34) 2913
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation LiveV3 (LS-CHL)"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_chl2" ]; then
+ if [[ "${KV_MAJOR}${KV_MINOR}" -ge 35 ]]; then
+ # new Device tree no need for devio
+ K_SABKERNEL_DTB="kirkwood-lschlv2.dtb"
+ else
+ devio > foo 'wl 0xe3a01c0b,4' 'wl 0xe38110be,4' # Linkstation XHL/CHLv2 3006
+ fi
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation LS-CHLv2"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_hgl" ]; then
+ devio > foo 'wl 0xe3a01c07,4' 'wl 0xe38110d5,4' # Linkstation HGL (2.6.31) 2005
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation LS-HGL"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_mini" ]; then
+ devio > foo 'wl 0xe3a01c07,4' 'wl 0xe3811042,4' # Linkstation mini (2.6.29) 1858
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation Mini"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_pro_live" ]; then
+ devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811031,4' # Linkstation Pro/Live (2.6.26) 1585
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation Pro/Live"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_pro_duo_rev1" ]; then
+ devio > foo 'wl 0xe3a01c07,4' 'wl 0xe3811027,4' # Linkstation Pro Duo (2.6.30) 1831
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation Pro Duo - Revision 1"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_pro_duo_rev2" ]; then
+ devio > foo 'wl 0xe3a01c07,4' 'wl 0xe3811027,4' # Linkstation Pro Duo (2.6.30) 1831
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation Pro Duo - Revision 2"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_ql" ]; then
+ devio > foo 'wl 0xe3a01c10,4' 'wl 0xe381108e,4' # Buffalo Linkstation Quad LSQL. Registered 2012.06.15. 4238
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation Quad"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_vl" ]; then
+ devio > foo 'wl 0xe3a01c14,4' 'wl 0xe381109d,4' # Linkstation vl is not in the db so took one 5277
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo LS-VL Series"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_wvl" ]; then
+ if [[ "${KV_MAJOR}${KV_MINOR}" -ge 39 ]]; then
+ # new Device tree no need for devio
+ K_SABKERNEL_DTB="kirkwood-lswvl.dtb"
+ else
+ devio > foo 'wl 0xe3a01c14,4' 'wl 0xe381109e,4' # Linkstation wvl is not in the db so took one 5278
+ fi
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation LS-WVL"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ts_wxl" ]; then
+ devio > foo 'wl 0xe3a01c0a,4' 'wl 0xe3811089,4' # Terastation WXL (2.6.35) 2697
+ K_SABKERNEL_TYPE="buffalo"
+ # Broken hardware name needs to be correct in u-boot firmware
+ K_SABKERNEL_DEVICE="Buffalo Linkstation Pro/Live"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "buffalo_ls_xhl" ]; then
+ if [[ "${KV_MAJOR}${KV_MINOR}" -ge 35 ]]; then
+ # new Device tree no need for devio
+ K_SABKERNEL_DTB="kirkwood-lsxhl.dtb"
+ else
+ devio > foo 'wl 0xe3a01c0a,4' 'wl 0xe3811067,4' # Linkstation XHL/CHLv2 (2.6.30) 2663
+ fi
+ K_SABKERNEL_TYPE="buffalo"
+ K_SABKERNEL_DEVICE="Buffalo Linkstation LS-XHL"
+ fi
+
+ #################################### ARM V6 ######################################
+ # oxnas
+ if [ "${K_SABKERNEL_NAME}" = "medion_stg212" ]; then
+ K_SABKERNEL_TYPE="default"
+ K_SABKERNEL_DEVICE="Oxford NAS"
+ K_GENKERNEL_ARGS+=" --kernel-target=uImage --kernel-binary=arch/arm/boot/uImage"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "pogoplug_pro" ]; then
+ K_SABKERNEL_TYPE="default"
+ K_SABKERNEL_DEVICE="Oxford NAS"
+ K_GENKERNEL_ARGS+=" --kernel-target=uImage --kernel-binary=arch/arm/boot/uImage"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "pogoplug_pro_pci" ]; then
+ K_SABKERNEL_TYPE="default"
+ K_SABKERNEL_DEVICE="Oxford NAS"
+ K_GENKERNEL_ARGS+=" --kernel-target=uImage --kernel-binary=arch/arm/boot/uImage"
+ fi
+ if [ "${K_SABKERNEL_NAME}" = "iomega_hmnd_ce" ]; then
+ K_SABKERNEL_TYPE="default"
+ K_SABKERNEL_DEVICE="Oxford NAS"
+ K_GENKERNEL_ARGS+=" --kernel-target=uImage --kernel-binary=arch/arm/boot/uImage"
+ fi
+
+
+ #################################### ARM V7 ######################################
+ # Freescale
+ if [ "${K_SABKERNEL_NAME}" = "freescale_mx53_loco" ]; then
+ K_SABKERNEL_TYPE="default"
+ K_SABKERNEL_DEVICE="Freescale MX53 LOCO Board"
+ K_GENKERNEL_ARGS+=" --kernel-target=uImage --kernel-binary=arch/arm/boot/uImage"
+ fi
+
+ # Freescale
+ if [ "${K_SABKERNEL_NAME}" = "pandaboard" ]; then
+ K_SABKERNEL_TYPE="default"
+ K_SABKERNEL_DEVICE="OMAP4 Panda board"
+ K_GENKERNEL_ARGS+=" --kernel-target=uImage --kernel-binary=arch/arm/boot/uImage"
+ fi
+
OLDARCH="${ARCH}"
unset ARCH
unset LDFLAGS
+
+ pushd "${S}"/3rdparty
+ perl ./mkbuild.pl
+ popd
+
DEFAULT_KERNEL_SOURCE="${S}" CMD_KERNEL_DIR="${S}" genkernel "${GKARGS[@]}" ${K_GENKERNEL_ARGS} \
--kerneldir="${S}" \
--kernel-config="${WORKDIR}"/config \
@@ -581,6 +778,8 @@
--bootdir="${WORKDIR}"/boot \
--mountboot \
--module-prefix="${WORKDIR}"/lib \
+ --kernel-cc=/usr/lib/ccache/bin/${CHOST}-gcc \
+ --kernel-ld=${CHOST}-ld.bfd \
all || die "genkernel failed"
if [ -n "${K_MKIMAGE_KERNEL_ADDRESS}" ]; then
@@ -588,6 +787,50 @@
fi
ARCH=${OLDARCH}
+
+ if [ "${K_SABKERNEL_DTB}" != "none" ]; then
+ emake ${K_SABKERNEL_DTB}
+ cp "${S}"/arch/arm/boot/${K_SABKERNEL_DTB} "${S}"
+ fi
+
+ # Buffalo Boxes have a special naming and start address
+ if [ "${K_SABKERNEL_TYPE}" = "buffalo" ]; then
+ if [ "${K_SABKERNEL_DTB}" = "none" ]; then
+ einfo "Prepend the correct Device ID to the Kenel Image"
+ cat foo "${WORKDIR}"/boot/kernel-genkernel-${ARCH}-${KV_FULL} > zImage.new
+ einfo "Create uImage of the resulting Image"
+ mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n uImage-${KV_FULL} \
+ -d zImage.new "${WORKDIR}"/boot/uImage-genkernel-${ARCH}-${KV_FULL}.buffalo
+ einfo "Create uInitrd with correct start address"
+ mkimage -A arm -O linux -T ramdisk -C none -a 0x00000000 -e 0x00000000 -n initrd-${KV_FULL} \
+ -d "${WORKDIR}"/boot/initramfs-genkernel-${ARCH}-${KV_FULL} "${WORKDIR}"/boot/uInitramfs-genkernel-${ARCH}-${KV_FULL}.buffalo
+ else
+ einfo "Append the device-tree-blob to the Kenel Image"
+ cat "${WORKDIR}"/boot/kernel-genkernel-${ARCH}-${KV_FULL} "${S}"/${K_SABKERNEL_DTB} > zImage.new
+ cp "${S}"/${K_SABKERNEL_DTB} "${WORKDIR}"/boot/dtb/
+ einfo "Create uImage of the resulting Image"
+ mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n uImage-${KV_FULL} \
+ -d zImage.new "${WORKDIR}"/boot/uImage-genkernel-${ARCH}-${KV_FULL}.buffalo
+ einfo "Create uInitrd with correct start address"
+ mkimage -A arm -O linux -T ramdisk -C none -a 0x00000000 -e 0x00000000 -n initrd-${KV_FULL} \
+ -d "${WORKDIR}"/boot/initramfs-genkernel-${ARCH}-${KV_FULL} "${WORKDIR}"/boot/uInitramfs-genkernel-${ARCH}-${KV_FULL}.buffalo
+ fi
+ fi
+
+ if [ "${K_SABKERNEL_TYPE}" = "default" ]; then
+ einfo "Rename Kernel Image for consistency"
+ mv "${WORKDIR}"/boot/kernel-genkernel-${ARCH}-${KV_FULL} "${WORKDIR}"/boot/uImage-genkernel-${ARCH}-${KV_FULL}
+ einfo "Create uInitrd with correct start address"
+ mkimage -A arm -O linux -T ramdisk -C none -a 0x00000000 -e 0x00000000 -n initrd-${KV_FULL} \
+ -d "${WORKDIR}"/boot/initramfs-genkernel-${ARCH}-${KV_FULL} "${WORKDIR}"/boot/uInitramfs-genkernel-${ARCH}-${KV_FULL}
+ fi
+
+ # move System.map for filname consistency
+ mv "${WORKDIR}"/boot/System.map-genkernel-${ARCH}-${KV_FULL} "${WORKDIR}"/boot/System.map-genkernel-${ARCH}-${KV_FULL}
+
+ # cleanup
+ rm -rf foo zImage.new ${K_SABKERNEL_DTB}
+ rm "${WORKDIR}"/boot/kernel-genkernel-${ARCH}-${KV_FULL} "${WORKDIR}"/boot/initramfs-genkernel-${ARCH}-${KV_FULL}
}
_setup_mkimage_ramdisk() {
@@ -644,9 +887,9 @@
}
_kernel_src_install() {
- if use arm; then
- _setup_mkimage_ramdisk || die "cannot setup mkimage"
- fi
+# if use arm; then
+# _setup_mkimage_ramdisk || die "cannot setup mkimage"
+# fi
dodir "${KV_OUT_DIR}"
insinto "${KV_OUT_DIR}"
@@ -737,6 +980,18 @@
use dracut && \
_dracut_initramfs_create "${KV_FULL}"
+
+ # copy firmware config file to propper location
+ if [ -n "${K_SABKERNEL_SELF_TARBALL_NAME}" ]; then
+ local base_path="${S}/sablink/config"
+ cp "${base_path}/${K_SABKERNEL_FW_CONFIG_FILE}" "${D}/etc/fw_env.config.${K_SABKERNEL_NAME}" || die "cannot copy firmware config"
+ else
+ if [ "${K_SABKERNEL_URI_CONFIG}" = "no" ]; then
+ cp "${FILESDIR}/${PF/-r0/}-${ARCH}.config" "${D}/etc/fw_env.config.${K_SABKERNEL_NAME}" || die "cannot copy firmware config"
+ else
+ cp "${DISTDIR}/${K_SABKERNEL_FW_CONFIG_FILE}" "${D}/etc/fw_env.config.${K_SABKERNEL_NAME}" || die "cannot copy firmware config"
+ fi
+ fi
}
sablink-kernel_pkg_preinst() {
@@ -873,9 +1128,6 @@
sed -i '/ext4/ s/extents//g' "${fstab_file}"
fi
- # Update kernel initramfs to match user customizations
- use splash && update_sablink_kernel_initramfs_splash
-
# Add kernel to grub.conf
if use amd64 || use x86; then
if use amd64; then
@@ -913,10 +1165,16 @@
elog "The source code of this kernel is located at"
elog "=${K_KERNEL_SOURCES_PKG}."
- elog "sablink Linux recommends that portage users install"
+ elog "Sablink Linux recommends that portage users install"
elog "${K_KERNEL_SOURCES_PKG} if you want"
elog "to build any packages that install kernel modules"
elog "(such as ati-drivers, nvidia-drivers, virtualbox, etc...)."
+
+ # copy the firmware config for the actual hardware to the right place
+ device=$(grep "Hardware[[:space:]]*:" /proc/cpuinfo 2>/dev/null | head -n1 | sed "s/^[^:]*: //")
+ if [ "${K_SABKERNEL_DEVICE}" = "$device" ]; then
+ cp ${ROOT}/etc/fw_env.config.${K_SABKERNEL_NAME} ${ROOT}/etc/fw_env.config
+ fi
else
kernel-2_pkg_postinst
fi