'meta': meta}
else:
service_file_name = "_service"
- remote_build.get_source_file(profile, package, service_file_name)
+ try:
+ remote_build.get_source_file(profile, package, service_file_name)
+ except Exception as err:
+ print "WARN(double linked package?) %s: %s" % (package, repr(err))
+ continue
+
content = ""
with open(service_file_name, 'r') as f:
content = f.read()
def _update_packages(self, remote_build, build, profile, target, upload_packages):
dbg_idx = 0
for package in upload_packages:
+ print 'UPDATE %s' % package
+ sys.stdout.flush()
dbg_idx += 1
_update_type = upload_packages[package]['type']
raw = upload_packages[package]['content']
target is the target project
"""
sourceinfo = remote_build.get_sourceinfo_list(profile)
+ sys.stdout.flush()
for package in sourceinfo:
if sourceinfo[package]:
link_prj, link_pkg = sourceinfo[package][-1].split('/')
if link_prj and link_pkg:
- if build.exists(target, package):
+ if package in build.get_package_list(target):
+ print 'Trying to delete %s/%s' % (target, package)
+ sys.stdout.flush()
build.delete_package(target, package)
build.create_link_pac(target, link_pkg, \
target, package)
replace_gerrit_url = fields['REPLACE_GERRIT_URL']
importrpm = fields['IMPORT_RPM']
+ copy_inherited_packages = os.getenv('COPY_INHERITED_PACKAGES', 'false')
+ if copy_inherited_packages == 'true':
+ # Check if link project is the same as source project
+ my_meta = build.get_meta(target)
+ xml_my_meta = ElementTree.fromstringlist(my_meta)
+ _link_prj = xml_my_meta.find('link').get('project')
+ if (fields['SRC_PROJECT'] != fields['DEST_PROJECT']) and \
+ (fields['SRC_PROJECT'] != _link_prj):
+ print 'COPY_INHERITED_PACKAGES only works for matched link project'
+ assert False
+ print 'We have %d own packages' % len(build.get_package_list(target))
+
build_src = build
print "src = %s , target = %s" %(src, target)
for pkgname in packages:
del todo_dict[pkgname]
if build.exists(target, pkgname):
- build.delete_package(target, pkgname)
+ if copy_inherited_packages != 'true':
+ print 'Deleting %s' % pkgname
+ build.delete_package(target, pkgname)
packages = self.remove_duplicates(remote_package_list, package_list)
print "\n********"
print " 3) add packages %s" %(packages)
+ sys.stdout.flush()
if packages:
+ print 'Checking %s' % packages
ret_dict_add = self.list_packages_from_remote(\
remote_build, build, profile, target, packages=packages,
replace_gerrit_url=replace_gerrit_url)
if ret_dict_add:
todo_dict.update(ret_dict_add)
+
+ if copy_inherited_packages == 'true':
+ print " 3-1) Handling inherited packages"
+ own_packages = build.get_package_list(target)
+ print ' We have %d own packages' % len(own_packages)
+ for op in own_packages:
+ if op in todo_dict:
+ del todo_dict[op]
+
print '\nAdd Remove Done at %s' % (str(datetime.now()))
print '\n 4-1) Final packages to be updated %d' % len(todo_dict)