include_defs('//onos.defs') include_defs('//bucklets/onos.bucklet') include_defs('//bucklets/onos_app.bucklet') def _get_name(): base_path = get_base_path() return ONOS_ARTIFACT_BASE + base_path.replace('/', '-') #TODO Unix-separator YANG_TOOLS = [ '//lib:onos-yang-model', '//lib:onos-yang-compiler-api', '//lib:onos-yang-runtime', '//lib:org.apache.felix.scr.annotations', '//apps/yang:onos-apps-yang', ] def yang_model( name = None, app_name = None, model_id = None, title = 'YANG Model', url = 'http://onosproject.org', description = None, deps = [], required_apps = [], custom_registrator = False, yang_src = None, custom_src = None, **kwargs ): if name is None: name = _get_name() if model_id is None: model_id = app_name if yang_src is None: yang_src = glob(['src/main/yang/**/*.yang']) if custom_src is None: custom_src = glob(['src/main/java/**/*.java']) yang = name + '-yang' yangSrcs = yang + '#srcs' schema = name + '-schema' registrator = name + '-registrator' yang_library( deps = deps, name = yang, srcs = yang_src, model_id = model_id ) genrule( name = schema, srcs = [ ':' + yangSrcs ], cmd = '$(location //buck-tools:yang-schema) $OUT $SRCS', out = 'yang' ) if custom_registrator: osgi_jar( name = name, srcs = [ ':' + yangSrcs ] + custom_src, deps = deps + YANG_TOOLS, resources = [ ':' + schema ], resources_root = ".", do_checkstyle = True, do_javadocs = False, ) else: genrule( name = registrator, srcs = [ ':' + yangSrcs ], cmd = '$(location //buck-tools:yang-registrator) $OUT ' + app_name.replace('-', '_') + ' $SRCS', out = 'YangModelRegistrator.java' ) osgi_jar( name = name, srcs = [ ':' + yangSrcs, ':' + registrator ], deps = deps + YANG_TOOLS, resources = [ ':' + schema ], resources_root = ".", do_checkstyle = False, do_javadocs = False, ) onos_app ( name = name, app_name = app_name, title = title, category = 'Models', url = url, description = description, required_apps = required_apps + [ 'org.onosproject.yang' ], ) def yang_osgi_jar( name = None, srcs = None, model_id = None, group_id = ONOS_GROUP_ID, version = ONOS_VERSION, deps = [], visibility = ['PUBLIC'], license = 'NONE', **kwargs ): if name is None: name = _get_name() if model_id is None: model_id = name yang_jar = name + '-yang' bnd_jar = name + '-bnd' args = { 'group':group_id, 'artifact':name, 'version':version } yang_library( deps = deps, name = yang_jar, srcs = srcs, model_id = model_id, visibility = [ ], ) cmd = 'java -jar $(location //lib:bndexe) wrap -o $OUT ' cmd += '-b %(group)s.%(artifact)s ' % args cmd += '-v ' + version.replace('-', '.') + ' ' cmd += '$(location :%s) ' % yang_jar cmd += ' >/dev/null 2>&1' genrule( name = bnd_jar, bash = cmd, out = name + '.jar', visibility = [], ) prebuilt_jar( name = name, binary_jar = ':' + bnd_jar, maven_coords = '%(group)s:%(artifact)s:%(version)s'%args, visibility = visibility, )