diff --git a/net/mosquitto/Makefile b/net/mosquitto/Makefile index 56f2a644a..627e99223 100644 --- a/net/mosquitto/Makefile +++ b/net/mosquitto/Makefile @@ -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)) diff --git a/net/mosquitto/files/mosquitto.uci.convert b/net/mosquitto/files/mosquitto.uci.convert new file mode 100644 index 000000000..f8991a33b --- /dev/null +++ b/net/mosquitto/files/mosquitto.uci.convert @@ -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 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 diff --git a/net/mosquitto/patches/100-disable-memory-reporting.patch b/net/mosquitto/patches/100-disable-memory-reporting.patch deleted file mode 100644 index 8d589b456..000000000 --- a/net/mosquitto/patches/100-disable-memory-reporting.patch +++ /dev/null @@ -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 diff --git a/net/mosquitto/patches/101-disable-docbook.patch b/net/mosquitto/patches/101-disable-docbook.patch deleted file mode 100644 index 867019770..000000000 --- a/net/mosquitto/patches/101-disable-docbook.patch +++ /dev/null @@ -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