summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Yao <ryao@gentoo.org>2012-11-23 00:20:15 -0500
committerRichard Yao <ryao@cs.stonybrook.edu>2012-11-23 01:55:28 -0500
commit3bb4e05ce4a1c9ac1339b451c4c18cfef8bcbeb9 (patch)
tree2acd2e37eae53b80ed9b933fee254772246eb4ef
parentc4d1ce9b754e6eed60d2625cc4fff224898aa5d5 (diff)
Permit users to disable module loading support
Inspired by e30431623a7d871da123cc37055ac49abf2c20ea from systemd. Signed-off-by: Richard Yao <ryao@gentoo.org>
-rw-r--r--configure.ac38
-rw-r--r--rules/75-probe_mtd.rules1
-rw-r--r--rules/80-drivers.rules1
-rw-r--r--rules/Makefile.am6
-rw-r--r--src/udev/Makefile.am11
-rw-r--r--src/udev/udev-builtin.c2
-rw-r--r--src/udev/udev.h4
7 files changed, 42 insertions, 21 deletions
diff --git a/configure.ac b/configure.ac
index 489733c94f..73e82a947b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -275,23 +275,33 @@ AC_SUBST([rootprefix], [$with_rootprefix])
AC_SUBST([rootlibdir], [$with_rootlibdir])
AC_SUBST([udevlibexecdir], [${with_rootlibdir}/udev])
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([libkmod], [AS_HELP_STRING([--enable-libkmod], [Enable module loading through kmod @<:@default=disabled@:>@])], [], [with_libkmod=no])
+# ------------------------------------------------------------------------------
LIBKMOD=
-AS_IF([test "x$with_libkmod" != xno],
- [AC_CHECK_LIB([kmod], [main],
- [PKG_CHECK_MODULES(KMOD, [libkmod >= 5])
- AC_SUBST([LIBKMOD], ["-lkmod"])
- AC_DEFINE([HAVE_LIBKMOD], [1],
- [Define if you have libkmod])
- ],
- [AC_MSG_FAILURE(
- [--with-libkmod was given, but test for kmod failed])],
- [-lkmod])])
-
-AM_CONDITIONAL([HAVE_LIBKMOD], [test "$with_kmod" = "yes"])
+AC_ARG_ENABLE([modules], [AS_HELP_STRING([--disable-modules], [Disable loadable module support @<:@default=enabled@:>@])], [have_modules=no], [have_modules=yes])
+AC_ARG_ENABLE([libkmod], [AS_HELP_STRING([--enable-libkmod], [Enable module loading through kmod @<:@default=disabled@:>@])], [have_libkmod=yes], [have_libkmod=no])
+
+if test "x$have_modules" == "xyes"; then
+
+ AC_DEFINE([HAVE_MODULES], [1], [Define if we support loading modules])
+
+ AS_IF([test "x$have_libkmod" != xno],
+ [AC_CHECK_LIB([kmod], [main],
+ [PKG_CHECK_MODULES(KMOD, [libkmod >= 5])
+ AC_SUBST([LIBKMOD], ["-lkmod"])
+ AC_DEFINE([HAVE_LIBKMOD], [1],
+ [Define if you have libkmod])
+ ],
+ [AC_MSG_FAILURE(
+ [--with-libkmod was given, but test for kmod failed])],
+ [-lkmod])])
+
+fi
+
+AM_CONDITIONAL([HAVE_MODULES], [test "x$have_modules" == "xyes"])
+AM_CONDITIONAL([HAVE_LIBKMOD], [test "x$have_libkmod" == "xyes"])
+
# ------------------------------------------------------------------------------
diff --git a/rules/75-probe_mtd.rules b/rules/75-probe_mtd.rules
index c0e0839785..8848aeeaed 100644
--- a/rules/75-probe_mtd.rules
+++ b/rules/75-probe_mtd.rules
@@ -3,6 +3,5 @@
ACTION!="add", GOTO="mtd_probe_end"
KERNEL=="mtd*ro", IMPORT{program}="mtd_probe $devnode"
-KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", IMPORT{builtin}="kmod load sm_ftl"
LABEL="mtd_probe_end"
diff --git a/rules/80-drivers.rules b/rules/80-drivers.rules
index 692510c912..3428cb28c9 100644
--- a/rules/80-drivers.rules
+++ b/rules/80-drivers.rules
@@ -3,6 +3,7 @@
ACTION=="remove", GOTO="drivers_end"
DRIVER!="?*", ENV{MODALIAS}=="?*", IMPORT{builtin}="kmod load $env{MODALIAS}"
+KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", IMPORT{builtin}="kmod load sm_ftl"
SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", IMPORT{builtin}="kmod load tifm_sd"
SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", IMPORT{builtin}="kmod load tifm_ms"
SUBSYSTEM=="memstick", IMPORT{builtin}="kmod load ms_block mspro_block"
diff --git a/rules/Makefile.am b/rules/Makefile.am
index 8a1f64ff30..e8493036c4 100644
--- a/rules/Makefile.am
+++ b/rules/Makefile.am
@@ -20,9 +20,13 @@ dist_udevrules_DATA = \
75-probe_mtd.rules \
75-tty-description.rules \
78-sound-card.rules \
- 80-drivers.rules \
95-udev-late.rules
+if HAVE_MODULES
+dist_udevrules_DATA += \
+ 80-drivers.rules
+endif
+
if ENABLE_KEYMAP
dist_udevrules_DATA += \
95-keymap.rules \
diff --git a/src/udev/Makefile.am b/src/udev/Makefile.am
index 7ceb31951a..2486824e86 100644
--- a/src/udev/Makefile.am
+++ b/src/udev/Makefile.am
@@ -50,7 +50,6 @@ libudev_core_la_SOURCES = \
udev-builtin-firmware.c \
udev-builtin-hwdb.c \
udev-builtin-input_id.c \
- udev-builtin-kmod.c \
udev-builtin-net_id.c \
udev-builtin-path_id.c \
udev-builtin-usb_id.c \
@@ -104,17 +103,19 @@ libudev_core_la_CFLAGS = \
$(AM_CFLAGS) \
$(BLKID_CFLAGS)
-if HAVE_LIBKMOD
-libudev_core_la_CFLAGS += $(KMOD_CFLAGS)
-endif
-
libudev_core_la_LIBADD = \
$(top_builddir)/src/libudev/libudev-private.la \
$(BLKID_LIBS)
+if HAVE_MODULES
+libudev_core_la_SOURCES += \
+ udev-builtin-kmod.c
+
if HAVE_LIBKMOD
+libudev_core_la_CFLAGS += $(KMOD_CFLAGS)
libudev_core_la_LIBADD += $(KMOD_LIBS)
endif
+endif
if HAVE_ACL
libudev_core_la_SOURCES += \
diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c
index ee81b2d713..45494147eb 100644
--- a/src/udev/udev-builtin.c
+++ b/src/udev/udev-builtin.c
@@ -35,7 +35,9 @@ static const struct udev_builtin *builtins[] = {
[UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware,
[UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
[UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
+#ifdef HAVE_MODULES
[UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
+#endif
[UDEV_BUILTIN_NET_ID] = &udev_builtin_net_id,
[UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
[UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
diff --git a/src/udev/udev.h b/src/udev/udev.h
index 82cd2ad6d0..4c2861009f 100644
--- a/src/udev/udev.h
+++ b/src/udev/udev.h
@@ -139,7 +139,9 @@ enum udev_builtin_cmd {
UDEV_BUILTIN_FIRMWARE,
UDEV_BUILTIN_HWDB,
UDEV_BUILTIN_INPUT_ID,
+#ifdef HAVE_MODULES
UDEV_BUILTIN_KMOD,
+#endif
UDEV_BUILTIN_NET_ID,
UDEV_BUILTIN_PATH_ID,
UDEV_BUILTIN_USB_ID,
@@ -162,7 +164,9 @@ extern const struct udev_builtin udev_builtin_btrfs;
extern const struct udev_builtin udev_builtin_firmware;
extern const struct udev_builtin udev_builtin_hwdb;
extern const struct udev_builtin udev_builtin_input_id;
+#ifdef HAVE_MODULES
extern const struct udev_builtin udev_builtin_kmod;
+#endif
extern const struct udev_builtin udev_builtin_net_id;
extern const struct udev_builtin udev_builtin_path_id;
extern const struct udev_builtin udev_builtin_usb_id;