neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ci/+/29116 )
Change subject: obs: add explicit --git-branch arg ......................................................................
obs: add explicit --git-branch arg
Change-Id: I612c18e533542f442e0571927fee8b8be9fb8c2b --- M scripts/obs/build_srcpkg.py M scripts/obs/lib/__init__.py M scripts/obs/lib/srcpkg.py M scripts/obs/update_obs_project.py 4 files changed, 19 insertions(+), 13 deletions(-)
Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved
diff --git a/scripts/obs/build_srcpkg.py b/scripts/obs/build_srcpkg.py index ccf82d7..ea7ab34 100755 --- a/scripts/obs/build_srcpkg.py +++ b/scripts/obs/build_srcpkg.py @@ -40,7 +40,7 @@ lib.metapkg.build(args.feed, args.conflict_version)
if args.package: - lib.srcpkg.build(args.package, args.feed, args.conflict_version, + lib.srcpkg.build(args.package, args.feed, args.git_branch, args.conflict_version, args.git_fetch)
diff --git a/scripts/obs/lib/__init__.py b/scripts/obs/lib/__init__.py index 193c248..401e2de 100644 --- a/scripts/obs/lib/__init__.py +++ b/scripts/obs/lib/__init__.py @@ -16,6 +16,9 @@ parser.add_argument("-f", "--feed", help="package feed (default: nightly)", metavar="FEED", default="nightly", choices=lib.config.feeds) + parser.add_argument("-b", "--git-branch", help="instead of using a branch" + " based on the feed, checkout this git branch", + metavar="BRANCH", default=None) parser.add_argument("-d", "--docker", help="run in docker to avoid installing required pkgs", action="store_true") diff --git a/scripts/obs/lib/srcpkg.py b/scripts/obs/lib/srcpkg.py index 468a240..ec29581 100644 --- a/scripts/obs/lib/srcpkg.py +++ b/scripts/obs/lib/srcpkg.py @@ -7,9 +7,11 @@ import lib.rpm_spec
-def checkout_for_feed(project, feed): +def checkout_for_feed(project, feed, branch=None): """ checkout a commit, either latest tag or master or 20YY branch """ - if feed == "latest": + if branch: + lib.git.checkout(project, branch) + elif feed == "latest": lib.git.checkout_latest_tag(project) elif feed == "nightly": lib.git.checkout_default_branch(project) @@ -118,10 +120,10 @@ f.write(f"{version}\n")
-def build(project, feed, conflict_version, fetch): +def build(project, feed, branch, conflict_version, fetch): lib.git.clone(project, fetch) lib.git.clean(project) - checkout_for_feed(project, feed) + checkout_for_feed(project, feed, branch) version = get_version_for_feed(project, feed, conflict_version) epoch = get_epoch(project) version_epoch = f"{epoch}:{version}" if epoch else version diff --git a/scripts/obs/update_obs_project.py b/scripts/obs/update_obs_project.py index 759acfe..02db7ce 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, package, conflict_version, fetch, is_meta_pkg): +def build_srcpkg(feed, branch, package, conflict_version, fetch, is_meta_pkg): global srcpkgs_built global srcpkgs_failed_build
@@ -42,7 +42,7 @@ if is_meta_pkg: version = lib.metapkg.build(feed, conflict_version) else: - version = lib.srcpkg.build(package, feed, conflict_version, fetch) + version = lib.srcpkg.build(package, feed, branch, conflict_version, fetch) srcpkgs_built[package] = version except Exception as ex: traceback.print_exception(type(ex), ex, ex.__traceback__) @@ -62,7 +62,7 @@ return False
-def build_srcpkg_if_needed(proj, feed, pkgs_remote, package, conflict_version, +def build_srcpkg_if_needed(proj, feed, branch, pkgs_remote, package, conflict_version, fetch, is_meta_pkg, skip_up_to_date): global srcpkgs_skipped
@@ -96,7 +96,7 @@ print(f"{package}: building source package (outdated:" f" {latest_version} <=> {obs_version} in OBS)")
- build_srcpkg(feed, package, conflict_version, fetch, is_meta_pkg) + build_srcpkg(feed, branch, package, conflict_version, fetch, is_meta_pkg)
def upload_srcpkg(proj, feed, pkgs_remote, package, version): @@ -105,18 +105,18 @@ lib.osc.update_package(proj, package, version)
-def build_srcpkgs(proj, feed, pkgs_remote, packages, conflict_version, fetch, +def build_srcpkgs(proj, feed, branch, pkgs_remote, packages, conflict_version, fetch, meta, skip_up_to_date): print() print("### Building source packages ###") print()
if meta: - build_srcpkg_if_needed(proj, feed, pkgs_remote, f"osmocom-{feed}", + build_srcpkg_if_needed(proj, feed, branch, pkgs_remote, f"osmocom-{feed}", conflict_version, fetch, True, skip_up_to_date)
for package in packages: - build_srcpkg_if_needed(proj, feed, pkgs_remote, package, + build_srcpkg_if_needed(proj, feed, branch, pkgs_remote, package, conflict_version, fetch, False, skip_up_to_date)
@@ -191,6 +191,7 @@ args = parser.parse_args() proj = args.obs_project feed = args.feed + branch = args.git_branch packages = parse_packages(args.package)
lib.set_cmds_verbose(args.verbose) @@ -205,7 +206,7 @@
pkgs_remote = lib.osc.get_remote_pkgs(proj)
- build_srcpkgs(proj, feed, pkgs_remote, packages, args.conflict_version, + build_srcpkgs(proj, feed, branch, pkgs_remote, packages, args.conflict_version, args.git_fetch, args.meta, args.skip_up_to_date) upload_srcpkgs(proj, feed, pkgs_remote) exit_with_summary()