aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2022-08-17 01:20:29 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2022-08-17 15:32:07 +0200
commit872dbbd58be21a52ab9f2c007bb4db56d962f604 (patch)
tree71dd0c609e44e3cb7a0ec48dce5c18328069850e
parent71bafe74d350ae17d119bcedb9e0d3575f4a64a0 (diff)
obs: add explicit --git-branch arg
-rwxr-xr-xscripts/obs/build_srcpkg.py2
-rw-r--r--scripts/obs/lib/__init__.py3
-rw-r--r--scripts/obs/lib/srcpkg.py10
-rwxr-xr-xscripts/obs/update_obs_project.py17
4 files changed, 19 insertions, 13 deletions
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 @@ def main():
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 @@ def add_shared_arguments(parser):
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.debian
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 @@ def write_tarball_version(project, version):
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 @@ def parse_packages(packages_arg):
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 @@ def build_srcpkg(feed, package, conflict_version, fetch, is_meta_pkg):
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 @@ def is_up_to_date(obs_version, git_latest_version):
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 @@ def build_srcpkg_if_needed(proj, feed, pkgs_remote, package, conflict_version,
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 @@ def upload_srcpkg(proj, feed, pkgs_remote, package, version):
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 @@ def main():
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 @@ def main():
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()