def add_data(self): if self.observer is None: end = start = lambda x:None else: start = self.observer.phase_start end = self.observer.phase_end pkg = self.new_pkg final_path = discern_loc(self.repo.base, pkg, self.repo.extension) tmp_path = pjoin(os.path.dirname(final_path), ".tmp.%i.%s" % (os.getpid(), os.path.basename(final_path))) self.tmp_path, self.final_path = tmp_path, final_path if not ensure_dirs(os.path.dirname(tmp_path), mode=0755): raise repo_interfaces.Failure("failed creating directory %r" % os.path.dirname(tmp_path)) try: start("generating tarball: %s" % tmp_path) tar.write_set(pkg.contents, tmp_path, compressor='bzip2', parallelize=True) end("tarball created", True) start("writing Xpak") # ok... got a tarball. now add xpak. xpak.Xpak.write_xpak(tmp_path, generate_attr_dict(pkg)) end("wrote Xpak", True) # ok... we tagged the xpak on. os.chmod(tmp_path, 0644) except Exception as e: try: unlink_if_exists(tmp_path) except EnvironmentError as e: logger.warning("failed removing %r: %r" % (tmp_path, e)) raise return True
def write(tempspace, finalpath, pkg, cset=None, platform='', maintainer='', compressor='gz'): # The debian-binary file if cset is None: cset = pkg.contents # The data.tar.gz file data_path = pjoin(tempspace, 'data.tar.gz') tar.write_set(cset, data_path, compressor='gz', absolute_paths=False) # Control data file control = {} control['Package'] = pkg.package #control['Section'] = pkg.category control['Version'] = pkg.fullver control['Architecture'] = platform if maintainer: control['Maintainer'] = maintainer control['Description'] = pkg.description pkgdeps = "%s" % (pkg.rdepends, ) if (pkgdeps is not None and pkgdeps != ""): control.update(parsedeps(pkgdeps)) control_ds = text_data_source("".join("%s: %s\n" % (k, v) for (k, v) in control.iteritems())) control_path = pjoin(tempspace, 'control.tar.gz') tar.write_set(contents.contentsSet([ fs.fsFile('control', {'size': len(control_ds.text_fileobj().getvalue())}, data=control_ds, uid=0, gid=0, mode=0644, mtime=time.time()) ]), control_path, compressor='gz') dbinary_path = pjoin(tempspace, 'debian-binary') with open(dbinary_path, 'w') as f: f.write("2.0\n") ret = spawn(['ar', '-r', finalpath, dbinary_path, data_path, control_path]) if ret != 0: unlink_if_exists(finalpath) raise Exception("failed creating archive: return code %s" % (ret, ))
def write(tempspace, finalpath, pkg, cset=None, platform='', maintainer='', compressor='gz'): # The debian-binary file if cset is None: cset = pkg.contents # The data.tar.gz file data_path = pjoin(tempspace, 'data.tar.gz') tar.write_set(cset, data_path, compressor='gz', absolute_paths=False) # Control data file control = {} control['Package'] = pkg.package #control['Section'] = pkg.category control['Version'] = pkg.fullver control['Architecture'] = platform if maintainer: control['Maintainer'] = maintainer control['Description'] = pkg.description pkgdeps = "%s" % (pkg.rdepends,) if (pkgdeps is not None and pkgdeps != ""): control.update(parsedeps(pkgdeps)) control_ds = text_data_source("".join("%s: %s\n" % (k, v) for (k, v) in control.iteritems())) control_path = pjoin(tempspace, 'control.tar.gz') tar.write_set( contents.contentsSet([ fs.fsFile('control', {'size':len(control_ds.text_fileobj().getvalue())}, data=control_ds, uid=0, gid=0, mode=0644, mtime=time.time()) ]), control_path, compressor='gz') dbinary_path = pjoin(tempspace, 'debian-binary') with open(dbinary_path, 'w') as f: f.write("2.0\n") ret = spawn(['ar', '-r', finalpath, dbinary_path, data_path, control_path]) if ret != 0: unlink_if_exists(finalpath) raise Exception("failed creating archive: return code %s" % (ret,))
def add_data(self): if self.observer is None: end = start = lambda x: None else: start = self.observer.phase_start end = self.observer.phase_end pkg = self.new_pkg final_path = discern_loc(self.repo.base, pkg, self.repo.extension) tmp_path = pjoin( os.path.dirname(final_path), ".tmp.%i.%s" % (os.getpid(), os.path.basename(final_path))) self.tmp_path, self.final_path = tmp_path, final_path if not ensure_dirs(os.path.dirname(tmp_path), mode=0755): raise repo_interfaces.Failure("failed creating directory %r" % os.path.dirname(tmp_path)) try: start("generating tarball: %s" % tmp_path) tar.write_set(pkg.contents, tmp_path, compressor='bzip2', parallelize=True) end("tarball created", True) start("writing Xpak") # ok... got a tarball. now add xpak. xpak.Xpak.write_xpak(tmp_path, generate_attr_dict(pkg)) end("wrote Xpak", True) # ok... we tagged the xpak on. os.chmod(tmp_path, 0644) except Exception as e: try: unlink_if_exists(tmp_path) except EnvironmentError as e: logger.warning("failed removing %r: %r" % (tmp_path, e)) raise return True