From 43830b09f883e7c0b021060e4d3cad5ccb2a0ab9 Mon Sep 17 00:00:00 2001 From: Joshua Kinard Date: Sat, 7 Apr 2007 07:21:01 +0000 Subject: [PATCH] So after several versions of silence, mips-sources returns to life with the introduction of an ebuild for 2.6.20.6. This release contains an enhancement for IP22's scsi driver which may help boost speed. It also alters IP32's build methology again -- CONFIG_BUILD_ELF64 is now dead and removed from Kconfig, however the vmlinux.32 target will still be used, and a new revision of the squashfs patch has been added. The only downside is IP28 support has been disabled until new patches for it are available. Forward porting the existing patches is improbable due to changes from using CPHYSADDR to a new __pa() macro. IP27 support is untested, but assumed to work until determined otherwise (due to a lack of hardware). Package-Manager: portage-2.1.2.3 --- sys-kernel/mips-sources/ChangeLog | 19 +- sys-kernel/mips-sources/Manifest | 19 +- .../files/digest-mips-sources-2.6.20.6 | 12 + .../mips-sources/mips-sources-2.6.20.6.ebuild | 529 ++++++++++++++++++ 4 files changed, 573 insertions(+), 6 deletions(-) create mode 100644 sys-kernel/mips-sources/files/digest-mips-sources-2.6.20.6 create mode 100644 sys-kernel/mips-sources/mips-sources-2.6.20.6.ebuild diff --git a/sys-kernel/mips-sources/ChangeLog b/sys-kernel/mips-sources/ChangeLog index d17c5714cbe3..94a75164d0b5 100644 --- a/sys-kernel/mips-sources/ChangeLog +++ b/sys-kernel/mips-sources/ChangeLog @@ -1,6 +1,21 @@ # 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.102 2006/09/05 17:16:09 kumba Exp $ +# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/mips-sources/ChangeLog,v 1.103 2007/04/07 07:21:01 kumba Exp $ + +*mips-sources-2.6.20.6 (10 Apr 2007) + + 10 Apr 2007; Joshua Kinard + +mips-sources-2.6.20.6.ebuild: + So after several versions of silence, mips-sources returns to life with the + introduction of an ebuild for 2.6.20.6. This release contains an enhancement + for IP22's scsi driver which may help boost speed. It also alters IP32's + build methology again -- CONFIG_BUILD_ELF64 is now dead and removed from + Kconfig, however the vmlinux.32 target will still be used, and a new + revision of the squashfs patch has been added. The only downside is IP28 + support has been disabled until new patches for it are available. Forward + porting the existing patches is improbable due to changes from using + CPHYSADDR to a new __pa() macro. IP27 support is untested, but assumed to + work until determined otherwise (due to a lack of hardware). 05 Sep 2006; Joshua Kinard -mips-sources-2.6.15.7-r2.ebuild, mips-sources-2.6.16.27.ebuild, diff --git a/sys-kernel/mips-sources/Manifest b/sys-kernel/mips-sources/Manifest index 20eb37f3de75..e57d905aedcd 100644 --- a/sys-kernel/mips-sources/Manifest +++ b/sys-kernel/mips-sources/Manifest @@ -1,12 +1,16 @@ DIST linux-2.6.16.tar.bz2 40845005 RMD160 af5c2f55733fadd2fdf8b00da55e7b31d516d4e8 SHA1 bef21cd5063a648f33a99a26f4742dd05eb4dca2 SHA256 1200dcc7e60fcdaf68618dba991917a47e41e67099e8b22143976ec972e2cad7 DIST linux-2.6.17.tar.bz2 41272919 RMD160 26aad30c9a6610665c6c7d62401d79bf56a6a699 SHA1 0605c975b9dead2af31a3decf09dd4138fadaf2b SHA256 ab0f647d52f124958439517df9e1ae0efda90cdb851f59f522fa1749f1d87d58 +DIST linux-2.6.20.tar.bz2 43375937 RMD160 14657ade7be4363143dbd5593f5710d21eda7a03 SHA1 e730979adfb287528263e779c91284659672510d SHA256 2c14ada1ac7d272e03b430d3a530d60fc9ec69cc8252382aa049afba7d2b8558 DIST mips-sources-generic_patches-1.24.tar.bz2 275532 RMD160 06382130cbcafa332c56d1a7e0f657ae6e08ff08 SHA1 4ac16fb1a5541bdc9050519a523ccd4d0320e5b3 SHA256 59ba15d33a84b47de8f17d7698ff52cd922e008366ff222c256ade8eea2d91e9 DIST mips-sources-generic_patches-1.25.tar.bz2 277577 RMD160 00538b4dce9d3ada25fe9441b80166d9305442af SHA1 4a1c58423560dd6d124869ebde75bfe66ad07280 SHA256 b9304bb603f9d30d0ddf68056caad3e2568b20bd7694208b7fccdb96ab8b956e +DIST mips-sources-generic_patches-1.26.tar.bz2 578158 RMD160 bfb4d35a7144b10d4775a098668265f343ddfdd7 SHA1 0c079ac640a9f7fe49df5d8e0f35a4d3ef79f215 SHA256 bbc32da66c369f7f467a3ebcd0de0f5d2a7bd941cb69d43da56976c0ee1581c1 DIST mips-sources-security_patches-1.15.tar.bz2 95503 RMD160 b0f8dcf5ae9bc2881c0e96302e5f7ce36b9eef9d SHA1 75cb9d527b67f39aee0052cca488b5413f1f6d7b SHA256 188459e458fd059dedf0a70c766358a64fa3122d4584f8ef01286d5f8ad424ed DIST mipsgit-2.6.16-20060320.diff.bz2 133698 RMD160 fa75efb28512d53a60c0481c9646a59453fc4c34 SHA1 a13777ac4300aba53372fcec5e910e342b02eb9e SHA256 01d3833021941de897af7f113236b461264be72af9df2f007fed7cefd9e8ff33 DIST mipsgit-2.6.17-20060618.diff.bz2 101475 RMD160 13b219d683a79ab6a65ae2dade1164eb9a2b861c SHA1 f1fe724f0a1af7585023dfb679e2ca294b3bdf93 SHA256 6fd8cb2e5d9c7190387d60c2bc746bf8df9efd5654b05e19b03953065b50f29a +DIST mipsgit-2.6.20-20070317.diff.bz2 86446 RMD160 85b9c02fa410a1564aadb31828e7de4bcdea1f25 SHA1 361d60b074e8579e4c251bbde88d1b0e9cc3b2c2 SHA256 27fbd85f7832913dd94532d8d475ab6e5cc7c4091ec41cfa21ebc85b3f0dc7e7 DIST patch-2.6.16.27.bz2 61138 RMD160 67c54d708bb242e5e49132282c483058eb9f50d4 SHA1 faa3830cca861c54243d7ca6538b50ea36a2db6c SHA256 f7f905b411a3470378736f0ab2eedd6a159e3e878822c1dca649d20221190f91 DIST patch-2.6.17.10.bz2 30698 RMD160 e938b60f130eadb15fc6a75348e17ff621603d82 SHA1 4a7a85ba2444191869df9caf2901c44726a6ed1f SHA256 ccaa2af64c5e334bb9c45045a2384d9596550e9c7e5d843b7f5f93471d6aa1b6 +DIST patch-2.6.20.6.bz2 69390 RMD160 890c545794fea21c13a0886fd2ccbca4a8cc9e0b SHA1 c31e15b59fb9dd16292e15278bb992aaee98053b SHA256 808ca62a66d7cfe40123301c2f51fc0dcd817ee3bb0df96d1e9e97cc3bad6a9c EBUILD mips-sources-2.6.16.27.ebuild 19397 RMD160 e4be9f2a3f7e22e9062e8fb846620c9296bdfda1 SHA1 c205db5ae765a696040944d7de188bf2ad769891 SHA256 94a3dfdae1815090cd0a6b8d01b666dc2fae878fdfdf7c0f3d80a48c7453d25c MD5 5551e223cc82fc4016070ad0fd1eef37 mips-sources-2.6.16.27.ebuild 19397 RMD160 e4be9f2a3f7e22e9062e8fb846620c9296bdfda1 mips-sources-2.6.16.27.ebuild 19397 @@ -15,10 +19,14 @@ EBUILD mips-sources-2.6.17.10.ebuild 19496 RMD160 aa161742e84c3d994df464efde5df1 MD5 e5f3f65ee29b74da06e1c59c4786f092 mips-sources-2.6.17.10.ebuild 19496 RMD160 aa161742e84c3d994df464efde5df1c493f1fdac mips-sources-2.6.17.10.ebuild 19496 SHA256 269b4ce05bb82dc95c799feec077820c890375fd8f44e3e2a965deef8d8824e6 mips-sources-2.6.17.10.ebuild 19496 -MISC ChangeLog 41604 RMD160 7ed3259012fd6b39920d3e14fa02eedf97384066 SHA1 b0910fd27c990b32d22dbff1c447193894812e97 SHA256 1cb8b3ac7054564ca329642b2ecd48cb3f49ec776a1efa32308a6aa1ecf9bf4f -MD5 075346c655f4921ce11564deebcb2b9b ChangeLog 41604 -RMD160 7ed3259012fd6b39920d3e14fa02eedf97384066 ChangeLog 41604 -SHA256 1cb8b3ac7054564ca329642b2ecd48cb3f49ec776a1efa32308a6aa1ecf9bf4f ChangeLog 41604 +EBUILD mips-sources-2.6.20.6.ebuild 18844 RMD160 567cf772532270672d4ecbc94ffad1388e2923a1 SHA1 d3d4fd4fa9171fdcacbb6ee3f97331519bb4bfc9 SHA256 61ef196fe32a6b4557f4fdfbdf375e338801eb8ac1fefab518b05bbee67ccfc6 +MD5 1dbf479e283c1224a9f604feeec6c887 mips-sources-2.6.20.6.ebuild 18844 +RMD160 567cf772532270672d4ecbc94ffad1388e2923a1 mips-sources-2.6.20.6.ebuild 18844 +SHA256 61ef196fe32a6b4557f4fdfbdf375e338801eb8ac1fefab518b05bbee67ccfc6 mips-sources-2.6.20.6.ebuild 18844 +MISC ChangeLog 42463 RMD160 80ac980c9b210d1eaccbe0f6e22e6317ebb297b4 SHA1 c88a37570466113b9bc34bb77336da7ab49ddea8 SHA256 2316aec85db5716c9bdc1b61c86f9f3ecd39d76ea160c5204d2e0604f33b80f8 +MD5 c28d7ee8a6d547357c07988c85cc95ce ChangeLog 42463 +RMD160 80ac980c9b210d1eaccbe0f6e22e6317ebb297b4 ChangeLog 42463 +SHA256 2316aec85db5716c9bdc1b61c86f9f3ecd39d76ea160c5204d2e0604f33b80f8 ChangeLog 42463 MISC metadata.xml 378 RMD160 16684ccbf54bd2a4580dbf6e11cb0c8b4582e38b SHA1 4362cc5652f1b06dbd03263ece6dac4da2ebaad5 SHA256 25f7c0d45f0238401d2ab5075149519037844bf692c3c60ea355d984e22834fd MD5 ad25a2a0b6ade60c13ad8040f3c319c6 metadata.xml 378 RMD160 16684ccbf54bd2a4580dbf6e11cb0c8b4582e38b metadata.xml 378 @@ -29,3 +37,6 @@ SHA256 2841f64c5415a4cbfa6a678f24db19239624a8d8a70f5449ee3bae3dafe85721 files/di MD5 c6b3814b281ce59aceaaf2cd4727f881 files/digest-mips-sources-2.6.17.10 1063 RMD160 2f07d48191ea69bda287ea22d319640ea7edbdb9 files/digest-mips-sources-2.6.17.10 1063 SHA256 2cbe78504b83adeb958e4d78bde12118bcc2fbabc71d635e91c5dc1d07e5676d files/digest-mips-sources-2.6.17.10 1063 +MD5 13953114786115fb02a5e7e7033b8bf5 files/digest-mips-sources-2.6.20.6 1057 +RMD160 fe943fe6a8d5c85574ceb4d9b6a7b50f129eb519 files/digest-mips-sources-2.6.20.6 1057 +SHA256 60d9478a315703f61732095c1d77fb09e7452c16b9c974da80fff0981c0d7569 files/digest-mips-sources-2.6.20.6 1057 diff --git a/sys-kernel/mips-sources/files/digest-mips-sources-2.6.20.6 b/sys-kernel/mips-sources/files/digest-mips-sources-2.6.20.6 new file mode 100644 index 000000000000..ad6e5da29078 --- /dev/null +++ b/sys-kernel/mips-sources/files/digest-mips-sources-2.6.20.6 @@ -0,0 +1,12 @@ +MD5 34b0f354819217e6a345f48ebbd8f13e linux-2.6.20.tar.bz2 43375937 +RMD160 14657ade7be4363143dbd5593f5710d21eda7a03 linux-2.6.20.tar.bz2 43375937 +SHA256 2c14ada1ac7d272e03b430d3a530d60fc9ec69cc8252382aa049afba7d2b8558 linux-2.6.20.tar.bz2 43375937 +MD5 61a85b191d48ab686aa3e63311e4d3bf mips-sources-generic_patches-1.26.tar.bz2 578158 +RMD160 bfb4d35a7144b10d4775a098668265f343ddfdd7 mips-sources-generic_patches-1.26.tar.bz2 578158 +SHA256 bbc32da66c369f7f467a3ebcd0de0f5d2a7bd941cb69d43da56976c0ee1581c1 mips-sources-generic_patches-1.26.tar.bz2 578158 +MD5 40cac98ee50c1f92f1b6890ae2540a4e mipsgit-2.6.20-20070317.diff.bz2 86446 +RMD160 85b9c02fa410a1564aadb31828e7de4bcdea1f25 mipsgit-2.6.20-20070317.diff.bz2 86446 +SHA256 27fbd85f7832913dd94532d8d475ab6e5cc7c4091ec41cfa21ebc85b3f0dc7e7 mipsgit-2.6.20-20070317.diff.bz2 86446 +MD5 a42300de8720552d70470dd3e4afc75f patch-2.6.20.6.bz2 69390 +RMD160 890c545794fea21c13a0886fd2ccbca4a8cc9e0b patch-2.6.20.6.bz2 69390 +SHA256 808ca62a66d7cfe40123301c2f51fc0dcd817ee3bb0df96d1e9e97cc3bad6a9c patch-2.6.20.6.bz2 69390 diff --git a/sys-kernel/mips-sources/mips-sources-2.6.20.6.ebuild b/sys-kernel/mips-sources/mips-sources-2.6.20.6.ebuild new file mode 100644 index 000000000000..3f5154ba1714 --- /dev/null +++ b/sys-kernel/mips-sources/mips-sources-2.6.20.6.ebuild @@ -0,0 +1,529 @@ +# Copyright 1999-2007 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.20.6.ebuild,v 1.1 2007/04/07 07:21:01 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="20070317" # Date of diff between kernel.org and lmo GIT +GENPATCHVER="1.26" # 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="yes" # If "yes", enable IP22 support (SGI Indy, Indigo2 R4x00) +DO_IP27="yes" # IP27 support (SGI Origin) +DO_IP28="no" # 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="" # If set && DO_IP22 == "no", indicates last "good" IP22 version +SV_IP27="" # DO_IP27 == "no", IP27 +SV_IP28="2.6.17.10" # 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\040\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.16-ip22-vino-64bit-ioctl-fixes.patch + epatch ${MIPS_PATCHES}/misc-2.6.20-ip22-pf-enhance-scsi.patch + + # IP32 Patches + epatch ${MIPS_PATCHES}/misc-2.6.11-ip32-mace-is-always-eth0.patch + + # Cobalt Patches + epatch ${MIPS_PATCHES}/misc-2.6.20-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.20-frank-kill-build_elf64.patch + epatch ${MIPS_PATCHES}/misc-2.6.20-squashfs-3.2-r2.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.18-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 + epatch ${MIPS_PATCHES}/misc-2.6.18-ip27-hack-attack.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.18-ip28-i2_impact-support.patch + epatch ${MIPS_PATCHES}/misc-2.6.17-ip28-impact-mmapfix.patch + epatch ${MIPS_PATCHES}/misc-2.6.17-ip28-wd93cac-tweak.patch +} + + +# SGI Octane 'Speedracer' (IP30) +do_ip30_support() { + echo -e "" + einfo ">>> Patching kernel for SGI Octane (IP30) support ..." + epatch ${MIPS_PATCHES}/misc-2.6.19-ioc3-metadriver-r27.patch + epatch ${MIPS_PATCHES}/misc-2.6.20-ip30-octane-support-r28.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 +} + + +#//------------------------------------------------------------------------------ -- 2.26.2