summaryrefslogtreecommitdiff
path: root/meta/recipes-kernel/module-init-tools
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/module-init-tools')
-rw-r--r--meta/recipes-kernel/module-init-tools/files/disable_man.patch23
-rw-r--r--meta/recipes-kernel/module-init-tools/files/grab_module_memset.patch19
-rw-r--r--meta/recipes-kernel/module-init-tools/files/ignore_arch_directory.patch28
-rw-r--r--meta/recipes-kernel/module-init-tools/files/modutils_extension.patch22
-rw-r--r--meta/recipes-kernel/module-init-tools/files/no-static-binaries.patch23
-rw-r--r--meta/recipes-kernel/module-init-tools/module-init-tools-cross_3.12.bb12
-rw-r--r--meta/recipes-kernel/module-init-tools/module-init-tools.inc24
-rw-r--r--meta/recipes-kernel/module-init-tools/module-init-tools_3.12.bb39
8 files changed, 190 insertions, 0 deletions
diff --git a/meta/recipes-kernel/module-init-tools/files/disable_man.patch b/meta/recipes-kernel/module-init-tools/files/disable_man.patch
new file mode 100644
index 0000000000..daf58248b1
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/files/disable_man.patch
@@ -0,0 +1,23 @@
+# disable man page build
+#
+# by Kevin Tian <kevin.tian@intel.com>, 2010-07-21
+
+diff --git a/Makefile.am b/Makefile.am
+index 6f83c12..32972a8 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -39,13 +39,12 @@ modindex_LDADD = $(LDADD) libmodtools.a
+ MAN5 = modprobe.conf.5 modules.dep.5 depmod.conf.5 modprobe.d.5
+ MAN8 = depmod.8 insmod.8 lsmod.8 rmmod.8 modprobe.8 modinfo.8
+ SGML = $(addprefix doc/, $(MAN5:%.5=%.sgml) $(MAN8:%.8=%.sgml))
+-dist_man_MANS = $(MAN5) $(MAN8)
+ # If they haven't overridden mandir, fix it (never /man!)
+ mandir =$(shell if [ @mandir@ = $(prefix)/man ]; then if [ $(prefix) = / ]; then echo /usr/share/man; else echo $(prefix)/share/man; fi; else echo @mandir@; fi)
+
+ TESTSUITE := $(shell test -e @srcdir@/tests && find @srcdir@/tests -type f ! -name '*~')
+
+-EXTRA_DIST = generate-modprobe.conf FAQ CODING stress_modules.sh install-with-care $(SGML) $(man_MANS) $(TESTSUITE)
++EXTRA_DIST = generate-modprobe.conf FAQ CODING stress_modules.sh install-with-care
+
+ sbin_PROGRAMS = insmod modprobe rmmod depmod modinfo
+ if BUILD_STATIC_UTILS
diff --git a/meta/recipes-kernel/module-init-tools/files/grab_module_memset.patch b/meta/recipes-kernel/module-init-tools/files/grab_module_memset.patch
new file mode 100644
index 0000000000..9550255315
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/files/grab_module_memset.patch
@@ -0,0 +1,19 @@
+# this patch is from Mark Hatle <mark.hatle@windriver.com>, who ran into
+# a random segfault using the latest module-init-tools (3.12) and finally
+# trace back to depmod.c:grab_module, which appears that the new malloc(...)
+# setups up things, but never clears the memory that was just allocated.
+#
+# Kevin Tian <kevin.tian@intel.com>, 2010-08-06
+
+diff --git a/depmod.c b/depmod.c
+index 647e5e6..46e03e0 100644
+--- a/depmod.c
++++ b/depmod.c
+@@ -313,6 +313,7 @@ static struct module *grab_module(const char *dirname, const char *filename)
+
+ new = NOFAIL(malloc(sizeof(*new)
+ + strlen(dirname?:"") + 1 + strlen(filename) + 1));
++ memset(new, 0x00, sizeof(*new) + strlen(dirname?:"") + 1 + strlen(filename) + 1);
+ if (dirname)
+ sprintf(new->pathname, "%s/%s", dirname, filename);
+ else
diff --git a/meta/recipes-kernel/module-init-tools/files/ignore_arch_directory.patch b/meta/recipes-kernel/module-init-tools/files/ignore_arch_directory.patch
new file mode 100644
index 0000000000..7b30824802
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/files/ignore_arch_directory.patch
@@ -0,0 +1,28 @@
+# not sure the reason yet. Keep for a while and verify later.
+#
+# comments added by Kevin Tian <kevin.tian@intel.com>, 2010-07-21
+
+diff -ruN module-init-tools-3.12.orig/modprobe.8 module-init-tools-3.12/modprobe.8
+--- module-init-tools-3.12/modprobe.8.orig
++++ module-init-tools-3.12/modprobe.8
+@@ -27,6 +27,7 @@
+ (see \fBmodprobe.conf\fR(5)). \fBmodprobe\fR will also use module
+ options specified on the kernel command line in the form of
+ <module>\&.<option>\&.
++All files in the \fI/etc/modprobe.d/arch/\fR directory are ignored.
+ .PP
+ Note that unlike in 2.4 series Linux kernels (which are not supported
+ by this tool) this version of \fBmodprobe\fR does not
+--- module-init-tools-3.12/modprobe.c.orig
++++ module-init-tools-3.12/modprobe.c
+@@ -1052,6 +1052,10 @@
+ DIR *dir;
+ int ret = 0;
+
++ /* ignore everything in this directory */
++ if (streq(filename, "/etc/modprobe.d/arch"))
++ return 1;
++
+ dir = opendir(filename);
+ if (dir) {
+ struct file_entry {
diff --git a/meta/recipes-kernel/module-init-tools/files/modutils_extension.patch b/meta/recipes-kernel/module-init-tools/files/modutils_extension.patch
new file mode 100644
index 0000000000..128c9531a1
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/files/modutils_extension.patch
@@ -0,0 +1,22 @@
+# poky uses new name to differentiate from modutils, so reflect this new name in source
+#
+# comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-21
+--- module-init-tools-3.0-pre10.orig/generate-modprobe.conf
++++ module-init-tools-3.0-pre10/generate-modprobe.conf
+@@ -45,12 +45,12 @@
+ cp $TESTING_MODPROBE_CONF $MODPROBECONF
+ elif [ "$STDIN" = "1" ]; then
+ cat > $MODPROBECONF
+-elif [ -x /sbin/modprobe.old ]; then
++elif [ -x /sbin/modprobe.24 ]; then
+ # In sbin.
+- /sbin/modprobe.old -c > $MODPROBECONF || modprobe_abort
+-elif modprobe.old -c >/dev/null 2>&1; then
++ /sbin/modprobe.24 -c > $MODPROBECONF || modprobe_abort
++elif modprobe.24 -c >/dev/null 2>&1; then
+ # Somewhere in path.
+- modprobe.old -c > $MODPROBECONF || modprobe_abort
++ modprobe.24 -c > $MODPROBECONF || modprobe_abort
+ elif /sbin/modprobe -V 2>/dev/null | grep -q 'modprobe version'; then
+ # Running /sbin/modprobe gives old version.
+ /sbin/modprobe -c > $MODPROBECONF || modprobe_abort
diff --git a/meta/recipes-kernel/module-init-tools/files/no-static-binaries.patch b/meta/recipes-kernel/module-init-tools/files/no-static-binaries.patch
new file mode 100644
index 0000000000..ca83ec0755
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/files/no-static-binaries.patch
@@ -0,0 +1,23 @@
+# Building a native, statically-linked insmod can result in ld failing because
+# it can't find a static libc. A native, static insmod is unnecessary anyway,
+# so this patch just removes it.
+#
+# - jdike@linux.intel.com
+#
+# Change to a simpler method by just disabling static link flag, since even
+# removing those lines don't prevent insmod.static from compile
+#
+# by Kevin Tian <kevin.tian@intel.com>, 2010-07-21
+
+Index: module-init-tools-3.2.2/Makefile.am
+===================================================================
+--- module-init-tools-3.2.2.orig/Makefile.am 2010-05-26 15:43:16.000000000 -0400
++++ module-init-tools-3.2.2/Makefile.am 2010-05-26 16:04:06.232990785 -0400
+@@ -10,7 +10,6 @@
+ modindex_SOURCES = modindex.c zlibsupport.c zlibsupport.h testing.h
+
+ insmod_static_SOURCES = insmod.c
+-insmod_static_LDFLAGS = -static
+ # We don't want the $(zlib_flags) here: that makes a dynamic executable
+ insmod_static_LDADD = libmodtools.a
+
diff --git a/meta/recipes-kernel/module-init-tools/module-init-tools-cross_3.12.bb b/meta/recipes-kernel/module-init-tools/module-init-tools-cross_3.12.bb
new file mode 100644
index 0000000000..08bf1a95e5
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/module-init-tools-cross_3.12.bb
@@ -0,0 +1,12 @@
+require module-init-tools.inc
+PR = "r1"
+inherit cross
+PROVIDES += "virtual/${TARGET_PREFIX}depmod virtual/${TARGET_PREFIX}depmod-2.6"
+
+SRC_URI += "file://no-static-binaries.patch"
+
+EXTRA_OECONF_append = " --program-prefix=${TARGET_PREFIX}"
+
+do_install_append () {
+ mv ${D}${bindir}/${TARGET_PREFIX}depmod ${D}${bindir}/${TARGET_PREFIX}depmod-2.6
+}
diff --git a/meta/recipes-kernel/module-init-tools/module-init-tools.inc b/meta/recipes-kernel/module-init-tools/module-init-tools.inc
new file mode 100644
index 0000000000..f1319ad90d
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/module-init-tools.inc
@@ -0,0 +1,24 @@
+DESCRIPTION = "This package contains a set of programs for loading, inserting, and removing kernel modules for Linux (versions 2.5.48 and above). It serves the same function that the modutils package serves for Linux 2.4"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://lsmod.c;md5=743c873ec42632d2ce37d3c440f366dd"
+SECTION = "base"
+
+PACKAGES =+ "module-init-tools-insmod-static module-init-tools-depmod"
+RDEPENDS_${PN} += "module-init-tools-depmod"
+
+FILES_module-init-tools-depmod = "${sbindir}/depmod.26"
+FILES_module-init-tools-insmod-static = "${sbindir}/insmod.static"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/module-init-tools/module-init-tools-${PV}.tar.bz2 \
+ file://ignore_arch_directory.patch \
+ file://modutils_extension.patch \
+ file://disable_man.patch \
+ file://grab_module_memset.patch"
+
+inherit autotools
+
+# module-init-tools uses AX_ENABLE_BUILDDIR to move rest of configuration steps
+# into a subdir. However this macro is not quite cross friendly. Instead of
+# mangling that macro, a easier way is to take the disable option
+EXTRA_OECONF = "--disable-builddir"
diff --git a/meta/recipes-kernel/module-init-tools/module-init-tools_3.12.bb b/meta/recipes-kernel/module-init-tools/module-init-tools_3.12.bb
new file mode 100644
index 0000000000..6c312b4cec
--- /dev/null
+++ b/meta/recipes-kernel/module-init-tools/module-init-tools_3.12.bb
@@ -0,0 +1,39 @@
+require module-init-tools.inc
+PR = "r1"
+
+# autotools set prefix to /usr, however we want them in /bin and /sbin
+bindir = "/bin"
+sbindir = "/sbin"
+
+do_install() {
+ autotools_do_install
+ for f in bin/lsmod sbin/insmod sbin/rmmod sbin/modprobe sbin/modinfo sbin/depmod; do
+ mv ${D}/$f ${D}/$f.26
+ done
+}
+
+pkg_postinst_module-init-tools() {
+ for f in sbin/insmod sbin/modprobe sbin/rmmod sbin/modinfo; do
+ bn=`basename $f`
+ update-alternatives --install /$f $bn /$f.26 60
+ done
+ update-alternatives --install /bin/lsmod bin-lsmod /bin/lsmod.26 60
+ update-alternatives --install /sbin/lsmod lsmod /bin/lsmod.26 60
+}
+
+pkg_prerm_module-init-tools() {
+ for f in sbin/insmod sbin/modprobe sbin/rmmod sbin/modinfo; do
+ bn=`basename $f`
+ update-alternatives --remove $bn /$f.26
+ done
+ update-alternatives --remove bin-lsmod /bin/lsmod.26
+ update-alternatives --remove lsmod /bin/lsmod.26
+}
+
+pkg_postinst_module-init-tools-depmod() {
+ update-alternatives --install /sbin/depmod depmod /sbin/depmod.26 60
+}
+
+pkg_prerm_module-init-tools-depmod() {
+ update-alternatives --remove depmod /sbin/depmod.26
+}