Brian O'Connor

Simplifying rules and providing sensible defaults

Updated cordvtn, dhcp, fwd, onos-api, of-api, onlab-rest, onos-rest, onos-gui

Also, fixed checkstyle error print

Change-Id: I9d6ab76791e8603678079067a3b4e007ca7c4667
DEPS = [
CORE = [
'//utils/osgi:onlab-osgi',
'//utils/junit:onlab-junit',
'//utils/misc:onlab-misc',
......@@ -81,7 +81,14 @@ DEPS = [
'//web/api:onos-rest',
'//web/gui:onos-gui',
]
APPS = [
'//apps/dhcp:onos-apps-dhcp-oar',
'//apps/fwd:onos-apps-fwd-oar',
]
APP_JARS = [
'//apps/cpman/api:onos-app-cpman-api',
'//apps/cpman/app:onos-app-cpman-app',
'//apps/aaa:onos-app-aaa',
......@@ -90,14 +97,14 @@ DEPS = [
'//apps/routing-api:onos-app-routing-api',
'//apps/cip:onos-app-cip',
'//apps/cordmcast:onos-app-cord-mcast',
'//apps/cordvtn:onos-app-cordvtn',
'//apps/dhcp/api:onos-app-dhcp-api',
'//apps/dhcp/app:onos-app-dhcp-app',
'//apps/cordvtn:onos-apps-cordvtn',
'//apps/dhcp/api:onos-apps-dhcp-api',
'//apps/dhcp/app:onos-apps-dhcp-app',
'//apps/drivermatrix:onos-app-drivermatrix',
'//apps/events:onos-app-events',
'//apps/faultmanagement:onos-app-fm',
'//apps/flowanalyzer:onos-app-flowanalyzer',
'//apps/fwd:onos-app-fwd',
'//apps/fwd:onos-apps-fwd',
'//apps/igmp:onos-app-igmp',
'//apps/influxdbmetrics:onos-app-influxdb',
'//apps/olt:onos-app-olt-api',
......@@ -128,9 +135,21 @@ DEPS = [
]
java_library(
name = 'onos',
visibility = ['PUBLIC'],
deps = DEPS
name = 'core',
visibility = ['PUBLIC'],
deps = CORE,
)
java_library(
name = 'apps',
visibility = ['PUBLIC'],
deps = APPS + APP_JARS,
)
java_library(
name = 'onos',
visibility = ['PUBLIC'],
deps = [ ':core', ':apps' ]
)
INSTALL = [
......
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
CURRENT_NAME = 'onos-app-cordvtn'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:CORE_DEPS',
'//lib:org.apache.karaf.shell.console',
......@@ -13,29 +7,14 @@ COMPILE_DEPS = [
'//cli:onos-cli',
'//core/store/serializers:onos-core-serializers',
'//apps/openstackinterface:onos-app-openstackinterface-api',
'//apps/dhcp/api:onos-app-dhcp-api',
'//apps/dhcp/api:onos-apps-dhcp-api',
'//protocols/ovsdb/api:onos-ovsdb-api',
'//protocols/ovsdb/rfc:onos-ovsdb-rfc',
]
TEST_DEPS = [
'//lib:TEST',
]
java_library(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
osgi_jar_with_tests (
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
resources_root = 'src/main/resources',
resources = glob(['src/main/resources/**']),
web_context = '/onos/cordvtn',
)
java_test(
name = 'tests',
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[CURRENT_TARGET],
source_under_test = [CURRENT_TARGET],
)
#FIXME need onos_app
\ No newline at end of file
......
BUNDLES = [
'//apps/dhcp/api:onos-app-dhcp-api',
'//apps/dhcp/app:onos-app-dhcp-app',
'//apps/dhcp/api:onos-apps-dhcp-api',
'//apps/dhcp/app:onos-apps-dhcp-app',
]
onos_app(
app_name = 'org.onosproject.dhcp',
feature_coords = ONOS_GROUP_ID + ':onos-app-dhcp:' + ONOS_VERSION,
feature_coords = ONOS_GROUP_ID + ':onos-apps-dhcp:' + ONOS_VERSION,
title = 'DHCP Server App',
category = 'Utility',
url = 'http://onosproject.org',
......
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
CURRENT_NAME = 'onos-app-dhcp-api'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:CORE_DEPS',
]
TEST_DEPS = [
'//lib:TEST',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
osgi_jar_with_tests (
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
)
java_test(
name = 'tests',
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[CURRENT_TARGET],
source_under_test = [CURRENT_TARGET],
)
)
\ No newline at end of file
......
CURRENT_NAME = 'onos-app-dhcp-app'
COMPILE_DEPS = [
'//lib:CORE_DEPS',
'//lib:javax.ws.rs-api',
'//lib:org.apache.karaf.shell.console',
'//apps/dhcp/api:onos-app-dhcp-api',
'//apps/dhcp/api:onos-apps-dhcp-api',
'//utils/rest:onlab-rest',
'//core/store/serializers:onos-core-serializers',
'//cli:onos-cli',
......@@ -14,12 +12,8 @@ TEST_DEPS = [
'//lib:TEST_ADAPTERS',
]
osgi_jar(
name = CURRENT_NAME,
osgi_jar_with_tests (
deps = COMPILE_DEPS,
srcs = glob([SRC + '/*.java']),
resources = glob([RESOURCES_ROOT + '**']),
test_srcs = glob([TEST + '/*.java']),
test_deps = TEST_DEPS,
web_context = '/onos/dhcp',
)
......
CURRENT_NAME = 'onos-app-fwd'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:CORE_DEPS',
'//lib:org.apache.karaf.shell.console',
'//cli:onos-cli',
]
TEST_DEPS = [
'//lib:TEST',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
deps = COMPILE_DEPS,
test_srcs = glob([TEST + '/*.java']),
test_deps = TEST_DEPS,
visibility = ['PUBLIC'],
)
onos_app(
app_name = 'org.onosproject.fwd',
title = 'Reactive Forwarding App',
category = 'Traffic Steering',
url = 'http://onosproject.org',
description = 'Reactive forwarding application using flow subsystem.',
included_bundles = [ CURRENT_TARGET ],
)
\ No newline at end of file
......
......@@ -4,21 +4,26 @@ DEBUG_ARG='JAVA_TOOL_OPTIONS="-Xdebug -Xrunjdwp:server=y,transport=dt_socket,add
FORCE_INSTALL=True
NONE='NONE'
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
SRC = 'src/main/java/**/'
TEST = 'src/test/java/**/'
RESOURCES_ROOT = 'src/main/resources/'
TEST_RESOURCES_ROOT = 'src/test/resources/'
ONOS_GROUP_ID = 'org.onosproject'
ONOS_VERSION = '1.6.0-SNAPSHOT'
ONOS_ARTIFACT_BASE = 'onos-'
def _get_name():
base_path = get_base_path()
return ONOS_ARTIFACT_BASE + base_path.replace('/', '-') #TODO Unix-separator
def osgi_jar(
name,
srcs,
test_srcs = None,
name = None,
srcs = None,
group_id = ONOS_GROUP_ID,
version = ONOS_VERSION,
deps = [],
test_deps = [ '//lib:TEST' ],
visibility = ['PUBLIC'],
license = 'NONE',
description = '',
......@@ -27,19 +32,31 @@ def osgi_jar(
export_packages = '*',
include_resources = NONE,
web_context = NONE,
resources = None,
resources = NONE,
resources_root = None,
test_resources = None,
test_resources_root = None,
**kwargs
):
# if name and _get_name() != name:
# print _get_name(), '!=', name
if name is None:
name = _get_name()
if srcs is None:
srcs = glob([SRC + '/*.java'])
if resources == NONE and resources_root is not None:
resources = glob([resources_root + '**'])
elif resources == NONE:
resources = glob([RESOURCES_ROOT + '**'])
if resources and not resources_root:
resources_root = RESOURCES_ROOT
bare_jar_name = name + '-jar'
osgi_jar_name = name + '-osgi'
mvn_coords = group_id + ':' + name + ':' + version
if resources and not resources_root:
resources_root = RESOURCES_ROOT
java_library(
name = bare_jar_name,
......@@ -98,7 +115,9 @@ def osgi_jar(
'-o $OUT',
'-c $(location //tools/build/conf:checkstyle-xml)',
' '.join(srcs) ))
error_cmd = '(touch $OUT; cat $OUT | grep "^\[ERROR\]"; exit 1)'
error_cmd = ' | '.join(( '( touch $OUT; cat $OUT',
'grep -E "^[^: ]*:\d+:\d+: error:"',
'sed "s#^.*__srcs/#%s:#g" ; exit 1)' % name, ))
cmd = ' || '.join((chk_cmd, error_cmd))
genrule(
name = name + '-checkstyle',
......@@ -126,18 +145,48 @@ def osgi_jar(
visibility = visibility,
)
def osgi_jar_with_tests(
name = None,
deps = [],
test_srcs = None,
test_deps = [ '//lib:TEST' ],
test_resources = None,
test_resources_root = None,
visibility = [ 'PUBLIC' ],
**kwargs
):
if name is None:
name = _get_name()
osgi_jar(name = name,
deps = deps,
visibility = visibility,
**kwargs)
if test_resources and not test_resources_root:
test_resources_root = RESOURCES_ROOT
if test_srcs is not None:
java_test(
name = 'tests',
srcs = test_srcs,
deps = deps +
test_deps +
[':' + bare_jar_name],
source_under_test = [':' + bare_jar_name],
resources = test_resources,
resources_root = test_resources_root
)
test_resources_root = TEST_RESOURCES_ROOT
if test_resources_root and not test_resources:
test_resources = glob([test_resources_root + '**'])
if not test_resources and not test_resources_root:
test_resources = glob([TEST_RESOURCES_ROOT + '**'])
if test_resources:
test_resources_root = TEST_RESOURCES_ROOT
if test_srcs is None:
test_srcs = glob([TEST + '/*.java'])
if not test_srcs:
print "Generating test rule for %s, but there are no tests." % name
java_test(
name = name + '-tests',
srcs = test_srcs,
deps = deps +
test_deps +
[':' + name + '-jar'],
source_under_test = [':' + name + '-jar'],
resources = test_resources,
resources_root = test_resources_root,
visibility = visibility
)
......
ONOS_ORIGIN = 'ON.Lab'
ONOS_VERSION = '1.6.0-SNAPSHOT'
DEFAULT_APP_CATEGORY = 'Utility'
ONOS_ARTIFACT_BASE = 'onos-'
APP_PREFIX = 'org.onosproject.'
import os.path
# FIXME Factor this into common place
def _get_name():
base_path = get_base_path()
return ONOS_ARTIFACT_BASE + base_path.replace('/', '-') #TODO Unix-separator
def _get_app_name():
base_path = get_base_path()
return APP_PREFIX + os.path.basename(base_path)
def onos_app(
app_name,
title,
app_name = None,
name = None,
title = None,
version = ONOS_VERSION,
origin = ONOS_ORIGIN,
category = DEFAULT_APP_CATEGORY,
......@@ -14,13 +28,31 @@ def onos_app(
feature_coords = None,
required_features = [ 'onos-api' ],
required_apps = [],
included_bundles = [],
included_bundles = None,
excluded_bundles = [],
visibility = [ 'PUBLIC' ],
**kwargs):
if name is None:
name = _get_name()
if app_name is None:
app_name = _get_app_name()
if title is None:
print "Missing title for %s" % _get_name()
title = _get_app_name()
if included_bundles is None:
target = ':' + _get_name()
included_bundles = [ target ]
if not feature_coords and len(included_bundles) == 1:
feature_coords = '$(maven_coords %s)' % included_bundles[0]
if not feature_coords:
print 'Missing maven coordinates for %s app feature.' % name
return
args = [ '-n %s' % feature_coords,
'-v %s' % version,
'-t "%s"' % title,
......@@ -36,26 +68,27 @@ def onos_app(
cmd = '$(exe //buck-tools:onos-app-writer) -F ' + ' '.join(args) + ' > $OUT'
genrule(
name = 'app-features',
name = name + '-features',
bash = cmd,
out = 'features.xml',
visibility = [],
)
cmd = '$(exe //buck-tools:onos-app-writer) -A ' + ' '.join(args) + ' > $OUT'
genrule(
name = 'app-xml',
name = name + '-app-xml',
bash = cmd,
out = 'app.xml',
visibility = [],
)
sources = [
'$(location :app-features) %s' % feature_coords,
'$(location :app-xml) NONE',
'$(location :%s-features) %s' % (name, feature_coords),
'$(location :%s-app-xml) NONE' % name,
]
sources += ['$(location %s) $(maven_coords %s)' % (i, i) for i in included_bundles]
genrule(
name = 'app-oar',
name = name + '-oar',
out = 'app.oar',
bash = '$(exe //buck-tools:onos-app-oar) $OUT ' + ' '.join(sources)
bash = '$(exe //buck-tools:onos-app-oar) $OUT ' + ' '.join(sources),
visibility = visibility,
)
......
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
CURRENT_NAME = 'onos-api'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:COMPILE',
'//utils/misc:onlab-misc',
......@@ -10,25 +5,7 @@ COMPILE_DEPS = [
'//utils/rest:onlab-rest',
]
TEST_DEPS = [
'//lib:TEST',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
osgi_jar_with_tests (
name = 'onos-api',
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
)
java_test(
name = 'onos-api-tests',
visibility = ['PUBLIC'],
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[CURRENT_TARGET],
source_under_test = [CURRENT_TARGET],
resources_root = 'src/test/resources',
resources = glob(['src/test/resources/**']),
)
)
\ No newline at end of file
......
......@@ -593,12 +593,12 @@ maven_jar(
license = 'Apache2.0',
)
maven_jar(
name = 'atomix-coordination',
id = 'io.atomix:atomix-coordination:1.0.0-rc3',
sha1 = '182a2618cbef13e6efe58b85aadfa1176b9d08f3',
license = 'Apache2.0',
)
# maven_jar(
# name = 'atomix-coordination',
# id = 'io.atomix:atomix-coordination:1.0.0-rc3',
# sha1 = '182a2618cbef13e6efe58b85aadfa1176b9d08f3',
# license = 'Apache2.0',
# )
maven_jar(
name = 'atomix-messaging',
......
......@@ -105,8 +105,28 @@
-->
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
</repository>
<repository>
<id>snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
......
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
CURRENT_NAME = 'onos-of-api'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:CORE_DEPS',
'//lib:openflowj',
......@@ -13,18 +8,8 @@ TEST_DEPS = [
'//core/api:onos-api-tests',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
osgi_jar_with_tests (
name = 'onos-of-api',
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
)
java_test(
name = 'tests',
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[CURRENT_TARGET],
source_under_test = [CURRENT_TARGET],
test_deps = TEST_DEPS,
)
......
......@@ -14,6 +14,7 @@ genrule(
visibility = [ 'PUBLIC' ]
)
#FIXME location suppression.xml does not trigger this rule
export_file(
name = 'suppressions.xml',
src = suppression_source,
......
SRC = 'src/main/java/org/onlab/**/'
TEST = 'src/test/java/org/onlab/**/'
CURRENT_NAME = 'onlab-rest'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:COMPILE',
'//utils/osgi:onlab-osgi',
......@@ -11,22 +6,7 @@ COMPILE_DEPS = [
'//lib:jersey-server',
]
TEST_DEPS = [
'//lib:TEST',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
osgi_jar_with_tests (
name = 'onlab-rest',
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
)
java_test(
name = 'tests',
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[CURRENT_TARGET],
source_under_test = [CURRENT_TARGET],
)
)
\ No newline at end of file
......
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
RESOURCES_ROOT = 'src/main/resources/'
CURRENT_NAME = 'onos-rest'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:CORE_DEPS',
'//incubator/api:onos-incubator-api',
......@@ -16,26 +9,9 @@ TEST_DEPS = [
'//lib:TEST_REST',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
resources = glob([RESOURCES_ROOT + '**']),
resources_root = RESOURCES_ROOT,
osgi_jar_with_tests (
name = 'onos-rest',
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
debug = False,
web_context = '/onos/v1'
)
SOURCE_JAR = CURRENT_TARGET + '-jar'
java_test(
name = 'onos-rest-tests',
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[SOURCE_JAR],
source_under_test = [SOURCE_JAR],
visibility = ['PUBLIC'],
resources_root = 'src/test/resources',
resources = glob(['src/test/resources/**']),
)
test_deps = TEST_DEPS,
web_context = '/onos/v1',
)
\ No newline at end of file
......
SRC = 'src/main/java/org/onosproject/**/'
TEST = 'src/test/java/org/onosproject/**/'
RESOURCES_ROOT = 'src/main/resources/'
CURRENT_NAME = 'onos-gui'
CURRENT_TARGET = ':' + CURRENT_NAME
COMPILE_DEPS = [
'//lib:CORE_DEPS',
'//lib:javax.ws.rs-api',
......@@ -33,23 +26,10 @@ RESOURCES = [
'WEB-INF/classes/raw=src/main/webapp/raw',
]
osgi_jar(
name = CURRENT_NAME,
srcs = glob([SRC + '/*.java']),
resources = glob([RESOURCES_ROOT + '**']),
resources_root = RESOURCES_ROOT,
osgi_jar_with_tests (
name = 'onos-gui',
deps = COMPILE_DEPS,
visibility = ['PUBLIC'],
test_deps = TEST_DEPS,
include_resources = ','.join(RESOURCES),
web_context = '/onos/ui',
debug = False,
)
java_test(
name = 'tests',
srcs = glob([TEST + '/*.java']),
deps = COMPILE_DEPS +
TEST_DEPS +
[CURRENT_TARGET],
source_under_test = [CURRENT_TARGET],
)
......