#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
-runfw: org.apache.felix.framework;version='[5.2.0,5.2.0]'
-runee: JavaSE-1.8
-runsystemcapabilities: ${native_capability}

-resolve.effective: active;skip:="osgi.service"

-runbundles: \
	${metatype},\
	${log},\
	${gogo},\
	${configadmin},\
	${eventadmin},\
	${webconsole},\
	${bndlib},\
	org.apache.felix.dependencymanager;version=latest,\
	org.apache.felix.dependencymanager.shell;version=latest,\
	org.apache.felix.dependencymanager.runtime;version=latest,\
    org.apache.felix.dependencymanager.samples.dynamicdep.api;version=latest

-runproperties:  \
	org.apache.felix.dependencymanager.runtime.log=warn,\
	org.apache.felix.dependencymanager.loglevel=2,\
	org.apache.felix.log.maxSize=100000,\
	org.apache.felix.log.storeDebug=true



