docs: def make_tar(tfn, source_dirs, ignore_path=[], optimize_python=True):
      '''
      Make a zip file `fn` from the contents of source_dis.
      '''
  
      # selector function
      def select(fn):
          rfn = realpath(fn)
          for p in ignore_path:
              if p.endswith('/'):
                  p = p[:-1]
              if rfn.startswith(p):
                  return False
          if rfn in python_files:
              return False
          return not is_blacklist(fn)
  
      # get the files and relpath file of all the directory we asked for
      files = []
      for sd in source_dirs:
          sd = realpath(sd)
          compile_dir(sd, optimize_python=optimize_python)
          files += [(x, relpath(realpath(x), sd)) for x in listfiles(sd)
                    if select(x)]
  
      # create tar.gz of thoses files
      tf = tarfile.open(tfn, 'w:gz', format=tarfile.USTAR_FORMAT)
      dirs = []
      for fn, afn in files:
          dn = dirname(afn)
          if dn not in dirs:
              # create every dirs first if not exist yet
              d = ''
              for component in split(dn):
                  d = join(d, component)
                  if d.startswith('/'):
                      d = d[1:]
                  if d == '' or d in dirs:
                      continue
                  dirs.append(d)
                  tinfo = tarfile.TarInfo(d)
                  tinfo.type = tarfile.DIRTYPE
                  tf.addfile(tinfo)
  
          # put the file
          tf.add(fn, afn)
      tf.close()