1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-02-21 01:32:10 +01:00

Move running obs_scm_bridge into run_obs_scm_bridge() function

This commit is contained in:
Daniel Mach 2024-11-28 14:44:29 +01:00
parent 0765997028
commit 6d91083413
3 changed files with 24 additions and 10 deletions

View File

@ -5387,7 +5387,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
from .core import parseRevisionOption
from .core import print_request_list
from .core import revision_is_empty
from .core import run_external
from .core import run_obs_scm_bridge
from .core import show_files_meta
from .core import show_project_meta
from .core import show_scmsync
@ -5506,10 +5506,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
scm_url = show_scmsync(apiurl, project)
if scm_url is not None and not opts.native_obs_package:
if not os.path.isfile('/usr/lib/obs/service/obs_scm_bridge'):
raise oscerr.OscIOError(None, 'Install the obs-scm-bridge package to work on packages managed in scm (git)!')
os.putenv("OSC_VERSION", get_osc_version())
run_external(['/usr/lib/obs/service/obs_scm_bridge', '--outdir', str(prj_dir), '--url', scm_url])
run_obs_scm_bridge(url=scm_url, target_dir=str(prj_dir))
Project.init_project(apiurl, prj_dir, project, conf.config['do_package_tracking'], scm_url=scm_url)
print(statfrmt('A', prj_dir))

View File

@ -1308,6 +1308,18 @@ class Options(OscOptions):
ini_key="download-assets-cmd",
) # type: ignore[assignment]
obs_scm_bridge_cmd: str = Field(
default=
shutil.which("obs_scm_bridge", path="/usr/lib/obs/service")
or "/usr/lib/obs/service/obs_scm_bridge",
description=textwrap.dedent(
"""
Path to the 'obs_scm_bridge' tool used for cloning scmsync projects and packages.
"""
),
ini_key="obs-scm-bridge-cmd",
) # type: ignore[assignment]
vc_cmd: str = Field(
default=shutil.which("vc", path="/usr/lib/build:/usr/lib/obs-build") or "/usr/lib/build/vc",
description=textwrap.dedent(

View File

@ -3080,6 +3080,14 @@ def make_dir(
return pkg_path
def run_obs_scm_bridge(url: str, target_dir: str):
if not os.path.isfile(conf.config.obs_scm_bridge_cmd):
raise oscerr.OscIOError(None, "Install the obs-scm-bridge package to work on packages managed in scm (git)!")
env = os.environ.copy()
env["OSC_VERSION"] = get_osc_version()
run_external([conf.config.obs_scm_bridge_cmd, "--outdir", target_dir, "--url", url], env=env)
def checkout_package(
apiurl: str,
project: str,
@ -3153,9 +3161,6 @@ def checkout_package(
root = ET.fromstring(meta_data)
scmsync_element = root.find("scmsync")
if not native_obs_package and scmsync_element is not None and scmsync_element.text is not None:
if not os.path.isfile('/usr/lib/obs/service/obs_scm_bridge'):
raise oscerr.OscIOError(None, 'Install the obs-scm-bridge package to work on packages managed in scm (git)!')
scm_url = scmsync_element.text
directory = make_dir(apiurl, project, package, pathname, prj_dir, conf.config['do_package_tracking'], outdir)
if revision is not None:
@ -3165,8 +3170,8 @@ def checkout_package(
scmsync_obsinfo = ScmsyncObsinfo.from_api(apiurl, project, package, rev=revision)
scm_url = f"{scmsync_obsinfo.url}#{scmsync_obsinfo.revision}"
os.putenv("OSC_VERSION", get_osc_version())
run_external(['/usr/lib/obs/service/obs_scm_bridge', '--outdir', directory, '--url', scm_url])
scm_url = scmsync_element.text
run_obs_scm_bridge(url=scm_url, target_dir=directory)
Package.init_package(apiurl, project, package, directory, size_limit, meta, progress_obj, scm_url)