from: AllJoyn Project (Qualcomm Innovation Center, Inc.)
<maintain...@alljoyn.org>

Add AllJoyn v. 3.3.2 as a new package to OpenWrt.

AllJoyn is a peer-to-peer networking technology.  Project details can be
found at http://www.alljoyn.org.

Signed-off-by: Steve Kinneberg <ste...@quicinc.com>
---
This is an updated version of AllJoyn from my previous submission.  This
patch completely supersedes the previous patch as that has not been
applied yet.

Index: package/network/services/alljoyn/files/alljoyn.config
===================================================================
--- package/network/services/alljoyn/files/alljoyn.config       (revision 0)
+++ package/network/services/alljoyn/files/alljoyn.config       (working copy)
@@ -0,0 +1,27 @@
+
+config transport 'unix'
+       option enable '1'
+       option path 'alljoyn'
+       option abstract '1'
+
+config transport 'ip'
+       option enable '1'
+       option max_incomplete_conn '16'
+       option max_complete_conn '96'
+       option bus_port '9955'
+       option auth_timeout '20000'
+       option advertise_daemon '1'
+       option all_networks '0'
+       list networks 'lan'
+
+config transport 'ice'
+       option enable '1'
+       option max_incomplete_conn '16'
+       option max_complete_conn '64'
+       option server 'https://rdvs.alljoyn.org'
+       option auth_timeout '40000'
+       option all_networks '1'
+
+config transport 'bluetooth'
+       option enable '0'
+
Index: package/network/services/alljoyn/files/alljoyn.defaults
===================================================================
--- package/network/services/alljoyn/files/alljoyn.defaults     (revision 0)
+++ package/network/services/alljoyn/files/alljoyn.defaults     (working copy)
@@ -0,0 +1,9 @@
+#! /bin/sh
+uci batch <<EOF
+add ucitrack alljoyn
+set ucitrack.@alljoyn[-1].init=alljoyn
+add_list ucitrack.@network[-1].affects=alljoyn
+commit ucitrack
+EOF
+/etc/init.d/alljoyn enable
+exit 0
Index: package/network/services/alljoyn/files/alljoyn.init
===================================================================
--- package/network/services/alljoyn/files/alljoyn.init (revision 0)
+++ package/network/services/alljoyn/files/alljoyn.init (working copy)
@@ -0,0 +1,224 @@
+#!/bin/sh /etc/rc.common
+
+# Copyright (C) 2013 Qualcomm Innovation Center, Inc.
+#
+#    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.
+#
+
+START=65
+
+SERVICE_PID_FILE=/var/run/alljoyn.pid
+
+CONFIGFILE="/var/etc/alljoyn.conf"
+
+
+check() {
+    local flag
+
+    config_get_bool flag "$1" "$2" 0
+
+    test "$flag" == "1"
+    return $?
+}
+
+
+process_network() {
+    local network="$1"
+    local var="$2"
+    local ifname
+
+    config_get ifname "$network" ifname
+    if [ -n "$ifname" ]; then
+       append "${var}" "${ifname}" ","
+    fi
+}
+
+process_networks() {
+    local section="$1"
+
+    if check "$section" all_networks; then
+       export "${section}_networks=*"
+    else
+       config_list_foreach "$section" networks process_network 
"${section}_networks"
+
+       if [ "$section" == "ip" ]; then
+           # special case IP until multiple interfaces are properly supported 
for IP
+           local len
+           config_get len ip networks_LENGTH
+
+           if [ "$len" == "1" ]; then
+               local network
+               config_get network ip networks_ITEM1
+               config_get addr "$network" ipaddr
+           fi
+       fi
+    fi
+}
+
+
+process_unix_transport() {
+    if check unix enable; then
+       local path
+       local abstract
+
+
+       config_get path unix path "alljoyn"
+       config_get_bool abstract unix abstract "1"
+
+       if [ -n "$abstract" ]; then
+           path="abstract=$path"
+       else
+           path="path=$path"
+       fi
+       export ${NO_EXPORT:+-n} listen_specs="${listen_specs}
+  <listen>unix:${path}</listen>"
+
+       config_get unix_auth_timeout unix auth_timeout "$unix_auth_timeout"
+    fi
+}
+
+
+process_ip_transport() {
+    if check ip enable; then
+       local port
+       local addr="0.0.0.0"
+
+       if check ip advertise_daemon; then
+           export ${NO_EXPORT:+-n} ip_advertise_daemon="<tcp>
+    <property router_advertisement_prefix=\"org.alljoyn.BusNode.\"/>
+  </tcp>"
+       fi
+
+       process_networks ip
+
+       config_get port ip bus_port 9955
+
+       export ${NO_EXPORT:+-n} listen_specs="${listen_specs}
+  <listen>tcp:addr=${addr},port=${port}</listen>"
+
+       config_get ip_max_incomplete_conn ip max_incomplete_conn 
"$ip_max_incomplete_conn"
+       config_get ip_max_complete_conn ip max_complete_conn 
"$ip_max_complete_conn"
+       config_get ip_auth_timeout ip auth_timeout "$ip_auth_timeout"
+    fi
+}
+
+
+process_ice_transport() {
+    if check ice enable; then
+       local url
+       local addrport
+       local proto
+
+       export ${NO_EXPORT:+-n} listen_specs="${listen_specs}
+  <listen>ice:</listen>"
+
+       process_networks ice
+
+       config_get url ice server
+
+       proto="${url%%:*}"
+       addrport="${url##${proto}://}"
+
+       export ice_server="${addrport%:*}"
+
+       if [ "$proto" == "http" ]; then
+           export ice_protocol="HTTP"
+       else
+           export ice_protocol="HTTPS"
+       fi
+
+
+       config_get ice_max_incomplete_conn ice max_incomplete_conn 
"$ice_max_incomplete_conn"
+       config_get ice_max_complete_conn ice max_complete_conn 
"$ice_max_complete_conn"
+       config_get ice_auth_timeout ice auth_timeout "$ice_auth_timeout"
+    fi
+}
+
+
+process_bluetooth_transport() {
+    if check bluetooth enable; then
+       export ${NO_EXPORT:+-n} listen_specs="${listen_specs}
+  <listen>bluetooth:</listen>"
+    fi
+}
+
+
+generate_conf_file() {
+    local listen_specs=""
+
+    local unix_auth_timeout=5000
+
+    local ip_max_incomplete_conn=16
+    local ip_max_complete_conn=64
+    local ip_auth_timeout=20000
+    local ip_networks=""
+    local ip_advertise_daemon=""
+
+    local ice_max_incomplete_conn=16
+    local ice_max_complete_conn=64
+    local ice_auth_timeout=40000
+    local ice_networks=""
+    local ice_server
+    local ice_protocol
+
+    include /lib/network
+    scan_interfaces
+    config_load alljoyn
+
+    process_unix_transport
+    process_ip_transport
+    process_ice_transport
+    process_bluetooth_transport
+
+    mkdir -p $(dirname $CONFIGFILE)
+
+    cat > $CONFIGFILE <<EOF
+<busconfig>
+  <type>alljoyn</type>
+  <fork/>
+  <syslog/>
+  <pidfile>${SERVICE_PID_FILE}</pidfile>
+  ${listen_specs}
+  ${ip_advertise_daemon}
+  <ip_name_service>
+    <property interfaces="${ip_networks}"/>
+  </ip_name_service>
+  <limit max_incomplete_connections="${ip_max_incomplete_conn}"/>
+  <limit max_completed_connections="${ip_max_complete_conn}"/>
+  <limit auth_timeout="${ip_auth_timeout}"/>
+  <ice>
+    <limit max_incomplete_connections="${ice_max_incomplete_conn}"/>
+    <limit max_completed_connections="${ice_max_complete_conn}"/>
+    <limit auth_timeout="${ice_auth_timeout}"/>
+  </ice>
+  <ice_discovery_manager>
+    <property interfaces="${ice_networks}"/>
+    <property protocol="${ice_protocol}"/>
+    <property server="${ice_server}"/>
+    <property enable_ipv6="false"/>
+  </ice_discovery_manager>
+  <property restrict_untrusted_clients="false"/>
+  <limit max_untrusted_clients="${ip_max_complete_conn}"/>
+</busconfig>
+EOF
+}
+
+
+start() {
+    generate_conf_file
+    service_start /usr/bin/alljoyn-daemon --config-file=$CONFIGFILE
+}
+
+stop() {
+    service_stop /usr/bin/alljoyn-daemon
+}
Index: package/network/services/alljoyn/Makefile
===================================================================
--- package/network/services/alljoyn/Makefile   (revision 0)
+++ package/network/services/alljoyn/Makefile   (working copy)
@@ -0,0 +1,165 @@
+# Copyright 2012-2013, Qualcomm Innovation Center, Inc.
+#
+#    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.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=alljoyn
+PKG_VERSION:=3.3.2
+PKG_RELEASE:=1
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-src
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-src.tgz
+PKG_SOURCE_URL:=https://www.alljoyn.org/sites/default/files/resources/
+PKG_MD5SUM:=c5711af5ef8a07470c2ae2e24a252b81
+
+# SCons supports parallel builds but does not support make's jobserver
+PKG_BUILD_PARALLEL:=$(if $(CONFIG_PKG_BUILD_USE_JOBSERVER),0,1)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/alljoyn
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libopenssl +libpthread +librt +libstdcpp
+  TITLE:=AllJoyn Peer-to-Peer networking
+  URL:=http://www.alljoyn.org
+  MAINTAINER:=AllJoyn Open Source Project (Qualcomm Innovation Center, Inc.) 
<maintain...@alljoyn.org>
+endef
+
+define Package/alljoyn/description
+AllJoyn is a daemon and application framework for developing
+ad hoc peer-to-peer applications.  This includes the run-time
+daemon and build-time C++ library.
+endef
+
+
+define Package/alljoyn-c
+  SECTION:=libs
+  CATEGORY:=Libraries
+  DEPENDS:=+alljoyn
+  TITLE:=AllJoyn Peer-to-Peer networking C binding
+  URL:=http://www.alljoyn.org
+  MAINTAINER:=AllJoyn Open Source Project (Qualcomm Innovation Center, Inc.) 
<maintain...@alljoyn.org>
+endef
+
+define Package/alljoyn-c/description
+AllJoyn C binding.  This provides a C library for building
+AllJoyn programs in C.  Selecting this will create a package
+containing the dynamic library for the C binding.
+endef
+
+
+
+ifeq ($(CONFIG_DEBUG),y)
+  ALLJOYN_BUILD_VARIANT:=debug
+else
+  ALLJOYN_BUILD_VARIANT:=release
+endif
+
+# Only the core C++ binding is supported for this release of AllJoyn for 
OpenWrt.
+ALLJOYN_BINDINGS=core,c
+
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/build/openwrt/openwrt/$(ALLJOYN_BUILD_VARIANT)/dist
+
+define Build/Configure/Default
+# Override default to do nothing
+endef
+
+TARGET_CFLAGS+=-fPIC
+TARGET_CPPFLAGS+=-fPIC
+
+define Build/Compile
+       rm -f $(PKG_BUILD_DIR)/alljoyn_core/inc/alljoyn/Status.h
+       scons -C $(PKG_BUILD_DIR) \
+               $(PKG_JOBS) \
+               WS=off \
+               CPU=openwrt \
+               OS=openwrt \
+               BINDINGS=$(ALLJOYN_BINDINGS) \
+               VARIANT=$(ALLJOYN_BUILD_VARIANT) \
+               BD=off \
+               "TARGET_CC=$$(TARGET_CC)" \
+               "TARGET_CXX=$$(TARGET_CXX)" \
+               "TARGET_CFLAGS=$$(TARGET_CFLAGS)" \
+               "TARGET_CPPFLAGS=$$(TARGET_CPPFLAGS)" \
+               "TARGET_PATH=$$(TARGET_PATH)" \
+               "TARGET_LINKFLAGS=$$(TARGET_LDFLAGS)" \
+               "TARGET_LINK=$$(TARGET_CC)" \
+               "STAGING_DIR=$$(STAGING_DIR)"
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include
+       $(INSTALL_DIR) $(1)/usr/include/qcc
+       $(CP) $(PKG_INSTALL_DIR)/cpp/inc/qcc/*.h $(1)/usr/include/qcc/
+       $(INSTALL_DIR) $(1)/usr/include/qcc/posix
+       $(CP) $(PKG_INSTALL_DIR)/cpp/inc/qcc/posix/*.h 
$(1)/usr/include/qcc/posix/
+       $(INSTALL_DIR) $(1)/usr/include/alljoyn
+       $(CP) $(PKG_INSTALL_DIR)/cpp/inc/alljoyn/*.h $(1)/usr/include/alljoyn/
+       $(INSTALL_DIR) $(1)/usr/include/alljoyn_c
+       $(CP) $(PKG_INSTALL_DIR)/c/inc/alljoyn_c/*.h $(1)/usr/include/alljoyn_c/
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/cpp/lib/liballjoyn.a $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/c/lib/liballjoyn_c.a $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/c/lib/liballjoyn_c.so $(1)/usr/lib/
+endef
+
+define Package/alljoyn/conffiles
+/etc/config/alljoyn
+endef
+
+define Package/alljoyn/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/cpp/bin/alljoyn-daemon $(1)/usr/bin
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/alljoyn.init $(1)/etc/init.d/alljoyn
+       $(INSTALL_DIR) $(1)/etc/uci-defaults
+       $(INSTALL_BIN) ./files/alljoyn.defaults $(1)/etc/uci-defaults/alljoyn
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/alljoyn.config $(1)/etc/config/alljoyn
+endef
+
+define Package/alljoyn-c/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/c/lib/liballjoyn_c.so $(1)/usr/lib/
+endef
+
+define Package/alljoyn/postinst
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+    . /etc/uci-defaults/alljoyn
+    rm -f /etc/uci-defaults/alljoyn
+fi
+exit 0
+endef
+
+define Package/alljoyn/prerm
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+    /etc/init.d/alljoyn stop
+    /etc/init.d/alljoyn disable
+    uci batch <<EOF
+del_list ucitrack.@network[-1].affects=alljoyn
+delete ucitrack.@alljoyn[-1]
+commit ucitrack
+EOF
+fi
+exit 0
+endef
+
+
+$(eval $(call BuildPackage,alljoyn))
+$(eval $(call BuildPackage,alljoyn-c))
+




-- 
Steve Kinneberg
Qualcomm Innovation Center, Inc.
Email: ste...@quicinc.com
Phone: +1 (206) 576-0107
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to