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 _generate_env_data(self, env_dict): data = [] for key, val in env_dict.iteritems(): if key in self.dont_export_vars: continue if not key[0].isalpha(): raise KeyError("%s: bash doesn't allow digits as the first char" % (key,)) if not isinstance(val, basestring): raise ValueError("_generate_env_data was fed a bad value; key=%s, val=%s" % (key, val)) if val.isalnum(): data.append("%s=%s" % (key, val)) elif "'" not in val: data.append("%s='%s'" % (key, val)) else: data.append("%s=$'%s'" % (key, val.replace("'", "\\'"))) data = text_data_source('export %s' % (' '.join(data),)) return data.bytes_fileobj()
def ebuild(self): return text_data_source(self._ebuild)