1
0
Fork 0

obs: don't pass feed through functions

Change-Id: I9124d33c45ef3fef48666b485fd169eec0eb393a
This commit is contained in:
Oliver Smith 2023-03-15 12:24:20 +01:00
parent e4313bc6b7
commit dd36e9f489
6 changed files with 48 additions and 40 deletions

View File

@ -41,10 +41,10 @@ def main():
lib.remove_temp()
if args.meta:
lib.metapkg.build(args.feed, args.conflict_version)
lib.metapkg.build(args.conflict_version)
if args.package:
lib.srcpkg.build(args.package, args.feed, args.git_branch, args.conflict_version,
lib.srcpkg.build(args.package, args.git_branch, args.conflict_version,
args.git_fetch, args.gerrit_id)

View File

@ -22,8 +22,9 @@ def control_add_depend(project, pkgname, version):
lib.run_cmd(cmd, cwd=repo_path)
def changelog_add_entry(project, feed, version):
def changelog_add_entry(project, version):
""" :param version: for the new changelog entry """
feed = lib.args.feed
repo_path = lib.git.get_repo_path(project)
changelog_path = f"{repo_path}/debian/changelog"
@ -84,7 +85,7 @@ def get_last_version_from_changelog(project):
return ret
def changelog_add_entry_if_needed(project, feed, version):
def changelog_add_entry_if_needed(project, version):
""" Adjust the changelog if the version in the changelog is different from
the given version. """
version_changelog = get_last_version_from_changelog(project)
@ -93,7 +94,7 @@ def changelog_add_entry_if_needed(project, feed, version):
print(f"{project}: adding debian/changelog entry ({version_changelog} =>"
f" {version})")
changelog_add_entry(project, feed, version)
changelog_add_entry(project, version)
def build_source_package(project):

View File

@ -7,17 +7,17 @@ import lib.debian
import lib.rpm_spec
def get_conflicts(feed):
def get_conflicts():
ret = []
for f in lib.config.feeds:
if f == feed:
if f == lib.args.feed:
continue
ret += [f"osmocom-{f}"]
return ret
def prepare_source_dir(feed):
path = f"{lib.config.path_cache}/osmocom-{feed}"
def prepare_source_dir():
path = f"{lib.config.path_cache}/osmocom-{lib.args.feed}"
if os.path.exists(path):
lib.run_cmd(["rm", "-rf", path])
@ -26,9 +26,10 @@ def prepare_source_dir(feed):
os.makedirs(f"{path}/contrib")
def generate_debian_pkg(feed, version):
def generate_debian_pkg(version):
feed = lib.args.feed
path = f"{lib.config.path_cache}/osmocom-{feed}"
conflicts = get_conflicts(feed)
conflicts = get_conflicts()
with open(f"{path}/debian/control", "w") as f:
f.write(f"Source: osmocom-{feed}\n")
@ -63,11 +64,12 @@ def generate_debian_pkg(feed, version):
f.write("10\n")
def generate_rpm_spec(feed, version):
def generate_rpm_spec(version):
feed = lib.args.feed
print(f"osmocom-{feed}: generating rpm spec file")
path = (f"{lib.config.path_cache}/osmocom-{feed}/contrib/osmocom-{feed}"
".spec.in")
conflicts = get_conflicts(feed)
conflicts = get_conflicts()
with open(path, "w") as f:
f.write(f"Name: osmocom-{feed}\n")
@ -83,13 +85,14 @@ def generate_rpm_spec(feed, version):
f.write("%files\n")
def build(feed, conflict_version):
def build(conflict_version):
feed = lib.args.feed
pkgname = f"osmocom-{feed}"
version = conflict_version if conflict_version else "1.0.0"
print(f"{pkgname}: generating meta package {version}")
prepare_source_dir(feed)
generate_debian_pkg(feed, version)
prepare_source_dir()
generate_debian_pkg(version)
os.makedirs(lib.get_output_path(pkgname))
lib.remove_cache_extra_files()
@ -97,7 +100,7 @@ def build(feed, conflict_version):
lib.debian.build_source_package(pkgname)
lib.debian.move_files_to_output(pkgname)
generate_rpm_spec(feed, version)
generate_rpm_spec(version)
lib.rpm_spec.copy_to_output(pkgname)
lib.remove_cache_extra_files()

View File

@ -64,7 +64,8 @@ def get_remote_pkgs():
return ret.output.rstrip().split("\n")
def get_package_version(package, feed):
def get_package_version(package):
feed = lib.args.feed
proj = lib.args.obs_project
print(f"{package}: getting OBS version")
ret = run_osc(["list", proj, os.path.basename(package)])

View File

@ -9,8 +9,9 @@ import lib.debian
import lib.rpm_spec
def checkout_for_feed(project, feed, branch=None):
def checkout_for_feed(project, branch=None):
""" checkout a commit, either latest tag or master or 20YY branch """
feed = lib.args.feed
if branch:
lib.git.checkout(project, f"origin/{branch}")
elif feed == "latest":
@ -55,8 +56,8 @@ def get_git_version(project):
return ret.output
def get_version_for_feed(project, feed, conflict_version):
if feed == "latest":
def get_version_for_feed(project, conflict_version):
if lib.args.feed == "latest":
# There's always a tag if we are here. If there was none, the build
# would have been skipped for latest.
ret = lib.git.get_latest_tag(project)
@ -130,14 +131,15 @@ def write_commit_txt(project):
pathlib.Path(f"{output_path}/commit_{commit}.txt").touch()
def build(project, feed, branch, conflict_version, fetch, gerrit_id=0):
def build(project, branch, conflict_version, fetch, gerrit_id=0):
feed = lib.args.feed
lib.git.clone(project, fetch)
lib.git.clean(project)
if gerrit_id > 0:
lib.git.checkout_from_review(project, gerrit_id)
else:
checkout_for_feed(project, feed, branch)
version = get_version_for_feed(project, feed, conflict_version)
checkout_for_feed(project, branch)
version = get_version_for_feed(project, conflict_version)
epoch = get_epoch(project)
version_epoch = f"{epoch}:{version}" if epoch else version
has_rpm_spec = lib.rpm_spec.get_spec_in_path(project) is not None
@ -151,7 +153,7 @@ def build(project, feed, branch, conflict_version, fetch, gerrit_id=0):
if has_rpm_spec:
lib.rpm_spec.add_depend(project, metapkg, conflict_version)
lib.debian.changelog_add_entry_if_needed(project, feed, version_epoch)
lib.debian.changelog_add_entry_if_needed(project, version_epoch)
os.makedirs(lib.get_output_path(project))
lib.remove_cache_extra_files()

View File

@ -32,7 +32,7 @@ def parse_packages(packages_arg):
return ret
def build_srcpkg(feed, branch, package, conflict_version, fetch, is_meta_pkg):
def build_srcpkg(branch, package, conflict_version, fetch, is_meta_pkg):
global srcpkgs_built
global srcpkgs_failed_build
@ -40,9 +40,9 @@ def build_srcpkg(feed, branch, package, conflict_version, fetch, is_meta_pkg):
try:
if is_meta_pkg:
version = lib.metapkg.build(feed, conflict_version)
version = lib.metapkg.build(conflict_version)
else:
version = lib.srcpkg.build(package, feed, branch, conflict_version, fetch)
version = lib.srcpkg.build(package, branch, conflict_version, fetch)
srcpkgs_built[package] = version
except Exception as ex:
traceback.print_exception(type(ex), ex, ex.__traceback__)
@ -62,9 +62,10 @@ def is_up_to_date(obs_version, git_latest_version):
return False
def build_srcpkg_if_needed(feed, branch, pkgs_remote, package, conflict_version,
def build_srcpkg_if_needed(branch, pkgs_remote, package, conflict_version,
fetch, is_meta_pkg, skip_up_to_date):
global srcpkgs_skipped
feed = lib.args.feed
if feed in ["master", "latest"]:
""" Check if we can skip this package by comparing the OBS version with
@ -85,7 +86,7 @@ def build_srcpkg_if_needed(feed, branch, pkgs_remote, package, conflict_version,
if os.path.basename(package) not in pkgs_remote:
print(f"{package}: building source package (not in OBS)")
else:
obs_version = lib.osc.get_package_version(package, feed)
obs_version = lib.osc.get_package_version(package)
if is_up_to_date(obs_version, latest_version):
if skip_up_to_date:
print(f"{package}: skipping ({obs_version} is up-to-date)")
@ -101,31 +102,32 @@ def build_srcpkg_if_needed(feed, branch, pkgs_remote, package, conflict_version,
else:
print(f"{package}: building source package (feed is {feed})")
build_srcpkg(feed, branch, package, conflict_version, fetch, is_meta_pkg)
build_srcpkg(branch, package, conflict_version, fetch, is_meta_pkg)
def upload_srcpkg(feed, pkgs_remote, package, version):
def upload_srcpkg(pkgs_remote, package, version):
if os.path.basename(package) not in pkgs_remote:
lib.osc.create_package(package)
lib.osc.update_package(package, version)
def build_srcpkgs(feed, branch, pkgs_remote, packages, conflict_version, fetch,
def build_srcpkgs(branch, pkgs_remote, packages, conflict_version, fetch,
meta, skip_up_to_date):
print()
print("### Building source packages ###")
print()
if meta:
build_srcpkg_if_needed(feed, branch, pkgs_remote, f"osmocom-{feed}",
feed = lib.args.feed
build_srcpkg_if_needed(branch, pkgs_remote, f"osmocom-{feed}",
conflict_version, fetch, True, skip_up_to_date)
for package in packages:
build_srcpkg_if_needed(feed, branch, pkgs_remote, package,
build_srcpkg_if_needed(branch, pkgs_remote, package,
conflict_version, fetch, False, skip_up_to_date)
def upload_srcpkgs(feed, pkgs_remote):
def upload_srcpkgs(pkgs_remote):
global srcpkgs_built
global srcpkgs_failed_upload
global srcpkgs_updated
@ -142,7 +144,7 @@ def upload_srcpkgs(feed, pkgs_remote):
for package, version in srcpkgs_built.items():
try:
upload_srcpkg(feed, pkgs_remote, package, version)
upload_srcpkg(pkgs_remote, package, version)
srcpkgs_updated += [package]
except Exception as ex:
traceback.print_exception(type(ex), ex, ex.__traceback__)
@ -194,7 +196,6 @@ def main():
help="package name, e.g. libosmocore or open5gs,"
" default is all packages")
args = parser.parse_args()
feed = args.feed
branch = args.git_branch
packages = parse_packages(args.package)
@ -214,9 +215,9 @@ def main():
pkgs_remote = lib.osc.get_remote_pkgs()
build_srcpkgs(feed, branch, pkgs_remote, packages, args.conflict_version,
build_srcpkgs(branch, pkgs_remote, packages, args.conflict_version,
args.git_fetch, args.meta, args.skip_up_to_date)
upload_srcpkgs(feed, pkgs_remote)
upload_srcpkgs(pkgs_remote)
exit_with_summary()