docs: def build_includes(cls, include_packages):
          """
          cx_freeze doesn't support the star (*) method of sub-module inclusion, so all submodules must be included
          explicitly.
  
          Example (From SaltStack 2014.7):
  
              salt
              salt.fileserver
              salt.fileserver.gitfs
              salt.fileserver.hgfs
              salt.fileserver.minionfs
              salt.fileserver.roots
              etc...
  
          :param include_packages: List of package references to recurse for subpackages
          """
          includes, package_root_paths = cls._split_packages(include_packages)
          for package_path, package_name in six.iteritems(package_root_paths):
              includes.add(package_name)
              if re.search(r'__init__.py.*$', package_path):
                  # Looks like a package.  Walk the directory and see if there are more.
                  package_modules = set()
                  for root, dirs, files in os.walk(os.path.dirname(package_path)):
                      if '__init__.py' in files:
                          package_modules.add(root)
                          for module in [f for f in files if f != u"__init__.py" and f.endswith('.py')]:
                              package_modules.add(os.path.join(root, module))
  
                  common_prefix = os.path.commonprefix(package_modules)
                  common_dir = os.path.dirname(common_prefix)
                  package_tails = set([f[len(common_dir) + len(os.sep):] for f in package_modules])
                  package_names = set([os.path.splitext(tail)[0].replace(os.sep, '.') for tail in package_tails])
                  includes |= package_names
          return includes