summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorMike Pagano <mpagano@gentoo.org>2011-06-03 13:07:33 +0000
committerMike Pagano <mpagano@gentoo.org>2011-06-03 13:07:33 +0000
commit6431a3bfde65abe7bfa8ad6bf29318b9f2591196 (patch)
treec706adc694b6cda6a82978ce6f0e45d4e444be0b /eclass
parentRemove old version. (diff)
downloadgentoo-2-6431a3bfde65abe7bfa8ad6bf29318b9f2591196.tar.gz
gentoo-2-6431a3bfde65abe7bfa8ad6bf29318b9f2591196.tar.bz2
gentoo-2-6431a3bfde65abe7bfa8ad6bf29318b9f2591196.zip
Add support for 2 part versioning. bug #369533
Diffstat (limited to 'eclass')
-rw-r--r--eclass/kernel-2.eclass167
1 files changed, 119 insertions, 48 deletions
diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
index a437bf24e68f..c0b23f33b8cc 100644
--- a/eclass/kernel-2.eclass
+++ b/eclass/kernel-2.eclass
@@ -1,6 +1,6 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.251 2011/04/30 17:07:50 ulm Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/kernel-2.eclass,v 1.252 2011/06/03 13:07:33 mpagano Exp $
# Description: kernel.eclass rewrite for a clean base regarding the 2.6
# series of kernel with back-compatibility for 2.4
@@ -151,29 +151,51 @@ detect_version() {
OKV=${OKV/_p*}
KV_MAJOR=$(get_version_component_range 1 ${OKV})
- KV_MINOR=$(get_version_component_range 2 ${OKV})
- KV_PATCH=$(get_version_component_range 3 ${OKV})
- if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then
- KV_EXTRA=$(get_version_component_range 4- ${OKV})
- KV_EXTRA=${KV_EXTRA/[-_]*}
+ # if KV_MAJOR >= 3, then we have no more KV_MINOR
+ if [[ ${KV_MAJOR} -lt 3 ]]; then
+ KV_MINOR=$(get_version_component_range 2 )
+ KV_PATCH=$(get_version_component_range 3 ${OKV})
+ if [[ ${KV_MAJOR}${KV_MINOR}${KV_PATCH} -ge 269 ]]; then
+ KV_EXTRA=$(get_version_component_range 4- ${OKV})
+ KV_EXTRA=${KV_EXTRA/[-_]*}
+ else
+ KV_PATCH=$(get_version_component_range 3- ${OKV})
+ fi
else
- KV_PATCH=$(get_version_component_range 3- ${OKV})
+ KV_PATCH=$(get_version_component_range 2 ${OKV})
+ KV_EXTRA=$(get_version_component_range 3- ${OKV})
+ KV_EXTRA=${KV_EXTRA/[-_]*}
fi
+
KV_PATCH=${KV_PATCH/[-_]*}
local v n=0 missing
- for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do
- [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
- done
+ if [[ ${KV_MAJOR} -lt 3 ]]; then
+ for v in CKV OKV KV_{MAJOR,MINOR,PATCH} ; do
+ [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
+ done
+ else
+ for v in CKV OKV KV_{MAJOR,PATCH} ; do
+ [[ -z ${!v} ]] && n=1 && missing="${missing}${v} ";
+ done
+ fi
+
[[ $n -eq 1 ]] && \
eerror "Missing variables: ${missing}" && \
die "Failed to extract kernel version (try explicit CKV in ebuild)!"
unset v n missing
- KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
- [[ -n "${K_LONGTERM}" ]] &&
- KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
+ if [[ ${KV_MAJOR} -ge 3 ]]; then
+ KV_PATCH_ARR=(${KV_PATCH//\./ })
+ KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_PATCH_ARR}"
+ [[ -n "${K_LONGTERM}" ]] &&
+ KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_PATCH_ARR}"
+ else
+ KERNEL_BASE_URI="mirror://kernel/linux/kernel/v${KV_MAJOR}.${KV_MINOR}"
+ [[ -n "${K_LONGTERM}" ]] &&
+ KERNEL_BASE_URI="${KERNEL_BASE_URI}/longterm/v${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
+ fi
KERNEL_URI="${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
@@ -184,7 +206,7 @@ detect_version() {
# We cannot trivally call kernel_is here, because it calls us to detect the
# version
#kernel_is ge 2 6 && RELEASE=${RELEASE/-pre/-git}
- [ $(($KV_MAJOR * 1000 + $KV_MINOR)) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git}
+ [ $(($KV_MAJOR * 1000 + ${KV_MINOR:-0})) -ge 2006 ] && RELEASE=${RELEASE/-pre/-git}
RELEASETYPE=${RELEASE//[0-9]}
# Now we know that RELEASE is the -rc/-git
@@ -221,8 +243,13 @@ detect_version() {
# The only messing around which should actually effect this is for KV_EXTRA
# since this has to limit OKV to MAJ.MIN.PAT and strip EXTRA off else
# KV_FULL evaluates to MAJ.MIN.PAT.EXT.EXT after EXTRAVERSION
+
if [[ -n ${KV_EXTRA} ]]; then
- OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
+ if [[ -n ${KV_MINOR} ]]; then
+ OKV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
+ else
+ OKV="${KV_MAJOR}.${KV_PATCH}"
+ fi
KERNEL_URI="${KERNEL_BASE_URI}/patch-${CKV}.bz2
${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV}.bz2"
@@ -242,28 +269,66 @@ detect_version() {
# will pull:
# linux-2.6.10.tar.bz2 & patch-2.6.11-rc3.bz2 & patch-2.6.11-rc3-git2.bz2
- if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
- OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
- KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2
- ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
- UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
- fi
+ if [[ ${KV_MAJOR}${KV_MINOR} -eq 26 ]]; then
- if [[ ${RELEASETYPE} == -git ]]; then
- KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2
- ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
- UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
- fi
+ if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
+ OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
+ KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2
+ ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
+ UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
+ fi
+
+ if [[ ${RELEASETYPE} == -git ]]; then
+ KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2
+ ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
+ UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
+ fi
+
+ if [[ ${RELEASETYPE} == -rc-git ]]; then
+ OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
+ KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2
+ ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2
+ ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
+
+ UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2"
+ fi
+ else
+ if [[ ${RELEASETYPE} == -rc ]] || [[ ${RELEASETYPE} == -pre ]]; then
+ if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
+ OKV="2.6.39"
+ else
+ KV_PATCH_ARR=(${KV_PATCH//\./ })
+ OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
+ fi
+ KERNEL_URI="${KERNEL_BASE_URI}/testing/patch-${CKV//_/-}.bz2
+ ${KERNEL_BASE_URI}/testing/linux-${OKV}.tar.bz2"
+ UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${CKV//_/-}.bz2"
+ fi
+
+ if [[ ${RELEASETYPE} == -git ]]; then
+ KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${OKV}${RELEASE}.bz2
+ ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
+ UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${OKV}${RELEASE}.bz2"
+ fi
+
+ if [[ ${RELEASETYPE} == -rc-git ]]; then
+ if [[ ${KV_MAJOR}${KV_PATCH} -eq 30 ]]; then
+ OKV="2.6.39"
+ else
+ KV_PATCH_ARR=(${KV_PATCH//\./ })
+ OKV="${KV_MAJOR}.$((${KV_PATCH_ARR} - 1))"
+ fi
+ KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2
+ ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2
+ ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
+
+ UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_PATCH}${RELEASE}.bz2"
+ fi
- if [[ ${RELEASETYPE} == -rc-git ]]; then
- OKV="${KV_MAJOR}.${KV_MINOR}.$((${KV_PATCH} - 1))"
- KERNEL_URI="${KERNEL_BASE_URI}/snapshots/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2
- ${KERNEL_BASE_URI}/testing/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2
- ${KERNEL_BASE_URI}/linux-${OKV}.tar.bz2"
- UNIPATCH_LIST_DEFAULT="${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE/-git*}.bz2 ${DISTDIR}/patch-${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${RELEASE}.bz2"
fi
+
debug-print-kernel2-variables
handle_genpatches
@@ -325,7 +390,7 @@ if [[ ${ETYPE} == sources ]]; then
PDEPEND="!build? ( virtual/dev-manager )"
SLOT="${PVR}"
- DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR} linux kernel"
+ DESCRIPTION="Sources for the ${KV_MAJOR}.${KV_MINOR:-$KV_PATCH} linux kernel"
IUSE="symlink build"
# Bug #266157, deblob for libre support
@@ -341,7 +406,12 @@ if [[ ${ETYPE} == sources ]]; then
# stripped
LICENSE="${LICENSE} !deblob? ( freedist )"
- DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
+ if [[ -n KV_MINOR ]]; then
+ DEBLOB_PV="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}"
+ else
+ DEBLOB_PV="${KV_MAJOR}.${KV_PATCH}"
+ fi
+
DEBLOB_A="deblob-${DEBLOB_PV}"
DEBLOB_CHECK_A="deblob-check-${DEBLOB_PV}"
DEBLOB_HOMEPAGE="http://www.fsfla.org/svnwiki/selibre/linux-libre/"
@@ -460,7 +530,7 @@ universal_unpack() {
# fix a problem on ppc where TOUT writes to /usr/src/linux breaking sandbox
# only do this for kernel < 2.6.27 since this file does not exist in later
# kernels
- if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
+ if [[ -n ${KV_MINOR} && ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} < 2.6.27 ]]
then
sed -i \
-e 's|TOUT := .tmp_gas_check|TOUT := $(T).tmp_gas_check|' \
@@ -708,18 +778,19 @@ postinst_sources() {
KV_MAJOR=$(get_version_component_range 1 ${OKV})
KV_MINOR=$(get_version_component_range 2 ${OKV})
KV_PATCH=$(get_version_component_range 3 ${OKV})
- if [[ "$(tc-arch)" = "sparc" ]] \
- && [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]]
- then
- echo
- elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
- elog "you now need to do"
- elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
- elog "instead of just"
- elog " make"
- elog "to compile the kernel. For more information please browse to"
- elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
- echo
+ if [[ "$(tc-arch)" = "sparc" ]]; then
+ if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.24 ]]
+ then
+ echo
+ elog "NOTE: Since 2.6.25 the kernel Makefile has changed in a way that"
+ elog "you now need to do"
+ elog " make CROSS_COMPILE=sparc64-unknown-linux-gnu-"
+ elog "instead of just"
+ elog " make"
+ elog "to compile the kernel. For more information please browse to"
+ elog "https://bugs.gentoo.org/show_bug.cgi?id=214765"
+ echo
+ fi
fi
}
@@ -844,7 +915,7 @@ unipatch() {
# do not apply fbcondecor patch to sparc/sparc64 as it breaks boot
# bug #272676
if [[ "$(tc-arch)" = "sparc" || "$(tc-arch)" = "sparc64" ]]; then
- if [[ ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
+ if [[ ${KV_MAJOR} -ge 3 || ${KV_MAJOR}.${KV_MINOR}.${KV_PATCH} > 2.6.28 ]]; then
UNIPATCH_DROP="${UNIPATCH_DROP} *_fbcondecor-0.9.6.patch"
echo
ewarn "fbcondecor currently prevents sparc/sparc64 from booting"