summaryrefslogtreecommitdiff
blob: 7981444046fc4147fb32078ceb2057a72148e186 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/mips-sources-2.6.5-r2.ebuild,v 1.1 2004/06/04 09:32:17 kumba Exp $


# Version Data
OKV=${PV/_/-}
CVSDATE="20040412"
COBALTPATCHVER="1.4"
IP32DIFFDATE="20040402"
[ "${USE_IP32}" = "yes" ] && EXTRAVERSION="-mipscvs-${CVSDATE}-ip32" || EXTRAVERSION="-mipscvs-${CVSDATE}"
KV="${OKV}${EXTRAVERSION}"

# Miscellaneous stuff
S=${WORKDIR}/linux-${OKV}-${CVSDATE}

# Eclass stuff
ETYPE="sources"
inherit kernel eutils


# INCLUDED:
# 1) linux sources from kernel.org
# 2) linux-mips.org CVS snapshot diff from 12 Apr 2004
# 3) Patch to fix the Swap issue in 2.6.5+ (Credit: Peter Horton <cobalt@colonel-panic.org>
# 4) Iluxa's minimal O2 patchset
# 5) Patch to fix linking issue for initrd's
# 6) Security Fixes
# 7) Patches for Cobalt support


DESCRIPTION="Linux-Mips CVS sources for MIPS-based machines, dated ${CVSDATE}"
SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${OKV}.tar.bz2
		mirror://gentoo/mipscvs-${OKV}-${CVSDATE}.diff.bz2
		mirror://gentoo/cobalt-patches-26xx-${COBALTPATCHVER}.tar.bz2
		mirror://gentoo/ip32-iluxa-minpatchset-${IP32DIFFDATE}.diff.bz2"

HOMEPAGE="http://www.linux-mips.org/"
SLOT="${OKV}"
PROVIDE="virtual/linux-sources"
KEYWORDS="-*"


pkg_setup() {
	# See if we're on a cobalt system (must use the cobalt-mips profile)
	if [ "${PROFILE_ARCH}" = "cobalt" ]; then
		echo -e ""
		einfo "Please keep in mind that the 2.6 kernel will NOT boot on Cobalt"
		einfo "systems that are still using the old Cobalt bootloader.  In"
		einfo "order to boot a 2.6 kernel on Cobalt systems, you must be using"
		einfo "Peter Horton's new bootloader, which does not have the kernel"
		einfo "size limitation that the older bootloader has.  If you want"
		einfo "to use the newer bootloader, make sure you have sys-boot/colo"
		einfo "installed and setup."
		echo -e ""
	fi

	# See if we're building IP32 sources
	if [ "${USE_IP32}" = "yes" ]; then
		echo -e ""
		ewarn "SGI O2 (IP32) support is still a work in progress, and may or may"
		ewarn "not work properly.  Any bugs encountered running these sources on"
		ewarn "an O2 should be reported to the gentoo-mips mailing list.  Patches"
		ewarn "any bugs are also welcome."
		echo -e ""
	fi
}

src_unpack() {
	unpack ${A}
	mv ${WORKDIR}/linux-${OKV} ${WORKDIR}/linux-${OKV}-${CVSDATE}
	cd ${S}

	# Update the vanilla sources with linux-mips CVS changes
	epatch ${WORKDIR}/mipscvs-${OKV}-${CVSDATE}.diff

	# Bug in 2.6.5 that triggers a kernel oops when swap is activated
	epatch ${FILESDIR}/mipscvs-${OKV}-swapbug-fix.patch

	# Bug in 2.6.5 in which an include was left out of unistd.h (breaks initrd)
	epatch ${FILESDIR}/mipscvs-${OKV}-unistd-linkage.patch

	# Security Fixes
	echo -e ""
	ebegin "Applying Security Fixes"
		epatch ${FILESDIR}/CAN-2004-0075-2.6-vicam_usb.patch
		epatch ${FILESDIR}/CAN-2004-0109-2.6-iso9660.patch
		epatch ${FILESDIR}/CAN-2004-0228-cpufreq.patch
		epatch ${FILESDIR}/CAN-2004-0229-fb_copy_cmap.patch
		epatch ${FILESDIR}/CAN-2004-0427-2.6-do_fork.patch
	eend

	# Cobalt Patches
	if [ "${PROFILE_ARCH}" = "cobalt" ]; then
		echo -e ""
		einfo ">>> Patching kernel for Cobalt support ..."
		for x in ${WORKDIR}/cobalt-patches-26xx-${COBALTPATCHVER}/*.patch; do
			epatch ${x}
		done
		cp ${WORKDIR}/cobalt-patches-26xx-${COBALTPATCHVER}/cobalt-patches.txt ${S}
		cd ${WORKDIR}
		mv ${WORKDIR}/linux-${OKV}-${CVSDATE} ${WORKDIR}/linux-${OKV}-${CVSDATE}.cobalt
		S="${S}.cobalt"
	fi

	# IP32 Support
	# The USE_IP32 variable below must be passed on the command line to the emerge call
	if [ "${USE_IP32}" = "yes" ]; then
		echo -e ""
		einfo ">>> Patching kernel with iluxa's minimal IP32 patchset ..."
		epatch ${WORKDIR}/ip32-iluxa-minpatchset-${IP32DIFFDATE}.diff
		KV="${KV}-ip32"
		cd ${WORKDIR}
		mv ${WORKDIR}/linux-${OKV}-${CVSDATE} ${WORKDIR}/linux-${OKV}-${CVSDATE}.ip32
		S="${S}.ip32"
	fi
	kernel_universal_unpack
}