def main(): try: arch = sys.argv[1] except IndexError: arch = 'x86_64' pkgs = [] for spec in SPECS: pkg = SimpleRpmBuild(spec.name, spec.version, spec.release, [arch]) pkg.epoch = spec.epoch if spec.recommends: # Skip packages that require weak deps but an older version of RPM is being used if not can_use_rpm_weak_deps or not can_use_rpm_weak_deps(): continue for recommend in spec.recommends: pkg.add_recommends(recommend) pkgs.append(pkg) repo = YumRepoBuild(pkgs) repo.make(arch) for pkg in pkgs: pkg.clean() print(repo.repoDir)
pkgs.append(rpm) # Used for remove tests. Multiple packages require TestM therefore TestM cannot be removed if package is required by # other package. rpm = SimpleRpmBuild('TestM', '1.0.0', '1', ['noarch']) pkgs.append(rpm) # Requirement of TestK and TestL. rpm = SimpleRpmBuild('TestN', '1.0.0', '1', ['noarch']) pkgs.append(rpm) # Used in upgrade tests rpm = SimpleRpmBuild('TestO', '1.0.0', '1', ['noarch']) rpm.add_requires('TestC') rpm.add_provides('ProvideA') pkgs.append(rpm) repo = YumRepoBuild(pkgs) repo.repoDir = repo_dir repo.make("noarch") shutil.rmtree(temp_dir) shutil.rmtree(os.path.join(repo_dir, 'repodata')) subprocess.check_call(['createrepo_c', '-g', work_dir + '/comps-f23.xml', repo_dir]) print("DNF repo is located at %s" % repo.repoDir)
repo_dir = os.path.join(work_dir, file_base_mane) temp_dir = os.path.join(repo_dir, 'temp') if not os.path.exists(repo_dir): os.makedirs(repo_dir) if not os.path.exists(temp_dir): os.makedirs(temp_dir) os.chdir(temp_dir) pkgs = [] rpm = SimpleRpmBuild('TestA', '1.0.0', '1', ['noarch']) rpm.add_requires('(TestB or TestC)') rpm.add_recommends('TestC') pkgs.append(rpm) rpm = SimpleRpmBuild('TestB', '1.0.0', '1', ['noarch']) pkgs.append(rpm) rpm = SimpleRpmBuild('TestC', '1.0.0', '1', ['noarch']) pkgs.append(rpm) repo = YumRepoBuild(pkgs) repo.repoDir = repo_dir repo.make("noarch") shutil.rmtree(temp_dir)
def create_repo(arch='x86_64'): pkgs = [] for spec in SPECS: pkg = SimpleRpmBuild(spec.name, spec.version, spec.release, [spec.arch or arch]) pkg.epoch = spec.epoch if spec.recommends: # Skip packages that require weak deps but an older version of RPM is being used if not can_use_rpm_weak_deps or not can_use_rpm_weak_deps(): continue for recommend in spec.recommends: pkg.add_recommends(recommend) pkgs.append(pkg) # HACK: EPEL6 version of rpmfluff can't do multi-arch packaging, so we'll just build separately and copy # the noarch stuff in, since we don't currently care about the repodata for noarch if sys.version_info[0:2] == (2, 6): noarch_repo = YumRepoBuild( [p for p in pkgs if 'noarch' in p.get_build_archs()]) noarch_repo.make('noarch') repo = YumRepoBuild([p for p in pkgs if arch in p.get_build_archs()]) repo.make(arch) subprocess.call("cp {0}/*.rpm {1}".format(noarch_repo.repoDir, repo.repoDir), shell=True) else: repo = YumRepoBuild(pkgs) repo.make(arch, 'noarch') for pkg in pkgs: pkg.clean() return repo.repoDir