docs: def init_shutit_map(self):
  		"""Initializes the module map of shutit based on the modules
  		we have gathered.
  
  		Checks we have core modules
  		Checks for duplicate module details.
  		Sets up common config.
  		Sets up map of modules.
  		"""
  		shutit_global.shutit_global_object.yield_to_draw()
  		modules = self.shutit_modules
  		# Have we got anything to process outside of special modules?
  		if len([mod for mod in modules if mod.run_order > 0]) < 1:
  			self.log(modules,level=logging.DEBUG)
  			path = ':'.join(self.host['shutit_module_path'])
  			self.log('\nIf you are new to ShutIt, see:\n\n\thttp://ianmiell.github.io/shutit/\n\nor try running\n\n\tshutit skeleton\n\n',level=logging.INFO)
  			if path == '':
  				self.fail('No ShutIt modules aside from core ones found and no ShutIt module path given.\nDid you set --shutit_module_path/-m wrongly?\n') # pragma: no cover
  			elif path == '.':
  				self.fail('No modules aside from core ones found and no ShutIt module path given apart from default (.).\n\n- Did you set --shutit_module_path/-m?\n- Is there a STOP* file in your . dir?') # pragma: no cover
  			else:
  				self.fail('No modules aside from core ones found and no ShutIt modules in path:\n\n' + path + '\n\nor their subfolders. Check your --shutit_module_path/-m setting and check that there are ShutIt modules below without STOP* files in any relevant directories.') # pragma: no cover
  
  		self.log('PHASE: base setup', level=logging.DEBUG)
  
  		run_orders = {}
  		has_core_module = False
  		for module in modules:
  			assert isinstance(module, ShutItModule), shutit_util.print_debug()
  			if module.module_id in self.shutit_map:
  				self.fail('Duplicated module id: ' + module.module_id + '\n\nYou may want to check your --shutit_module_path setting') # pragma: no cover
  			if module.run_order in run_orders:
  				self.fail('Duplicate run order: ' + str(module.run_order) + ' for ' + module.module_id + ' and ' + run_orders[module.run_order].module_id + '\n\nYou may want to check your --shutit_module_path setting') # pragma: no cover
  			if module.run_order == 0:
  				has_core_module = True
  			self.shutit_map[module.module_id] = run_orders[module.run_order] = module
  			self.shutit_file_map[module.module_id] = get_module_file(self, module)
  
  		if not has_core_module:
  			self.fail('No module with run_order=0 specified! This is required.')