[package] mosquitto: upgrade MQTT tools to v1.0.3

Major changes since v0.15 currently in trunk
* SSL/TLS support across the board, broker, clients and client library
* TLS-PSK support if openssl version is new enough
* thread support in client library
* lots and lots of bug fixes

Because prior versions of mosquitto didn't have any SSL support,
I've made the openssl dependency optional (but on by default)

Includes basic UCI config support, originally from:
https://github.com/remakeelectric/owrt_pub_feeds/tree/master/luci-app-mosquitto

Tested with both all -nossl and all regular packages.
(Have to run a "make package/mosquitto/clean" between builds)

[Florian: fix for real variant building, remove check on backfire]

Signed-off-by: Karl Palsson <karlp@remake.is>

git-svn-id: svn://svn.openwrt.org/openwrt/packages@33787 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
florian 2012-10-16 15:55:31 +00:00
parent b441e0f084
commit d04dd15128
4 changed files with 189 additions and 41 deletions

View File

@ -9,51 +9,111 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
PKG_VERSION:=0.15
PKG_VERSION:=1.0.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://mosquitto.org/files/source/
PKG_MD5SUM:=7ae0ac38f1f379578ab5530e5dc7269e
PKG_MD5SUM:=9c9e06c57fcca80d76068c53ad140186
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/mosquitto/default
MAKE_FLAGS+=WITH_MEMORY_TRACKING=no
TARGET_CFLAGS+=-ggdb3
define Package/$(PKG_NAME)/default
SECTION:=net
CATEGORY:=Network
TITLE:=mosquitto - an MQTT message broker
URL:=http://www.mosquitto.org/
endef
define Package/mosquitto
$(Package/mosquitto/default)
define Package/$(PKG_NAME)
$(call Package/mosquitto/default)
TITLE+= (with SSL support)
DEPENDS+= +libopenssl
VARIANT:=ssl
endef
define Package/mosquitto/description
define Package/$(PKG_NAME)-nossl
$(call Package/$(PKG_NAME)/default)
TITLE+= (without SSL support)
VARIANT:=nossl
endef
define Package/$(PKG_NAME)/default/description
mosquitto is a message broker that supports v3.1 of the MQ Telemetry
Transport protocol. MQTT provides a lightweight method for
messaging using a publish/subscribe model.
This package also includes some basic support for configuring via UCI
endef
define Package/mosquitto-client
define Package/$(PKG_NAME)/description
$(call Package/$(PKG_NAME)/default/description)
This package is built with SSL support
endef
define Package/$(PKG_NAME)-nossl/description
$(call Package/$(PKG_NAME)/default/description)
This package is built WITHOUT SSL support.
endef
define Package/mosquitto-client/default
$(Package/mosquitto/default)
TITLE:= mosquitto - client tools
DEPENDS:= +libmosquitto
endef
define Package/mosquitto-client
$(call Package/mosquitto-client/default)
TITLE+= (With SSL support)
DEPENDS+=+libmosquitto
VARIANT:=ssl
endef
define Package/mosquitto-client-nossl
$(call Package/mosquitto-client/default)
TITLE+= (Without SSL support)
DEPENDS+=+libmosquitto-nossl
VARIANT:=nossl
endef
define Package/mosquitto-client/description
define Package/mosquitto-client/default/description
Command line client tools for publishing messages to MQTT servers
and subscribing to topics.
endef
define Package/libmosquitto
define Package/mosquitto-client/description
$(call Package/mosquitto-client/default/description)
This package is built with SSL support
endef
define Package/mosquitto-client-nossl/description
$(call Package/mosquitto-client/default/description)
This package is built without SSL support
endef
define Package/libmosquitto/default
$(Package/mosquitto/default)
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+libpthread
TITLE:= mosquitto - client library
endef
define Package/libmosquitto/description
define Package/libmosquitto
$(call Package/libmosquitto/default)
TITLE+= (With SSL Support)
DEPENDS+= +libopenssl
VARIANT=ssl
endef
define Package/libmosquitto-nossl
$(call Package/libmosquitto/default)
TITLE+= (Without SSL Support)
VARIANT=nossl
endef
define Package/libmosquitto/default/description
Library required for mosquitto's command line client tools, also for
use by any third party software that wants to communicate with a
mosquitto server.
@ -62,25 +122,42 @@ Should be useable for communicating with any MQTT v3.1 compatible
server, such as IBM's RSMB, in addition to Mosquitto
endef
define Package/mosquitto/conffiles
/etc/mosquitto/mosquitto.conf
define Package/libmosquitto/description
$(call Package/libmosquitto/default/description)
This package is built with SSL support
endef
define Package/libmosquitto-nossl/description
$(call Package/libmosquitto/default/description)
This package is built without SSL support
endef
define Package/mosquitto/install
define Package/$(PKG_NAME)/conffiles
/etc/mosquitto/mosquitto.conf
/etc/config/mosquitto
endef
Package/$(PKG_NAME)-nossl/conffiles = $(Package/$(PKG_NAME)/conffiles)
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mosquitto $(1)/usr/sbin/mosquitto
$(INSTALL_DIR) $(1)/etc/mosquitto
$(INSTALL_CONF) $(PKG_BUILD_DIR)/mosquitto.conf $(1)/etc/mosquitto/mosquitto.conf
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/mosquitto.init $(1)/etc/init.d/mosquitto
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/mosquitto.uci.convert $(1)/usr/bin
endef
Package/$(PKG_NAME)-nossl/install = $(Package/$(PKG_NAME)/install)
define Package/mosquitto-client/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_pub $(1)/usr/bin/mosquitto_pub
$(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_sub $(1)/usr/bin/mosquitto_sub
endef
Package/mosquitto-client-nossl/install = $(Package/mosquitto-client/install)
# This installs files into ./staging_dir/. so that you can cross compile from the host
define Build/InstallDev
@ -88,14 +165,24 @@ define Build/InstallDev
$(CP) $(PKG_BUILD_DIR)/lib/mosquitto.h $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
# This should just get symlinked, but I can't work out the magic syntax :(
$(CP) $(PKG_BUILD_DIR)/lib/libmosquitto.so.0 $(1)/usr/lib/libmosquitto.so
$(CP) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/
endef
# This installs files on the target. Compare with Build/InstallDev
define Package/libmosquitto/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/libmosquitto.so.0 $(1)/usr/lib/libmosquitto.so.0
$(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/libmosquitto.so.1
endef
$(eval $(call BuildPackage,mosquitto))
Package/libmosquitto-nossl/install = $(Package/libmosquitto/install)
# Applies to all...
ifeq ($(BUILD_VARIANT),nossl)
MAKE_FLAGS += WITH_TLS=no
endif
$(eval $(call BuildPackage,$(PKG_NAME)))
$(eval $(call BuildPackage,$(PKG_NAME)-nossl))
$(eval $(call BuildPackage,libmosquitto))
$(eval $(call BuildPackage,libmosquitto-nossl))
$(eval $(call BuildPackage,mosquitto-client))
$(eval $(call BuildPackage,mosquitto-client-nossl))

View File

@ -0,0 +1,84 @@
#!/bin/sh
# Converts a uci config file into an appropriate mosquitto.conf snippet
# expected to be used in an init file to generate a config file to run from
# Karl Palsson <karlp@remake.is> 2012.
# Considered to be released into the public domain
TCONF=/tmp/mosquitto.generated.$$.conf
while getopts "f:" o; do
case $o in
f)
TCONF=$OPTARG
;;
esac
done
if [ -e $TCONF ]; then
echo "Odd, same temporary generated config file already existed: $TCONF"
exit 1
fi
echo "Generating mosquitto config file in $TCONF"
NOW=$(date)
echo "# mosquitto.conf file generated from UCI config." >>$TCONF
echo "# Config snippet generated by $0 on $NOW" >>$TCONF
echo "#" >> $TCONF
QQ=$(uci -q get mosquitto.mosquitto.log_dest)
if [ $? = 0 ]; then
for dest in $QQ; do
echo "log_dest $dest" >> $TCONF
done
fi
QQ=$(uci -q get mosquitto.mosquitto.no_remote_access)
if [ $? = 0 ]; then
if [ "$QQ" -eq 1 ]; then
echo "bind_address 127.0.0.1" >> $TCONF
fi
fi
HATE_SECTION_COUNT=$(grep config /etc/config/mosquitto | grep bridge | wc -l)
if [ $HATE_SECTION_COUNT -gt 0 ]; then
for i in $(seq $HATE_SECTION_COUNT -1 1); do
NN=$(uci -q get mosquitto.@bridge[-$i].connection)
echo "" >> $TCONF
echo "# Bridge connection from UCI section" >> $TCONF
echo "connection $NN" >> $TCONF
ADDR=$(uci -q get mosquitto.@bridge[-$i].address)
echo "address $ADDR" >> $TCONF
TOPICS=$(uci -q -d';' get mosquitto.@bridge[-$i].topic)
# UGLY! just want to split on the ; :(
echo $TOPICS | sed "s/^/topic /" | sed "s/;/\ntopic /g" >> $TCONF
CS=$(uci -q get mosquitto.@bridge[-$i].cleansession)
if [ $? -eq 0 ]; then
if [ "$CS" -eq 1 ]; then
echo "cleansession true" >> $TCONF
fi
else
echo "cleansession false" >> $TCONF
fi
TRYPRIV=$(uci -q get mosquitto.@bridge[-$i].tryprivate)
if [ $? -eq 0 ]; then
if [ "$TRYPRIV" -eq 1 ]; then
echo "try_private true" >> $TCONF
else
echo "try_private false" >> $TCONF
fi
else
# Override default to avoid crashes with 0.15 brokers :(
echo "try_private false" >> $TCONF
fi
CLIENTID=$(uci -q get mosquitto.@bridge[-$i].clientid)
if [ $? -eq 0 ]; then
echo "clientid $CLIENTID" >> $TCONF
fi
BRIDGEID=$(uci -q get mosquitto.@bridge[-$i].identity)
if [ $? -eq 0 ]; then
echo "bridge_identity $BRIDGEID" >> $TCONF
fi
BRIDGEPSK=$(uci -q get mosquitto.@bridge[-$i].psk)
if [ $? -eq 0 ]; then
echo "bridge_psk $BRIDGEPSK" >> $TCONF
fi
done
fi

View File

@ -1,12 +0,0 @@
diff -r 490c907277dc config.h
--- a/config.h Sat Jan 15 22:23:50 2011 +0000
+++ b/config.h Wed Jan 26 13:37:36 2011 +0000
@@ -15,7 +15,7 @@
/* Compile with memory tracking support? If disabled, mosquitto won't track
* heap memory usage nor export '$SYS/broker/heap/current size', but will use
* slightly less memory and CPU time. */
-#define WITH_MEMORY_TRACKING
+//#define WITH_MEMORY_TRACKING
/* Compile with the ability to upgrade from old style sqlite persistent
* databases to the new mosquitto format. This means a dependency on sqlite. It

View File

@ -1,11 +0,0 @@
diff -r bebd02e8bed4 -r 77b64fb10075 Makefile
--- a/Makefile Thu Jul 07 13:34:54 2011 +0100
+++ b/Makefile Thu Jul 07 16:50:05 2011 +0000
@@ -1,6 +1,6 @@
include config.mk
-DIRS=lib client src man
+DIRS=lib client src
DISTDIRS=man
.PHONY : all mosquitto clean reallyclean install uninstall dist sign copy