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

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