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

Contents of /eclass/linux-info.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.46 - (hide annotations) (download)
Thu Jul 20 05:34:10 2006 UTC (7 years, 9 months ago) by marineam
Branch: MAIN
Changes since 1.45: +5 -1 lines
Add support for getting the localversion appended by git trees.

1 vapier 1.37 # Copyright 1999-2006 Gentoo Foundation
2 johnm 1.1 # Distributed under the terms of the GNU General Public License v2
3 marineam 1.46 # $Header: /var/cvsroot/gentoo-x86/eclass/linux-info.eclass,v 1.45 2006/05/22 17:35:07 mrness Exp $
4 johnm 1.1 #
5 johnm 1.10 # Description: This eclass is used as a central eclass for accessing kernel
6     # related information for sources already installed.
7     # It is vital for linux-mod to function correctly, and is split
8     # out so that any ebuild behaviour "templates" are abstracted out
9     # using additional eclasses.
10 johnm 1.1 #
11 johnm 1.10 # Maintainer: John Mylchreest <johnm@gentoo.org>
12     # Copyright 2004 Gentoo Linux
13     #
14     # Please direct your bugs to the current eclass maintainer :)
15    
16     # A Couple of env vars are available to effect usage of this eclass
17     # These are as follows:
18 swegener 1.29 #
19 johnm 1.21 # Env Var Option Description
20 johnm 1.10 # KERNEL_DIR <string> The directory containing kernel the target kernel
21 johnm 1.21 # sources.
22 johnm 1.10 # CONFIG_CHECK <string> a list of .config options to check for before
23 johnm 1.21 # proceeding with the install. ie: CONFIG_CHECK="MTRR"
24 swegener 1.29 # You can also check that an option doesn't exist by
25 johnm 1.21 # prepending it with an exclamation mark (!).
26     # ie: CONFIG_CHECK="!MTRR"
27 vapier 1.37 # To simply warn about a missing option, prepend a '~'.
28 johnm 1.21 # ERROR_CFG <string> The error message to display when the above check
29     # fails. <CFG> should reference the appropriate option
30 johnm 1.25 # as above. ie: ERROR_MTRR="MTRR exists in the .config
31 johnm 1.21 # but shouldn't!!"
32 johnm 1.10 # KBUILD_OUTPUT <string> This is passed on commandline, or can be set from
33 johnm 1.21 # the kernel makefile. This contains the directory
34     # which is to be used as the kernel object directory.
35 johnm 1.10
36     # There are also a couple of variables which are set by this, and shouldn't be
37     # set by hand. These are as follows:
38 swegener 1.29 #
39 johnm 1.10 # Env Var Option Description
40     # KV_FULL <string> The full kernel version. ie: 2.6.9-gentoo-johnm-r1
41     # KV_MAJOR <integer> The kernel major version. ie: 2
42     # KV_MINOR <integer> The kernel minor version. ie: 6
43     # KV_PATCH <integer> The kernel patch version. ie: 9
44     # KV_EXTRA <string> The kernel EXTRAVERSION. ie: -gentoo
45     # KV_LOCAL <string> The kernel LOCALVERSION concatenation. ie: -johnm
46     # KV_DIR <string> The kernel source directory, will be null if
47 johnm 1.21 # KERNEL_DIR is invalid.
48     # KV_OUT_DIR <string> The kernel object directory. will be KV_DIR unless
49     # koutput is used. This should be used for referencing
50     # .config.
51 johnm 1.10
52 johnm 1.21 # And to ensure all the weirdness with crosscompile
53 johnm 1.23 inherit toolchain-funcs versionator
54 johnm 1.1
55 johnm 1.8 EXPORT_FUNCTIONS pkg_setup
56 johnm 1.1
57 exg 1.40 DEPEND="kernel_linux? ( virtual/linux-sources )"
58 brix 1.39 RDEPEND=""
59    
60 johnm 1.1 # Overwritable environment Var's
61     # ---------------------------------------
62 johnm 1.21 KERNEL_DIR="${KERNEL_DIR:-${ROOT}usr/src/linux}"
63 johnm 1.1
64 johnm 1.7
65 johnm 1.16 # Bug fixes
66     # fix to bug #75034
67     case ${ARCH} in
68 swegener 1.29 ppc) BUILD_FIXES="${BUILD_FIXES} TOUT=${T}/.tmp_gas_check";;
69     ppc64) BUILD_FIXES="${BUILD_FIXES} TOUT=${T}/.tmp_gas_check";;
70 johnm 1.16 esac
71    
72 johnm 1.21 # These are legacy wrappers for toolchain-funcs.
73     # I dont like them here, but oh well.
74 johnm 1.22 set_arch_to_kernel() { export ARCH="$(tc-arch-kernel)"; }
75     set_arch_to_portage() { export ARCH="$(tc-arch)"; }
76 johnm 1.11
77     # qeinfo "Message"
78     # -------------------
79 johnm 1.21 # qeinfo is a quiet einfo call when EBUILD_PHASE
80 johnm 1.11 # should not have visible output.
81 johnm 1.21 qout() {
82     local outputmsg type
83     type=${1}
84     shift
85     outputmsg="${@}"
86 wolf31o2 1.26 case "${EBUILD_PHASE}" in
87     depend) unset outputmsg;;
88     clean) unset outputmsg;;
89     preinst) unset outputmsg;;
90     esac
91     [ -n "${outputmsg}" ] && ${type} "${outputmsg}"
92 johnm 1.11 }
93    
94 johnm 1.21 qeinfo() { qout einfo "${@}" ; }
95     qeerror() { qout eerror "${@}" ; }
96 johnm 1.11
97 johnm 1.1 # File Functions
98     # ---------------------------------------
99    
100     # getfilevar accepts 2 vars as follows:
101     # getfilevar <VARIABLE> <CONFIGFILE>
102    
103     getfilevar() {
104 johnm 1.21 local ERROR workingdir basefname basedname myARCH="${ARCH}"
105 johnm 1.1 ERROR=0
106 johnm 1.16
107 johnm 1.1 [ -z "${1}" ] && ERROR=1
108     [ ! -f "${2}" ] && ERROR=1
109    
110     if [ "${ERROR}" = 1 ]
111     then
112 johnm 1.6 echo -e "\n"
113 johnm 1.1 eerror "getfilevar requires 2 variables, with the second a valid file."
114     eerror " getfilevar <VARIABLE> <CONFIGFILE>"
115     else
116 johnm 1.34 workingdir="${PWD}"
117     basefname="$(basename ${2})"
118     basedname="$(dirname ${2})"
119 johnm 1.6 unset ARCH
120 johnm 1.21
121 johnm 1.34 cd "${basedname}"
122 johnm 1.42 echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | \
123     make ${BUILD_FIXES} -s -f - 2>/dev/null
124 johnm 1.34 cd "${workingdir}"
125 johnm 1.21
126     ARCH=${myARCH}
127 johnm 1.1 fi
128     }
129    
130 johnm 1.7 linux_chkconfig_present() {
131 johnm 1.1 local RESULT
132 johnm 1.7 RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)"
133 johnm 1.1 [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1
134     }
135    
136 johnm 1.7 linux_chkconfig_module() {
137 johnm 1.1 local RESULT
138 johnm 1.7 RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)"
139 johnm 1.1 [ "${RESULT}" = "m" ] && return 0 || return 1
140     }
141    
142 johnm 1.7 linux_chkconfig_builtin() {
143 johnm 1.1 local RESULT
144 johnm 1.7 RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)"
145 johnm 1.1 [ "${RESULT}" = "y" ] && return 0 || return 1
146     }
147    
148 johnm 1.7 linux_chkconfig_string() {
149     getfilevar "CONFIG_${1}" "${KV_OUT_DIR}/.config"
150     }
151    
152 johnm 1.1 # Versioning Functions
153     # ---------------------------------------
154    
155     # kernel_is returns true when the version is the same as the passed version
156     #
157     # For Example where KV = 2.6.9
158     # kernel_is 2 4 returns false
159     # kernel_is 2 returns true
160     # kernel_is 2 6 returns true
161     # kernel_is 2 6 8 returns false
162     # kernel_is 2 6 9 returns true
163 johnm 1.3 #
164 johnm 1.1 # got the jist yet?
165    
166     kernel_is() {
167     # if we haven't determined the version yet, we need too.
168     get_version;
169 johnm 1.23 local operator test value x=0 y=0 z=0
170    
171     case ${1} in
172     lt) operator="-lt"; shift;;
173     gt) operator="-gt"; shift;;
174     le) operator="-le"; shift;;
175     ge) operator="-ge"; shift;;
176     eq) operator="-eq"; shift;;
177     *) operator="-eq";;
178     esac
179    
180     for x in ${@}; do
181     for((y=0; y<$((3 - ${#x})); y++)); do value="${value}0"; done
182     value="${value}${x}"
183     z=$((${z} + 1))
184    
185     case ${z} in
186     1) for((y=0; y<$((3 - ${#KV_MAJOR})); y++)); do test="${test}0"; done;
187     test="${test}${KV_MAJOR}";;
188     2) for((y=0; y<$((3 - ${#KV_MINOR})); y++)); do test="${test}0"; done;
189     test="${test}${KV_MINOR}";;
190     3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done;
191     test="${test}${KV_PATCH}";;
192     *) die "Error in kernel-2_kernel_is(): Too many parameters.";;
193     esac
194     done
195 johnm 1.12
196 swegener 1.29 [ ${test} ${operator} ${value} ] && return 0 || return 1
197 johnm 1.1 }
198    
199 johnm 1.30 get_localversion() {
200     local lv_list i x
201    
202     # ignore files with ~ in it.
203     for i in $(ls ${1}/localversion* 2>/dev/null); do
204     [[ -n ${i//*~*} ]] && lv_list="${lv_list} ${i}"
205     done
206    
207     for i in ${lv_list}; do
208     x="${x}$(<${i})"
209     done
210     x=${x/ /}
211     echo ${x}
212     }
213    
214 johnm 1.1 get_version() {
215 johnm 1.4 local kbuild_output
216 swegener 1.29
217 johnm 1.1 # no need to execute this twice assuming KV_FULL is populated.
218     # we can force by unsetting KV_FULL
219 johnm 1.19 [ -n "${KV_FULL}" ] && return 0
220 johnm 1.1
221     # if we dont know KV_FULL, then we need too.
222     # make sure KV_DIR isnt set since we need to work it out via KERNEL_DIR
223     unset KV_DIR
224    
225     # KV_DIR will contain the full path to the sources directory we should use
226 johnm 1.11 qeinfo "Determining the location of the kernel source code"
227 johnm 1.1 [ -h "${KERNEL_DIR}" ] && KV_DIR="$(readlink -f ${KERNEL_DIR})"
228     [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}"
229 swegener 1.29
230 johnm 1.1 if [ -z "${KV_DIR}" ]
231     then
232 johnm 1.11 qeerror "Unable to find kernel sources at ${KERNEL_DIR}"
233     qeinfo "This package requires Linux sources."
234 johnm 1.7 if [ "${KERNEL_DIR}" == "/usr/src/linux" ] ; then
235 johnm 1.11 qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, "
236     qeinfo "(or the kernel you wish to build against)."
237     qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location"
238 johnm 1.7 else
239 johnm 1.11 qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against."
240 johnm 1.7 fi
241 johnm 1.19 return 1
242 johnm 1.7 fi
243    
244 johnm 1.11 qeinfo "Found kernel source directory:"
245     qeinfo " ${KV_DIR}"
246 johnm 1.7
247     if [ ! -s "${KV_DIR}/Makefile" ]
248     then
249 johnm 1.11 qeerror "Could not find a Makefile in the kernel source directory."
250     qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources"
251 johnm 1.19 return 1
252 johnm 1.7 fi
253 swegener 1.29
254 johnm 1.4 # OK so now we know our sources directory, but they might be using
255     # KBUILD_OUTPUT, and we need this for .config and localversions-*
256     # so we better find it eh?
257     # do we pass KBUILD_OUTPUT on the CLI?
258     OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}"
259 swegener 1.29
260 johnm 1.6 # And if we didn't pass it, we can take a nosey in the Makefile
261 johnm 1.4 kbuild_output="$(getfilevar KBUILD_OUTPUT ${KV_DIR}/Makefile)"
262     OUTPUT_DIR="${OUTPUT_DIR:-${kbuild_output}}"
263 swegener 1.29
264 johnm 1.1 # And contrary to existing functions I feel we shouldn't trust the
265     # directory name to find version information as this seems insane.
266     # so we parse ${KV_DIR}/Makefile
267     KV_MAJOR="$(getfilevar VERSION ${KV_DIR}/Makefile)"
268     KV_MINOR="$(getfilevar PATCHLEVEL ${KV_DIR}/Makefile)"
269     KV_PATCH="$(getfilevar SUBLEVEL ${KV_DIR}/Makefile)"
270     KV_EXTRA="$(getfilevar EXTRAVERSION ${KV_DIR}/Makefile)"
271 swegener 1.29
272 johnm 1.7 if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ]
273     then
274 johnm 1.11 qeerror "Could not detect kernel version."
275 johnm 1.19 qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources."
276     return 1
277 johnm 1.7 fi
278 swegener 1.29
279 johnm 1.1 # and in newer versions we can also pull LOCALVERSION if it is set.
280 johnm 1.4 # but before we do this, we need to find if we use a different object directory.
281     # This *WILL* break if the user is using localversions, but we assume it was
282     # caught before this if they are.
283     [ "${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.${KV_EXTRA}" == "$(uname -r)" ] && \
284 johnm 1.7 OUTPUT_DIR="${OUTPUT_DIR:-/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}.${KV_EXTRA}/build}"
285 johnm 1.4
286     [ -h "${OUTPUT_DIR}" ] && KV_OUT_DIR="$(readlink -f ${OUTPUT_DIR})"
287     [ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}"
288     if [ -n "${KV_OUT_DIR}" ];
289     then
290 johnm 1.11 qeinfo "Found kernel object directory:"
291     qeinfo " ${KV_OUT_DIR}"
292 swegener 1.29
293 johnm 1.30 KV_LOCAL="$(get_localversion ${KV_OUT_DIR})"
294 johnm 1.4 fi
295 johnm 1.41 # and if we STILL have not got it, then we better just set it to KV_DIR
296 johnm 1.4 KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}"
297 johnm 1.21
298 johnm 1.41 if [ ! -s "${KV_OUT_DIR}/.config" ]
299     then
300     qeerror "Could not find a usable .config in the kernel source directory."
301     qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources."
302     qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that"
303     qeerror "it points to the necessary object directory so that it might find .config."
304     return 1
305     fi
306    
307 johnm 1.33 KV_LOCAL="${KV_LOCAL}$(get_localversion ${KV_DIR})"
308 johnm 1.7 KV_LOCAL="${KV_LOCAL}$(linux_chkconfig_string LOCALVERSION)"
309     KV_LOCAL="${KV_LOCAL//\"/}"
310 johnm 1.21
311 marineam 1.46 # For things like git that can append extra stuff:
312     [ -e ${KV_DIR}/scripts/setlocalversion ] &&
313     KV_LOCAL="${KV_LOCAL}$(sh ${KV_DIR}/scripts/setlocalversion ${KV_DIR})"
314    
315 johnm 1.1 # And we should set KV_FULL to the full expanded version
316     KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}"
317 johnm 1.21
318 johnm 1.11 qeinfo "Found sources for kernel version:"
319     qeinfo " ${KV_FULL}"
320 johnm 1.21
321 johnm 1.19 return 0
322 johnm 1.1 }
323    
324 johnm 1.23 get_running_version() {
325     KV_FULL=$(uname -r)
326 johnm 1.1
327 johnm 1.23 if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then
328     KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source)
329     unset KV_FULL
330     get_version
331     return $?
332     elif [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
333     KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build)
334     unset KV_FULL
335     get_version
336     return $?
337     else
338     KV_MAJOR=$(get_version_component_range 1 ${KV_FULL})
339     KV_MINOR=$(get_version_component_range 2 ${KV_FULL})
340     KV_PATCH=$(get_version_component_range 3- ${KV_FULL})
341     KV_PATCH=${KV_PATCH//-*}
342     [[ -n ${KV_FULL#*-} ]] && [[ -n ${KV_FULL//${KV_FULL#*-}} ]] \
343     && KV_EXTRA="-${KV_FULL#*-}"
344     fi
345     return 0
346     }
347 johnm 1.1
348    
349     # ebuild check functions
350     # ---------------------------------------
351    
352     check_kernel_built() {
353     # if we haven't determined the version yet, we need too.
354     get_version;
355 swegener 1.29
356 johnm 1.16 if [ ! -f "${KV_OUT_DIR}/include/linux/version.h" ]
357 johnm 1.1 then
358 johnm 1.16 eerror "These sources have not yet been prepared."
359     eerror "We cannot build against an unprepared tree."
360 johnm 1.1 eerror "To resolve this, please type the following:"
361     eerror
362     eerror "# cd ${KV_DIR}"
363     eerror "# make oldconfig"
364 johnm 1.16 eerror "# make modules_prepare"
365 johnm 1.1 eerror
366     eerror "Then please try merging this module again."
367     die "Kernel sources need compiling first"
368     fi
369     }
370    
371     check_modules_supported() {
372     # if we haven't determined the version yet, we need too.
373     get_version;
374 swegener 1.29
375 johnm 1.7 if ! linux_chkconfig_builtin "MODULES"
376 johnm 1.1 then
377     eerror "These sources do not support loading external modules."
378     eerror "to be able to use this module please enable \"Loadable modules support\""
379     eerror "in your kernel, recompile and then try merging this module again."
380 johnm 1.7 die "No support for external modules in ${KV_FULL} config"
381 johnm 1.3 fi
382     }
383    
384     check_extra_config() {
385 mrness 1.45 local config negate die error reworkmodulenames
386     local soft_errors_count=0 hard_errors_count=0
387 johnm 1.3
388     # if we haven't determined the version yet, we need too.
389     get_version;
390    
391 mrness 1.45 einfo "Checking for suitable kernel configuration options..."
392 johnm 1.3 for config in ${CONFIG_CHECK}
393     do
394 johnm 1.31 # if we specify any fatal, ensure we honor them
395     die=1
396     error=0
397     negate=0
398     reworkmodulenames=0
399    
400 mrness 1.45 if [[ -z ${config/\~*} ]]; then
401     die=0
402 johnm 1.31 config=${config:1}
403 mrness 1.45 elif [[ -z ${config/\@*} ]]; then
404     die=0
405 johnm 1.31 reworkmodulenames=1
406     config=${config:1}
407     fi
408 mrness 1.45 if [[ -z ${config//\!*} ]]; then
409     negate=1
410 johnm 1.44 config=${config:1}
411     fi
412 johnm 1.17
413 johnm 1.31 if [[ ${negate} == 1 ]]; then
414     linux_chkconfig_present ${config} && error=2
415     elif [[ ${reworkmodulenames} == 1 ]]; then
416 mrness 1.45 local temp_config="${config//*:}" i n
417 johnm 1.17 config="${config//:*}"
418 johnm 1.31 if linux_chkconfig_present ${config}; then
419     for i in ${MODULE_NAMES}; do
420 johnm 1.17 n="${i//${temp_config}}"
421 dsd 1.38 [[ -z ${n//\(*} ]] && \
422 johnm 1.31 MODULE_IGNORE="${MODULE_IGNORE} ${temp_config}"
423 johnm 1.17 done
424 johnm 1.31 error=2
425 johnm 1.17 fi
426 johnm 1.3 else
427 johnm 1.31 linux_chkconfig_present ${config} || error=1
428     fi
429    
430 mrness 1.45 if [[ ${error} > 0 ]]; then
431     local report_func="eerror" local_error
432     local_error="ERROR_${config}"
433     local_error="${!local_error}"
434    
435     if [[ -z "${local_error}" ]]; then
436     # using old, deprecated format.
437     local_error="${config}_ERROR"
438     local_error="${!local_error}"
439     fi
440     if [[ ${die} == 0 && -z "${local_error}" ]]; then
441     #soft errors can be warnings
442     local_error="WARNING_${config}"
443 johnm 1.7 local_error="${!local_error}"
444 mrness 1.45 if [[ -n "${local_error}" ]] ; then
445     report_func="ewarn"
446 johnm 1.44 fi
447 mrness 1.45 fi
448 johnm 1.44
449 mrness 1.45 if [[ -z "${local_error}" ]]; then
450     [[ ${error} == 1 ]] \
451     && local_error="is not set when it should be." \
452     || local_error="should not be set. But it is."
453     local_error="CONFIG_${config}:\t ${local_error}"
454     fi
455     if [[ ${die} == 0 ]]; then
456     ${report_func} " ${local_error}"
457     soft_errors_count=$[soft_errors_count + 1]
458     else
459     ${report_func} " ${local_error}"
460     hard_errors_count=$[hard_errors_count + 1]
461 johnm 1.3 fi
462     fi
463     done
464    
465 mrness 1.45 if [[ ${hard_errors_count} > 0 ]]; then
466 johnm 1.3 eerror "Please check to make sure these options are set correctly."
467 johnm 1.31 eerror "Failure to do so may cause unexpected problems."
468 mrness 1.45 eerror "Once you have satisfied these options, please try merging"
469     eerror "this package again."
470     die "Incorrect kernel configuration options"
471     elif [[ ${soft_errors_count} > 0 ]]; then
472     ewarn "Please check to make sure these options are set correctly."
473     ewarn "Failure to do so may cause unexpected problems."
474     else
475     eend 0
476 johnm 1.1 fi
477     }
478    
479     check_zlibinflate() {
480     # if we haven't determined the version yet, we need too.
481     get_version;
482 swegener 1.29
483 johnm 1.1 # although I restructured this code - I really really really dont support it!
484    
485     # bug #27882 - zlib routines are only linked into the kernel
486     # if something compiled into the kernel calls them
487     #
488     # plus, for the cloop module, it appears that there's no way
489     # to get cloop.o to include a static zlib if CONFIG_MODVERSIONS
490     # is on
491 swegener 1.29
492     local INFLATE
493     local DEFLATE
494 johnm 1.1
495     einfo "Determining the usability of ZLIB_INFLATE support in your kernel"
496 swegener 1.29
497 johnm 1.1 ebegin "checking ZLIB_INFLATE"
498     getfilevar_isbuiltin CONFIG_ZLIB_INFLATE ${KV_DIR}/.config
499     eend $?
500     [ "$?" != 0 ] && die
501 swegener 1.29
502 johnm 1.1 ebegin "checking ZLIB_DEFLATE"
503     getfilevar_isbuiltin CONFIG_ZLIB_DEFLATE ${KV_DIR}/.config
504     eend $?
505     [ "$?" != 0 ] && die
506 swegener 1.29
507 johnm 1.1 local LINENO_START
508     local LINENO_END
509     local SYMBOLS
510     local x
511 swegener 1.29
512 johnm 1.1 LINENO_END="$(grep -n 'CONFIG_ZLIB_INFLATE y' ${KV_DIR}/lib/Config.in | cut -d : -f 1)"
513     LINENO_START="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | grep -n 'if \[' | tail -n 1 | cut -d : -f 1)"
514     (( LINENO_AMOUNT = $LINENO_END - $LINENO_START ))
515     (( LINENO_END = $LINENO_END - 1 ))
516 johnm 1.4 SYMBOLS="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | tail -n $LINENO_AMOUNT | sed -e 's/^.*\(CONFIG_[^\" ]*\).*/\1/g;')"
517 johnm 1.1
518     # okay, now we have a list of symbols
519     # we need to check each one in turn, to see whether it is set or not
520     for x in $SYMBOLS ; do
521     if [ "${!x}" = "y" ]; then
522     # we have a winner!
523     einfo "${x} ensures zlib is linked into your kernel - excellent"
524     return 0
525     fi
526     done
527 swegener 1.29
528 johnm 1.1 eerror
529     eerror "This kernel module requires ZLIB library support."
530     eerror "You have enabled zlib support in your kernel, but haven't enabled"
531     eerror "enabled any option that will ensure that zlib is linked into your"
532     eerror "kernel."
533     eerror
534     eerror "Please ensure that you enable at least one of these options:"
535     eerror
536    
537     for x in $SYMBOLS ; do
538     eerror " * $x"
539     done
540    
541     eerror
542     eerror "Please remember to recompile and install your kernel, and reboot"
543     eerror "into your new kernel before attempting to load this kernel module."
544    
545     die "Kernel doesn't include zlib support"
546     }
547 johnm 1.8
548     ################################
549     # Default pkg_setup
550     # Also used when inheriting linux-mod to force a get_version call
551    
552     linux-info_pkg_setup() {
553 johnm 1.19 get_version || die "Unable to calculate Linux Kernel version"
554 johnm 1.10 [ -n "${CONFIG_CHECK}" ] && check_extra_config;
555 johnm 1.8 }

  ViewVC Help
Powered by ViewVC 1.1.20