2ec1bbf0be
git-svn-id: https://svn.disconnected-by-peer.at/svn/linamh/trunk/genlink@2460 6952d904-891a-0410-993b-d76249ca496b
227 lines
7.7 KiB
Bash
227 lines
7.7 KiB
Bash
# Copyright 1999-2009 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Header: lucianm Exp $
|
|
#
|
|
# Author:
|
|
# Lucian Muresan <lucianm AT users DOT sourceforge DOT net>
|
|
# based upon code from the vdr-plugin.eclass by
|
|
# Matthias Schwarzott <zzam@gentoo.org>
|
|
# Joerg Bornkessel <hd_brummy@gentoo.org>
|
|
|
|
# orion5x-kernel.eclass
|
|
#
|
|
|
|
inherit kernel-2
|
|
|
|
IUSE_ORION_NAS_DEVICES="linkstation_pro_duo linkstation_pro_live linkstation_mini kurobox_pro qnap_ts_109_209 qnap_ts_409 dlink_dns_323 hp_mv2120 ts_78xx_sbc wrt350_v2 terastation_pro_v2 netronix_nh233 maxtor_shared_storage_2"
|
|
|
|
DEPEND="${DEPEND}
|
|
sys-block/devio
|
|
dev-embedded/u-boot-tools"
|
|
|
|
PROVIDE="virtual/linux-sources"
|
|
|
|
MY_MACHINE_TYPE=""
|
|
nasdevice_count=0
|
|
|
|
for nasdevice in ${IUSE_ORION_NAS_DEVICES}; do
|
|
IUSE="${IUSE} orion_nas_devices_${nasdevice}"
|
|
done
|
|
|
|
orion5x-kernel_add_nasdevice() {
|
|
#: ${nasdevice_count:=0}
|
|
: $(( nasdevice_count++ ))
|
|
|
|
if [[ ${nasdevice_count} -eq 2 ]]; then
|
|
ewarn
|
|
ewarn "Only one machine type can be patched after building the zImage!"
|
|
ewarn "Please select just one of '${IUSE_ORION_NAS_DEVICES}'!"
|
|
die "Multiple machine types selected"
|
|
fi
|
|
|
|
local dev="${1}"
|
|
local desc="device ${dev}"
|
|
if [[ -n "${2}" ]]; then
|
|
desc="${2}"
|
|
fi
|
|
|
|
einfo "Will patch the zImage for ${desc}"
|
|
MY_MACHINE_TYPE="${MY_MACHINE_TYPE} ${dev}"
|
|
}
|
|
|
|
orion5x-kernel_patch_help() {
|
|
einfo ""
|
|
einfo ""
|
|
einfo ""
|
|
einfo "You may add your own patches like this:"
|
|
einfo ""
|
|
einfo " - Add the following variable to your /etc/make.conf:"
|
|
einfo " ORION5X_KERNEL_PATCHES_DIR=\"/path/to/my/patches\""
|
|
einfo ""
|
|
einfo " - Create the following subdirectories inside your local patch directory:"
|
|
einfo " ${PN}/${PV}"
|
|
einfo ""
|
|
einfo " - Place your patches ending on *.diff or *.patch in the created"
|
|
einfo " \"${PV}\" directory, together with a file called \"0_list\" in which you"
|
|
einfo " list them in the order you want them applied."
|
|
einfo ""
|
|
}
|
|
|
|
orion5x-kernel_pkg_setup() {
|
|
kernel-2_pkg_setup
|
|
|
|
local nasdevice
|
|
|
|
for nasdevice in ${IUSE_ORION_NAS_DEVICES}; do
|
|
if use orion_nas_devices_${nasdevice}; then
|
|
orion5x-kernel_add_nasdevice ${nasdevice}
|
|
fi
|
|
done
|
|
|
|
if [[ ${nasdevice_count} -eq 0 ]]; then
|
|
ewarn
|
|
ewarn "You did not select a machine type to be patched after building the zImage!"
|
|
ewarn "Please set 'ORION_NAS_DEVICES' to just one of '${IUSE_ORION_NAS_DEVICES}'!"
|
|
die "No Orion machine type selected"
|
|
fi
|
|
|
|
if [ -z "${ORION5X_KERNEL_PATCHES_DIR}" ] ; then
|
|
orion5x-kernel_patch_help
|
|
else
|
|
if ! [ -d "${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}" ] ; then
|
|
orion5x-kernel_patch_help
|
|
fi
|
|
fi
|
|
}
|
|
|
|
orion5x-kernel_apply_local_patches() {
|
|
cd ${S}
|
|
if test -d "${ORION5X_KERNEL_PATCHES_DIR}/${PN}"; then
|
|
echo
|
|
local PATCH_LIST=$(cat ${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}/0_list)
|
|
einfo "Applying local patches found in"
|
|
einfo "${ORION5X_KERNEL_PATCHES_DIR}:"
|
|
# for LOCALPATCH in ${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}/*.{diff,patch}; do
|
|
# test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
|
|
# done
|
|
for LOCALPATCH in ${PATCH_LIST}; do
|
|
cd ${S}
|
|
test -f "${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}/${LOCALPATCH}" && patch -p 1 < "${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}/${LOCALPATCH}"
|
|
#test -f "${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}/${LOCALPATCH}" && epatch "${ORION5X_KERNEL_PATCHES_DIR}/${PN}/${PV}/${LOCALPATCH}"
|
|
done
|
|
fi
|
|
}
|
|
|
|
orion5x-kernel_generate_mach-type_patch(){
|
|
echo "diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
|
|
index 25f1230..789190e 100644
|
|
--- a/arch/arm/boot/Makefile
|
|
+++ b/arch/arm/boot/Makefile
|
|
@@ -55,6 +55,10 @@ \$(obj)/compressed/vmlinux: \$(obj)/Image FORCE
|
|
|
|
\$(obj)/zImage: \$(obj)/compressed/vmlinux FORCE
|
|
\$(call if_changed,objcopy)
|
|
+ devio > foo 'wl 0xe3a01c05,4' 'wl 0xe38110e5,4'
|
|
+ cat foo \$(obj)/zImage > zImage.new
|
|
+ mv zImage.new \$(obj)/zImage
|
|
+ rm foo
|
|
@echo ' Kernel: \$@ is ready'
|
|
|
|
endif" > ${WORKDIR}/force_mach-type.patch
|
|
}
|
|
|
|
orion5x-kernel_src_unpack(){
|
|
|
|
kernel-2_src_unpack
|
|
orion5x-kernel_apply_local_patches
|
|
|
|
# create mach-type patch in the working dir, to modify it according to the
|
|
# set orion nas device
|
|
orion5x-kernel_generate_mach-type_patch
|
|
|
|
if use orion_nas_devices_linkstation_pro_live; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811031,4' # Linkstation Pro/Live
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811031,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
#if use orion_nas_devices_kurobox_pro; then
|
|
#nothing to replace for the Kurobox Pro
|
|
#fi
|
|
|
|
if use orion_nas_devices_qnap_ts_109_209; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe381101d,4' # QNAP TS-109/TS-209
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe381101d,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_qnap_ts_409; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811041,4' # QNAP TS-409
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811041,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_dlink_dns_323; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811006,4' # D-Link DNS-323
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811006,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_hp_mv2120; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe381109d,4' # HP Media Vault MV2120
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe381109d,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_ts_78xx_sbc; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811074,4' # Technologic Systems TS-78xx SBC
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811074,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_maxtor_shared_storage_2; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe38110e6,4' # Maxtor Shared Storage II (2.6.27)
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe38110e6,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_wrt350_v2; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811061,4' # Linksys WRT350N v2
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811061,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_linkstation_pro_duo; then
|
|
#devio > foo 'wl 0xe3a01c07,4' 'wl 0xe3811027,4' # Buffalo Linkstation Pro Duo (Is this right?)
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c07,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811027,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_linkstation_mini; then
|
|
#devio > foo 'wl 0xe3a01c07,4' 'wl 0xe3811042,4' # Buffalo Linkstation Mini (Is this right?)
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c07,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811042,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_terastation_pro_v2; then
|
|
#devio > foo 'wl 0xe3a01c06,4' 'wl 0xe3811030,4' # Buffalo TS Pro V2 (not yet supported in Vanilla 2.6.26 as of Aug. 10th, 2008)
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c06,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811030,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
if use orion_nas_devices_netronix_nh233; then
|
|
#devio > foo 'wl 0xe3a01c07,4' 'wl 0xe3811065,4' # Netronix NH-233
|
|
sed -i -e "s:0xe3a01c05,4:0xe3a01c07,4:" ${WORKDIR}/force_mach-type.patch
|
|
sed -i -e "s:0xe38110e5,4:0xe3811065,4:" ${WORKDIR}/force_mach-type.patch
|
|
fi
|
|
|
|
# finally patch with the correct orion nas device
|
|
epatch ${WORKDIR}/force_mach-type.patch
|
|
}
|
|
|
|
orion5x-kernel_pkg_postinst(){
|
|
postinst_sources
|
|
}
|
|
|
|
EXPORT_FUNCTIONS pkg_setup src_unpack pkg_postinst
|