Compile SMIv2 MIBs
******************

Invoke user callback function to provide MIB text, compile given text
string into pysnmp MIB form and pass results to another user callback
function for storing.

Here we expect to deal only with SMIv2-valid MIBs.

We use noDeps flag to prevent MIB compiler from attemping to compile
IMPORT'ed MIBs as well.

   import sys
   from pysmi.reader import CallbackReader
   from pysmi.searcher import StubSearcher
   from pysmi.writer import CallbackWriter
   from pysmi.parser import SmiV2Parser
   from pysmi.codegen import PySnmpCodeGen
   from pysmi.compiler import MibCompiler

   inputMibs = ['IF-MIB', 'IP-MIB']
   srcDir = '/usr/share/snmp/mibs/'  # we will read MIBs from here

   # Initialize compiler infrastructure

   mibCompiler = MibCompiler(
       SmiV2Parser(),
       PySnmpCodeGen(),
       # out own callback function stores results in its own way
       CallbackWriter(lambda m, d, c: sys.stdout.write(d))
   )

   # our own callback function serves as a MIB source here
   mibCompiler.addSources(
     CallbackReader(lambda m, c: open(srcDir+m+'.txt').read())
   )

   # never recompile MIBs with MACROs
   mibCompiler.addSearchers(StubSearcher(*PySnmpCodeGen.baseMibs))

   # run non-recursive MIB compilation
   results = mibCompiler.compile(*inputMibs, **dict(noDeps=True))

   print('Results: %s' % ', '.join(['%s:%s' % (x, results[x]) for x in results]))

"Download" script.
