Index: sysutils/py-mqttwarn/Makefile =================================================================== --- sysutils/py-mqttwarn/Makefile +++ sysutils/py-mqttwarn/Makefile @@ -1,57 +1,96 @@ # $FreeBSD$ PORTNAME= mqttwarn -DISTVERSION= 0.10.4 -PORTREVISION= 1 +DISTVERSION= 0.16.2 CATEGORIES= sysutils python +MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= dvl@FreeBSD.org COMMENT= Subscribe to MQTT topics and notify pluggable services LICENSE= EPL -LICENSE_FILE= ${WRKSRC}/LICENSE -DEPRECATED= Uses deprecated version of python -EXPIRATION_DATE= 2020-08-15 +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}paho-mqtt>=0:net/py-paho-mqtt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}attrs>0:devel/py-attrs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}docopt>0:devel/py-docopt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}future>0:devel/py-future@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}configparser>0:devel/py-configparser@${PY_FLAVOR} -RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}paho-mqtt>=0:net/py-paho-mqtt@${PY_FLAVOR} -RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}supervisor>=0:sysutils/py-supervisor@${PY_FLAVOR} +# based on setup.py : tests_require=extras['test'], +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>0:devel/py-pytest@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytest-cov>0:devel/py-pytest-cov@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}tox>0:devel/py-tox@${PY_FLAVOR} -USES= python:2.7 shebangfix -USE_PYTHON= flavors +USES= python:3.6+ shebangfix +USE_PYTHON= autoplist concurrent distutils SHEBANG_REGEX= '.*\.py$$' -USE_GITHUB= yes -GH_ACCOUNT= jpmens NO_ARCH= yes -OPTIONS_DEFINE= DOCS EXAMPLES +# Most of what is in setup.py under extras is supported. +# The following were omitted because their dependencies are not found in the +# FreeBSD port tree: AMQP APPRISE ASTERISK FBCHAT IOHUB NMA NSCA OSXNOTIFY PASTEBINPUB PROWL PUSHBULLET +# SLACK TOOTPASTE XIVELY XMPP +OPTIONS_DEFINE= DOCS EXAMPLES \ + APNS CELERY DNSUPDATE GSS GSS2 MYSQL POSTGRES REISPUB RRDTOOL \ + SERIAL SSH TWILIO TWITTER WEBSOCKET USERS= mqttwarn GROUPS= mqttwarn -SUB_FILES= pkg-message +SUB_FILES= pkg-message mqttwarn -post-patch: - @${REINPLACE_CMD} -e 's|MQTTWARN_LIBDIR|${PYTHON_SITELIBDIR}/${PORTNAME}/lib/|g' ${WRKSRC}/mqttwarn.ini.sample +APNS_DESC= Apple Push Notifications +CELERY_DESC= Asynchronous task queue/job queue +DNSUPDATE_DESC= DNS updates +GSS_DESC= Google Docs Spreadsheet +GSS2_DESC= Google Docs Spreadsheet 2 +MYSQL_DESC= MySQL plugin +POSTGRES_DESC= PostgreSQL Plugin +REISPUB_DESC= Publishes to a Redis channel +RRDTOOL_DESC= Updates a round robin database created by rrdtool +SERIAL_DESC= Serial port +SSH_DESC= ssh plugin +TWILIO_DESC= Use Twilio API to send messages +TWITTER_DESC= Notifications to Twitter accounts +WEBSOCKET_DESC= Websocket -do-build: - (cd ${WRKSRC} && ${PYTHON_CMD} -m compileall .) +APNS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}apns2>=2.0.1:devel/py-apns2@${PY_FLAVOR} +CELERY_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}celery>0:devel/py-celery@${PY_FLAVOR} +DNSUPDATE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dnspython>=1.15.0:dns/py-dnspython@${PY_FLAVOR} +GSS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gdata>=2.0.18:devel/py-gdata@${PY_FLAVOR} +GSS2_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gspread>=2.1.10:net/py-gspread@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}oauth2client>=4.1.2:security/py-oauth2client@${PY_FLAVOR} +MYSQL_USES= mysql +POSTGRES_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}psycopg2>=2.7.4:databases/py-psycopg2@${PY_FLAVOR} +REISPUB_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}redis>=2.10.6:databases/py-redis@${PY_FLAVOR} +RRDTOOL_LIB_DEPENDS= librrd.so:databases/rrdtool +SERIAL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pyserial>3.40:comms/py-pyserial@${PY_FLAVOR} +SSH_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}paramiko>2.4.1:security/py-paramiko@${PY_FLAVOR} +TWILIO_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}twilio>6.11.0:devel/py-twilio@${PY_FLAVOR} +TWITTER_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-twitter>=3.4.1:net/py-python-twitter@${PY_FLAVOR} +WEBSOCKET_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}websocket-client>=0.47.0:www/py-websocket-client@${PY_FLAVOR} -do-install: - ${MKDIR} ${STAGEDIR}/var/log/${PORTNAME} - ${INSTALL_SCRIPT} ${WRKSRC}/mqttwarn.py ${STAGEDIR}${PREFIX}/sbin/mqttwarn - (cd ${WRKSRC}/etc && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}) - (cd ${WRKSRC}/services && ${COPYTREE_SHARE} . ${STAGEDIR}${PYTHON_SITELIBDIR}/${PORTNAME}/lib/services) - ${CP} ${WRKSRC}/mqttwarn.ini.sample ${STAGEDIR}${ETCDIR} +do-test: + cd ${WRKSRC} ; ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test -do-install-DOCS-on: - @${MKDIR} ${STAGEDIR}${DOCSDIR} - ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR} +post-install: + ${INSTALL_SCRIPT} ${WRKDIR}/mqttwarn ${STAGEDIR}${PREFIX}/etc/rc.d + @${ECHO_CMD} "etc/rc.d/mqttwarn" >> ${TMPPLIST} -do-install-EXAMPLES-on: - @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} - (cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) + ${MKDIR} ${STAGEDIR}${ETCDIR} + ${INSTALL_SCRIPT} ${WRKSRC}/mqttwarn/examples/basic/mqttwarn.ini ${STAGEDIR}${ETCDIR}/mqttwarn.ini.sample + @${ECHO_CMD} "@dir ${ETCDIR}" >> ${TMPPLIST} + @${ECHO_CMD} "@sample(mqttwarn,mqttwarn,0640) ${ETCDIR}/mqttwarn.ini.sample" >> ${TMPPLIST} + + ${MKDIR} ${STAGEDIR}/var/run/mqttwarn + @${ECHO_CMD} "@dir /var/run/mqttwarn" >> ${TMPPLIST} + + ${MKDIR} ${STAGEDIR}/var/log/mqttwarn + @${ECHO_CMD} "@dir(mqttwarn,mqttwarn,) /var/log/mqttwarn" >> ${TMPPLIST} .include Index: sysutils/py-mqttwarn/distinfo =================================================================== --- sysutils/py-mqttwarn/distinfo +++ sysutils/py-mqttwarn/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1540990308 -SHA256 (jpmens-mqttwarn-0.10.4_GH0.tar.gz) = a93cd520e622f57f416e01909f807754c485511dbbb2970c85cd479a971fbf73 -SIZE (jpmens-mqttwarn-0.10.4_GH0.tar.gz) = 790670 +TIMESTAMP = 1596829490 +SHA256 (mqttwarn-0.16.2.tar.gz) = d20914858f2f5d2363debf9fc229dda78f9191f42982cdc960de2e4f20bd8950 +SIZE (mqttwarn-0.16.2.tar.gz) = 106511 Index: sysutils/py-mqttwarn/files/mqttwarn.in =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/mqttwarn.in @@ -0,0 +1,48 @@ +#!/bin/sh +# $FreeBSD$ + +# PROVIDE: mqttwarn +# REQUIRE: LOGIN cleanvar +# KEYWORD: shutdown + +# +# Add the following lines to /etc/rc.conf to enable mqttwarn: +# mqttwarn_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable mqttwarn +# + +. /etc/rc.subr + +name="mqttwarn" +rcvar=${name}_enable + +pidfile="/var/run/${name}/${name}.pid" +mqttwarn_user="mqttwarn" +mqttwarn_command="%%PREFIX%%/bin/mqttwarn" +command="/usr/sbin/daemon" + +load_rc_config $name + +: ${mqttwarn_enable:=NO} +: ${mqttwarn_user:=mqttwarn} +: ${mqttwarn_group:=mqttwarn} +: ${mqttwarn_syslog_facility:=local3} + +start_precmd=mqttwarn_prestart + +# these environment varialbes need to be set or the app will fail to start. +mqttwarn_env="MQTTWARNINI='/usr/local/etc/mqttwarn/mqttwarn.ini' MQTTWARNLOG='/var/log/mqttwarn/mqttwarn.log'" + +mqttwarn_prestart() +{ + # create the file pid, and directory, with correct permissions + if [ ! -e ${pidfile} ]; then + install -o ${mqttwarn_user} -g ${mqttwarn_group} /dev/null ${pidfile}; + else + chown ${mqttwarn_user}:${mqttwarn_group} ${pidfile}; + fi +} + +command_args="-P ${pidfile} -t ${name} -T ${name} -l ${mqttwarn_syslog_facility} ${mqttwarn_command}" + +run_rc_command "$1" Index: sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample =================================================================== --- sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample +++ /dev/null @@ -1,10 +0,0 @@ ---- mqttwarn.ini.sample.orig 2018-03-26 17:57:16 UTC -+++ mqttwarn.ini.sample -@@ -14,6 +14,7 @@ clientid = 'mqttwarn' - lwt = 'clients/mqttwarn' - skipretained = False - cleansession = False -+libdir = /usr/local/lib/python2.7/site-packages/mqttwarn/lib/ - - # MQTTv31 = 3 (default) - # MQTTv311 = 4 Index: sysutils/py-mqttwarn/files/patch-mqttwarn.py =================================================================== --- sysutils/py-mqttwarn/files/patch-mqttwarn.py +++ /dev/null @@ -1,20 +0,0 @@ ---- mqttwarn.py.orig 2018-03-26 20:00:37 UTC -+++ mqttwarn.py -@@ -83,6 +83,8 @@ class Config(RawConfigParser): - self.cleansession = False - self.protocol = 3 - -+ self.libdir = '' -+ - self.logformat = '%(asctime)-15s %(levelname)-5s [%(module)s] %(message)s' - self.logfile = LOGFILE - self.loglevel = 'DEBUG' -@@ -999,7 +1001,7 @@ def load_services(services): - modulefile = 'services/%s.py' % module - - try: -- service_plugins[service]['module'] = load_module(modulefile) -+ service_plugins[service]['module'] = load_module(cf.libdir + '/' + modulefile) - logging.debug("Service %s loaded" % (service)) - except Exception, e: - logging.error("Can't load %s service (%s): %s" % (service, modulefile, str(e))) Index: sysutils/py-mqttwarn/files/patch-mqttwarn_examples_basic_mqttwarn.ini =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/patch-mqttwarn_examples_basic_mqttwarn.ini @@ -0,0 +1,12 @@ +# If we don't comment this out, the daemon will fail to start +--- mqttwarn/examples/basic/mqttwarn.ini.orig 2020-08-08 01:23:03 UTC ++++ mqttwarn/examples/basic/mqttwarn.ini +@@ -51,7 +51,7 @@ loglevel = DEBUG + ; -------- + + ; path to file containing self-defined functions for formatmap and datamap +-functions = 'samplefuncs.py' ++#functions = 'samplefuncs.py' + + ; name the service providers you will be using. + launch = file, log Index: sysutils/py-mqttwarn/files/patch-setup.py =================================================================== --- /dev/null +++ sysutils/py-mqttwarn/files/patch-setup.py @@ -0,0 +1,27 @@ +# Fix the versions according to what has been tested to work +# change == to >= +--- setup.py.orig 2020-08-08 02:11:44 UTC ++++ setup.py +@@ -7,14 +7,14 @@ here = os.path.abspath(os.path.dirname(__file__)) + README = open(os.path.join(here, 'README.rst')).read() + + requires = [ +- 'six==1.13.0', +- 'paho-mqtt==1.5.0', +- 'jinja2==2.10.3', +- 'attrs==19.3.0', +- 'docopt==0.6.2', +- 'requests==2.22.0', +- 'future==0.18.2', +- 'configparser==4.0.2', ++ 'six>=1.13.0', ++ 'paho-mqtt>=1.4.0', ++ 'jinja2>=2.10.1', ++ 'attrs>=19.3.0', ++ 'docopt>=0.6.2', ++ 'requests>=2.22.0', ++ 'future>=0.18.2', ++ 'configparser>=3.5.3', + ] + + extras = { Index: sysutils/py-mqttwarn/files/pkg-message.in =================================================================== --- sysutils/py-mqttwarn/files/pkg-message.in +++ sysutils/py-mqttwarn/files/pkg-message.in @@ -1,34 +1,16 @@ [ { type: install message: <