def __init__(self): self.builder = MainBuilder(user='******') self.debian_repos = RepRepRo(basedir=DEBIAN_BASEDIR) self.local_repos = RepRepRo(basedir=LOCAL_BASEDIR) self.srcbuild_opts = ['-S', '-sa', '-us', '-uc']
class MainManager(object): def __init__(self): self.builder = MainBuilder(user='******') self.debian_repos = RepRepRo(basedir=DEBIAN_BASEDIR) self.local_repos = RepRepRo(basedir=LOCAL_BASEDIR) self.srcbuild_opts = ['-S', '-sa', '-us', '-uc'] def staging_dir(self, dscfile): source, version = parse_dsc_filename(dscfile) return source def get_dscfile_from_changes(self, changes): dscfile = '' filenames = get_filenames_with_dcmd(changes) for filename in filenames: if filename.endswith('.dsc'): if not dscfile: dscfile = os.path.basename(filename) else: print "Already a dscfile", dscfile print "filename", filename raise RuntimeError, "too many .dsc's" if not dscfile: raise RuntimeError, "No .dsc found." return dscfile def build_source_package(self, dscfile): source, version = parse_dsc_filename(dscfile) upstream_version = version.split('-')[0] dirname = '%s-%s' % (source, upstream_version) here = os.getcwd() os.chdir(dirname) cmd = ['dpkg-buildpackage'] + self.srcbuild_opts subprocess.check_call(cmd) os.chdir(here) #self.builder.stage_resulting_changes(dscfile, 'source') changes = '%s_%s_source.changes' % (source, version) self.builder.stage_changes(source, changes, 'source', remove=False) return source def build_binary_packages(self, dscfile): self.builder.build(dscfile) def build(self, dscfile): source = self.build_source_package(dscfile) basename = os.path.basename(dscfile) here = os.getcwd() os.chdir(source) self.build_binary_packages(basename) os.chdir(here) def install_to_repos(self, dist, changes): dscfile = self.get_dscfile_from_changes(changes) source, version = parse_dsc_filename(dscfile) if os.path.isfile(changes): self.local_repos.include(dist, changes) self.build_binary_packages(dscfile) here = os.getcwd() os.chdir(source) changes_files = [f for f in os.listdir('.') if f.endswith('.changes')] for changes in changes_files: self.local_repos.include(dist, changes)
class PartialMirrorManager(object): def __init__(self): self.baseparent = path(config.get('main', 'homedir')) self.repos = RepRepRo() def _main_list_filename(self, dist): basename = '%s.pkgs' % dist directory = self.baseparent / 'debian/conf/pkgs' filename = directory / basename return filename def main_list_filename(self, dist): return str(self._main_list_filename(dist)) def get_selections(self, dist): filename = self._main_list_filename(dist) if not filename.isfile(): return {} else: fileobj = file(filename) return selections_to_dictionary(fileobj, install=True) def update_list(self, dist, data): master = self.get_selections(dist) filename = self._main_list_filename(dist) master.update(data) if not filename.isfile(): print "Creating new file: %s" % filename mainlist = file(filename, 'w') packages = master.keys() packages.sort() for package in packages: action = master[package] line = make_pkg_line(package, action) mainlist.write(line) mainlist.close() return True def update_repos(self, repos): if repos == 'debian': basedir = path(config.get('repos_debian', 'basedir')) elif repos == 'security': basedir = path(config.get('repos_security', 'basedir')) else: msg = "%s not a valid repository" % repos raise RuntimeError , msg self.repos.set_basedir(basedir) ready = self.is_process_ready() if not ready: raise RuntimeError , "repos process not ready" self.repos.update() return True def poll_process(self): return self.repos.check_proc() def is_process_ready(self): check = self.repos.check_proc() ready = False if check and check == 'empty': ready = True elif check == 0: self.repos.clean_proc() ready = True return ready
def __init__(self): self.baseparent = path(config.get('main', 'homedir')) self.repos = RepRepRo()
def __init__(self, baseparent): self.baseparent = path(baseparent) self.repos = RepRepRo()