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

Contents of /eclass/linux-mod.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Wed Nov 24 16:36:38 2004 UTC (9 years, 8 months ago) by johnm
Branch: MAIN
Updating kernel-2 to properly honour strict patch levels with *.diff , adding linux-* in preparation for the 'Big Module Move of 2004'

1 johnm 1.1 # Copyright 1999-2004 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3     # $Header: $
4    
5     # This eclass provides functions for compiling external kernel modules
6     # from source.
7    
8     inherit linux-info
9     ECLASS=linux-mod
10     INHERITED="$INHERITED $ECLASS"
11     EXPORT_FUNCTIONS pkg_setup pkg_postinst src_compile
12    
13     DESCRIPTION="Based on the $ECLASS eclass"
14     SLOT=0
15     DEPEND="virtual/linux-sources
16     sys-apps/sed"
17    
18    
19    
20    
21     # This eclass is designed to help ease the installation of external kernel
22     # modules into the kernel tree.
23    
24    
25     # eclass utilities
26     # ----------------------------------
27    
28     use_m() {
29     # if we haven't determined the version yet, we need too.
30     get_version;
31    
32     # if the kernel version is greater than 2.6.6 then we should use
33     # M= instead of SUBDIR=
34     [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \
35     return 0 || return 1
36     }
37    
38     convert_to_m() {
39     [ ! -f "${1}" ] && die "convert_to_m() requires a filename as an argument"
40     if use_m
41     then
42     ebegin "Converting ${1/${WORKDIR}\//} to use M= instead of SUBDIR="
43     sed -i 's:SUBDIRS=:M=:g' ${1}
44     eend $?
45     fi
46     }
47    
48     update_depmod() {
49     # if we haven't determined the version yet, we need too.
50     get_version;
51    
52     ebegin "Updating module dependencies for ${KV_FULL}"
53     if [ -r ${KV_DIR}/System.map ]
54     then
55     depmod -ae -F ${KV_DIR}/System.map -b ${ROOT} -r ${KV_FULL}
56     else
57     ewarn
58     ewarn "${KV_DIR}/System.map not found."
59     ewarn "You must manually update the kernel module dependencies using depmod."
60     ewarn
61     fi
62     eend $?
63     }
64    
65     set_kvobj() {
66     if kernel_is 2 6
67     then
68     KV_OBJ="ko"
69     else
70     KV_OBJ="o"
71     fi
72     einfo "Using KV_OBJ=${KV_OBJ}"
73     }
74    
75     display_postinst() {
76     # if we haven't determined the version yet, we need too.
77     get_version;
78    
79     local modulename moduledir sourcedir module_temp file i
80    
81     file=${ROOT}/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}
82     file=${file/\/\///}
83    
84     einfo "If you would like to load this module automatically upon boot"
85     einfo "please type the following as root:"
86     for i in ${MODULE_NAMES}
87     do
88     module_temp="$(echo ${i} | sed -e "s:.*(\(.*\)):\1:")"
89     modulename="${i/(*/}"
90     moduledir="${module_temp/:*/}"
91     moduledir="${moduledir:-misc}"
92     sourcedir="${module_temp/*:/}"
93     sourcedir="${sourcedir:-${S}}"
94    
95     einfo " # echo \"${modulename}\" >> ${file}"
96     done
97     echo
98     }
99    
100     # default ebuild functions
101     # --------------------------------
102    
103     linux-mod_pkg_setup() {
104     get_version;
105     check_kernel_built
106     check_modules_supported;
107     set_kvobj;
108     }
109    
110     linux-mod_src_compile() {
111     local modulename moduledir sourcedir module_temp xarch i
112     xarch="${ARCH}"
113     unset ARCH
114    
115     for i in ${MODULE_NAMES}
116     do
117     module_temp="$(echo ${i} | sed -e "s:.*(\(.*\)):\1:")"
118     modulename="${i/(*/}"
119     moduledir="${module_temp/:*/}"
120     moduledir="${moduledir:-misc}"
121     sourcedir="${module_temp/*:/}"
122     sourcedir="${sourcedir:-${S}}"
123    
124     einfo "Preparing ${modulename} module"
125     cd ${sourcedir}
126     make clean
127     make ${BUILD_PARAMS} module
128     done
129     ARCH="${xarch}"
130     }
131    
132     linux-mod_src_install() {
133     local modulename moduledir sourcedir module_temp i
134    
135     for i in "${MODULE_NAMES}"
136     do
137     module_temp="$(echo ${i} | sed -e "s:.*(\(.*\)):\1:")"
138     modulename="${i/(*/}"
139     moduledir="${module_temp/:*/}"
140     moduledir="${moduledir:-misc}"
141     sourcedir="${module_temp/*:/}"
142     sourcedir="${sourcedir:-${S}}"
143    
144     einfo "Installing ${modulename} module"
145     cd ${sourcedir}
146     insinto /lib/modules/${KV_FULL}/${moduledir}
147     doins ${modulename}.${KV_OBJ}
148     done
149     }
150    
151     linux-mod_pkg_postinst() {
152     update_depmod;
153     display_postinst;
154     }

  ViewVC Help
Powered by ViewVC 1.1.20