def create_wininst(ipkg, egg_info=None, src_root_dir=".", wininst=None): meta = PackageMetadata.from_ipkg(ipkg) if egg_info is None: egg_info = EggInfo.from_ipkg(ipkg) # XXX: do this correctly, maybe use same as distutils ? if wininst is None: wininst = wininst_filename(os.path.join("dist", meta.fullname)) ensure_dir(wininst) egg_info_dir = os.path.join("PURELIB", egg_info_dirname(meta.fullname)) fid, arcname = tempfile.mkstemp(prefix="zip") zid = compat.ZipFile(arcname, "w", compat.ZIP_DEFLATED) try: for filename, cnt in egg_info.iter_meta(): zid.writestr(os.path.join(egg_info_dir, filename), cnt) ipkg.path_variables["bindir"] = "SCRIPTS" ipkg.path_variables["sitedir"] = "PURELIB" ipkg.path_variables["gendatadir"] = "$sitedir" file_sections = ipkg.resolve_paths(src_root_dir) def write_content(source, target, kind): zid.write(source, target) for kind, source, target in iter_files(file_sections): write_content(source, target, kind) finally: zid.close() os.close(fid) create_exe(ipkg, arcname, wininst)
def create_wininst(ipkg, src_root_node, build_node, egg_info=None, wininst=None, output_dir=None): meta = PackageMetadata.from_ipkg(ipkg) if egg_info is None: egg_info = EggInfo.from_ipkg(ipkg, build_node) # XXX: do this correctly, maybe use same as distutils ? if wininst is None: wininst = os.path.join(output_dir, wininst_filename(meta)) else: wininst = os.path.join(output_dir, wininst) bento.utils.path.ensure_dir(wininst) egg_info_dir = os.path.join("PURELIB", egg_info_dirname(meta.fullname)) fid, arcname = tempfile.mkstemp(prefix="zip") zid = compat.ZipFile(arcname, "w", compat.ZIP_DEFLATED) try: for filename, cnt in egg_info.iter_meta(build_node): zid.writestr(os.path.join(egg_info_dir, filename), cnt) wininst_paths = compat.defaultdict(lambda: r"DATA\share\$pkgname") wininst_paths.update({ "bindir": "SCRIPTS", "sitedir": "PURELIB", "gendatadir": "$sitedir" }) d = {} for k in ipkg._path_variables: d[k] = wininst_paths[k] ipkg.update_paths(d) file_sections = ipkg.resolve_paths(src_root_node) def write_content(source, target, kind): zid.write(source.abspath(), target.abspath()) for kind, source, target in iter_files(file_sections): write_content(source, target, kind) finally: zid.close() os.close(fid) create_exe(ipkg, arcname, wininst)
def create_wininst(ipkg, src_root_node, build_node, egg_info=None, wininst=None, output_dir=None): meta = PackageMetadata.from_ipkg(ipkg) if egg_info is None: egg_info = EggInfo.from_ipkg(ipkg, build_node) # XXX: do this correctly, maybe use same as distutils ? if wininst is None: wininst = os.path.join(output_dir, wininst_filename(meta)) else: wininst = os.path.join(output_dir, wininst) bento.utils.path.ensure_dir(wininst) egg_info_dir = os.path.join("PURELIB", egg_info_dirname(meta.fullname)) fid, arcname = tempfile.mkstemp(prefix="zip") zid = compat.ZipFile(arcname, "w", compat.ZIP_DEFLATED) try: for filename, cnt in egg_info.iter_meta(build_node): zid.writestr(os.path.join(egg_info_dir, filename), cnt) wininst_paths = compat.defaultdict(lambda: r"DATA\share\$pkgname") wininst_paths.update({"bindir": "SCRIPTS", "sitedir": "PURELIB", "gendatadir": "$sitedir"}) d = {} for k in ipkg._path_variables: d[k] = wininst_paths[k] ipkg.update_paths(d) file_sections = ipkg.resolve_paths(src_root_node) def write_content(source, target, kind): zid.write(source.abspath(), target.abspath()) for kind, source, target in iter_files(file_sections): write_content(source, target, kind) finally: zid.close() os.close(fid) create_exe(ipkg, arcname, wininst)