1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/xfree.eclass,v 1.17 2004/02/21 23:33:07 spyderous Exp $
#
# Author: Seemant Kulleen <seemant@gentoo.org>
#
# The xfree.eclass is designed to ease the checking functions that are
# performed in xfree and xfree-drm ebuilds. In the new scheme, a variable
# called VIDEO_CARDS will be used to indicate which cards a user wishes to
# build support for. Note, that this variable is only unlocked if the USE
# variable "expertxfree" is switched on, at least for xfree.
ECLASS=xfree
INHERITED="${INHERITED} ${ECLASS}"
EXPORT_FUNCTIONS vcards is_kernel strip_bins
vcards() {
has "$1" ${VIDEO_CARDS} && return 0
return 1
}
filter-patch() {
mv ${PATCH_DIR}/"*${1}*" ${PATCH_DIR}/excluded
}
patch_exclude() {
# Exclude patches matching a pattern if they exist
for PATCH_GROUP in ${@}
do
# Repress errors for non-matching patterns, they're ugly
for PATCH in $(ls ${PATCHDIR}/${PATCH_GROUP}* 2> /dev/null)
do
if [ -a "${PATCH}" ]
then
ebegin " `basename ${PATCH}`"
mv -f ${PATCH} ${EXCLUDED}
eend 0
fi
done
done
}
# This is to ease kernel checks for patching and other things. (spyderous)
# Kernel checker is_kernel $1 $2 where $1 is KV_major and $2 is KV_minor.
# is_kernel "2" "4" should map to a 2.4 kernel, etc.
check_version_h() {
if [ ! -f "${ROOT}/usr/src/linux/include/linux/version.h" ]
then
eerror "Please verify that your /usr/src/linux symlink is pointing"
eerror "to your current kernel sources, and that you did run:"
eerror
eerror " # make dep"
die "/usr/src/linux symlink not setup!"
fi
}
get_KV_info() {
check_version_h
# Get the kernel version of sources in /usr/src/linux ...
export KV_full="$(awk '/UTS_RELEASE/ { gsub("\"", "", $3); print $3 }' \
"${ROOT}/usr/src/linux/include/linux/version.h")"
export KV_major="$(echo "${KV_full}" | cut -d. -f1)"
export KV_minor="$(echo "${KV_full}" | cut -d. -f2)"
export KV_micro="$(echo "${KV_full}" | cut -d. -f3 | sed -e 's:[^0-9].*::')"
}
is_kernel() {
get_KV_info
if [ "${KV_major}" -eq "${1}" -a "${KV_minor}" -eq "${2}" ]
then
return 0
else
return 1
fi
}
# For stripping binaries, but not drivers or modules.
# examples:
# /lib/modules for kernel modules:
# $1=\/lib\/modules
# /usr/X11R6/lib/modules for xfree modules:
# $1=\/usr\/X11R6\/lib\/modules
strip_bins() {
einfo "Stripping binaries..."
# This bit I got from Redhat ... strip binaries and drivers ..
# NOTE: We do NOT want to strip the drivers, modules or DRI modules!
for x in $(find ${D}/ -type f -perm +0111 -exec file {} \; | \
grep -v ' shared object,' | \
sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped/\1/p')
do
if [ -f ${x} ]
then
# Dont do the modules ...
# need the 'eval echo \' to resolve 2-level variables
if [ "`eval echo \${x/${1}}`" = "${x}" ]
then
echo "`echo ${x} | sed -e "s|${D}||"`"
strip ${x} || :
fi
fi
done
}
arch() {
[ "${ARCH}" = "${1}" ]
}
|