[augeas-devel] [PATCH 2/2] Modules_conf: new lens for modules.conf and conf.modules

Matthew Booth mbooth at redhat.com
Thu May 13 09:03:34 UTC 2010


---
 lenses/modules_conf.aug            |   42 ++++++++++++++++
 lenses/tests/test_modules_conf.aug |   96 ++++++++++++++++++++++++++++++++++++
 tests/Makefile.am                  |    1 +
 3 files changed, 139 insertions(+), 0 deletions(-)
 create mode 100644 lenses/modules_conf.aug
 create mode 100644 lenses/tests/test_modules_conf.aug

diff --git a/lenses/modules_conf.aug b/lenses/modules_conf.aug
new file mode 100644
index 0000000..5245e5f
--- /dev/null
+++ b/lenses/modules_conf.aug
@@ -0,0 +1,42 @@
+(*
+Module: Modules_conf
+  Parses /etc/modules.conf and /etc/conf.modules
+
+  Based on the similar Modprobe lens
+
+  Not all directives currently listed in modules.conf(5) are currently
+  supported.
+*)
+module Modules_conf =
+autoload xfm
+
+let comment = Util.comment
+let empty = Util.empty
+let eol = Util.eol | Util.comment
+
+(* Basic file structure is the same as modprobe.conf *)
+let cmd (n:regexp) = Modprobe.cmd n
+let token_to_eol = Modprobe.token_to_eol
+
+let path = [ key "path" . del "=" "=" . token_to_eol . eol ]
+let keep = [ key "keep" . eol ]
+let probeall = [ cmd "probeall" . token_to_eol . eol ]
+
+let entry =
+    Modprobe.alias
+  | Modprobe.options
+  | Modprobe.include
+  | Modprobe.cmd_token_to_eol /install|pre-install|post-install/
+  | Modprobe.cmd_token_to_eol /remove|pre-remove|post-remove/
+  | keep
+  | path
+  | probeall
+  
+
+let lns = (comment|empty|entry)*
+
+let filter = (incl "/etc/modules.conf") .
+  (incl "/etc/conf.modules").
+  Util.stdexcl
+
+let xfm = transform lns filter
diff --git a/lenses/tests/test_modules_conf.aug b/lenses/tests/test_modules_conf.aug
new file mode 100644
index 0000000..31e72b6
--- /dev/null
+++ b/lenses/tests/test_modules_conf.aug
@@ -0,0 +1,96 @@
+module Test_modules_conf =
+
+(* Based on 04config.sh from module-init-tools *)
+
+let conf = "# Various aliases
+alias alias_to_foo foo
+alias alias_to_bar bar
+alias alias_to_export_dep-$BITNESS export_dep-$BITNESS
+
+# Various options, including options to aliases.
+options alias_to_export_dep-$BITNESS I am alias to export_dep
+options alias_to_noexport_nodep-$BITNESS_with_tabbed_options index=0 id=\"Thinkpad\" isapnp=0 \\
+\tport=0x530 cport=0x538 fm_port=0x388 \\
+\tmpu_port=-1 mpu_irq=-1 \\
+\tirq=9 dma1=1 dma2=3 \\
+\tenable=1 isapnp=0
+
+# Install commands
+install bar echo Installing bar
+install foo echo Installing foo
+install export_nodep-$BITNESS echo Installing export_nodep
+
+# Pre- and post- install something
+pre-install ide-scsi modprobe ide-cd # load ide-cd before ide-scsi
+post-install serial /etc/init.d/setserial modload > /dev/null 2> /dev/null
+
+# Remove commands
+remove bar echo Removing bar
+remove foo echo Removing foo
+remove export_nodep-$BITNESS echo Removing export_nodep
+
+#Pre- and post- remove something
+pre-remove serial /etc/init.d/setserial modsave  > /dev/null 2> /dev/null
+post-remove bttv rmmod tuner
+
+# Misc other directives
+probeall /dev/cdroms
+keep
+path=/lib/modules/`uname -r`/alsa
+"
+
+test Modules_conf.lns get conf =
+  { "#comment" = "Various aliases" }
+  { "alias" = "alias_to_foo"
+    { "modulename" = "foo" } }
+  { "alias" = "alias_to_bar"
+    { "modulename" = "bar" } }
+  { "alias" = "alias_to_export_dep-$BITNESS"
+    { "modulename" = "export_dep-$BITNESS" } }
+  { }
+  { "#comment" = "Various options, including options to aliases." }
+  { "options" = "alias_to_export_dep-$BITNESS"
+    { "I" }
+    { "am" }
+    { "alias" }
+    { "to" }
+    { "export_dep" } }
+  { "options" = "alias_to_noexport_nodep-$BITNESS_with_tabbed_options"
+    { "index" = "0" }
+    { "id" = "\"Thinkpad\"" }
+    { "isapnp" = "0" }
+    { "port" = "0x530" }
+    { "cport" = "0x538" }
+    { "fm_port" = "0x388" }
+    { "mpu_port" = "-1" }
+    { "mpu_irq" = "-1" }
+    { "irq" = "9" }
+    { "dma1" = "1" }
+    { "dma2" = "3" }
+    { "enable" = "1" }
+    { "isapnp" = "0" } }
+  { }
+  { "#comment" = "Install commands" }
+  { "install" = "bar echo Installing bar" }
+  { "install" = "foo echo Installing foo" }
+  { "install" = "export_nodep-$BITNESS echo Installing export_nodep" }
+  { }
+  { "#comment" = "Pre- and post- install something" }
+  { "pre-install" = "ide-scsi modprobe ide-cd"
+    { "#comment" = "load ide-cd before ide-scsi" }
+  }
+  { "post-install" = "serial /etc/init.d/setserial modload > /dev/null 2> /dev/null" }
+  { }
+  { "#comment" = "Remove commands" }
+  { "remove" = "bar echo Removing bar" }
+  { "remove" = "foo echo Removing foo" }
+  { "remove" = "export_nodep-$BITNESS echo Removing export_nodep" }
+  { }
+  { "#comment" = "Pre- and post- remove something" }
+  { "pre-remove" = "serial /etc/init.d/setserial modsave  > /dev/null 2> /dev/null" }
+  { "post-remove" = "bttv rmmod tuner" }
+  { }
+  { "#comment" = "Misc other directives" }
+  { "probeall" = "/dev/cdroms" }
+  { "keep" }
+  { "path" = "/lib/modules/`uname -r`/alsa" }
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3375ee9..371fe0a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -45,6 +45,7 @@ lens_tests =			\
   lens-logrotate.sh		\
   lens-lokkit.sh		\
   lens-modprobe.sh		\
+  lens-modules_conf.sh	\
   lens-monit.sh			\
   lens-multipath.sh     \
   lens-nagioscfg.sh     \
-- 
1.6.6.1




More information about the augeas-devel mailing list