docs: def make_python_zip():
      '''
      Search for all the python related files, and construct the pythonXX.zip
      According to
      # http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html
      site-packages, config and lib-dynload will be not included.
      '''
  
      if not exists('private'):
          print('No compiled python is present to zip, skipping.')
          return
  
      global python_files
      d = realpath(join('private', 'lib', 'python2.7'))
  
      def select(fn):
          if is_blacklist(fn):
              return False
          fn = realpath(fn)
          assert(fn.startswith(d))
          fn = fn[len(d):]
          if (fn.startswith('/site-packages/')
                  or fn.startswith('/config/')
                  or fn.startswith('/lib-dynload/')
                  or fn.startswith('/libpymodules.so')):
              return False
          return fn
  
      # get a list of all python file
      python_files = [x for x in listfiles(d) if select(x)]
  
      # create the final zipfile
      zfn = join('private', 'lib', 'python27.zip')
      zf = ZipFile(zfn, 'w')
  
      # put all the python files in it
      for fn in python_files:
          afn = fn[len(d):]
          zf.write(fn, afn)
      zf.close()