[Pkg-rpm-devel] Bug#867680: osc: support both obs-build and vanilla build

Luca Boccassi luca.boccassi at gmail.com
Sun Jul 9 16:38:41 UTC 2017


On Sun, 2017-07-09 at 07:52 +0200, Michal Čihař wrote:
> Hello

Hello Michal,

> Luca Boccassi píše v So 08. 07. 2017 v 13:56 +0100:
> > In Debian SUSE's "build" package is renamed to "obs-build", and so
> > osc
> > carries a patch to make it compatible.
> > 
> > Unfortunately the patch makes it incompatible with SUSE's version.
> > Very
> > often when doing development, upstream sources are used.
> > This is a constant cause of problems and confusion among many users
> > in
> > my workplace, myself included.
> > 
> > I have sent a patch upstream, which was just merged, to make osc
> > compatible with both obs-build and build. This will make things
> > much
> > easier for users:
> > 
> > https://github.com/openSUSE/osc/pull/306
> > 
> > The patch is attached inline, and it would be great if it could be
> > used
> > in place of the existing one. It's adapted to apply on top of
> > 0.156.
> 
> I will anyway update the package, so maybe it's better to wait for
> upstream version with integrated your patch.

I do not know when 0.159 is going to be released.

In case you wish to apply the change on 0.158, the backported patch for
that version is inlined.

> > As a stretch goal, it would be nice if the Recommends could be
> > changed
> > from "obs-build" to "obs-build | build", so that things won't break
> > when using SUSE's upstream repository.
> 
> I'm not really sure about this - the build is really too generic
> package name. In the end this is only recommends, so it really
> doesn't
> force you to install obs-build if you know what you are doing with
> third party packages.

Yes it is very unfortunate that it is such a generic name.

On the other hand, there is no "build" binary package in the archive,
and it would be "second" choice, so it should not cause any problem nor
confusion, while solving issues that I have seen users experience in
the past couple of years.

Thanks!

Kind regards,
Luca Boccassi


From af5a38f4c8fd23159beff69a833529f0ad5ea868 Mon Sep 17 00:00:00 2001
From: Luca Boccassi <luca.boccassi at gmail.com>
Date: Fri, 7 Jul 2017 17:47:43 +0100
Subject: [PATCH] Add compatibility with Debian's obs-build

In Debian and Ubuntu build is renamed to obs-build for disambiguation
purposes.
Add a simple check to use the correct paths if running on Debian and
use /usr/bin/obs-build and /usr/lib/obs-build if so.
---
 osc/commandline.py | 8 +++++++-
 osc/conf.py        | 6 ++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/osc/commandline.py b/osc/commandline.py
index 410199c..1e6b2fc 100644
--- a/osc/commandline.py
+++ b/osc/commandline.py
@@ -12,6 +12,7 @@ import sys
 import time
 import imp
 import inspect
+import os
 try:
     from urllib.parse import urlsplit
     from urllib.error import HTTPError
@@ -5867,7 +5868,12 @@ Please submit there instead, or use --nodevelproject to force direct submission.
                 with tempfile.NamedTemporaryFile() as f:
                     f.write(bc)
                     f.flush()
-                    recipe = return_external('/usr/lib/build/queryconfig', '--dist', f.name, 'type')
+                    # some distros like Debian rename and move build to obs-build
+                    if not os.path.isfile('/usr/lib/build/queryconfig') and os.path.isfile('/usr/lib/obs-build/queryconfig'):
+                        queryconfig = '/usr/lib/obs-build/queryconfig'
+                    else:
+                        queryconfig = '/usr/lib/build/queryconfig'
+                    recipe = return_external(queryconfig, '--dist', f.name, 'type')
                 recipe = recipe.strip()
                 if recipe == 'arch':
                     recipe = 'PKGBUILD'
diff --git a/osc/conf.py b/osc/conf.py
index e49014d..2fd8e80 100644
--- a/osc/conf.py
+++ b/osc/conf.py
@@ -183,6 +183,12 @@ DEFAULTS = {'apiurl': 'https://api.opensuse.org',
             'vc-cmd': '/usr/lib/build/vc'
 }
 
+# some distros like Debian rename and move build to obs-build
+if not os.path.isfile('/usr/bin/build') and os.path.isfile('/usr/bin/obs-build'):
+    DEFAULTS['build-cmd'] = '/usr/bin/obs-build'
+if not os.path.isfile('/usr/lib/build/vc') and os.path.isfile('/usr/lib/obs-build/vc'):
+    DEFAULTS['vc-cmd'] = '/usr/lib/obs-build/vc'
+
 # being global to this module, this dict can be accessed from outside
 # it will hold the parsed configuration
 config = DEFAULTS.copy()
-- 
2.11.0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part
URL: <http://lists.alioth.debian.org/pipermail/pkg-rpm-devel/attachments/20170709/8f7b45eb/attachment.sig>


More information about the Pkg-rpm-devel mailing list