Moved /features to /tools/package/features.
Change-Id: I6b52c92b688a833b9e3813416b785533cb4dd829
diff --git a/tools/package/BUCK b/tools/package/BUCK
index 9324c2c..b7adf19 100644
--- a/tools/package/BUCK
+++ b/tools/package/BUCK
@@ -2,19 +2,6 @@
BRANDING = '//tools/package/branding:onos-tools-package-branding'
PATCHES = '//lib:apache-karaf-patches'
-FEATURES = [
- '//features:onos-thirdparty-base',
- '//features:onos-thirdparty-web',
- '//features:onos-api',
- '//features:onos-core',
- '//features:onos-incubator',
- '//features:onos-rest',
- '//features:onos-gui',
- '//features:onos-gui2',
- '//features:onos-cli',
- '//features:onos-security',
-]
-
#TODO move to buck-tools
export_file (
name = 'onos-prep-karaf',
@@ -28,17 +15,11 @@
out = 'karaf.zip',
)
-compile_features(
- name = 'onos-features',
- features = FEATURES,
- maven_coords = 'org.onosproject:onos-features:xml:features:' + ONOS_VERSION,
-)
-
staged_repos = ['$(location %s-repo)' % f for f in FEATURES]
staged_apps = ['$(location %s)' % a for a in APPS]
# feature_coords = 'foo:bar:1.3'
-sources = [ '$(location :onos-features)', ]
+sources = [ '$(location //tools/package/features:onos-features)', ]
sources += staged_repos + staged_apps
tar_file(
diff --git a/tools/package/BUILD b/tools/package/BUILD
index 93a0e1c..2067140 100644
--- a/tools/package/BUILD
+++ b/tools/package/BUILD
@@ -22,7 +22,7 @@
# FIXME: Move /features to under tools/package/features
PACKAGING_REQUIREMENTS = [
- "//features:onos-features",
+ "//tools/package/features:onos-features",
":onos-karaf",
]
@@ -35,6 +35,7 @@
cmd = "$(location onos_stage.py) $(location onos.tar.gz) %s $(location :onos-karaf) $(SRCS)" % ONOS_VERSION,
visibility = ["//visibility:public"],
tools = ["onos_stage.py"],
+ output_to_bindir = True,
)
filegroup(
@@ -50,6 +51,7 @@
cmd = "mkdir onos-admin-%s; cp $(SRCS) onos-admin-%s; tar zcf $(location onos-admin.tar.gz) onos-admin-%s"\
% (ONOS_VERSION, ONOS_VERSION, ONOS_VERSION),
visibility = ["//visibility:public"],
+ output_to_bindir = True,
)
# Generates the onos-test.tar.gz file with test tools
@@ -60,6 +62,7 @@
cmd = "mkdir onos-test-%s; cp -r tools onos-test-%s; tar zcf $(location onos-test.tar.gz) onos-test-%s"\
% (ONOS_VERSION, ONOS_VERSION, ONOS_VERSION),
visibility = ["//visibility:public"],
+ output_to_bindir = True,
)
# Runs ONOS as a single instance from the /tmp directory
@@ -70,7 +73,7 @@
srcs = ["onos-run-karaf", "onos-package"],
cmd = "sed \"s#ONOS_TAR=#ONOS_TAR=$(location :onos-package)#\" $(location onos-run-karaf) > $(location onos-runner); chmod +x $(location onos-runner)",
executable = True,
- local = True,
+ output_to_bindir = True,
visibility = ["//visibility:public"],
)
diff --git a/tools/package/features/BUCK b/tools/package/features/BUCK
new file mode 100644
index 0000000..479d488
--- /dev/null
+++ b/tools/package/features/BUCK
@@ -0,0 +1,166 @@
+osgi_feature (
+ name="onos-thirdparty-base",
+ title="ONOS 3rd party dependencies",
+ required_features = [],
+ included_bundles = [
+ '//lib:atomix',
+ '//lib:commons-lang',
+ '//lib:commons-lang3',
+ '//lib:commons-text',
+ '//lib:commons-configuration',
+ '//lib:guava',
+ '//lib:netty',
+ '//lib:netty-common',
+ '//lib:netty-buffer',
+ '//lib:netty-transport',
+ '//lib:netty-handler',
+ '//lib:netty-codec',
+ '//lib:netty-transport-native-epoll',
+ '//lib:netty-resolver',
+ '//lib:commons-pool',
+ '//lib:commons-math3',
+ '//lib:joda-time',
+ '//lib:metrics-core',
+ '//lib:metrics-json',
+ '//lib:minimal-json',
+ '//lib:kryo',
+ '//lib:reflectasm',
+ '//lib:asm',
+ '//lib:minlog',
+ '//lib:objenesis',
+ '//lib:jackson-core',
+ '//lib:jackson-annotations',
+ '//lib:jackson-databind',
+ '//lib:commons-collections',
+ '//lib:typesafe-config',
+ '//lib:concurrent-trees',
+ '//lib:commons-io',
+ '//lib:jersey-client',
+ '//lib:mapdb',
+ '//lib:bcpkix-jdk15on',
+ '//lib:bcprov-jdk15on',
+ '//lib:commons-jxpath', # FIXME: move xpath lib dependency to the right place
+ '//lib:commons-beanutils', # jxpath dependency
+ '//lib:jdom', # jxpath dependency
+ '//lib:sigar',
+ ]
+)
+
+osgi_feature (
+ name="onos-thirdparty-web",
+ title="ONOS 3rd party dependencies for web apps",
+ required_features = [ 'war', 'onos-thirdparty-base' ],
+ included_bundles = [
+ '//lib:jersey-common',
+ '//lib:javax.annotation-api',
+ '//lib:javax.ws.rs-api',
+ '//lib:hk2-api',
+ '//lib:hk2-locator',
+ '//lib:hk2-osgi-resource-locator',
+ '//lib:javax.inject',
+ '//lib:jersey-server',
+ '//lib:jersey-hk2',
+ '//lib:aopalliance-repackaged',
+ '//lib:hk2-utils',
+ '//lib:validation-api',
+ '//lib:javassist',
+ '//lib:jersey-container-servlet',
+ '//lib:jersey-container-servlet-core',
+ '//lib:jersey-media-multipart',
+ '//lib:mimepull',
+ ]
+)
+
+osgi_feature (
+ name = 'onos-api',
+ title = 'ONOS services and model API',
+ required_features = ['scr', 'onos-thirdparty-base'],
+ included_bundles =[
+ '//utils/misc:onlab-misc',
+ '//utils/osgi:onlab-osgi',
+ '//core/api:onos-api',
+ '//incubator/api:onos-incubator-api',
+ ]
+)
+
+osgi_feature (
+ name='onos-core',
+ title='ONOS core components',
+ required_features = ['onos-api'],
+ included_bundles = [
+ '//core/net:onos-core-net',
+ '//core/common:onos-core-common',
+ '//core/store/dist:onos-core-dist',
+ '//core/store/primitives:onos-core-primitives',
+ '//core/store/persistence:onos-core-persistence',
+ '//core/store/serializers:onos-core-serializers',
+ ]
+)
+
+osgi_feature (
+ name='onos-incubator',
+ title='ONOS core incubator components',
+ required_features = ['onos-core'],
+ included_bundles = [
+ '//incubator/net:onos-incubator-net',
+ '//incubator/store:onos-incubator-store',
+ '//incubator/rpc:onos-incubator-rpc',
+ ]
+)
+
+osgi_feature (
+ name="onos-rest",
+ title="ONOS REST API components",
+ required_features = ['onos-api', 'onos-thirdparty-web'],
+ included_bundles = [
+ '//utils/rest:onlab-rest',
+ '//web/api:onos-rest',
+ ]
+)
+
+osgi_feature (
+ name = 'onos-gui',
+ title = 'ONOS GUI console components',
+ required_features = ['onos-api', 'onos-thirdparty-web'],
+ included_bundles = [
+ '//lib:jetty-websocket',
+ '//utils/rest:onlab-rest',
+ '//web/gui:onos-gui',
+ ]
+)
+
+osgi_feature (
+ name = 'onos-gui2',
+ title = 'ONOS GUI2 console components',
+ required_features = ['onos-api', 'onos-thirdparty-web'],
+ included_bundles = [
+ '//lib:jetty-websocket',
+ '//utils/rest:onlab-rest',
+ '//web/gui2:onos-gui2',
+ ]
+)
+
+osgi_feature (
+ name = 'onos-cli',
+ title="ONOS admin command console components",
+ required_features = ['onos-api'],
+ included_bundles = [
+ '//cli:onos-cli',
+ ]
+)
+
+osgi_feature (
+ name = 'onos-security',
+ title="Security-Mode ONOS",
+ required_features = ['onos-api'],
+ included_bundles = [
+ '//lib:org.apache.felix.framework.security',
+ '//core/security:onos-security',
+ ]
+)
+
+compile_features(
+ name = 'onos-features',
+ features = FEATURES,
+ maven_coords = 'org.onosproject:onos-features:xml:features:' + ONOS_VERSION,
+)
diff --git a/tools/package/features/BUILD b/tools/package/features/BUILD
new file mode 100644
index 0000000..5443842
--- /dev/null
+++ b/tools/package/features/BUILD
@@ -0,0 +1,188 @@
+load("//tools/build/bazel:osgi_features.bzl", "osgi_feature", "osgi_feature_repo")
+
+osgi_feature(
+ name = "onos-thirdparty-base",
+ description = "ONOS 3rd party dependencies",
+ included_bundles = [
+ "@atomix//jar",
+ "@commons_lang//jar",
+ "@commons_lang3//jar",
+ "@commons_text//jar",
+ "@commons_configuration//jar",
+ "@guava//jar",
+ "@netty//jar",
+ "@netty_common//jar",
+ "@netty_buffer//jar",
+ "@netty_transport//jar",
+ "@netty_handler//jar",
+ "@netty_codec//jar",
+ "@netty_transport_native_epoll//jar",
+ "@netty_resolver//jar",
+ "@commons_pool//jar",
+ "@commons_math3//jar",
+ "@joda_time//jar",
+ "@metrics_core//jar",
+ "@metrics_json//jar",
+ "@minimal_json//jar",
+ "@kryo//jar",
+ "@reflectasm//jar",
+ "@asm//jar",
+ "@minlog//jar",
+ "@objenesis//jar",
+ "@jackson_core//jar",
+ "@jackson_annotations//jar",
+ "@jackson_databind//jar",
+ "@commons_collections//jar",
+ "@typesafe_config//jar",
+ "@concurrent_trees//jar",
+ "@commons_io//jar",
+ "@jersey_client//jar",
+ "@mapdb//jar",
+ "@bcpkix_jdk15on//jar",
+ "@bcprov_jdk15on//jar",
+ "@commons_jxpath//jar",
+ "@commons_beanutils//jar",
+ "@jdom//jar",
+ "@sigar//jar",
+ ],
+ required_features = [],
+)
+
+osgi_feature(
+ name = "onos-thirdparty-web",
+ description = "ONOS 3rd party dependencies for web apps",
+ included_bundles = [
+ "@jersey_common//jar",
+ "@javax_annotation_api//jar",
+ "@javax_ws_rs_api//jar",
+ "@hk2_api//jar",
+ "@hk2_locator//jar",
+ "@hk2_osgi_resource_locator//jar",
+ "@javax_inject//jar",
+ "@jersey_server//jar",
+ "@jersey_hk2//jar",
+ "@aopalliance_repackaged//jar",
+ "@hk2_utils//jar",
+ "@validation_api//jar",
+ "@javassist//jar",
+ "@jersey_container_servlet//jar",
+ "@jersey_container_servlet_core//jar",
+ "@jersey_media_multipart//jar",
+ "@mimepull//jar",
+ ],
+ required_features = [
+ "war",
+ "onos-thirdparty-base",
+ ],
+)
+
+osgi_feature(
+ name = "onos-api",
+ description = "ONOS services and model API",
+ included_bundles = [
+ "//utils/misc:onlab-misc",
+ "//utils/osgi:onlab-osgi",
+ "//core/api:onos-api",
+ "//incubator/api:onos-incubator-api",
+ ],
+ required_features = [
+ "scr",
+ "onos-thirdparty-base",
+ ],
+)
+
+osgi_feature(
+ name = "onos-core",
+ description = "ONOS core components",
+ included_bundles = [
+ "//core/net:onos-core-net",
+ "//core/common:onos-core-common",
+ "//core/store/dist:onos-core-dist",
+ # "//core/store/primitives:onos-core-primitives",
+ # "//core/store/persistence:onos-core-persistence",
+ # "//core/store/serializers:onos-core-serializers",
+ ],
+ required_features = ["onos-api"],
+)
+
+
+FEATURES = [
+ "//tools/package/features:onos-thirdparty-base",
+ "//tools/package/features:onos-thirdparty-web",
+ "//tools/package/features:onos-api",
+ "//tools/package/features:onos-core",
+# "//tools/package/features:onos-incubator",
+# "//tools/package/features:onos-rest",
+# "//tools/package/features:onos-gui",
+# "//tools/package/features:onos-gui2",
+# "//tools/package/features:onos-cli",
+# "//tools/package/features:onos-security",
+]
+
+osgi_feature_repo(
+ name = "onos-features",
+ exported_features = FEATURES,
+ visibility = ["//visibility:public"],
+)
+
+#osgi_feature (
+# name = "onos-incubator",
+# description = "ONOS core incubator components",
+# required_features = ["onos-core"],
+# included_bundles = [
+# "//incubator/net:onos-incubator-net",
+# "//incubator/store:onos-incubator-store",
+# "//incubator/rpc:onos-incubator-rpc",
+# ]
+#)
+#
+#osgi_feature (
+# name = "onos-rest",
+# description = "ONOS REST API components",
+# required_features = ["onos-api", "onos-thirdparty-web"],
+# included_bundles = [
+# "//utils/rest:onlab-rest",
+# "//web/api:onos-rest",
+# ]
+#)
+#
+#osgi_feature (
+# name = "onos-gui",
+# description = "ONOS GUI console components",
+# required_features = ["onos-api", "onos-thirdparty-web"],
+# included_bundles = [
+# "//lib:jetty_websocket",
+# "//utils/rest:onlab-rest",
+# "//web/gui:onos-gui",
+# ]
+#)
+#
+#osgi_feature (
+# name = "onos-gui2",
+# description = "ONOS GUI2 console components",
+# required_features = ["onos-api", "onos-thirdparty-web"],
+# included_bundles = [
+# "//lib:jetty_websocket",
+# "//utils/rest:onlab-rest",
+# "//web/gui2:onos-gui2",
+# ]
+#)
+#
+#osgi_feature (
+# name = "onos-cli",
+# description ="ONOS admin command console components",
+# required_features = ["onos-api"],
+# included_bundles = [
+# "//cli:onos-cli",
+# ]
+#)
+#
+#osgi_feature (
+# name = "onos-security",
+# description ="Security-Mode ONOS",
+# required_features = ["onos-api"],
+# included_bundles = [
+# "//lib:org.apache.felix.framework.security",
+# "//core/security:onos-security",
+# ]
+#)
diff --git a/tools/package/features/features.xml b/tools/package/features/features.xml
new file mode 100644
index 0000000..979f8b8
--- /dev/null
+++ b/tools/package/features/features.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ ~ Copyright 2014-present Open Networking Foundation
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+ name="onos-@FEATURE-VERSION">
+ <repository>mvn:org.apache.karaf.features/standard/3.0.8/xml/features</repository>
+
+ <feature name="onos-thirdparty-base" version="@FEATURE-VERSION"
+ description="ONOS 3rd party dependencies">
+ <bundle>mvn:commons-lang/commons-lang/2.6</bundle>
+ <bundle>mvn:org.apache.commons/commons-lang3/3.5</bundle>
+ <bundle>mvn:commons-configuration/commons-configuration/1.10</bundle>
+ <bundle>mvn:com.google.guava/guava/22.0</bundle>
+ <bundle>mvn:io.netty/netty/3.10.5.Final</bundle>
+ <bundle>mvn:io.netty/netty-common/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-buffer/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-transport/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-handler/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-codec/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-transport-native-epoll/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-resolver/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-codec-http2/4.1.8.Final</bundle>
+ <bundle>mvn:io.netty/netty-codec-http/4.1.8.Final</bundle>
+ <bundle>mvn:commons-pool/commons-pool/1.6</bundle>
+ <bundle>mvn:org.apache.commons/commons-math3/3.6.1</bundle>
+
+ <bundle>mvn:joda-time/joda-time/2.9.3</bundle>
+
+ <bundle>mvn:io.dropwizard.metrics/metrics-core/3.2.2</bundle>
+ <bundle>mvn:io.dropwizard.metrics/metrics-json/3.2.2</bundle>
+ <bundle>mvn:com.eclipsesource.minimal-json/minimal-json/0.9.4</bundle>
+
+ <bundle>mvn:com.esotericsoftware/kryo/4.0.0</bundle>
+ <bundle>mvn:com.esotericsoftware/reflectasm/1.11.3</bundle>
+ <bundle>mvn:org.ow2.asm/asm/5.0.4</bundle>
+ <bundle>mvn:com.esotericsoftware/minlog/1.3.0</bundle>
+ <bundle>mvn:org.objenesis/objenesis/2.2</bundle>
+
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-core/2.8.8</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.8.8</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/2.8.8</bundle>
+
+ <bundle>mvn:commons-configuration/commons-configuration/1.10</bundle>
+ <bundle>mvn:commons-collections/commons-collections/3.2.2</bundle>
+
+ <bundle>mvn:com.typesafe/config/1.2.1</bundle>
+ <bundle>mvn:com.googlecode.concurrent-trees/concurrent-trees/2.6.0</bundle>
+ <bundle>mvn:commons-io/commons-io/2.4</bundle>
+ <bundle>mvn:io.atomix/atomix/2.0.22</bundle>
+
+ <bundle>mvn:org.glassfish.jersey.core/jersey-client/2.26</bundle>
+
+ <bundle>mvn:org.mapdb/mapdb/1.0.7</bundle>
+ </feature>
+
+ <feature name="onos-thirdparty-web" version="@FEATURE-VERSION"
+ description="ONOS 3rd party dependencies for web apps">
+ <feature>war</feature>
+ <feature>onos-thirdparty-base</feature>
+ <!-- Bundles for jersey-common 2.x -->
+ <bundle>mvn:org.glassfish.jersey.core/jersey-common/2.26</bundle>
+ <bundle>mvn:javax.annotation/javax.annotation-api/1.2</bundle>
+ <bundle>mvn:javax.ws.rs/javax.ws.rs-api/2.1</bundle>
+ <bundle>mvn:org.glassfish.hk2/hk2-api/2.5.0-b42</bundle>
+ <bundle>mvn:org.glassfish.hk2/hk2-locator/2.5.0-b42</bundle>
+ <bundle>mvn:org.glassfish.hk2/osgi-resource-locator/1.0.1</bundle>
+ <bundle>mvn:org.glassfish.hk2.external/javax.inject/2.5.0-b42</bundle>
+ <bundle>mvn:org.glassfish.jersey.inject/jersey-hk2/2.26</bundle>
+ <!-- Bundles for jersey-server -->
+ <bundle>mvn:org.glassfish.jersey.core/jersey-server/2.26</bundle>
+ <bundle>mvn:org.glassfish.hk2.external/aopalliance-repackaged/2.5.0-b42</bundle>
+ <bundle>mvn:org.glassfish.hk2/hk2-utils/2.5.0-b42</bundle>
+ <bundle>mvn:javax.validation/validation-api/1.1.0.Final</bundle>
+ <bundle>mvn:org.javassist/javassist/3.22.0-GA</bundle>
+ <!-- Bundles for jersey-servlet -->
+ <bundle>mvn:org.glassfish.jersey.containers/jersey-container-servlet/2.26</bundle>
+ <bundle>mvn:org.glassfish.jersey.containers/jersey-container-servlet-core/2.26</bundle>
+ <!-- Bundles for jersey-media-multipart -->
+ <bundle>mvn:org.glassfish.jersey.media/jersey-media-multipart/2.26</bundle>
+ <bundle>mvn:org.jvnet.mimepull/mimepull/1.9.6</bundle>
+ </feature>
+
+ <feature name="onos-api" version="@FEATURE-VERSION"
+ description="ONOS services and model API">
+ <feature>scr</feature>
+ <feature>onos-thirdparty-base</feature>
+ <bundle>mvn:org.onosproject/onlab-misc/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onlab-osgi/@ONOS-VERSION</bundle>
+
+ <bundle>mvn:org.onosproject/onos-api/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-incubator-api/@ONOS-VERSION</bundle>
+ </feature>
+
+ <feature name="onos-core" version="@FEATURE-VERSION"
+ description="ONOS core components">
+ <feature>onos-api</feature>
+ <bundle>mvn:org.onosproject/onos-core-net/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-core-common/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-core-dist/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-core-primitives/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-core-persistence/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-core-serializers/@ONOS-VERSION</bundle>
+ </feature>
+
+ <feature name="onos-incubator" version="@FEATURE-VERSION"
+ description="ONOS core incubator components">
+ <feature>onos-core</feature>
+ <bundle>mvn:org.onosproject/onos-incubator-net/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-incubator-core/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-incubator-store/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-incubator-rpc/@ONOS-VERSION</bundle>
+ </feature>
+
+ <feature name="onos-rest" version="@FEATURE-VERSION"
+ description="ONOS REST API components">
+ <feature>onos-api</feature>
+ <feature>onos-thirdparty-web</feature>
+ <bundle>mvn:org.onosproject/onlab-rest/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-rest/@ONOS-VERSION</bundle>
+ </feature>
+
+ <feature name="onos-gui" version="@FEATURE-VERSION"
+ description="ONOS GUI console components">
+ <feature>onos-api</feature>
+ <feature>onos-thirdparty-web</feature>
+ <bundle>mvn:org.eclipse.jetty/jetty-websocket/8.1.19.v20160209</bundle>
+ <bundle>mvn:org.onosproject/onlab-rest/@ONOS-VERSION</bundle>
+ <bundle>mvn:org.onosproject/onos-gui/@ONOS-VERSION</bundle>
+ </feature>
+
+ <feature name="onos-cli" version="@FEATURE-VERSION"
+ description="ONOS admin command console components">
+ <feature>onos-api</feature>
+ <bundle>mvn:org.onosproject/onos-cli/@ONOS-VERSION</bundle>
+ </feature>
+
+ <feature name="onos-security" version="@FEATURE-VERSION"
+ description="Security-Mode ONOS">
+ <feature>onos-api</feature>
+ <bundle>mvn:org.onosproject/org.apache.felix.framework.security/2.2.0.onos</bundle>
+ <bundle>mvn:org.onosproject/onos-security/@ONOS-VERSION</bundle>
+ </feature>
+
+</features>
diff --git a/tools/package/features/pom.xml b/tools/package/features/pom.xml
new file mode 100644
index 0000000..18dd3c4
--- /dev/null
+++ b/tools/package/features/pom.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright 2014-present Open Networking Foundation
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos</artifactId>
+ <version>1.14.0-SNAPSHOT</version>
+ <relativePath>../../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>onos-features</artifactId>
+ <packaging>pom</packaging>
+
+ <description>ONOS Apache Karaf feature definitions</description>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.google.code.maven-replacer-plugin</groupId>
+ <artifactId>replacer</artifactId>
+ <version>1.5.3</version>
+ <executions>
+ <execution>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>replace</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <file>${pom.basedir}/features.xml</file>
+ <outputFile>${pom.basedir}/target/features.xml</outputFile>
+ <replacements>
+ <replacement>
+ <token>@ONOS-VERSION</token>
+ <value>${project.version}</value>
+ </replacement>
+ <replacement>
+ <token>@FEATURE-VERSION</token>
+ <value>${project.version}</value>
+ </replacement>
+ </replacements>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.9</version>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>target/features.xml</file>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>