Skip to content

Commit 6860e7e

Browse files
- set vrev on current links in link files
1 parent 15da5e9 commit 6860e7e

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

NEWS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
- patchinfo call can work without checked out copy now
33
- use qemu as fallback for building not directly supported architectures
44
- "results --watch" option to watch build results until they finished building
5+
- setlinkrev and linkpac ---current is setting vrev. this requires OBS 2.1.17 or 2.3
56
#
67
# Features which requires OBS 2.3
78
#

osc/commandline.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2351,6 +2351,7 @@ def do_linkpac(self, subcmd, opts, *args):
23512351
+ self.get_cmd_help('linkpac'))
23522352

23532353
rev, dummy = parseRevisionOption(opts.revision)
2354+
vrev = None
23542355

23552356
src_project = args[0]
23562357
src_package = args[1]
@@ -2369,13 +2370,16 @@ def do_linkpac(self, subcmd, opts, *args):
23692370
opts.cicount = "copy"
23702371

23712372
if opts.current and not opts.new_package:
2372-
rev = show_upstream_rev(apiurl, src_project, src_package)
2373+
rev, vrev = show_upstream_rev_vrev(apiurl, src_project, src_package, expand=1)
2374+
if rev == None or len(rev) < 32:
2375+
# vrev is only needed for srcmd5 and OBS instances < 2.1.17 do not support it
2376+
vrev = None
23732377

23742378
if rev and not checkRevision(src_project, src_package, rev):
23752379
print >>sys.stderr, 'Revision \'%s\' does not exist' % rev
23762380
sys.exit(1)
23772381

2378-
link_pac(src_project, src_package, dst_project, dst_package, opts.force, rev, opts.cicount, opts.disable_publish, opts.new_package)
2382+
link_pac(src_project, src_package, dst_project, dst_package, opts.force, rev, opts.cicount, opts.disable_publish, opts.new_package, vrev)
23792383

23802384
@cmdln.option('--nosources', action='store_true',
23812385
help='ignore source packages when copying build results to destination project')

osc/core.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3238,6 +3238,11 @@ def show_upstream_xsrcmd5(apiurl, prj, pac, revision=None, linkrev=None, linkrep
32383238
return li.xsrcmd5
32393239

32403240

3241+
def show_upstream_rev_vrev(apiurl, prj, pac, revision=None, expand=False, linkrev=None, meta=False):
3242+
m = show_files_meta(apiurl, prj, pac, revision=revision, expand=expand, linkrev=linkrev, meta=meta)
3243+
et = ET.fromstring(''.join(m))
3244+
return et.get('rev'), et.get('vrev')
3245+
32413246
def show_upstream_rev(apiurl, prj, pac, revision=None, expand=False, linkrev=None, meta=False, include_service_files=False):
32423247
m = show_files_meta(apiurl, prj, pac, revision=revision, expand=expand, linkrev=linkrev, meta=meta)
32433248
et = ET.fromstring(''.join(m))
@@ -4193,7 +4198,7 @@ def link_to_branch(apiurl, project, package):
41934198
else:
41944199
raise oscerr.OscIOError(None, 'no _link file inside project \'%s\' package \'%s\'' % (project, package))
41954200

4196-
def link_pac(src_project, src_package, dst_project, dst_package, force, rev='', cicount='', disable_publish = False, missing_target = False):
4201+
def link_pac(src_project, src_package, dst_project, dst_package, force, rev='', cicount='', disable_publish = False, missing_target = False, vrev=''):
41974202
"""
41984203
create a linked package
41994204
- "src" is the original package
@@ -4246,16 +4251,21 @@ def link_pac(src_project, src_package, dst_project, dst_package, force, rev='',
42464251
sys.exit(1)
42474252

42484253
if rev:
4249-
rev = 'rev="%s"' % rev
4254+
rev = ' rev="%s"' % rev
42504255
else:
42514256
rev = ''
42524257

4258+
if vrev:
4259+
vrev = ' vrev="%s"' % vrev
4260+
else:
4261+
vrev = ''
4262+
42534263
missingok = ''
42544264
if missing_target:
4255-
missingok = 'missingok="true"'
4265+
missingok = ' missingok="true"'
42564266

42574267
if cicount:
4258-
cicount = 'cicount="%s"' % cicount
4268+
cicount = ' cicount="%s"' % cicount
42594269
else:
42604270
cicount = ''
42614271

@@ -4266,15 +4276,16 @@ def link_pac(src_project, src_package, dst_project, dst_package, force, rev='',
42664276
project = 'project="%s"' % src_project
42674277

42684278
link_template = """\
4269-
<link %s package="%s" %s %s %s>
4279+
<link %s package="%s"%s%s%s%s>
42704280
<patches>
4281+
<!-- <branch /> for a full copy, default case -->
42714282
<!-- <apply name="patch" /> apply a patch on the source directory -->
42724283
<!-- <topadd>%%define build_with_feature_x 1</topadd> add a line on the top (spec file only) -->
42734284
<!-- <add>file.patch</add> add a patch to be applied after %%setup (spec file only) -->
42744285
<!-- <delete>filename</delete> delete a file -->
42754286
</patches>
42764287
</link>
4277-
""" % (project, src_package, missingok, rev, cicount)
4288+
""" % (project, src_package, missingok, rev, vrev, cicount)
42784289

42794290
u = makeurl(apiurl, ['source', dst_project, dst_package, '_link'])
42804291
http_PUT(u, data=link_template)
@@ -5600,17 +5611,21 @@ def set_link_rev(apiurl, project, package, revision='', expand=False, baserev=Fa
56005611
src_project = root.get('project', project)
56015612
src_package = root.get('package', package)
56025613
linkrev=None
5614+
vrev = None
56035615
if baserev:
56045616
linkrev = 'base'
56055617
expand = True
56065618
if revision is None:
56075619
if 'rev' in root.keys():
56085620
del root.attrib['rev']
56095621
elif revision == '' or expand:
5610-
revision = show_upstream_rev(apiurl, src_project, src_package, revision=revision, linkrev=linkrev, expand=expand)
5622+
revision, vrev = show_upstream_rev_vrev(apiurl, src_project, src_package, revision=revision, linkrev=linkrev, expand=expand)
56115623

56125624
if revision:
56135625
root.set('rev', revision)
5626+
# add vrev when revision is a srcmd5
5627+
if vrev and revision and len(revision) >= 32:
5628+
root.set('vrev', vrev)
56145629

56155630
l = ET.tostring(root)
56165631
http_PUT(url, data=l)

0 commit comments

Comments
 (0)