# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # . # ./distinfo # ./Makefile # ./pkg-plist.orig # ./pkg-descr # ./pkg-message # ./files # ./files/patch-common-Socket_unix.cpp # ./files/patch-service-CMakeLists.txt # ./files/patch-common-Thread.h # ./files/patch-CMakeLists.txt # ./files/patch-service-EventUpdateManager.cpp # ./files/patch-service-tellstick.conf # ./files/telldusd.in # ./files/extra-patch-common_Event.h # ./files/patch-common-CMakeLists.txt # ./files/patch-service-Sensor.h # ./files/patch-tdadmin-CMakeLists.txt # ./files/patch-tdadmin-freebsd-devd-tellstick.conf # ./files/patch-service-ConnectionListener_unix.cpp # ./files/patch-service-SettingsConfuse.cpp # ./files/patch-tdtool-CMakeLists.txt # ./pkg-plist # echo c - . mkdir -p . > /dev/null 2>&1 echo x - ./distinfo sed 's/^X//' >./distinfo << 'aec8793adfd5b7c3f00e62ae41a09ac2' XSHA256 (telldus-core-2.1.2.tar.gz) = a20f6c74814afc23312d2c93ebbb37fdea9deaaee05ae7b6a6275e11e4662014 XSIZE (telldus-core-2.1.2.tar.gz) = 169850 aec8793adfd5b7c3f00e62ae41a09ac2 echo x - ./Makefile sed 's/^X//' >./Makefile << '464ef7c6571951809b23e262cbe26e19' X# Created by: Johan Strom X# $FreeBSD$ X XPORTNAME= telldus-core XPORTVERSION= 2.1.2 XPORTREVISION= 2 XCATEGORIES= comms X# http://download.telldus.se/TellStick/Software/telldus-core/telldus-core-2.1.2.tar.gz XMASTER_SITES= http://download.telldus.se/TellStick/Software/telldus-core/ X XMAINTAINER= johan@stromnet.se XCOMMENT= Tellstick Telldus daemon + library X XLICENSE= LGPL21 X XLIB_DEPENDS+=libftdi.so:${PORTSDIR}/devel/libftdi XLIB_DEPENDS+=libconfuse.so:${PORTSDIR}/devel/libconfuse XLIB_DEPENDS+=libargp.so:${PORTSDIR}/devel/argp-standalone X XBUILD_DEPENDS+=help2man:${PORTSDIR}/misc/help2man X X.include X XUSES= cmake XUSES+=iconv X#CMAKE_VERBOSE=yes XCMAKE_ARGS+=-DGENERATE_MAN=TRUE X# Note: these are internal defines and shall NOT contain ${STAGEDIR} XCMAKE_ARGS+=-DSYSCONF_INSTALL_DIR="${PREFIX}/etc" XCMAKE_ARGS+=-DSTATE_INSTALL_DIR="${PREFIX}/var/telldus" X X# Cannot handle parallel build XMAKE_JOBS_UNSAFE=yes X X.if ${OSVERSION} >= 1000000 X# On 10.x and above we use clang, and with clang we have a C++ X# env where std::tr1 does not exist. X# There *should* be some proper way to fix this in code, to make it buildable X# in both new and old envs, but I'm no expert and have not found any "perfect" solution. XEXTRA_PATCHES+=${FILESDIR}/extra-patch-common_Event.h X.endif X XUSE_RC_SUBR=telldusd X XUSER=nobody XGROUP=dialer X X# telldus-core.conf: We install an empty file in pkg-plist, if none is there already Xpost-install: X (cd ${STAGEDIR}${PREFIX}/etc; ${MV} tellstick.conf tellstick.conf.sample) X ${RM} ${STAGEDIR}${PREFIX}/var/telldus/telldus-core.conf X X.include 464ef7c6571951809b23e262cbe26e19 echo x - ./pkg-plist.orig sed 's/^X//' >./pkg-plist.orig << 'e878e73053f1ab75d1a78df63006b530' Xetc/devd/tellstick.conf X X@unexec if cmp %D/etc/tellstick.conf.sample %D/etc/tellstick.conf; then rm -vf %D/etc/tellstick.conf; fi Xetc/tellstick.conf.sample X@exec [ -f %D/etc/tellstick.conf ] || cp -v %D/etc/tellstick.conf.sample %D/etc/tellstick.conf X X@exec mkdir -p %D/var/telldus && chown nobody:dialer %D/var/telldus X@unexec if [ ! -s %D/var/telldus/telldus-core.conf ]; then rm -vf %D/var/telldus/telldus-core.conf; fi X@exec [ -f %D/var/telldus/telldus-core.conf ] || touch %D/var/telldus/telldus-core.conf && chown nobody:dialer %D/var/telldus/telldus-core.conf X@dirrmtry var/telldus X@dirrmtry var X Xbin/tdtool Xinclude/telldus-core.h Xlib/libtelldus-core.so Xlib/libtelldus-core.so.2 Xlib/libtelldus-core.so.2.1.2 Xsbin/tdadmin Xsbin/telldusd Xman/man1/tdadmin.1.gz Xman/man1/tdtool.1.gz Xman/man1/telldusd.1.gz e878e73053f1ab75d1a78df63006b530 echo x - ./pkg-descr sed 's/^X//' >./pkg-descr << '0e313719ff012ceaf97a028d51caa8f5' XTelldus Tellstick core X XAllows access to Telldus Tellstick USB dongles Xfor communicating with 433MHz devices in your home. X XProvides "telldusd", the daemon which keeps track of your Xtellstick devices. XThrough a UNIX socket, the sensors and devices can be Xused/controlled from the command line tool "tdtool", or Xvia the libtelldus-core C client library. X XWWW: http://www.telldus.com/products/tellstick 0e313719ff012ceaf97a028d51caa8f5 echo x - ./pkg-message sed 's/^X//' >./pkg-message << '9f51c313804c544b8024c5640d645b0a' X X====== XNOTICE X====== X XA devd rule has been installed to automatically notify telldusd Xwhen a new device has been detected. X XPlease restart devd to activate this: X X /etc/rc.d/devd restart X XEdit /usr/local/etc/tellstick.conf to configure some devices, Xand enable telldusd in rc.conf. X XThen start telldusd. X XWhen starting for the first time, you might need to unplug/plugin the device Xto allow devd to fix the permissions on the /dev/ugenX.X device. X X 9f51c313804c544b8024c5640d645b0a echo c - ./files mkdir -p ./files > /dev/null 2>&1 echo x - ./files/patch-common-Socket_unix.cpp sed 's/^X//' >./files/patch-common-Socket_unix.cpp << 'c03a79d904e170ded8256d9a74e1604b' X--- common/Socket_unix.cpp X+++ common/Socket_unix.cpp X@@ -18,7 +18,7 @@ X #include "common/Strings.h" X X #define BUFSIZE 512 X-#if defined(_MACOSX) && !defined(SOCK_CLOEXEC) X+#if (defined(_MACOSX) || defined (__FreeBSD__)) && !defined(SOCK_CLOEXEC) X #define SOCK_CLOEXEC 0 X #endif X X@@ -130,8 +130,10 @@ std::wstring Socket::read(int timeout) { X X void Socket::stopReadWait() { X TelldusCore::MutexLocker locker(&d->mutex); X- d->connected = false; X- // TODO(stefan): somehow signal the socket here? X+ if(d->connected && d->socket != -1) { X+ d->connected = false; X+ shutdown(d->socket, SHUT_RDWR); X+ } X } X X void Socket::write(const std::wstring &msg) { c03a79d904e170ded8256d9a74e1604b echo x - ./files/patch-service-CMakeLists.txt sed 's/^X//' >./files/patch-service-CMakeLists.txt << 'be56cd9b15108b526d74cacad1751ebc' X--- service/CMakeLists.txt X+++ service/CMakeLists.txt X@@ -249,7 +249,7 @@ IF (UNIX) X WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} X COMMENT "Generating man file telldusd.1" X ) X- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/telldusd.1 DESTINATION share/man/man1) X+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/telldusd.1 DESTINATION ${MAN_DIR}/man1) X ENDIF (GENERATE_MAN) X ENDIF (UNIX) X be56cd9b15108b526d74cacad1751ebc echo x - ./files/patch-common-Thread.h sed 's/^X//' >./files/patch-common-Thread.h << '2668c7b014b907b809f394707ee49241' X--- common/Thread.h X+++ common/Thread.h X@@ -13,6 +13,9 @@ X #define TELLDUS_CORE_COMMON_THREAD_H_ X X #include X+#ifdef __FreeBSD__ X+#include X+#endif X #include "common/Mutex.h" X X namespace TelldusCore { 2668c7b014b907b809f394707ee49241 echo x - ./files/patch-CMakeLists.txt sed 's/^X//' >./files/patch-CMakeLists.txt << 'd16764cc78e8861b85cf994e3d0e2c58' X--- CMakeLists.txt X+++ CMakeLists.txt X@@ -42,8 +42,18 @@ ENDIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") X SET(BUILD_TDTOOL TRUE CACHE BOOL "Build tdtool") X SET(BUILD_TDADMIN ${TDADMIN_DEFAULT} CACHE BOOL "Build tdadmin") X X+SET(GENERATE_DOXYGEN FALSE CACHE BOOL "Enable generation of doxygen") X SET(GENERATE_MAN FALSE CACHE BOOL "Enable generation of man-files") X X+ X+IF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") X+ SET(MAN_DIR_DEFAULT "man") X+ELSE() X+ SET(MAN_DIR_DEFAULT "share/man") X+ENDIF() X+SET(MAN_DIR ${MAN_DIR_DEFAULT} CACHE PATH "The directory where man pages are located (related to ${CMAKE_INSTALL_PREFIX})") X+ X+ X ADD_SUBDIRECTORY(common) X ADD_SUBDIRECTORY(service) X ADD_SUBDIRECTORY(client) X@@ -61,20 +71,23 @@ ENDIF(BUILD_TDADMIN) X ENABLE_TESTING() X ADD_SUBDIRECTORY(tests) X X-FIND_PACKAGE(Doxygen) X- X-IF(DOXYGEN_FOUND) X- SET(DOXY_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) X- X- CONFIGURE_FILE( X- "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in" X- ${DOXY_CONFIG} @ONLY X- ) X- X- ADD_CUSTOM_TARGET(docs X- ${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG} X- DEPENDS ${DOXY_CONFIG} X- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} X- COMMENT "Generating doxygen documentation" VERBATIM X- ) X-ENDIF() X+IF (GENERATE_DOXYGEN) X+ FIND_PACKAGE(Doxygen) X+ IF(DOXYGEN_FOUND) X+ SET(DOXY_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) X+ X+ CONFIGURE_FILE( X+ "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in" X+ ${DOXY_CONFIG} @ONLY X+ ) X+ X+ ADD_CUSTOM_TARGET(docs X+ ${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG} X+ DEPENDS ${DOXY_CONFIG} X+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} X+ COMMENT "Generating doxygen documentation" VERBATIM X+ ) X+ ELSE() X+ MESSAGE("Warn: doxygen not found, wont build") X+ ENDIF() X+ENDIF(GENERATE_DOXYGEN) d16764cc78e8861b85cf994e3d0e2c58 echo x - ./files/patch-service-EventUpdateManager.cpp sed 's/^X//' >./files/patch-service-EventUpdateManager.cpp << '29833fab14ad1c67b88dcdaa3f2390db' X--- service/EventUpdateManager.cpp X+++ service/EventUpdateManager.cpp X@@ -33,6 +33,10 @@ X #include "service/ConnectionListener.h" X #include "service/Log.h" X X+#ifdef __FreeBSD__ X+extern char **environ; X+#endif X+ X typedef std::list SocketList; X typedef std::list StringList; X 29833fab14ad1c67b88dcdaa3f2390db echo x - ./files/patch-service-tellstick.conf sed 's/^X//' >./files/patch-service-tellstick.conf << '9290bc95927ed8ffc2eb826adae19037' X--- service/tellstick.conf 2014-04-08 20:53:25.374751487 +0200 X+++ service/tellstick.conf 2014-04-08 20:53:36.055838124 +0200 X@@ -1,5 +1,5 @@ X user = "nobody" X-group = "plugdev" X+group = "dialer" X ignoreControllerConfirmation = "false" X device { X id = 1 9290bc95927ed8ffc2eb826adae19037 echo x - ./files/telldusd.in sed 's/^X//' >./files/telldusd.in << '87f00344072aab59023c3834cd95629e' X#!/bin/sh X X# X# PROVIDE: telldusd X# Add the following lines to /etc/rc.conf to enable telldusd: X# telldusd_enable (bool): Set to "NO" by default. X# Set it to "YES" to enable telldusd. X# telldusd_flags (str): Set to "" by default. X# telldusd_configfile (str): Set to "/usr/local/etc/tellstick.conf" by defult X# X X. /etc/rc.subr X Xname="telldusd" Xrcvar=telldusd_enable X Xcommand="/usr/local/sbin/telldusd" Xpidfile="/var/run/telldusd.pid" X Xtelldusd_enable=${telldusd_enable:-"NO"} Xtelldusd_flags=${telldusd_flags:-""} Xtelldusd_configfile=${telldusd_configfile:-"/usr/local/etc/tellstick.conf"} X Xload_rc_config "${name}" X Xrequired_files="${telldusd_configfile}" X Xrun_rc_command "$1" 87f00344072aab59023c3834cd95629e echo x - ./files/extra-patch-common_Event.h sed 's/^X//' >./files/extra-patch-common_Event.h << 'e4befce7e593b7bb9d8db73a201a2af5' X--- common/Event.h X+++ common/Event.h X@@ -32,7 +32,7 @@ X virtual bool isValid() const; X }; X X- typedef std::tr1::shared_ptr EventDataRef; X+ typedef std::shared_ptr EventDataRef; X X class EventBase { X public: X@@ -74,7 +74,7 @@ X friend class EventHandler; X }; X X- typedef std::tr1::shared_ptr EventRef; X+ typedef std::shared_ptr EventRef; X } X X #endif // TELLDUS_CORE_COMMON_EVENT_H_ e4befce7e593b7bb9d8db73a201a2af5 echo x - ./files/patch-common-CMakeLists.txt sed 's/^X//' >./files/patch-common-CMakeLists.txt << '960f7343aca760d56b79708eef1323d2' X--- common/CMakeLists.txt X+++ common/CMakeLists.txt X@@ -54,16 +54,22 @@ ELSEIF (WIN32) X ) X ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") X #### FreeBSD #### X- FIND_LIBRARY(ICONV_LIBRARY iconv) X+ string(REGEX MATCH "(([0-9]+)\\.([0-9]+))-([A-Z0-9])+" FREEBSD "${CMAKE_SYSTEM_VERSION}") X+ set( FREEBSD_RELEASE "${CMAKE_MATCH_1}" ) X ADD_DEFINITIONS( -D_FREEBSD ) X LIST(APPEND telldus-common_SRCS X Event_unix.cpp X EventHandler_unix.cpp X Socket_unix.cpp X ) X- LIST(APPEND telldus-common_LIBRARIES X- ${ICONV_LIBRARY} X- ) X+ X+ # FreeBSD 10 has iconv built in to libc X+ IF(FREEBSD_RELEASE LESS 10) X+ FIND_LIBRARY(ICONV_LIBRARY iconv) X+ LIST(APPEND telldus-common_LIBRARIES X+ ${ICONV_LIBRARY} X+ ) X+ ENDIF () X ELSE (APPLE) X #### Linux #### X ADD_DEFINITIONS( -D_LINUX ) 960f7343aca760d56b79708eef1323d2 echo x - ./files/patch-service-Sensor.h sed 's/^X//' >./files/patch-service-Sensor.h << 'a6bcce91a8d766b04eec3cb155adc1e5' X--- service/Sensor.h X+++ service/Sensor.h X@@ -8,6 +8,9 @@ X #define TELLDUS_CORE_SERVICE_SENSOR_H_ X X #include X+#ifdef __FreeBSD__ X+#include X+#endif X #include "common/Mutex.h" X X class Sensor : public TelldusCore::Mutex { a6bcce91a8d766b04eec3cb155adc1e5 echo x - ./files/patch-tdadmin-CMakeLists.txt sed 's/^X//' >./files/patch-tdadmin-CMakeLists.txt << '52492d546eb961362252ed0accb30099' X--- tdadmin/CMakeLists.txt X+++ tdadmin/CMakeLists.txt X@@ -52,13 +52,13 @@ IF (UNIX) X WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} X COMMENT "Generating man file tdadmin.1" X ) X- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tdadmin.1 DESTINATION share/man/man1) X+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tdadmin.1 DESTINATION ${MAN_DIR}/man1) X ENDIF (GENERATE_MAN) X ENDIF (UNIX) X X INSTALL(TARGETS tdadmin RUNTIME DESTINATION sbin) X X-IF (UNIX AND NOT APPLE) X+IF (UNIX AND NOT APPLE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD") X SET(UDEV_RULES_DIR "/etc/udev/rules.d" CACHE PATH "The directory where udev store its rules" ) X CONFIGURE_FILE( X ${CMAKE_CURRENT_SOURCE_DIR}/05-tellstick.rules X@@ -76,4 +76,14 @@ IF (UNIX AND NOT APPLE) X INSTALL(PROGRAMS ${CMAKE_BINARY_DIR}/parsed/udev.sh X DESTINATION share/telldus-core/helpers/ X ) X-ENDIF (UNIX AND NOT APPLE) X+ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") X+ SET(UDEV_RULES_DIR "/usr/local/etc/devd/" CACHE PATH "The directory where devd store its rules" ) X+ CONFIGURE_FILE( X+ ${CMAKE_CURRENT_SOURCE_DIR}/freebsd-devd-tellstick.conf X+ ${CMAKE_BINARY_DIR}/parsed/tellstick.conf X+ @ONLY X+ ) X+ INSTALL(FILES ${CMAKE_BINARY_DIR}/parsed/tellstick.conf X+ DESTINATION ${UDEV_RULES_DIR} X+ ) X+ENDIF () 52492d546eb961362252ed0accb30099 echo x - ./files/patch-tdadmin-freebsd-devd-tellstick.conf sed 's/^X//' >./files/patch-tdadmin-freebsd-devd-tellstick.conf << '887ab3280448ef5bceab7df3828b18b3' X--- tdadmin/freebsd-devd-tellstick.conf 2014-04-06 22:40:11.000000000 +0200 X+++ tdadmin/freebsd-devd-tellstick.conf 2014-04-06 20:37:50.501751596 +0200 X@@ -0,0 +1,12 @@ X+attach 10 { X+ device-name "uftdi[0-9]+"; X+ match "vendor" "0x1781"; X+ match "product" "0x0c30"; X+ X+ action "chgrp dialer /dev/ugen$port.$devaddr; chmod 660 /dev/ugen$port.$devaddr; X+ @CMAKE_INSTALL_PREFIX@/sbin/tdadmin --pid $product --vid $vendor --serial $sernum controller connect"; X+}; X+ X+ X+# Haven't managed to handle detach/disconnect events, seems they do not provide any information X+# at all so cannot distinguish different uftdi devices. 887ab3280448ef5bceab7df3828b18b3 echo x - ./files/patch-service-ConnectionListener_unix.cpp sed 's/^X//' >./files/patch-service-ConnectionListener_unix.cpp << '0c3c2c3ae2289d87b50500c812780036' X--- service/ConnectionListener_unix.cpp X+++ service/ConnectionListener_unix.cpp X@@ -17,7 +17,7 @@ X #include "service/ConnectionListener.h" X #include "common/Socket.h" X X-#if defined(_MACOSX) && !defined(SOCK_CLOEXEC) X+#if (defined(_MACOSX) || defined (__FreeBSD__)) && !defined(SOCK_CLOEXEC) X #define SOCK_CLOEXEC 0 X #endif X 0c3c2c3ae2289d87b50500c812780036 echo x - ./files/patch-service-SettingsConfuse.cpp sed 's/^X//' >./files/patch-service-SettingsConfuse.cpp << 'd2663a709699979612fa315c2d039910' X--- service/SettingsConfuse.cpp X+++ service/SettingsConfuse.cpp X@@ -17,6 +17,8 @@ X X class Settings::PrivateData { X public: X+ PrivateData() X+ : cfg(NULL), var_cfg(NULL) {} X cfg_t *cfg; X cfg_t *var_cfg; X }; d2663a709699979612fa315c2d039910 echo x - ./files/patch-tdtool-CMakeLists.txt sed 's/^X//' >./files/patch-tdtool-CMakeLists.txt << 'f8561e74ea6b1645da35467be5252925' X--- tdtool/CMakeLists.txt X+++ tdtool/CMakeLists.txt X@@ -49,7 +49,7 @@ IF (UNIX) X WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} X COMMENT "Generating man file tdtool.1" X ) X- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tdtool.1 DESTINATION share/man/man1) X+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tdtool.1 DESTINATION ${MAN_DIR}/man1) X ENDIF (GENERATE_MAN) X ENDIF (UNIX) X f8561e74ea6b1645da35467be5252925 echo x - ./pkg-plist sed 's/^X//' >./pkg-plist << 'ef3e7f63841ae908ba397c2bef1fbad6' Xetc/devd/tellstick.conf X X@group dialer X@mode 664 X X@unexec if cmp %D/etc/tellstick.conf.sample %D/etc/tellstick.conf; then rm -vf %D/etc/tellstick.conf; fi Xetc/tellstick.conf.sample X@exec [ -f %D/etc/tellstick.conf ] || cp -v %D/etc/tellstick.conf.sample %D/etc/tellstick.conf X X@exec mkdir -p %D/var/telldus && chown nobody:dialer %D/var/telldus X@unexec if [ ! -s %D/var/telldus/telldus-core.conf ]; then rm -vf %D/var/telldus/telldus-core.conf; fi X@exec [ -f %D/var/telldus/telldus-core.conf ] || touch %D/var/telldus/telldus-core.conf && chown nobody:dialer %D/var/telldus/telldus-core.conf X@dirrmtry var/telldus X X@group X@mode X@dirrmtry var X Xbin/tdtool Xinclude/telldus-core.h Xlib/libtelldus-core.so Xlib/libtelldus-core.so.2 Xlib/libtelldus-core.so.2.1.2 Xsbin/tdadmin Xsbin/telldusd Xman/man1/tdadmin.1.gz Xman/man1/tdtool.1.gz Xman/man1/telldusd.1.gz ef3e7f63841ae908ba397c2bef1fbad6 exit