docs: def makeindex_runs(self, gloss_files):
          '''
          Check for each glossary if it has to be regenerated
          with "makeindex".
  
          @return: True if "makeindex" was called.
          '''
          gloss_changed = False
          for gloss in self.glossaries:
              make_gloss = False
              ext_i, ext_o = self.glossaries[gloss]
              fname_in = '%s.%s' % (self.project_name, ext_i)
              fname_out = '%s.%s' % (self.project_name, ext_o)
              if re.search('No file %s.' % fname_in, self.out):
                  make_gloss = True
              if not os.path.isfile(fname_out):
                  make_gloss = True
              else:
                  with open(fname_out) as fobj:
                      try:
                          if gloss_files[gloss] != fobj.read():
                              make_gloss = True
                      except KeyError:
                          make_gloss = True
  
              if make_gloss:
                  self.log.info('Running makeindex (%s)...' % gloss)
                  try:
                      cmd = ['makeindex', '-q', '-s',
                             '%s.ist' % self.project_name,
                             '-o', fname_in, fname_out]
                      with open(os.devnull, 'w') as null:
                          Popen(cmd, stdout=null).wait()
                  except OSError:
                      self.log.error(NO_LATEX_ERROR % 'makeindex')
                      sys.exit(1)
                  gloss_changed = True
  
          return gloss_changed