summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Kinard <kumba@gentoo.org>2006-07-03 05:09:32 +0000
committerJoshua Kinard <kumba@gentoo.org>2006-07-03 05:09:32 +0000
commit3e0d47eb9df037d43ca2feae42a87becefc65300 (patch)
treee61326b0f8e07825b438d55385d242fb0ce9aa54 /sys-kernel
parentDo to same for the n32/nptl profiles and n64 build profile. (diff)
downloadgentoo-2-3e0d47eb9df037d43ca2feae42a87becefc65300.tar.gz
gentoo-2-3e0d47eb9df037d43ca2feae42a87becefc65300.tar.bz2
gentoo-2-3e0d47eb9df037d43ca2feae42a87becefc65300.zip
Update 2.6.16.20 to 2.6.16.22, import 2.6.17.3, and mask 2.6.15-r7 for all systems except IP22, as this is the last known kernel that worked on IP22 in 64bit mode. 2.6.16.22 and 2.6.17.3 include SquashFS for the first time, as well as being the barrier between linuxthreads and nptl support. This means 2.6.17 is enabled only in the 2006.1 nptl sub-profiles, and masked in all other profiles. It is intended to be used with a transitional linuxthreads->nptl userland, as linuxthreads support will die with 2.6.16*.
(Portage version: 2.1-r1)
Diffstat (limited to 'sys-kernel')
-rw-r--r--sys-kernel/mips-sources/ChangeLog16
-rw-r--r--sys-kernel/mips-sources/files/digest-mips-sources-2.6.16.2215
-rw-r--r--sys-kernel/mips-sources/files/digest-mips-sources-2.6.17.312
-rw-r--r--sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild22
-rw-r--r--sys-kernel/mips-sources/mips-sources-2.6.16.22.ebuild548
-rw-r--r--sys-kernel/mips-sources/mips-sources-2.6.17.3.ebuild532
6 files changed, 1133 insertions, 12 deletions
diff --git a/sys-kernel/mips-sources/ChangeLog b/sys-kernel/mips-sources/ChangeLog
index da02ac26fc40..26941c482662 100644
--- a/sys-kernel/mips-sources/ChangeLog
+++ b/sys-kernel/mips-sources/ChangeLog
@@ -1,6 +1,20 @@
# ChangeLog for sys-kernel/mips-sources
# Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/ChangeLog,v 1.97 2006/06/07 22:13:37 kumba Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/ChangeLog,v 1.98 2006/07/03 05:09:32 kumba Exp $
+
+*mips-sources-2.6.17.3 (03 Jul 2006)
+*mips-sources-2.6.16.22 (03 Jul 2006)
+
+ 03 Jul 2006; Joshua Kinard <kumba@gentoo.org>
+ mips-sources-2.6.15.7-r1.ebuild, -mips-sources-2.6.16.20.ebuild,
+ +mips-sources-2.6.16.22.ebuild, +mips-sources-2.6.17.3.ebuild:
+ Update 2.6.16.20 to 2.6.16.22, import 2.6.17.3, and mask 2.6.15-r7 for all
+ systems except IP22, as this is the last known kernel that worked on IP22 in
+ 64bit mode. 2.6.16.22 and 2.6.17.3 include SquashFS for the first time, as
+ well as being the barrier between linuxthreads and nptl support. This means
+ 2.6.17 is enabled only in the 2006.1 nptl sub-profiles, and masked in all
+ other profiles. It is intended to be used with a transitional
+ linuxthreads->nptl userland, as linuxthreads support will die with 2.6.16*.
*mips-sources-2.6.16.20 (07 Jun 2006)
diff --git a/sys-kernel/mips-sources/files/digest-mips-sources-2.6.16.22 b/sys-kernel/mips-sources/files/digest-mips-sources-2.6.16.22
new file mode 100644
index 000000000000..a8988485b1f6
--- /dev/null
+++ b/sys-kernel/mips-sources/files/digest-mips-sources-2.6.16.22
@@ -0,0 +1,15 @@
+MD5 9a91b2719949ff0856b40bc467fd47be linux-2.6.16.tar.bz2 40845005
+RMD160 af5c2f55733fadd2fdf8b00da55e7b31d516d4e8 linux-2.6.16.tar.bz2 40845005
+SHA256 1200dcc7e60fcdaf68618dba991917a47e41e67099e8b22143976ec972e2cad7 linux-2.6.16.tar.bz2 40845005
+MD5 a9ea731ba8c89de048739f17d1f69267 mips-sources-generic_patches-1.22.tar.bz2 405094
+RMD160 809679b2bc9f256a410b30832ee728f6781e7b75 mips-sources-generic_patches-1.22.tar.bz2 405094
+SHA256 37d0b5f01afa471f1f50621cf53ae36b301e6e7c9ab07f7db140dd43b9b1b106 mips-sources-generic_patches-1.22.tar.bz2 405094
+MD5 e94ee79cc269b78401ffe9b79ad620ff mips-sources-security_patches-1.15.tar.bz2 95503
+RMD160 b0f8dcf5ae9bc2881c0e96302e5f7ce36b9eef9d mips-sources-security_patches-1.15.tar.bz2 95503
+SHA256 188459e458fd059dedf0a70c766358a64fa3122d4584f8ef01286d5f8ad424ed mips-sources-security_patches-1.15.tar.bz2 95503
+MD5 1e6d0c4e9586cf6cc7395e48059066d8 mipsgit-2.6.16-20060320.diff.bz2 133698
+RMD160 fa75efb28512d53a60c0481c9646a59453fc4c34 mipsgit-2.6.16-20060320.diff.bz2 133698
+SHA256 01d3833021941de897af7f113236b461264be72af9df2f007fed7cefd9e8ff33 mipsgit-2.6.16-20060320.diff.bz2 133698
+MD5 826870e367fdcbc16f8b3ad8ca4f27d7 patch-2.6.16.22.bz2 59508
+RMD160 ad1575b6f5a25c9b98c9491be5bd663feb3000e7 patch-2.6.16.22.bz2 59508
+SHA256 ba29fd47567561987d7faf8c9347fdf69f9204a067da918bf99467c3e38cc473 patch-2.6.16.22.bz2 59508
diff --git a/sys-kernel/mips-sources/files/digest-mips-sources-2.6.17.3 b/sys-kernel/mips-sources/files/digest-mips-sources-2.6.17.3
new file mode 100644
index 000000000000..9aac2c72d16b
--- /dev/null
+++ b/sys-kernel/mips-sources/files/digest-mips-sources-2.6.17.3
@@ -0,0 +1,12 @@
+MD5 37ddefe96625502161f075b9d907f21e linux-2.6.17.tar.bz2 41272919
+RMD160 26aad30c9a6610665c6c7d62401d79bf56a6a699 linux-2.6.17.tar.bz2 41272919
+SHA256 ab0f647d52f124958439517df9e1ae0efda90cdb851f59f522fa1749f1d87d58 linux-2.6.17.tar.bz2 41272919
+MD5 a9ea731ba8c89de048739f17d1f69267 mips-sources-generic_patches-1.22.tar.bz2 405094
+RMD160 809679b2bc9f256a410b30832ee728f6781e7b75 mips-sources-generic_patches-1.22.tar.bz2 405094
+SHA256 37d0b5f01afa471f1f50621cf53ae36b301e6e7c9ab07f7db140dd43b9b1b106 mips-sources-generic_patches-1.22.tar.bz2 405094
+MD5 51d45ba8e2f016813191d2bb06ad277e mipsgit-2.6.17-20060618.diff.bz2 101475
+RMD160 13b219d683a79ab6a65ae2dade1164eb9a2b861c mipsgit-2.6.17-20060618.diff.bz2 101475
+SHA256 6fd8cb2e5d9c7190387d60c2bc746bf8df9efd5654b05e19b03953065b50f29a mipsgit-2.6.17-20060618.diff.bz2 101475
+MD5 2c426ef5e2f02f1a761f150c13a7dac8 patch-2.6.17.3.bz2 7773
+RMD160 204d8199aa702919c7e7a8a4dd18d0208c3d2a79 patch-2.6.17.3.bz2 7773
+SHA256 611b4c0c209833ef18f59bd19c852a674a15a0c243655179d850c96053de9f65 patch-2.6.17.3.bz2 7773
diff --git a/sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild b/sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild
index 4e006d5382b9..111182b26619 100644
--- a/sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild
+++ b/sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild,v 1.1 2006/04/13 03:43:26 kumba Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/mips-sources-2.6.15.7-r1.ebuild,v 1.2 2006/07/03 05:09:32 kumba Exp $
# INCLUDED:
@@ -52,19 +52,19 @@ USE_PNT="yes" # If set to "yes", then attempt to use a point-release (2.6.x.y
# Machine Support Control Variables
DO_IP22="yes" # If "yes", enable IP22 support (SGI Indy, Indigo2 R4x00)
-DO_IP27="yes" # IP27 support (SGI Origin)
-DO_IP28="yes" # IP28 support (SGI Indigo2 Impact R10000)
-DO_IP30="yes" # IP30 support (SGI Octane)
-DO_IP32="yes" # IP32 support (SGI O2, R5000/RM5200 Only)
-DO_CBLT="yes" # Cobalt Support (Cobalt Microsystems)
+DO_IP27="no" # IP27 support (SGI Origin)
+DO_IP28="no" # IP28 support (SGI Indigo2 Impact R10000)
+DO_IP30="no" # IP30 support (SGI Octane)
+DO_IP32="no" # IP32 support (SGI O2, R5000/RM5200 Only)
+DO_CBLT="no" # Cobalt Support (Cobalt Microsystems)
# Machine Stable Version Variables
SV_IP22="" # If set && DO_IP22 == "no", indicates last "good" IP22 version
-SV_IP27="" # DO_IP27 == "no", IP27
-SV_IP28="" # DO_IP28 == "no", IP28
-SV_IP30="" # DO_IP30 == "no", IP30
-SV_IP32="" # DO_IP32 == "no", IP32
-SV_CBLT="" # DO_CBLT == "no", Cobalt
+SV_IP27="2.6.16.22" # DO_IP27 == "no", IP27
+SV_IP28="2.6.16.22" # DO_IP28 == "no", IP28
+SV_IP30="2.6.16.22" # DO_IP30 == "no", IP30
+SV_IP32="2.6.16.22" # DO_IP32 == "no", IP32
+SV_CBLT="2.6.16.22" # DO_CBLT == "no", Cobalt
# If USE_RC == "yes", use a release candidate kernel (2.6.X-rcY)
diff --git a/sys-kernel/mips-sources/mips-sources-2.6.16.22.ebuild b/sys-kernel/mips-sources/mips-sources-2.6.16.22.ebuild
new file mode 100644
index 000000000000..72ecf4272c13
--- /dev/null
+++ b/sys-kernel/mips-sources/mips-sources-2.6.16.22.ebuild
@@ -0,0 +1,548 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/mips-sources-2.6.16.22.ebuild,v 1.1 2006/07/03 05:09:32 kumba Exp $
+
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+# 2) linux-mips.org GIT snapshot diff from 14 Sep 2005
+# 3) Generic Fixes
+# 4) Security fixes
+# 5) Patch for IP30 Support (http://www.linux-mips.org/~skylark/)
+# 5) Patch for IP28 Support (http://home.alphastar.de/fuerst/download.html)
+# 6) Patch for Remaining Cobalt Bits (http://www.colonel-panic.org/cobalt-mips/)
+# 7) Experimental patches (IP27 hacks, et al)
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Version Data
+OKV=${PV/_/-}
+GITDATE="20060320" # Date of diff between kernel.org and lmo GIT
+SECPATCHVER="1.15" # Tarball version for security patches
+GENPATCHVER="1.22" # Tarball version for generic patches
+EXTRAVERSION="-mipsgit-${GITDATE}"
+KV="${OKV}${EXTRAVERSION}"
+F_KV="${OKV}" # Fetch KV, used to know what mipsgit diff to grab.
+STABLEVER="${F_KV}" # Stable Version (2.6.x)
+PATCHVER=""
+
+# Directories
+S="${WORKDIR}/linux-${OKV}-${GITDATE}"
+MIPS_PATCHES="${WORKDIR}/mips-patches"
+MIPS_SECURITY="${WORKDIR}/security"
+
+# Inherit Eclasses
+ETYPE="sources"
+inherit kernel eutils versionator
+
+# Portage Vars
+HOMEPAGE="http://www.linux-mips.org/ http://www.gentoo.org/"
+SLOT="${OKV}"
+PROVIDE="virtual/linux-sources virtual/alsa"
+KEYWORDS="-* mips"
+IUSE="cobalt ip27 ip28 ip30 ip32r10k"
+DEPEND=">=sys-devel/gcc-3.4.6"
+
+
+# Version Control Variables
+USE_RC="no" # If set to "yes", then attempt to use an RC kernel
+USE_PNT="yes" # If set to "yes", then attempt to use a point-release (2.6.x.y)
+
+# Machine Support Control Variables
+DO_IP22="no" # If "yes", enable IP22 support (SGI Indy, Indigo2 R4x00)
+DO_IP27="yes" # IP27 support (SGI Origin)
+DO_IP28="yes" # IP28 support (SGI Indigo2 Impact R10000)
+DO_IP30="yes" # IP30 support (SGI Octane)
+DO_IP32="yes" # IP32 support (SGI O2, R5000/RM5200 Only)
+DO_CBLT="yes" # Cobalt Support (Cobalt Microsystems)
+
+# Machine Stable Version Variables
+SV_IP22="2.6.15.7-r1" # If set && DO_IP22 == "no", indicates last "good" IP22 version
+SV_IP27="" # DO_IP27 == "no", IP27
+SV_IP28="" # DO_IP28 == "no", IP28
+SV_IP30="" # DO_IP30 == "no", IP30
+SV_IP32="" # DO_IP32 == "no", IP32
+SV_CBLT="" # DO_CBLT == "no", Cobalt
+
+
+# If USE_RC == "yes", use a release candidate kernel (2.6.X-rcY)
+if [ "${USE_RC}" = "yes" ]; then
+ KVXY="$(get_version_component_range 1-2)" # Kernel Major/Minor
+ KVZ="$(get_version_component_range 3)" # Kernel Revision Pt. 1
+ KVRC="$(get_version_component_range 4)" # Kernel RC
+ F_KV="$(get_version_component_range 1-3)-${KVRC}"
+ STABLEVER="${KVXY}.$((${KVZ} - 1))" # Last stable version (Rev - 1)
+ PATCHVER="mirror://kernel/linux/kernel/v2.6/testing/patch-${OKV}.bz2"
+ EXTRAVERSION="-${KVRC}-mipsgit-${GITDATE}"
+ KV="${OKV}-${EXTRAVERSION}"
+ USE_PNT="no"
+fi
+
+# If USE_PNT == "yes", use a point release kernel (2.6.x.y)
+if [ "${USE_PNT}" = "yes" ]; then
+ F_KV="$(get_version_component_range 1-3)" # Get Maj/Min/Rev (x.y.z)
+ STABLEVER="${F_KV}" # Last Revision release
+ PATCHVER="mirror://kernel/linux/kernel/v2.6/patch-${OKV}.bz2" # Patch for new point release
+ EXTRAVERSION=".$(get_version_component_range 4)-mipsgit-${GITDATE}"
+ KV="${OKV}${EXTRAVERSION}"
+ USE_RC="no"
+fi
+
+
+DESCRIPTION="Linux-Mips GIT sources for MIPS-based machines, dated ${GITDATE}"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${STABLEVER}.tar.bz2
+ mirror://gentoo/mipsgit-${F_KV}-${GITDATE}.diff.bz2
+ mirror://gentoo/${PN}-security_patches-${SECPATCHVER}.tar.bz2
+ mirror://gentoo/${PN}-generic_patches-${GENPATCHVER}.tar.bz2
+ ${PATCHVER}"
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Error messages
+err_only_one_mach_allowed() {
+ echo -e ""
+ eerror "A patchset for a specific machine-type has already been selected."
+ eerror "No other patches for machines-types are permitted. You will need a"
+ eerror "separate copy of the kernel sources for each different machine-type"
+ eerror "you want to build a kernel for."
+ die "Only one machine-type patchset allowed"
+}
+
+err_disabled_mach() {
+ # Get args
+ local mach_name="${1}"
+ local mach_abbr="${2}"
+ local mach_use="${3}"
+
+ # Get stable version, if exists
+ local stable_ver="SV_${mach_abbr}"
+ stable_ver="${!stable_ver}"
+
+ # See if this machine needs a USE passed or skip dying
+ local has_use
+ [ ! -z "${mach_use}" -a "${mach_use}" != "skip" ] && has_use="USE=\"${mach_use}\" "
+
+ # Print error && (maybe) die
+ echo -e ""
+ eerror "${mach_name} Support has been disabled in this ebuild"
+ eerror "revision. If you wish to merge ${mach_name} sources, then"
+ eerror "run ${has_use}emerge =mips-sources-${stable_ver}"
+ [ "${mach_use}" != "skip" ] && die "${mach_name} Support disabled."
+
+ return 0
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Machine Information Messages
+#
+# If needing to whitespace for formatting in 'einfo', 'ewarn', or 'eerror', use
+# \040 for a space instead of the standard space. These functions strip redundant
+# white space for some unknown reason
+
+show_ip22_info() {
+ echo -e ""
+ einfo "IP22 systems should work well with this release, however, R4600"
+ einfo "setups may still experience bugs. Please report any encountered"
+ einfo "problems."
+ einfo ""
+ einfo "Some Notes:"
+ einfo "\t- Supported graphics card right now is Newport (XL)."
+ einfo "\t- A driver for Extreme (XZ) is in the works, but remains"
+ einfo "\t\040\040unreleased by its author for public consumption."
+ einfo "\t- 64bit support works, but it is not widely tested, thus"
+ einfo "\t\040\040it is not supported at the present time."
+ echo -e ""
+}
+
+show_ip27_info() {
+ echo -e ""
+ einfo "IP27 support can be considered a game of Russian Roulette. It'll work"
+ einfo "great for some but not for others. It also uses some rather horrible"
+ einfo "hacks to get going -- hopefully these will be repaired in the future."
+ echo -e ""
+ ewarn "Please keep all kittens and any other small, cute, and fluffy creatures"
+ ewarn "away from an IP27 Box running these sources. Failure to do so may cause"
+ ewarn "the IP27 to consume the hapless creature. Consider this your only"
+ ewarn "warning regarding the experimental nature of this particular machine."
+ echo -e ""
+}
+
+show_ip28_info() {
+ echo -e ""
+ einfo "Support for the Indigo2 Impact R10000 is very experimental. If you do not"
+ einfo "have a clue in the world about what an IP28 is, what the mips architecture"
+ einfo "is about, or are new to Gentoo, then it is highly advised that you steer"
+ einfo "clear of messing with this machine. Due to the experimental nature of this"
+ einfo "particular class of system, we have to provide such warnings, as it is only"
+ einfo "for use by those who know what they are doing."
+ echo -e ""
+ einfo "Be advised that attempting to run Gentoo/Linux (or any Linux distro) on this"
+ einfo "system may cause the sudden, unexplained disappearence of any nearby furry"
+ einfo "creatures. So please keep any and all small pets away from this system at"
+ einfo "all times."
+ echo -e ""
+ ewarn "That said, support for this system REQUIRES that you use the ip28 cascade"
+ ewarn "profile (default-linux/mips/mips64/ip28/XXXX.Y), because a very special"
+ ewarn "patch is used on the system gcc, kernel-gcc (gcc-mips64) and the kernel"
+ ewarn "itself in order to support this machine. These patches will only be applied"
+ ewarn "if \"ip28\" is defined in USE, which the profile sets. If you wish to"
+ ewarn "cross-compile a kernel, you _must_ make sure that the \"ip28\" USE is"
+ ewarn "defined in your host system's /etc/make.conf file before using crossdev"
+ ewarn "to build a mips64 kernel compiler for this system."
+ echo -e ""
+ ewarn "As a final warning, _nothing_ is guaranteed to work smoothly. However,"
+ ewarn "the Impact console driver and X driver do work somewhat decently."
+ echo -e ""
+}
+
+show_ip30_info() {
+ echo -e ""
+ einfo "Things to keep in mind when building a kernel for an SGI Octane:"
+ einfo "\t- The scsi driver to use is qla1280; qlogicisp is gone."
+ einfo "\t- Impact (MGRAS) console and X driver work, please report any bugs."
+ einfo "\t- VPro (Odyssey) console works, but no X driver exists yet."
+ einfo "\t- PCI Card Cages should work for many devices, except certain types like"
+ einfo "\t\040\040PCI-to-PCI bridges (USB hubs, USB flash card readers for example)."
+ einfo "\t- Do not plug more than two devices into a OHCI-based USB PCI card, as"
+ einfo "\t\040\040there is a known problem with OHCI USB cards and Octane, which will"
+ einfo "\t\040\040prevent the machine from booting into userland."
+ einfo "\t- Other XIO-based devices like MENET and various Impact addons remain"
+ einfo "\t\040\040untested and are not guaranteed to work. This applies to various"
+ einfo "\t\040\040digital video conversion boards as well."
+ echo -e ""
+}
+
+show_ip32_info() {
+ echo -e ""
+ einfo "IP32 systems function well, however there are some notes:"
+ einfo "\t- No driver exists yet for the sound card."
+ einfo "\t- Framebuffer console is limited to 4MB. Anything greater"
+ einfo "\t\040\040specified when building the kernel will likely oops or panic"
+ einfo "\t\040\040the kernel."
+ einfo "\t- X support is limited to the generic fbdev driver. No X gbefb"
+ einfo "\t\040\040driver exists for O2 yet."
+ ewarn "\t- When building an O2 Kernel, do not enable CONFIG_BUILD_ELF64."
+ ewarn "\t\040\040Pass 'make vmlinux' instead, and you will get a bootable"
+ ewarn "\t\040\040kernel image. Please note, this behavior WILL change"
+ ewarn "\t\040\040when gcc-4.x becomes mainstream."
+ echo -e ""
+
+ if use ip32r10k; then
+ eerror "R10000/R12000 Support on IP32 is HIGHLY EXPERIMENTAL!"
+ eerror "This is intended ONLY for people interested in fixing it up. And"
+ eerror "by that, I mean people willing to SEND IN PATCHES! If you're not"
+ eerror "interested in debugging this issue seriously or just want to run it"
+ eerror "as a user, then DO NOT USE THIS. Really, we mean it."
+ echo -e ""
+ eerror "All that said, initial testing seems to indicate that this system will"
+ eerror "stay online for a reasonable amount of time and will compile packages."
+ eerror "However, the primary console (which is serial, gbefb seems dead for now)"
+ eerror "will fill with CRIME CPU errors every so often. A majority of these"
+ eerror "seem harmless, however a few non-fatal oopses have also been triggered."
+ echo -e ""
+ eerror "We're interesting in finding anyone with knowledge of the R10000"
+ eerror "workaround for speculative execution listed in the R10000 Processor"
+ eerror "manual, or those who are familiar with the IP32 chipset and the feature"
+ eerror "called \"Juice\"."
+ echo -e ""
+ eerror "To build this kernel tree, make sure you re-merge your kernel compiler"
+ eerror "with the \"ip32r10k\" USE flag enabled via crossdev. This uses a"
+ eerror "tweaked version of the gcc cache barriers patch that makes gcc emit "
+ eerror "more barriers, as IP32 needs them to have any hope of staying online."
+ fi
+}
+
+show_cobalt_info() {
+ 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 "the CoLo 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 ""
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Check our USE flags for machine-specific flags and give appropriate warnings/errors.
+# Hope the user isn't crazy enough to try using combinations of these flags.
+# Only use one machine-specific flag at a time for each type of desired machine-support.
+#
+# Affected machines: ip27 ip28 ip30
+# Not Affected: cobalt ip22 ip32
+pkg_setup() {
+ local arch_is_selected="no"
+ local mach_ip
+ local mach_enable
+ local mach_name
+ local x
+
+ # See if we're on a cobalt system first (must use the cobalt-mips profile)
+ if use cobalt; then
+ arch_is_selected="yes"
+ [ "${DO_CBLT}" = "no" ] && err_disabled_mach "Cobalt Microsystems" "CBLT" "cobalt"
+ show_cobalt_info
+ fi
+
+ # Exclusive machine patchsets
+ # These are not allowed to be mixed together, thus only one of them may be applied
+ # to a tree per merge.
+ for x in \
+ "ip27 SGI Origin" \
+ "ip28 SGI Indigo2 Impact R10000" \
+ "ip30 SGI Octane"
+ do
+ set -- ${x} # Set positional params
+ mach_ip="${1}" # Grab the first param (HW IP for SGI)
+ shift # Shift the positions
+ mach_name="${*}" # Get the rest (Name)
+
+ if use ${mach_ip}; then
+ # Fetch the value indiciating if the machine is enabled or not
+ mach_enable="DO_${mach_ip/ip/IP}"
+ mach_enable="${!mach_enable}"
+
+ # Make sure only one of these exclusive machine patches is selected
+ [ "${arch_is_selected}" = "no" ] \
+ && arch_is_selected="yes" \
+ || err_only_one_mach_allowed
+
+ # Is the machine support enabled or not?
+ [ "${mach_enable}" = "no" ] \
+ && err_disabled_mach "${mach_name}" "${mach_ip/ip/IP}" "${mach_ip}"
+
+ # Show relevant information about the machine
+ show_${mach_ip}_info
+ fi
+ done
+
+ # All other systems that don't have a USE flag go here
+ # These systems have base-line support included in linux-mips git, so
+ # instead of failing, if disabled, we simply warn the user
+ if [ "${arch_is_selected}" = "no" ]; then
+ [ "${DO_IP22}" = "no" ] \
+ && err_disabled_mach "SGI Indy/Indigo2 R4x00" "IP22" "skip" \
+ || show_ip22_info
+ [ "${DO_IP32}" = "no" ] \
+ && err_disabled_mach "SGI O2" "IP32" "skip" \
+ || show_ip32_info
+
+ fi
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Generic Patches - Safe to use globally
+do_generic_patches() {
+ echo -e ""
+ ebegin ">>> Generic Patches"
+ echo -e ""
+
+ # IP22 Patches
+ epatch ${MIPS_PATCHES}/misc-2.6.15-ip22-hal2-kconfig-tweaks.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ip22-vino-64bit-ioctl-fixes.patch
+
+ # IP32 Patches
+ epatch ${MIPS_PATCHES}/misc-2.6.11-ip32-mace-is-always-eth0.patch
+
+ # Cobalt Patches
+ epatch ${MIPS_PATCHES}/misc-2.6.16-cobalt-bits.patch
+
+ # Generic
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ths-mips-tweaks.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-mips-iomap-functions.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.12-seccomp-no-default.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.11-add-byteorder-to-proc.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-r14k-cpu-prid.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-add-4k_cache_defines.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-rev-i18n.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-fix-4k-cache-macros.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-vgacon-accesses-unmapped-space.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-fix-futex_atomic_op_inuser.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-fix-fpu_save_double-on-64bit.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-disable-stupid-nls-cruft.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-def-arch_has_irq_per_cpu-for-smp.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-fix-mempolicy.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-tweak-makefiles.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-squashfs-3.0.patch
+ eend
+}
+
+
+# NOT safe for production systems
+# Use at own risk, do _not_ file bugs on effects of these patches
+do_sekrit_patches() {
+ # /* EXPERIMENTAL - DO NOT USE IN PRODUCTION KERNELS */
+
+ if use ip32r10k; then
+ # Modified version of the IP28 cache barriers patch for the kernel
+ # that removes all the IP28 specific pieces and leaves behind only
+ # the generic segments.
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ip32-r10k-support.patch
+ fi
+
+## # No Sekrit Patches!
+## sleep 0
+
+ # /* EXPERIMENTAL - DO NOT USE IN PRODUCTION KERNELS */
+}
+
+
+do_security_patches() {
+ echo -e ""
+ ebegin ">>> Applying Security Fixes"
+ echo -e ""
+ einfo ">>> None to apply! ..."
+ echo -e ""
+## epatch ${MIPS_SECURITY}/
+ eend
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Exclusive Machine Patchsets
+
+# SGI Origin (IP27)
+do_ip27_support() {
+ echo -e ""
+ einfo ">>> Patching kernel for SGI Origin (IP27) support ..."
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ioc3-metadriver-r26.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.13-ip27-horrible-hacks_may-eat-kittens.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.14-ip27-rev-pci-tweak.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ip27-fix-collision-with-hardcode.patch
+}
+
+# SGI Indigo2 Impact R10000 (IP28)
+do_ip28_support() {
+ echo -e ""
+ einfo ">>> Patching kernel for SGI Indigo2 Impact R10000 (IP28) support ..."
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ip28-i2_impact-support.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip28-impact-mmapfix.patch
+}
+
+
+# SGI Octane 'Speedracer' (IP30)
+do_ip30_support() {
+ echo -e ""
+ einfo ">>> Patching kernel for SGI Octane (IP30) support ..."
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ioc3-metadriver-r26.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ip30-octane-support-r27.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip30-impact-vpro-mmapfix.patch
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Renames source trees for the few machines that we have separate patches for
+rename_source_tree() {
+ if [ ! -z "${1}" ]; then
+ if use ${1}; then
+ mv ${S} ${S}.${1}
+ S="${S}.${1}"
+ fi
+ fi
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+src_unpack() {
+ local x
+
+ unpack ${A}
+ mv ${WORKDIR}/linux-${STABLEVER} ${WORKDIR}/linux-${OKV}-${GITDATE}
+ cd ${S}
+
+
+ # If USE_RC == "yes", use a release candidate kernel (2.6.x-rcy)
+ # OR
+ # if USE_PNT == "yes", use a point-release kernel (2.6.x.y)
+ if [ "${USE_RC}" = "yes" -o "${USE_PNT}" = "yes" ]; then
+ echo -e ""
+ einfo ">>> linux-${STABLEVER} --> linux-${OKV} ..."
+ epatch ${WORKDIR}/patch-${OKV}
+ fi
+
+
+ # Update the vanilla sources with linux-mips GIT changes
+ echo -e ""
+ einfo ">>> linux-${OKV} --> linux-${OKV}-${GITDATE} patch ..."
+ epatch ${WORKDIR}/mipsgit-${F_KV}-${GITDATE}.diff
+
+ # Generic patches we always include
+ do_generic_patches
+
+ # Machine-specific patches
+ for x in {ip27,ip28,ip30}; do
+ use ${x} && do_${x}_support
+ done
+
+ # Patches for experimental use
+ do_sekrit_patches
+
+ # Security Fixes
+ do_security_patches
+
+
+ # All done, resume normal portage work
+ kernel_universal_unpack
+}
+
+
+src_install() {
+ # Rename the source trees for exclusive machines
+ local x
+ for x in {ip27,ip28,ip30,cobalt}; do
+ use ${x} && rename_source_tree ${x}
+ done
+
+ kernel_src_install
+}
+
+pkg_postinst() {
+ # Symlink /usr/src/linux as appropriate
+ local my_ksrc="${S##*/}"
+ for x in {ip27,ip28,ip30,cobalt}; do
+ use ${x} && my_ksrc="${my_ksrc}.${x}"
+ done
+
+ if [ ! -e ${ROOT}usr/src/linux ]; then
+ rm -f ${ROOT}usr/src/linux
+ ln -sf ${my_ksrc} ${ROOT}/usr/src/linux
+ fi
+}
+
+
+#//------------------------------------------------------------------------------
diff --git a/sys-kernel/mips-sources/mips-sources-2.6.17.3.ebuild b/sys-kernel/mips-sources/mips-sources-2.6.17.3.ebuild
new file mode 100644
index 000000000000..d005442b13b3
--- /dev/null
+++ b/sys-kernel/mips-sources/mips-sources-2.6.17.3.ebuild
@@ -0,0 +1,532 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/mips-sources-2.6.17.3.ebuild,v 1.1 2006/07/03 05:09:32 kumba Exp $
+
+
+# INCLUDED:
+# 1) linux sources from kernel.org
+# 2) linux-mips.org GIT snapshot diff from 14 Sep 2005
+# 3) Generic Fixes
+# 4) Security fixes
+# 5) Patch for IP30 Support (http://www.linux-mips.org/~skylark/)
+# 5) Patch for IP28 Support (http://home.alphastar.de/fuerst/download.html)
+# 6) Patch for Remaining Cobalt Bits (http://www.colonel-panic.org/cobalt-mips/)
+# 7) Experimental patches (IP27 hacks, et al)
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Version Data
+OKV=${PV/_/-}
+GITDATE="20060618" # Date of diff between kernel.org and lmo GIT
+GENPATCHVER="1.22" # Tarball version for generic patches
+EXTRAVERSION="-mipsgit-${GITDATE}"
+KV="${OKV}${EXTRAVERSION}"
+F_KV="${OKV}" # Fetch KV, used to know what mipsgit diff to grab.
+STABLEVER="${F_KV}" # Stable Version (2.6.x)
+PATCHVER=""
+
+# Directories
+S="${WORKDIR}/linux-${OKV}-${GITDATE}"
+MIPS_PATCHES="${WORKDIR}/mips-patches"
+MIPS_SECURITY="${WORKDIR}/security"
+
+# Inherit Eclasses
+ETYPE="sources"
+inherit kernel eutils versionator
+
+# Portage Vars
+HOMEPAGE="http://www.linux-mips.org/ http://www.gentoo.org/"
+SLOT="${OKV}"
+PROVIDE="virtual/linux-sources virtual/alsa"
+KEYWORDS="-* ~mips"
+IUSE="cobalt ip27 ip28 ip30 ip32r10k"
+DEPEND=">=sys-devel/gcc-4.1.1"
+
+
+# Version Control Variables
+USE_RC="no" # If set to "yes", then attempt to use an RC kernel
+USE_PNT="yes" # If set to "yes", then attempt to use a point-release (2.6.x.y)
+
+# Machine Support Control Variables
+DO_IP22="no" # If "yes", enable IP22 support (SGI Indy, Indigo2 R4x00)
+DO_IP27="yes" # IP27 support (SGI Origin)
+DO_IP28="yes" # IP28 support (SGI Indigo2 Impact R10000)
+DO_IP30="yes" # IP30 support (SGI Octane)
+DO_IP32="yes" # IP32 support (SGI O2, R5000/RM5200 Only)
+DO_CBLT="yes" # Cobalt Support (Cobalt Microsystems)
+
+# Machine Stable Version Variables
+SV_IP22="2.6.15.7-r1" # If set && DO_IP22 == "no", indicates last "good" IP22 version
+SV_IP27="" # DO_IP27 == "no", IP27
+SV_IP28="" # DO_IP28 == "no", IP28
+SV_IP30="" # DO_IP30 == "no", IP30
+SV_IP32="" # DO_IP32 == "no", IP32
+SV_CBLT="" # DO_CBLT == "no", Cobalt
+
+
+# If USE_RC == "yes", use a release candidate kernel (2.6.X-rcY)
+if [ "${USE_RC}" = "yes" ]; then
+ KVXY="$(get_version_component_range 1-2)" # Kernel Major/Minor
+ KVZ="$(get_version_component_range 3)" # Kernel Revision Pt. 1
+ KVRC="$(get_version_component_range 4)" # Kernel RC
+ F_KV="$(get_version_component_range 1-3)-${KVRC}"
+ STABLEVER="${KVXY}.$((${KVZ} - 1))" # Last stable version (Rev - 1)
+ PATCHVER="mirror://kernel/linux/kernel/v2.6/testing/patch-${OKV}.bz2"
+ EXTRAVERSION="-${KVRC}-mipsgit-${GITDATE}"
+ KV="${OKV}-${EXTRAVERSION}"
+ USE_PNT="no"
+fi
+
+# If USE_PNT == "yes", use a point release kernel (2.6.x.y)
+if [ "${USE_PNT}" = "yes" ]; then
+ F_KV="$(get_version_component_range 1-3)" # Get Maj/Min/Rev (x.y.z)
+ STABLEVER="${F_KV}" # Last Revision release
+ PATCHVER="mirror://kernel/linux/kernel/v2.6/patch-${OKV}.bz2" # Patch for new point release
+ EXTRAVERSION=".$(get_version_component_range 4)-mipsgit-${GITDATE}"
+ KV="${OKV}${EXTRAVERSION}"
+ USE_RC="no"
+fi
+
+
+DESCRIPTION="Linux-Mips GIT sources for MIPS-based machines, dated ${GITDATE}"
+SRC_URI="mirror://kernel/linux/kernel/v2.6/linux-${STABLEVER}.tar.bz2
+ mirror://gentoo/mipsgit-${F_KV}-${GITDATE}.diff.bz2
+ mirror://gentoo/${PN}-generic_patches-${GENPATCHVER}.tar.bz2
+ ${PATCHVER}"
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Error messages
+err_only_one_mach_allowed() {
+ echo -e ""
+ eerror "A patchset for a specific machine-type has already been selected."
+ eerror "No other patches for machines-types are permitted. You will need a"
+ eerror "separate copy of the kernel sources for each different machine-type"
+ eerror "you want to build a kernel for."
+ die "Only one machine-type patchset allowed"
+}
+
+err_disabled_mach() {
+ # Get args
+ local mach_name="${1}"
+ local mach_abbr="${2}"
+ local mach_use="${3}"
+
+ # Get stable version, if exists
+ local stable_ver="SV_${mach_abbr}"
+ stable_ver="${!stable_ver}"
+
+ # See if this machine needs a USE passed or skip dying
+ local has_use
+ [ ! -z "${mach_use}" -a "${mach_use}" != "skip" ] && has_use="USE=\"${mach_use}\" "
+
+ # Print error && (maybe) die
+ echo -e ""
+ eerror "${mach_name} Support has been disabled in this ebuild"
+ eerror "revision. If you wish to merge ${mach_name} sources, then"
+ eerror "run ${has_use}emerge =mips-sources-${stable_ver}"
+ [ "${mach_use}" != "skip" ] && die "${mach_name} Support disabled."
+
+ return 0
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Machine Information Messages
+#
+# If needing to whitespace for formatting in 'einfo', 'ewarn', or 'eerror', use
+# \040 for a space instead of the standard space. These functions strip redundant
+# white space for some unknown reason
+
+show_ip22_info() {
+ echo -e ""
+ einfo "IP22 systems should work well with this release, however, R4600"
+ einfo "setups may still experience bugs. Please report any encountered"
+ einfo "problems."
+ einfo ""
+ einfo "Some Notes:"
+ einfo "\t- Supported graphics card right now is Newport (XL)."
+ einfo "\t- A driver for Extreme (XZ) is in the works, but remains"
+ einfo "\t\040\040unreleased by its author for public consumption."
+ echo -e ""
+}
+
+show_ip27_info() {
+ echo -e ""
+ einfo "IP27 support can be considered a game of Russian Roulette. It'll work"
+ einfo "great for some but not for others. It also uses some rather horrible"
+ einfo "hacks to get going -- hopefully these will be repaired in the future."
+ echo -e ""
+ ewarn "Please keep all kittens and any other small, cute, and fluffy creatures"
+ ewarn "away from an IP27 Box running these sources. Failure to do so may cause"
+ ewarn "the IP27 to consume the hapless creature. Consider this your only"
+ ewarn "warning regarding the experimental nature of this particular machine."
+ echo -e ""
+}
+
+show_ip28_info() {
+ echo -e ""
+ einfo "Support for the Indigo2 Impact R10000 is very experimental. If you do not"
+ einfo "have a clue in the world about what an IP28 is, what the mips architecture"
+ einfo "is about, or are new to Gentoo, then it is highly advised that you steer"
+ einfo "clear of messing with this machine. Due to the experimental nature of this"
+ einfo "particular class of system, we have to provide such warnings, as it is only"
+ einfo "for use by those who know what they are doing."
+ echo -e ""
+ einfo "Be advised that attempting to run Gentoo/Linux (or any Linux distro) on this"
+ einfo "system may cause the sudden, unexplained disappearence of any nearby furry"
+ einfo "creatures. So please keep any and all small pets away from this system at"
+ einfo "all times."
+ echo -e ""
+ ewarn "That said, support for this system REQUIRES that you use the ip28 cascade"
+ ewarn "profile (${HILITE}default-linux/mips/2006.1/ip28/o32${NORMAL}), because a very special"
+ ewarn "patch is used on the kernel-gcc (${GOOD}gcc-mips64${NORMAL}) and the kernel itself"
+ ewarn "in order to support this machine. These patches will only be applied"
+ ewarn "if \"ip28\" is defined in USE, which the profile sets. As of gcc-4.1.1,"
+ ewarn "this patch is automatically applied. In time, ${HILITE}kgcc64${NORMAL} will replace ${GOOD}gcc-mips64${NORMAL}"
+ echo -e ""
+ ewarn "As a final warning, _nothing_ is guaranteed to work smoothly. However,"
+ ewarn "the Impact console driver and X driver do work somewhat decently."
+ echo -e ""
+}
+
+show_ip30_info() {
+ echo -e ""
+ einfo "Things to keep in mind when building a kernel for an SGI Octane:"
+ einfo "\t- Impact (MGRAS) console and X driver work, please report any bugs."
+ einfo "\t- VPro (Odyssey) console works, but no X driver exists yet."
+ einfo "\t- PCI Card Cages should work for many devices, except certain types like"
+ einfo "\t\040\040PCI-to-PCI bridges (USB hubs, USB flash card readers for example)."
+ einfo "\t- Do not use OHCI-based USB cards in Octane. They're broke on this machine."
+ einfo "\t\040\040Patches are welcome to fix the issue."
+ einfo "\t- Equally, UHCI Cards are showing issues in this release, but should still"
+ einfo "\t\040\040function somewhat. This issue manifests itself when using pl2303 USB->Serial"
+ einfo "\t\404\040adapters."
+ einfo "\t- Other XIO-based devices like MENET and various Impact addons remain"
+ einfo "\t\040\040untested and are not guaranteed to work. This applies to various"
+ einfo "\t\040\040digital video conversion boards as well."
+ echo -e ""
+}
+
+show_ip32_info() {
+ echo -e ""
+ einfo "IP32 systems function well, however there are some notes:"
+ einfo "\t- No driver exists yet for the sound card."
+ einfo "\t- Framebuffer console is limited to 4MB. Anything greater"
+ einfo "\t\040\040specified when building the kernel will likely oops or panic"
+ einfo "\t\040\040the kernel."
+ einfo "\t- X support is limited to the generic fbdev driver. No X gbefb"
+ einfo "\t\040\040driver exists for O2 yet."
+ echo -e ""
+
+ if use ip32r10k; then
+ eerror "R10000/R12000 Support on IP32 is HIGHLY EXPERIMENTAL!"
+ eerror "This is intended ONLY for people interested in fixing it up. And"
+ eerror "by that, I mean people willing to SEND IN PATCHES! If you're not"
+ eerror "interested in debugging this issue seriously or just want to run it"
+ eerror "as a user, then DO NOT USE THIS. Really, we mean it."
+ echo -e ""
+ eerror "All that said, initial testing seems to indicate that this system will"
+ eerror "stay online for a reasonable amount of time and will compile packages."
+ eerror "However, the primary console (which is serial, gbefb seems dead for now)"
+ eerror "will fill with CRIME CPU errors every so often. A majority of these"
+ eerror "seem harmless, however a few non-fatal oopses have also been triggered."
+ echo -e ""
+ eerror "We're interesting in finding anyone with knowledge of the R10000"
+ eerror "workaround for speculative execution listed in the R10000 Processor"
+ eerror "manual, or those who are familiar with the IP32 chipset and the feature"
+ eerror "called \"Juice\"."
+ echo -e ""
+ eerror "To build this kernel tree, make sure you re-merge your kernel compiler"
+ eerror "with the \"ip32r10k\" USE flag enabled via crossdev. This uses a"
+ eerror "tweaked version of the gcc cache barriers patch that makes gcc emit "
+ eerror "more barriers, as IP32 needs them to have any hope of staying online."
+ fi
+
+ eerror "!!! BIG FAT WARNING"
+ eerror "!!! To Build 64bit kernels for SGI O2 (IP32) or SGI Indy/Indigo2 R4x00 (IP22)"
+ eerror "!!! systems, you _need_ to be using a >=gcc-4.1.1 compiler. In prior times, an"
+ eerror "!!! ugly hack was used to build an ELF64 binary that resembled an ELF32 binary in"
+ eerror "!!! order to make the ARCS PROMs on these systems boot the kernel. This hack is no"
+ eerror "!!! longer in use nor supported in 2.6.17 and beyond. In order to achieve the same"
+ eerror "!!! effect, a new flag available in >=gcc-4.x is used, and as such, makes"
+ eerror "!!! >=gcc-4.1.1 the preferred compiler for 2.6.17 and beyond."
+ eerror ""
+ eerror "!!! One side effect of this is the need to build 64bit IP32 and IP22 kernels with the"
+ eerror "!!! following make command: ${GOOD}make vmlinux.32${NORMAL}"
+ eerror "!!! Once done, copy the ${GOOD}vmlinux.32${NORMAL} file and boot that. Do not use the"
+ eerror "!!! ${BAD}vmlinux${NORMAL} file -- this will either not boot on IP22 or result in"
+ eerror "!!! undocumented weirdness on IP32 systems."
+}
+
+show_cobalt_info() {
+ 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 "the CoLo 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 ""
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Check our USE flags for machine-specific flags and give appropriate warnings/errors.
+# Hope the user isn't crazy enough to try using combinations of these flags.
+# Only use one machine-specific flag at a time for each type of desired machine-support.
+#
+# Affected machines: ip27 ip28 ip30
+# Not Affected: cobalt ip22 ip32
+pkg_setup() {
+ local arch_is_selected="no"
+ local mach_ip
+ local mach_enable
+ local mach_name
+ local x
+
+ # See if we're on a cobalt system first (must use the cobalt-mips profile)
+ if use cobalt; then
+ arch_is_selected="yes"
+ [ "${DO_CBLT}" = "no" ] && err_disabled_mach "Cobalt Microsystems" "CBLT" "cobalt"
+ show_cobalt_info
+ fi
+
+ # Exclusive machine patchsets
+ # These are not allowed to be mixed together, thus only one of them may be applied
+ # to a tree per merge.
+ for x in \
+ "ip27 SGI Origin 200/2000" \
+ "ip28 SGI Indigo2 Impact R10000" \
+ "ip30 SGI Octane"
+ do
+ set -- ${x} # Set positional params
+ mach_ip="${1}" # Grab the first param (HW IP for SGI)
+ shift # Shift the positions
+ mach_name="${*}" # Get the rest (Name)
+
+ if use ${mach_ip}; then
+ # Fetch the value indiciating if the machine is enabled or not
+ mach_enable="DO_${mach_ip/ip/IP}"
+ mach_enable="${!mach_enable}"
+
+ # Make sure only one of these exclusive machine patches is selected
+ [ "${arch_is_selected}" = "no" ] \
+ && arch_is_selected="yes" \
+ || err_only_one_mach_allowed
+
+ # Is the machine support enabled or not?
+ [ "${mach_enable}" = "no" ] \
+ && err_disabled_mach "${mach_name}" "${mach_ip/ip/IP}" "${mach_ip}"
+
+ # Show relevant information about the machine
+ show_${mach_ip}_info
+ fi
+ done
+
+ # All other systems that don't have a USE flag go here
+ # These systems have base-line support included in linux-mips git, so
+ # instead of failing, if disabled, we simply warn the user
+ if [ "${arch_is_selected}" = "no" ]; then
+ [ "${DO_IP22}" = "no" ] \
+ && err_disabled_mach "SGI Indy/Indigo2 R4x00" "IP22" "skip" \
+ || show_ip22_info
+ [ "${DO_IP32}" = "no" ] \
+ && err_disabled_mach "SGI O2" "IP32" "skip" \
+ || show_ip32_info
+
+ fi
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Generic Patches - Safe to use globally
+do_generic_patches() {
+ echo -e ""
+ ebegin ">>> Generic Patches"
+
+ # IP22 Patches
+ epatch ${MIPS_PATCHES}/misc-2.6.15-ip22-hal2-kconfig-tweaks.patch # in git - kill in 2.6.18
+ epatch ${MIPS_PATCHES}/misc-2.6.16-ip22-vino-64bit-ioctl-fixes.patch
+
+ # IP32 Patches
+ epatch ${MIPS_PATCHES}/misc-2.6.11-ip32-mace-is-always-eth0.patch
+
+ # Cobalt Patches
+ epatch ${MIPS_PATCHES}/misc-2.6.17-cobalt-bits.patch
+
+ # Generic
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ths-mips-tweaks.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-mips-iomap-functions.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.12-seccomp-no-default.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.11-add-byteorder-to-proc.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-add-4k_cache_defines.patch # in git - kill in 2.6.18
+ epatch ${MIPS_PATCHES}/misc-2.6.17-rev-i18n.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.15-fix-4k-cache-macros.patch # in git - kill in 2.6.18
+ epatch ${MIPS_PATCHES}/misc-2.6.15-vgacon-accesses-unmapped-space.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-n32-sigset-endian-swap.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-squashfs-3.0.patch
+ eend
+}
+
+
+# NOT safe for production systems
+# Use at own risk, do _not_ file bugs on effects of these patches
+do_sekrit_patches() {
+ # /* EXPERIMENTAL - DO NOT USE IN PRODUCTION KERNELS */
+
+ if use ip32r10k; then
+ # Modified version of the IP28 cache barriers patch for the kernel
+ # that removes all the IP28 specific pieces and leaves behind only
+ # the generic segments.
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip32-r10k-support.patch
+ fi
+
+## # No Sekrit Patches!
+## sleep 0
+
+ # /* EXPERIMENTAL - DO NOT USE IN PRODUCTION KERNELS */
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Exclusive Machine Patchsets
+
+# SGI Origin (IP27)
+do_ip27_support() {
+ echo -e ""
+ einfo ">>> Patching kernel for SGI Origin 200/2000 (IP27) support ..."
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ioc3-metadriver-r26.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip27-horrible-hacks_may-eat-kittens.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip27-rev-pci-tweak.patch
+}
+
+# SGI Indigo2 Impact R10000 (IP28)
+do_ip28_support() {
+ echo -e ""
+ einfo ">>> Patching kernel for SGI Indigo2 Impact R10000 (IP28) support ..."
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip28-i2_impact-support.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip28-impact-mmapfix.patch
+}
+
+
+# SGI Octane 'Speedracer' (IP30)
+do_ip30_support() {
+ echo -e ""
+ einfo ">>> Patching kernel for SGI Octane (IP30) support ..."
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ioc3-metadriver-r26.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip30-octane-support-r27.patch
+ epatch ${MIPS_PATCHES}/misc-2.6.17-ip30-impact-vpro-mmapfix.patch
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+# Renames source trees for the few machines that we have separate patches for
+rename_source_tree() {
+ if [ ! -z "${1}" ]; then
+ if use ${1}; then
+ mv ${S} ${S}.${1}
+ S="${S}.${1}"
+ fi
+ fi
+}
+
+
+
+#//------------------------------------------------------------------------------
+
+
+
+src_unpack() {
+ local x
+
+ unpack ${A}
+ mv ${WORKDIR}/linux-${STABLEVER} ${WORKDIR}/linux-${OKV}-${GITDATE}
+ cd ${S}
+
+
+ # If USE_RC == "yes", use a release candidate kernel (2.6.x-rcy)
+ # OR
+ # if USE_PNT == "yes", use a point-release kernel (2.6.x.y)
+ if [ "${USE_RC}" = "yes" -o "${USE_PNT}" = "yes" ]; then
+ echo -e ""
+ einfo ">>> linux-${STABLEVER} --> linux-${OKV} ..."
+ epatch ${WORKDIR}/patch-${OKV}
+ fi
+
+
+ # Update the vanilla sources with linux-mips GIT changes
+ echo -e ""
+ einfo ">>> linux-${OKV} --> linux-${OKV}-${GITDATE} patch ..."
+ epatch ${WORKDIR}/mipsgit-${F_KV}-${GITDATE}.diff
+
+ # Generic patches we always include
+ do_generic_patches
+
+ # Machine-specific patches
+ for x in {ip27,ip28,ip30}; do
+ use ${x} && do_${x}_support
+ done
+
+ # Patches for experimental use
+ do_sekrit_patches
+
+
+ # All done, resume normal portage work
+ kernel_universal_unpack
+}
+
+
+src_install() {
+ # Rename the source trees for exclusive machines
+ local x
+ for x in {ip27,ip28,ip30,cobalt}; do
+ use ${x} && rename_source_tree ${x}
+ done
+
+ kernel_src_install
+}
+
+pkg_postinst() {
+ # Symlink /usr/src/linux as appropriate
+ local my_ksrc="${S##*/}"
+ for x in {ip27,ip28,ip30,cobalt}; do
+ use ${x} && my_ksrc="${my_ksrc}.${x}"
+ done
+
+ if [ ! -e ${ROOT}usr/src/linux ]; then
+ rm -f ${ROOT}usr/src/linux
+ ln -sf ${my_ksrc} ${ROOT}/usr/src/linux
+ fi
+}
+
+
+#//------------------------------------------------------------------------------