osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ci/+/31928 )
Change subject: obs: don't pass feed through functions ......................................................................
obs: don't pass feed through functions
Change-Id: I9124d33c45ef3fef48666b485fd169eec0eb393a --- M scripts/obs/build_srcpkg.py M scripts/obs/lib/debian.py M scripts/obs/lib/metapkg.py M scripts/obs/lib/osc.py M scripts/obs/lib/srcpkg.py M scripts/obs/update_obs_project.py 6 files changed, 57 insertions(+), 40 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/28/31928/1
diff --git a/scripts/obs/build_srcpkg.py b/scripts/obs/build_srcpkg.py index 869b8ef..597092c 100755 --- a/scripts/obs/build_srcpkg.py +++ b/scripts/obs/build_srcpkg.py @@ -41,10 +41,10 @@ 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)
diff --git a/scripts/obs/lib/debian.py b/scripts/obs/lib/debian.py index 3bba3ec..8a82e16 100644 --- a/scripts/obs/lib/debian.py +++ b/scripts/obs/lib/debian.py @@ -22,8 +22,9 @@ 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 @@ 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 @@
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): diff --git a/scripts/obs/lib/metapkg.py b/scripts/obs/lib/metapkg.py index dd261de..531dab6 100644 --- a/scripts/obs/lib/metapkg.py +++ b/scripts/obs/lib/metapkg.py @@ -7,17 +7,17 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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() diff --git a/scripts/obs/lib/osc.py b/scripts/obs/lib/osc.py index 6a1d42b..c2f6ad4 100644 --- a/scripts/obs/lib/osc.py +++ b/scripts/obs/lib/osc.py @@ -64,7 +64,8 @@ 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)]) diff --git a/scripts/obs/lib/srcpkg.py b/scripts/obs/lib/srcpkg.py index e888ffa..4816363 100644 --- a/scripts/obs/lib/srcpkg.py +++ b/scripts/obs/lib/srcpkg.py @@ -9,8 +9,9 @@ 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 @@ 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 @@ 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 @@ 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() diff --git a/scripts/obs/update_obs_project.py b/scripts/obs/update_obs_project.py index 5718a45..a6f8643 100755 --- a/scripts/obs/update_obs_project.py +++ b/scripts/obs/update_obs_project.py @@ -32,7 +32,7 @@ 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 @@
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 @@ 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 @@ 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 @@ 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 @@
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 @@ 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 @@
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()