forked from osmocom/osmo-ci
obs: don't pass feed through functions
Change-Id: I9124d33c45ef3fef48666b485fd169eec0eb393a
This commit is contained in:
parent
e4313bc6b7
commit
dd36e9f489
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)])
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue