@@ -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+
32413246def 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