def gen_bconf( branch, targets, signkey, gluon_tag=None, site_tag=None, broken=False, onlyone=False, priority=None ): ''' Provides all information needed by the builder in placing a ``bconf``-file. Since we are already collecting information here, the ``info.json`` is created as well. The same arguments as in :func:`prepare` are used here. .. seealso:: :func:`common.prepare_args` for command line syntax ''' photon, settings = pinit('gen_bconf') if photon.settings.load( 'siteconf', path.join( settings['site']['local']['wi'], settings['site']['generator_settings'] ) ): photon.s2m gluon, site = ginit(photon) gluon_tag = gluon_tag if gluon_tag else gluon.short_commit[0] site_tag = site_tag if site_tag else site.short_commit[0] broken = '1' if broken else '' version = settings['siteconf']['site']['gluon_release_num'] priority = ( priority if priority else settings['siteconf']['site']['gluon_priority'] ) description = '-%s%s' % ( branch, '-%s' % (get_timestamp(time=False)) if not all(settings['common']['branches']['avail'][branch]) else '' ) # these fields appear in the info.json fields = dict( broken_flag=broken, call_branch=branch, communities=onlyone if onlyone else ' '.join( settings['common']['communities'].keys() ), gluon_tag=gluon_tag, site_tag=site_tag, priority=priority, release='%s%s' % (version, description), targets=' '.join(targets), version=version ) write_json( path.join( settings['prepare']['stage_dir'], settings['prepare']['info'] ), dict(_info=fields) ) # these fields only appear in the bconf fields.update(dict( build_branch=settings['common']['branches']['build'], build_dir=settings['gluon']['local']['dir'], info_file=settings['prepare']['info'], library_dir=path.join( settings['publish']['library_dir'], '%s%s' % (version, description) ), mkcmd=settings['common']['mkcmd'], pycmd=settings['common']['pycmd'], signkey=signkey, stage_dir=settings['prepare']['stage_dir'] )) bconf = photon.template_handler( settings['prepare']['bconf']['tpl'], fields=fields ) bconf.write( settings['prepare']['bconf']['out'], append=False )
def prepare( branch, gluon_tag=None, site_tag=None, nomodules=False, onlyone=False, priority=None ): ''' Checks out Gluon sources and site-conf repositories at proper commit-ids or tags according to the branch to build. Generates a site-conf afterwards. Automatically invokes :func:`_gen_bconf` afterwards .. seealso:: :func:`common.prepare_args` for command line syntax ''' photon, settings = pinit('prepare', clean=True) for community in [ onlyone ] if onlyone else settings['common']['communities'].keys(): change_location( settings['gluon']['local'][community], False, move=True ) tags = settings['common']['branches']['avail'][branch] gluon, site = ginit(photon, community=community) if gluon_tag: if gluon.tag and gluon_tag in gluon.tag: gluon.tag = gluon_tag elif gluon.commit and ( gluon_tag in gluon.commit or gluon_tag in gluon.short_commit ): gluon.commit = gluon_tag else: photon.m( 'Invalid git commit-id or tag specified for gluon', state=True ) else: if tags[0]: gluon.tag = None else: gluon.branch = None if site_tag: if site.tag and site_tag in site.tag: site.tag = site_tag elif site.commit and ( site_tag in site.commit or site_tag in site.short_commit ): site.commit = site_tag else: photon.m( 'Invalid git commit-id or tag specified for site', state=True ) else: if tags[1]: site.tag = None else: site.branch = None photon.m( 'generating site for %s' % (community), cmdd=dict( cmd='%s generate.py %s %s %s' % ( settings['common']['pycmd'], community, '--nomodules' if nomodules else '', '--priority %s' % (priority) if priority else '' ), cwd=settings['site']['local'][community] ), verbose=True )