/[gentoo-x86]/eclass/linux-mod.eclass
Gentoo

Diff of /eclass/linux-mod.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.100 Revision 1.108
1# Copyright 1999-2011 Gentoo Foundation 1# Copyright 1999-2012 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.100 2011/04/24 18:55:20 ulm Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.108 2012/09/15 16:16:53 zmedico Exp $
4
5# Author(s): John Mylchreest <johnm@gentoo.org>,
6# Stefan Schweizer <genstef@gentoo.org>
7# Maintainer: kernel-misc@gentoo.org
8#
9# Please direct your bugs to the current eclass maintainer :)
10 4
11# @ECLASS: linux-mod.eclass 5# @ECLASS: linux-mod.eclass
12# @MAINTAINER: 6# @MAINTAINER:
13# kernel-misc@gentoo.org 7# kernel-misc@gentoo.org
8# @AUTHOR:
9# John Mylchreest <johnm@gentoo.org>,
10# Stefan Schweizer <genstef@gentoo.org>
14# @BLURB: It provides the functionality required to install external modules against a kernel source tree. 11# @BLURB: It provides the functionality required to install external modules against a kernel source tree.
15# @DESCRIPTION: 12# @DESCRIPTION:
16# This eclass is used to interface with linux-info.eclass in such a way 13# This eclass is used to interface with linux-info.eclass in such a way
17# to provide the functionality and initial functions 14# to provide the functionality and initial functions
18# required to install external modules against a kernel source 15# required to install external modules against a kernel source
35# @DESCRIPTION: 32# @DESCRIPTION:
36# It's a string with the parameters to pass to emake. 33# It's a string with the parameters to pass to emake.
37 34
38# @ECLASS-VARIABLE: BUILD_TARGETS 35# @ECLASS-VARIABLE: BUILD_TARGETS
39# @DESCRIPTION: 36# @DESCRIPTION:
40# It's a string with the build targets to pass to make. The default value is "clean modules" 37# It's a string with the build targets to pass to make. The default value is "clean module"
41 38
42# @ECLASS-VARIABLE: MODULE_NAMES 39# @ECLASS-VARIABLE: MODULE_NAMES
43# @DESCRIPTION: 40# @DESCRIPTION:
44# It's a string containing the modules to be built automatically using the default 41# It's a string containing the modules to be built automatically using the default
45# src_compile/src_install. It will only make ${BUILD_TARGETS} once in any directory. 42# src_compile/src_install. It will only make ${BUILD_TARGETS} once in any directory.
123 120
124# @ECLASS-VARIABLE: KV_OBJ 121# @ECLASS-VARIABLE: KV_OBJ
125# @DESCRIPTION: 122# @DESCRIPTION:
126# It's a read-only variable. It contains the extension of the kernel modules. 123# It's a read-only variable. It contains the extension of the kernel modules.
127 124
128# The order of these is important as both of linux-info and eutils contain
129# set_arch_to_kernel and set_arch_to_portage functions and the ones in eutils
130# are deprecated in favor of the ones in linux-info.
131# See http://bugs.gentoo.org/show_bug.cgi?id=127506
132
133inherit eutils linux-info multilib 125inherit eutils linux-info multilib
134EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst src_install src_compile pkg_postrm 126EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst src_install src_compile pkg_postrm
135 127
136IUSE="kernel_linux" 128IUSE="kernel_linux"
137SLOT="0" 129SLOT="0"
138DESCRIPTION="Based on the $ECLASS eclass"
139RDEPEND="kernel_linux? ( sys-apps/module-init-tools )" 130RDEPEND="kernel_linux? ( virtual/modutils )"
140DEPEND="${RDEPEND} 131DEPEND="${RDEPEND}
141 sys-apps/sed 132 sys-apps/sed
142 kernel_linux? ( virtual/linux-sources )" 133 kernel_linux? ( virtual/linux-sources )"
143 134
144# eclass utilities 135# eclass utilities
193 # if we haven't determined the version yet, we need too. 184 # if we haven't determined the version yet, we need too.
194 get_version; 185 get_version;
195 186
196 # if the kernel version is greater than 2.6.6 then we should use 187 # if the kernel version is greater than 2.6.6 then we should use
197 # M= instead of SUBDIRS= 188 # M= instead of SUBDIRS=
189 [ ${KV_MAJOR} -eq 3 ] && return 0
198 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \ 190 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \
199 return 0 || return 1 191 return 0 || return 1
200} 192}
201 193
202# @FUNCTION: convert_to_m 194# @FUNCTION: convert_to_m
228 get_version; 220 get_version;
229 221
230 ebegin "Updating module dependencies for ${KV_FULL}" 222 ebegin "Updating module dependencies for ${KV_FULL}"
231 if [ -r "${KV_OUT_DIR}"/System.map ] 223 if [ -r "${KV_OUT_DIR}"/System.map ]
232 then 224 then
233 depmod -ae -F "${KV_OUT_DIR}"/System.map -b "${ROOT}" -r ${KV_FULL} 225 depmod -ae -F "${KV_OUT_DIR}"/System.map -b "${ROOT}" ${KV_FULL}
234 eend $? 226 eend $?
235 else 227 else
236 ewarn 228 ewarn
237 ewarn "${KV_OUT_DIR}/System.map not found." 229 ewarn "${KV_OUT_DIR}/System.map not found."
238 ewarn "You must manually update the kernel module dependencies using depmod." 230 ewarn "You must manually update the kernel module dependencies using depmod."
326# @DESCRIPTION: 318# @DESCRIPTION:
327# It sets the KV_OBJ variable. 319# It sets the KV_OBJ variable.
328set_kvobj() { 320set_kvobj() {
329 debug-print-function ${FUNCNAME} $* 321 debug-print-function ${FUNCNAME} $*
330 322
331 if kernel_is 2 6 323 if kernel_is ge 2 6
332 then 324 then
333 KV_OBJ="ko" 325 KV_OBJ="ko"
334 else 326 else
335 KV_OBJ="o" 327 KV_OBJ="o"
336 fi 328 fi
574# configured, verifies that the sources are prepared, verifies that the modules support is builtin 566# configured, verifies that the sources are prepared, verifies that the modules support is builtin
575# in the kernel and sets the object extension KV_OBJ. 567# in the kernel and sets the object extension KV_OBJ.
576linux-mod_pkg_setup() { 568linux-mod_pkg_setup() {
577 debug-print-function ${FUNCNAME} $* 569 debug-print-function ${FUNCNAME} $*
578 570
571 local is_bin="${MERGE_TYPE}"
572
579 # If we are installing a binpkg, take a different path. 573 # If we are installing a binpkg, take a different path.
574 # use MERGE_TYPE if available (eapi>=4); else use non-PMS EMERGE_FROM (eapi<4)
575 if has ${EAPI} 0 1 2 3; then
576 is_bin=${EMERGE_FROM}
577 fi
578
580 if [[ $EMERGE_FROM == binary ]]; then 579 if [[ ${is_bin} == binary ]]; then
581 linux-mod_pkg_setup_binary 580 linux-mod_pkg_setup_binary
582 return 581 return
583 fi 582 fi
584 583
585 linux-info_pkg_setup; 584 linux-info_pkg_setup;

Legend:
Removed from v.1.100  
changed lines
  Added in v.1.108

  ViewVC Help
Powered by ViewVC 1.1.20