From: Junghyun Kim Date: Tue, 1 Nov 2016 11:21:19 +0000 (+0900) Subject: Do not accept aggregate packages. X-Git-Tag: submit/trunk/20190927.012842~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F47%2F89247%2F3;p=tools%2Frepa.git Do not accept aggregate packages. Conditions of aggregate packages: 1. The name includes "aggregate" 2. The package has a source file named "_aggregate" Squashed commit of the following: commit c519222bcdc7e8aa0fc87502ee57f0786cefa6c4 Author: Junghyun Kim Date: Tue Nov 1 20:19:17 2016 +0900 FIXED: typo. Change-Id: I73582f80e790616a512ecae323cd208c4345c8c9 Signed-off-by: Junghyun Kim commit 83cedfca3da74e0c2c687fea2513d64829ce20c9 Author: Junghyun Kim Date: Tue Nov 1 20:06:15 2016 +0900 Do not accept "*aggregate*" packages having "_aggregate" file. It is more general approach to ignore aggregate packages. Reviewed by Chan Lee Change-Id: I71f0d1b2af1da93b73ca94059dfe630163d03388 Signed-off-by: Junghyun Kim commit 6ef788191edfd86172b5dafa6f7c0af486fe2021 Author: Junghyun Kim Date: Mon Sep 12 09:16:23 2016 +0900 indentation modified. Change-Id: I874d5f90c8282e019786533773861f409729a394 Signed-off-by: Junghyun Kim commit 3ae8401ebde101cecabf2d70b63e4713973b17a3 Author: Junghyun Kim Date: Thu Sep 8 13:50:22 2016 +0900 "import re" added. Change-Id: I8f4a5ebcf8a54a5ddd1b3fe661055616fa4e6bb6 Signed-off-by: Junghyun Kim commit 5938c43829bb770a1d09f8b219a36c0f05bc0100 Author: Junghyun Kim Date: Thu Sep 8 11:26:40 2016 +0900 Remove *_aggregate packages before accepting OBS SR. Change-Id: I4321acf02212310bcf8ea75d98883cec7e253131 Signed-off-by: Junghyun Kim Change-Id: I289ae301084510aab7e0c9aadfa2eb4e6be83319 Signed-off-by: Junghyun Kim --- diff --git a/repa/common.py b/repa/common.py index e63f073..9d22cca 100644 --- a/repa/common.py +++ b/repa/common.py @@ -35,6 +35,7 @@ import time import json import tempfile import subprocess +import re from functools import wraps, partial from distutils.spawn import find_executable @@ -86,6 +87,12 @@ def delete_project(obs, name, target): project = get_project_by_name(obs, name, target)[0] obs.delete_project(project) +def is_aggregate_package(obs, proj, pack): + if re.search("aggregate", pack): + if "_aggregate" in obs.get_file_list(proj, pack): + return True + + return False def accept_or_reject(obs, submission, state, target, comment='', jenkins_cred=None): @@ -122,7 +129,13 @@ def accept_or_reject(obs, submission, state, target, comment='', print out else: # Create SR - reqid = obs.create_sr(project, obs.get_source_packages(project), + org_source_packages=obs.get_source_packages(project) + source_packages=[] + for p in org_source_packages: + if not is_aggregate_package(obs, project, p): + source_packages.append(p) + + reqid = obs.create_sr(project, source_packages, target_prj, message=message) print 'created SR %s' % reqid diff --git a/repa/obs.py b/repa/obs.py index d25017f..997ae54 100644 --- a/repa/obs.py +++ b/repa/obs.py @@ -255,6 +255,22 @@ class OBS(OSC): ET.SubElement(elem, value) self.set_meta(ET.tostring(root), prj, pkg) + def get_file_list(self, prj, pkg): + """Get file list from OBS.""" + url = core.makeurl(self.apiurl, + ['source', prj, pkg]); + files=[] + try: + xml = self.core_http(core.http_GET, url).read() + root = ET.fromstring(''.join(xml)) + for entry in root.findall("entry"): + files.append(entry.get('name')) + return files + except OSCError as error: + if error.message == "HTTP Error 404: Not Found": + return None + raise + def get_file(self, prj, pkg, fname, rev=None): """Get file content from OBS.""" query = {'expand': 1}