Index: head/sysutils/py-mqttwarn/Makefile =================================================================== --- head/sysutils/py-mqttwarn/Makefile +++ head/sysutils/py-mqttwarn/Makefile @@ -1,57 +1,95 @@ # $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>=1.13.0:devel/py-six@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}paho-mqtt>=1.4.0:net/py-paho-mqtt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=2.10.1:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}attrs>=19.3.0:devel/py-attrs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}docopt>=0.6.2:devel/py-docopt@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>=2.22.0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}future>=0.18.2:devel/py-future@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}configparser>=3.5.3: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} -USES= python:2.7 shebangfix -USE_PYTHON= flavors +USES= python 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 +RRDTOOL_RUN_DEPENDS= rrdtool>0.1.12: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} -m pytest -v -rs -o addopts= -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: head/sysutils/py-mqttwarn/distinfo =================================================================== --- head/sysutils/py-mqttwarn/distinfo +++ head/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: head/sysutils/py-mqttwarn/files/mqttwarn.in =================================================================== --- head/sysutils/py-mqttwarn/files/mqttwarn.in +++ head/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: head/sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample =================================================================== --- head/sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample +++ head/sysutils/py-mqttwarn/files/patch-mqttwarn.ini.sample @@ -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: head/sysutils/py-mqttwarn/files/patch-mqttwarn.py =================================================================== --- head/sysutils/py-mqttwarn/files/patch-mqttwarn.py +++ head/sysutils/py-mqttwarn/files/patch-mqttwarn.py @@ -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: head/sysutils/py-mqttwarn/files/patch-mqttwarn_examples_basic_mqttwarn.ini =================================================================== --- head/sysutils/py-mqttwarn/files/patch-mqttwarn_examples_basic_mqttwarn.ini +++ head/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 2019-12-27 00:39:16 UTC ++++ mqttwarn/examples/basic/mqttwarn.ini +@@ -50,7 +50,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: head/sysutils/py-mqttwarn/files/patch-setup.py =================================================================== --- head/sysutils/py-mqttwarn/files/patch-setup.py +++ head/sysutils/py-mqttwarn/files/patch-setup.py @@ -0,0 +1,156 @@ +# Fix the versions according to what has been tested to work +# change == to >= +--- setup.py.orig 2020-08-11 14:49:15 UTC ++++ setup.py +@@ -7,112 +7,112 @@ 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 = { + 'amqp': [ +- 'puka==0.0.7', ++ 'puka>=0.0.7', + ], + 'apns': [ +- 'apns==2.0.1', ++ 'apns>=2.0.1', + ], + 'apprise': [ +- 'apprise==0.8.5', ++ 'apprise>=0.8.5', + ], + 'asterisk': [ +- 'pyst2==0.5.0', ++ 'pyst2>=0.5.0', + ], + 'celery': [ + 'celery', + ], + 'dnsupdate': [ +- 'dnspython==1.15.0', ++ 'dnspython>=1.15.0', + ], + 'fbchat': [ +- 'fbchat==1.3.6', ++ 'fbchat>=1.3.6', + ], + 'gss': [ +- 'gdata==2.0.18', ++ 'gdata>=2.0.18', + ], + 'gss2': [ +- 'gspread==2.1.1', +- 'oauth2client==4.1.2', +- #'google-api-python-client==1.7.11', ++ 'gspread>=2.1.1', ++ 'oauth2client>=4.1.2', ++ #'google-api-python-client>=1.7.11', + ], + 'iothub': [ +- 'iothub-client==1.1.2.0', ++ 'iothub-client>=1.1.2.0', + ], + 'mysql': [ + 'mysql', + ], + 'nma': [ +- 'PyNMA==1.0', ++ 'PyNMA>=1.0', + ], + 'nsca': [ +- 'pynsca==1.6', ++ 'pynsca>=1.6', + ], + 'osxnotify': [ +- 'pync==1.6.1', ++ 'pync>=1.6.1', + ], + 'pastebinpub': [ +- 'Pastebin==1.1.2', ++ 'Pastebin>=1.1.2', + ], + 'postgres': [ +- 'psycopg2==2.7.4', ++ 'psycopg2>=2.7.4', + ], + 'prowl': [ + 'prowlpy>=0.52', + ], + 'pushbullet': [ +- 'PushbulletPythonLibrary==2.3', ++ 'PushbulletPythonLibrary>=2.3', + ], + 'redispub': [ +- 'redis==2.10.6', ++ 'redis>=2.10.6', + ], + 'rrdtool': [ +- 'rrdtool==0.1.12', ++ 'rrdtool>=0.1.12', + ], + 'serial': [ +- 'pyserial==3.4', ++ 'pyserial>=3.4', + ], + 'slack': [ +- 'slacker==0.9.65', ++ 'slacker>=0.9.65', + ], + 'ssh': [ +- 'paramiko==2.4.1', ++ 'paramiko>=2.4.1', + ], + 'tootpaste': [ +- 'Mastodon.py==1.2.2', ++ 'Mastodon.py>=1.2.2', + ], + 'twilio': [ +- 'twilio==6.11.0', ++ 'twilio>=6.11.0', + ], + 'twitter': [ +- 'python-twitter==3.4.1', ++ 'python-twitter>=3.4.1', + ], + 'websocket': [ +- 'websocket-client==0.47.0', ++ 'websocket-client>=0.47.0', + ], + 'xively': [ + 'xively-python', + ], + 'xmpp': [ +- 'xmpppy==0.6.1', +- 'dnspython==1.16.0', ++ 'xmpppy>=0.6.1', ++ 'dnspython>=1.16.0', + ], + 'test': [ +- 'pytest==4.6.7', +- 'pytest-cov==2.8.1', ++ 'pytest>=4.6.7', ++ 'pytest-cov>=2.8.1', + 'lovely.testlayers>=0.7.1', +- 'tox==3.14.2', ++ 'tox>=3.14.2', + ], + } + Index: head/sysutils/py-mqttwarn/files/pkg-message.in =================================================================== --- head/sysutils/py-mqttwarn/files/pkg-message.in +++ head/sysutils/py-mqttwarn/files/pkg-message.in @@ -1,34 +1,16 @@ [ { type: install message: <