.RS 2
List submissions in the following format:
-Submission OBS project projects: list of projects paths
- download url: url of prerelease directory on download server
- obs url: url of prerelease OBS project
- builds: list of package build statuses from OBS
- images: list of image build statuses
+<Submission> <Target OBS Project> <status> <list of git paths>
-.PP
Example of output:
-submit/tizen/20140225.081506 Tizen:IVI projects: platform/core/multimedia/libmm-log
- download url: http://download.tizen.org/prerelease/tizen/ivi/ivi/tizen_20140226.8/tizen_20140226.8.20140225.081506/
- obs url: https://build.tizen.org/project/show?project=home:prerelease:Tizen:IVI:submit:tizen:20140225.081506
- builds: failed,succeeded,published
- images: ivi-min-mbr-i586:success ivi-min-efi-i586:success ivi-mbr-i586-emul:success ivi-efi-i586:success ivi-mbr-i586:success
-
-submit/tizen/20140225.081550 Tizen:IVI projects: platform/core/multimedia/avsystem
- download url: http://download.tizen.org/prerelease/tizen/ivi/ivi/tizen_20140226.8/tizen_20140226.8.20140225.081550/
- obs url: https://build.tizen.org/project/show?project=home:prerelease:Tizen:IVI:submit:tizen:20140225.081550
- builds: failed,succeeded,published
- images: ivi-min-efi-i586:success ivi-min-mbr-i586:success ivi-mbr-i586-emul:success ivi-mbr-i586:success ivi-efi-i586:success
-
-submitgroup/tizen/20140226.232740
- download url: http://download.tizen.org/prerelease/tizen/ivi/ivi/tizen_20140226.8/tizen_20140226.8.20140226.232740/
- obs url: https://build.tizen.org/project/show?project=home:prerelease:Tizen:IVI:submitgroup:tizen:20140226.232740
- submissions: 20140226.000818 20140226.002927 20140226.000750
- images: ivi-min-efi-i586:success ivi-min-mbr-i586:success ivi-mbr-i586-emul:success ivi-mbr-i586:success ivi-efi-i586:success
+submit/tizen/20140327.041126 broken source sdbd
+.RS 0
+submit/tizen/20140327.052722 package build failed emulator-yagl
+.RS 0
+submit/tizen/20140327.055105 package building libav zlib
+.RS 0
+submit/tizen/20140327.080733 image building bluez
+.RS 0
+submit/tizen/20140328.063916 ready connman
+.RS 0
+submit/tizen/20140328.080409 ready sdbd
+.RS 0
.RE
"""
import sys
-import os
import json
from repa.common import OBS_PROJECT_PREFIX
from repa.main import sub_main
-def get_status(results):
- """Gest submission status."""
- # Process project build results
- codes = set()
- for target in results.itervalues():
- codes.add(target.get('code'))
- codes.add(target.get('state'))
- for pkginfo in target['packages']:
- codes.add(pkginfo[1])
- status = ','.join(codes) or 'None'
- return status
-
-
-def show_images(meta):
- """Helper function to print list of images."""
+def get_status(meta, build_results=None):
+ """Get overall status by analyzing package and image build status."""
+ if build_results:
+ codes = set()
+ for target in build_results.itervalues():
+ codes.add(target.get('code'))
+ codes.add(target.get('state'))
+ for pkginfo in target['packages']:
+ codes.add(pkginfo[1])
+ if 'broken' in codes:
+ return 'broken source'
+ if 'failed' in codes:
+ return 'package build failed'
+ if 'building' in codes:
+ return 'package building'
if 'images' in meta:
- print ' images:', ' '.join("%s:%s" % (img['name'], img['status']) \
- for img in meta['images'])
-
-def get_download_url(meta):
- """Get download url from meta."""
- if 'download_url' in meta:
- return meta['download_url']
- # Guess url from image url if download_url is not in the meta
- if 'images' not in meta:
- return
- for img in meta['images']:
- return img['url'].split('images')[0]
-
-
-def get_obs_url(meta, buildurl='https://build.tizen.org'):
- """Get obs project url from meta."""
- if 'obs_url' in meta:
- return meta['obs_url']
- # Make it from git tag and obs_target_prj if obs_url is not in the meta
- if 'obs_target_prj' not in meta:
- return
- if 'name' not in meta and 'git_tag' not in meta:
- return
- name = meta.get('git_tag') or meta.get('name')
- return os.path.join(buildurl, 'project/show?project=home:prerelease:%s:%s' \
- % (meta['obs_target_prj'], name.replace('/', ':')))
+ for img in meta['images']:
+ if img['status'] == 'failed':
+ return 'image build failed'
+ if img['status'] == 'building':
+ return 'image building'
+ return 'ready'
def list_submissions(obs, regexp, processes):
if ':submitgroup:' in project:
groups.append(meta)
continue
- print meta['git_tag'], meta['obs_target_prj'],
- print ' projects: ', ' '.join(meta['projects'])
- download_url = get_download_url(meta)
- if download_url:
- print ' download url: ', download_url
- obs_url = get_obs_url(meta)
- if obs_url:
- print ' obs url: ', obs_url
- print " builds:", get_status(build_results)
- show_images(meta)
- print
+ projects = [project.split('/')[-1] for project in meta['projects']]
+ print '%-37s %-22s %s' % (meta['git_tag'], \
+ get_status(meta, build_results), ','.join(projects))
# groups
- for meta in groups:
- print meta['name']
- download_url = get_download_url(meta)
- if download_url:
- print ' download url: ', download_url
- obs_url = get_obs_url(meta)
- if obs_url:
- print ' obs url: ', obs_url
-
- print ' submissions:', ' '.join(subm.split('/')[-1] \
- for subm in meta['submissions'])
- show_images(meta)
+ if groups:
print
+ for meta in groups:
+ print '%-37s %-22s' % (meta['name'], get_status(meta))
class List(object):