blob: 41e2a8a4d36aa1e4318bce4c54eedb520ceea575 (
plain)
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/module-init-tools/module-init-tools-3.5.ebuild,v 1.9 2010/08/06 05:56:00 vapier Exp $
inherit flag-o-matic eutils toolchain-funcs fixheadtails
MODUTILS_PV="2.4.27"
MY_P="${P/_pre/-pre}"
DESCRIPTION="tools for managing linux kernel modules"
HOMEPAGE="http://modules.wiki.kernel.org/"
SRC_URI="mirror://kernel/linux/utils/kernel/module-init-tools/${MY_P}.tar.bz2
old-linux? ( mirror://kernel/linux/utils/kernel/modutils/v2.4/modutils-${MODUTILS_PV}.tar.bz2 )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
IUSE="old-linux"
# The test code runs `make clean && configure` and screws up src_compile()
RESTRICT="test"
DEPEND="sys-libs/zlib
>=sys-apps/baselayout-1.12.7-r2
!virtual/modutils"
PROVIDE="virtual/modutils"
S=${WORKDIR}/${MY_P}
src_unpack() {
unpack ${A}
# Patches for old modutils
if use old-linux ; then
cd "${WORKDIR}"/modutils-${MODUTILS_PV}
epatch "${FILESDIR}"/modutils-2.4.27-alias.patch
epatch "${FILESDIR}"/modutils-2.4.27-gcc.patch
epatch "${FILESDIR}"/modutils-2.4.27-flex.patch
epatch "${FILESDIR}"/modutils-2.4.27-no-nested-function.patch
epatch "${FILESDIR}"/modutils-2.4.27-hppa.patch
epatch "${FILESDIR}"/modutils-2.4.27-build.patch #154281
fi
# Fixes for new module-init-tools
cd "${S}"
ht_fix_file tests/test-depmod/10badcommand.sh
# Test fails due since it needs to write to /lib/modules so disable it
rm -f tests/test-depmod/01backcompat.sh
# Fix bug 49926: This patch allows generate-modprobe.conf to
# accept the --assume-kernel=x.x.x option for generating livecds.
# This is a companion to a patch in baselayout-1.9.0 which allows
# the same flag to modules-update.
epatch "${FILESDIR}"/${PN}-3.1_generate-modprobe-assume-kernel.patch
# Abort if we fail to run modprobe, bug #68689
epatch "${FILESDIR}"/${PN}-3.2_pre7-abort-on-modprobe-failure.patch
epatch "${FILESDIR}"/${PN}-3.2.2-handle-dupliate-aliases.patch #149426
# make sure we link dynamically with zlib; our zlib.so is in /lib vs
# /usr/lib so it's safe to link with. fixes ugly textrels as well.
sed -i \
-e 's:-Wl,-Bstatic -lz -Wl,-Bdynamic:-lz:' \
configure || die
# make sure we don't try to regen the manpages
touch *.5 *.8
}
src_compile() {
# Configure script uses BUILDCFLAGS for cross-compiles but this
# defaults to CFLAGS which can be bad mojo
export BUILDCFLAGS=-pipe
export BUILDCC=$(tc-getBUILD_CC)
if use old-linux ; then
einfo "Building modutils ..."
cd "${WORKDIR}"/modutils-${MODUTILS_PV}
econf \
--disable-strip \
--prefix=/ \
--enable-insmod-static \
--disable-zlib \
|| die "econf failed"
emake || die "emake modutils failed"
einfo "Building module-init-tools ..."
cd "${S}"
fi
econf \
--prefix=/ \
--enable-zlib \
|| die "econf failed"
emake || die "emake module-init-tools failed"
}
modutils_src_install() {
cd "${WORKDIR}"/modutils-${MODUTILS_PV}
einstall prefix="${D}" || die
docinto modutils-${MODUTILS_PV}
dodoc CREDITS ChangeLog NEWS README TODO
# remove man pages provided by the man-pages package now #124127
rm -r "${D}"/usr/share/man/man2
cd "${S}"
# This copies the old version of modutils to *.old so it still works
# with kernels <= 2.4; new versions will execve() the .old version if
# a 2.4 kernel is running...
# This code was borrowed from the module-init-tools Makefile
local runme f
for f in lsmod modprobe rmmod depmod insmod insmod.static modinfo ; do
if [[ -L ${D}/sbin/${f} ]] ; then
einfo "Moving symlink $f to ${f}.old"
#runme = the target of the symlink with a .old tagged on.
runme=$(ls -l "${D}"/sbin/${f} | sed 's/.* -> //').old
[[ ! -e ${D}/sbin/${runme} ]] || einfo "${D}/sbin/${runme} not found"
dosym ${runme} /sbin/${f} || die
elif [[ -e ${D}/sbin/${f} ]] ; then
einfo "Moving executable $f to ${f}.old"
fi
mv -f "${D}"/sbin/${f} "${D}"/sbin/${f}.old
done
# Move the man pages as well. We only do this for the man pages of the
# tools that module-init-tools will replace.
for f in "${D}"/usr/share/man/man8/{lsmod,modprobe,rmmod,depmod,insmod}.8
do
mv -f ${f} ${f%\.*}.old.${f##*\.}
done
# Fix the ksyms links #35601
for f in ksyms kallsyms ; do
dosym insmod.old /sbin/${f}
dosym insmod.static.old /sbin/${f}.static
done
}
src_install() {
use old-linux && modutils_src_install
cd "${S}"
emake install DESTDIR="${D}" || die
dosym modprobe.conf.5 /usr/share/man/man5/modprobe.d.5
# Install compat symlink
dosym ../bin/lsmod /sbin/lsmod
use old-linux && dosym ../sbin/insmod.old /bin/lsmod.old
# Install the modules.conf2modprobe.conf tool, so we can update
# modprobe.conf.
into /
dosbin "${S}"/generate-modprobe.conf || die
newsbin "${FILESDIR}"/update-modules-3.5.sh update-modules || die
doman "${FILESDIR}"/update-modules.8
doman *.[1-8]
docinto /
dodoc AUTHORS ChangeLog INSTALL NEWS README TODO
}
pkg_postinst() {
# cheat to keep users happy
if grep -qs modules-update "${ROOT}"/etc/init.d/modules ; then
sed -i 's:modules-update:update-modules:' "${ROOT}"/etc/init.d/modules
fi
}
|