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 build_egg(ipkg, source_root=".", path=None): meta = PackageMetadata.from_ipkg(ipkg) egg_info = EggInfo.from_ipkg(ipkg) # FIXME: fix egg name if path is None: egg = egg_filename(os.path.join("dist", meta.fullname)) else: egg = egg_filename(os.path.join(path, meta.fullname)) ensure_dir(egg) egg_info = EggInfo.from_ipkg(ipkg) zid = compat.ZipFile(egg, "w", compat.ZIP_DEFLATED) try: for filename, cnt in egg_info.iter_meta(): zid.writestr(os.path.join("EGG-INFO", filename), cnt) ipkg.path_variables["sitedir"] = "." file_sections = ipkg.resolve_paths(source_root) for kind, source, target in iter_files(file_sections): if not kind in ["executables"]: zid.write(source, target) pprint("PINK", "Byte-compiling ...") for kind, source, target in iter_files(file_sections): if kind in ["pythonfiles"]: zid.writestr("%sc" % target, bcompile(source)) finally: zid.close() return
def __init__(self, db_location): self._location = db_location self._first_time = False if not os.path.exists(db_location): ensure_dir(db_location) self._reset() else: try: self.db = self._load_existing_cache(db_location) except Exception: e = extract_exception() warnings.warn("Resetting invalid cached db: (reason: %r)" % e) self._reset()
def create_tarball(pkg, top_node, tarname=None, topdir=None): if tarname is None: basename = tarball_basename(pkg.name, pkg.version) tarname = "%s.tar.gz" % basename if topdir is None: topdir = "%s-%s" % (pkg.name, pkg.version) ensure_dir(tarname) tf = tarfile.open(tarname, "w:gz") try: for file in file_list(pkg, top_node): tf.add(file, os.path.join(topdir, file)) finally: tf.close() return tarname
def __init__(self, db_location): self._location = db_location self._first_time = False if not os.path.exists(db_location): ensure_dir(db_location) self._reset() else: fid = open(db_location, "rb") try: self.db = cPickle.load(fid) if not self._has_valid_magic(self.db): warnings.warn("Resetting invalid cached db") self._reset() finally: fid.close() version = self.db["version"] if version != self.__version__: warnings.warn("Resetting invalid version of cached db") self._reset()
def build_bento_files(pkg): s = get_configured_state() scheme = s.paths if pkg.config_py is not None: tmp_config = os.path.join(BUILD_DIR, "__tmp_config.py") fid = open(tmp_config, "w") try: for name, value in scheme.items(): fid.write('%s = "%s"\n' % (name.upper(), subst_vars(value, scheme))) finally: fid.close() target = os.path.join(os.path.dirname(tmp_config), pkg.config_py) ensure_dir(target) rename(tmp_config, target) section = InstalledSection("bentofiles", "config", os.path.join("$_srcrootdir", BUILD_DIR), "$sitedir", [pkg.config_py]) return {"bentofiles": section} else: return {}
def create_wininst(ipkg, src_root_node, build_node, egg_info=None, 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(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.abspath()) 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 build_egg(ipkg, ctx, source_root, path=None): meta = PackageMetadata.from_ipkg(ipkg) egg_info = EggInfo.from_ipkg(ipkg, ctx.build_node) # FIXME: fix egg name if path is None: egg = egg_filename(os.path.join("dist", meta.fullname)) else: egg = egg_filename(os.path.join(path, meta.fullname)) ensure_dir(egg) zid = compat.ZipFile(egg, "w", compat.ZIP_DEFLATED) try: ipkg.update_paths({"prefix": source_root.abspath(), "eprefix": source_root.abspath(), "sitedir": source_root.abspath()}) for filename, cnt in egg_info.iter_meta(ctx.build_node): zid.writestr(os.path.join("EGG-INFO", filename), cnt) file_sections = ipkg.resolve_paths(source_root) for kind, source, target in iter_files(file_sections): if not kind in ["executables"]: zid.write(source.abspath(), target.path_from(source_root)) pprint("PINK", "Byte-compiling ...") for kind, source, target in iter_files(file_sections): if kind in ["pythonfiles"]: try: bytecode = bcompile(source.abspath()) except PyCompileError: e = extract_exception() warnings.warn("Error byte-compiling %r" % source.abspath()) else: zid.writestr("%sc" % target.path_from(source_root), bcompile(source.abspath())) finally: zid.close() return