aboutsummaryrefslogtreecommitdiffstats
path: root/net-im
diff options
context:
space:
mode:
authorpi <pi@FreeBSD.org>2016-05-29 11:50:56 +0800
committerpi <pi@FreeBSD.org>2016-05-29 11:50:56 +0800
commit408800cd5f4b9d0cd477e9770506835158887dde (patch)
tree1decfa85674afc808c9b09965e9526f1fc396c7a /net-im
parent410e50f75300f3cb62b4bb025c25800d57e609df (diff)
downloadfreebsd-ports-graphics-408800cd5f4b9d0cd477e9770506835158887dde.tar.gz
freebsd-ports-graphics-408800cd5f4b9d0cd477e9770506835158887dde.tar.zst
freebsd-ports-graphics-408800cd5f4b9d0cd477e9770506835158887dde.zip
New port: net-im/ring-daemon
Ring is a secure and distributed voice, video and chat communication platform that requires no centralized server and leaves the power of privacy in the hands of the user. WWW: https://ring.cx/ PR: 209542 Submitted by: Yuri Victorovich <yuri@rawbw.com>
Diffstat (limited to 'net-im')
-rw-r--r--net-im/Makefile1
-rw-r--r--net-im/ring-daemon/Makefile78
-rw-r--r--net-im/ring-daemon/distinfo5
-rw-r--r--net-im/ring-daemon/files/patch-configure.ac59
-rw-r--r--net-im/ring-daemon/files/patch-contrib_bootstrap21
-rw-r--r--net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure11
-rw-r--r--net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure.ac11
-rw-r--r--net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_build.mak.in10
-rw-r--r--net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_pjsip_build_Makefile12
-rw-r--r--net-im/ring-daemon/files/patch-contrib_src_main.mak91
-rw-r--r--net-im/ring-daemon/files/patch-contrib_src_pjproject_rules.mak33
-rw-r--r--net-im/ring-daemon/files/patch-contrib_src_uuid_rules.mak34
-rw-r--r--net-im/ring-daemon/files/patch-src_Makefile.am11
-rw-r--r--net-im/ring-daemon/files/patch-src__dring__configurationmanager_interface.h11
-rw-r--r--net-im/ring-daemon/files/patch-src_archiver.cpp22
-rw-r--r--net-im/ring-daemon/files/patch-src_media_video_Makefile.am11
-rw-r--r--net-im/ring-daemon/files/patch-src_media_video_test_Makefile.am11
-rw-r--r--net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__impl.cpp11
-rw-r--r--net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__monitor__impl.cpp90
-rw-r--r--net-im/ring-daemon/pkg-descr5
-rw-r--r--net-im/ring-daemon/pkg-plist17
21 files changed, 555 insertions, 0 deletions
diff --git a/net-im/Makefile b/net-im/Makefile
index 26eed3ed017..38ce8167ca1 100644
--- a/net-im/Makefile
+++ b/net-im/Makefile
@@ -149,6 +149,7 @@
SUBDIR += qxmpp
SUBDIR += ramblercontacts
SUBDIR += ricochet
+ SUBDIR += ring-daemon
SUBDIR += rubygem-earthquake
SUBDIR += rubygem-hipchat
SUBDIR += rubygem-lita
diff --git a/net-im/ring-daemon/Makefile b/net-im/ring-daemon/Makefile
new file mode 100644
index 00000000000..18b75314682
--- /dev/null
+++ b/net-im/ring-daemon/Makefile
@@ -0,0 +1,78 @@
+# Created by: Yuri Victorovich <yuri@rawbw.com>
+# $FreeBSD$
+
+PORTNAME= ring-daemon
+PORTVERSION= 0.160516
+DISTVERSIONPREFIX= v
+CATEGORIES= net-im net-p2p
+
+MAINTAINER= yuri@rawbw.com
+COMMENT= Daemon part of the Ring VoIP SIP phone and IM
+
+LICENSE= GPLv3
+
+BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
+LIB_DEPENDS= libyaml-cpp.so:devel/yaml-cpp \
+ libjsoncpp.so:devel/jsoncpp \
+ libpcre.so:devel/pcre \
+ libupnp.so:devel/upnp \
+ libopendht.so:devel/opendht \
+ libgnutls.so:security/gnutls \
+ libavcodec.so:multimedia/ffmpeg \
+ libpulse.so:audio/pulseaudio \
+ libsndfile.so:audio/libsndfile \
+ libsamplerate.so:audio/libsamplerate \
+ libspeex.so:audio/speex \
+ libspeexdsp.so:audio/speexdsp \
+ libuuid.so:misc/e2fsprogs-libuuid
+
+BROKEN_FreeBSD_9= Fails due to compiler issues
+
+USE_GITHUB= yes
+GH_TUPLE+= savoirfairelinux:ring-daemon:56ec56f
+GH_TUPLE+= pjsip:pjproject:2.4.5:pj
+
+CONFIGURE_ARGS= --without-gsm \
+ --enable-video \
+ --enable-ipv6
+
+USES= autoreconf compiler:c++14-lang gmake libtool pkgconfig
+USE_GNOME= glib20 gtk20 cairo gdkpixbuf2
+USE_XORG= x11 xscrnsaver
+USE_GL= gl
+USE_QT5= core gui network xml opengl sql sql-sqlite3_run widgets svg \
+ concurrent buildtools_build linguisttools_build
+GNU_CONFIGURE= yes
+MYFLAGS= -I${WRKSRC}/contrib/native/pjproject/pjlib/include -I${LOCALBASE}/include -DPJ_LINUX -I${LOCALBASE}/include/jsoncpp
+CFLAGS+= ${MYFLAGS}
+CPPFLAGS+= ${MYFLAGS}
+CXXFLAGS+= ${MYFLAGS}
+USE_LDCONFIG= yes
+
+OPTIONS_DEFINE= DBUS
+OPTIONS_DEFAULT=DBUS
+DBUS_CONFIGURE_OFF= --without-dbus
+DBUS_CONFIGURE_ON= --with-dbus
+DBUS_LIB_DEPENDS= \
+ libdbus-1.so:devel/dbus \
+ libdbus-c++-1.so:devel/dbus-c++
+OPTIONS_SUB= yes
+
+post-extract:
+ @${MKDIR} ${WRKSRC}/contrib/native
+ @${MV} ${WRKDIR}/pjproject-2.4.5 ${WRKSRC}/contrib/native/
+post-patch:
+ @${REINPLACE_CMD} -e 's|PJPROJECT_OPTIONS)|PJPROJECT_OPTIONS) CPPFLAGS=-I${LOCALBASE}/include/ CFLAGS="-I${LOCALBASE}/include/ -fPIC"|g' \
+ ${WRKSRC}/contrib/src/pjproject/rules.mak
+ @${REINPLACE_CMD} -e 's|ringtonePath_ = "/usr/share|ringtonePath_ = "${LOCALBASE}/share|g' \
+ ${WRKSRC}/src/account.cpp
+pre-configure:
+ @(cd ${WRKSRC} && \
+ ${ECHO} "===> Building the custom version of pjsip" && \
+ cd contrib/native && \
+ ../bootstrap && \
+ ${GMAKE} .pjproject)
+post-stage:
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libring.so
+
+.include <bsd.port.mk>
diff --git a/net-im/ring-daemon/distinfo b/net-im/ring-daemon/distinfo
new file mode 100644
index 00000000000..41ef810f284
--- /dev/null
+++ b/net-im/ring-daemon/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1463424490
+SHA256 (savoirfairelinux-ring-daemon-v0.160516-56ec56f_GH0.tar.gz) = 46ef728350b2a8ad1328c2ad805702f26d7bd5af54b7195d364d7f012c33d540
+SIZE (savoirfairelinux-ring-daemon-v0.160516-56ec56f_GH0.tar.gz) = 2626013
+SHA256 (pjsip-pjproject-2.4.5_GH0.tar.gz) = 3678608de92cb0ed1248464fbeb20af9ddc05c1ad55aea3d40ff8e4ec784c91f
+SIZE (pjsip-pjproject-2.4.5_GH0.tar.gz) = 7627091
diff --git a/net-im/ring-daemon/files/patch-configure.ac b/net-im/ring-daemon/files/patch-configure.ac
new file mode 100644
index 00000000000..06afaeba1ba
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-configure.ac
@@ -0,0 +1,59 @@
+--- configure.ac.orig 2016-05-10 20:45:50 UTC
++++ configure.ac
+@@ -48,6 +48,13 @@ case "${host_os}" in
+ # Needed for plugin system
+ LDFLAGS+=" -ldl"
+ ;;
++ freebsd*)
++ SYS=freebsd
++ # Necessary for linking .a to a .so
++ LDFLAGS+=" -Wl,-Bsymbolic"
++ # Needed for plugin system
++ LDFLAGS+=" -ldl"
++ ;;
+ darwin*)
+ SYS=darwin
+
+@@ -95,6 +102,7 @@ case "${host_os}" in
+ esac
+ AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
+ AM_CONDITIONAL(HAVE_LINUX, test "${SYS}" = "linux")
++AM_CONDITIONAL(HAVE_FREEBSD, test "${SYS}" = "freebsd")
+ AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
+ AM_CONDITIONAL(HAVE_WIN64, test "${HAVE_WIN64}" = "1")
+ AM_CONDITIONAL(HAVE_OSX, test "${HAVE_OSX}" = "1")
+@@ -189,10 +197,10 @@ AC_ARG_WITH(contrib,
+ ])
+ AC_MSG_CHECKING([for 3rd party libraries path])
+ AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
+- CONTRIB_DIR="${srcdir}/contrib/${host}"
++ CONTRIB_DIR="${srcdir}/contrib/`uname -m`-portbld-freebsd"
+ AS_IF([test ! -d "${CONTRIB_DIR}"], [
+ echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
+- CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
++ CONTRIB_DIR="${srcdir}/contrib/`uname -m`-portbld-freebsd"
+ AS_IF([test ! -d "${CONTRIB_DIR}"], [
+ echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
+ CONTRIB_DIR=""
+@@ -295,7 +303,7 @@ fi
+ AM_CONDITIONAL(BUILD_ALSA, test "x$with_alsa" = "xyes")
+
+
+-if test "${SYS}" = "linux"; then
++if test "${SYS}" = "linux" || test "${SYS}" = "freebsd"; then
+ dnl Check for pulseaudio development package - name: libpulse-dev
+ LIBPULSE_MIN_VERSION=0.9.15
+ AC_ARG_WITH([pulse],
+@@ -377,9 +385,9 @@ AS_IF([test "x$with_dbus" = "xyes"], [
+ AC_MSG_ERROR([dbusxx-xml2cpp not found])
+ fi
+
+- AS_IF([test "x$CLANG" = "xyes"], [
+- AC_MSG_ERROR([dbus does not compile when clang is used, rerun with --without-dbus])
+- ]);
++ #AS_IF([test "x$CLANG" = "xyes"], [
++ # AC_MSG_ERROR([dbus does not compile when clang is used, rerun with --without-dbus])
++ #]);
+ AM_CONDITIONAL(RING_DBUS, true)],
+ AM_CONDITIONAL(RING_DBUS, false));
+
diff --git a/net-im/ring-daemon/files/patch-contrib_bootstrap b/net-im/ring-daemon/files/patch-contrib_bootstrap
new file mode 100644
index 00000000000..26ff03cbe8e
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_bootstrap
@@ -0,0 +1,21 @@
+--- contrib/bootstrap.orig 2016-05-10 20:45:50 UTC
++++ contrib/bootstrap
+@@ -74,7 +74,7 @@ done
+ if test -z "$BUILD"
+ then
+ echo -n "Guessing build system... "
+- BUILD="`${CC:-cc} -dumpmachine`"
++ BUILD="`uname -m`-portbld-freebsd"
+ if test -z "$BUILD"; then
+ echo "FAIL!"
+ exit 1
+@@ -212,6 +212,9 @@ case "${OS}" in
+ add_make_enabled "HAVE_IOS" "HAVE_DARWIN_OS" "HAVE_BSD" "HAVE_NEON" "HAVE_ARMV7A"
+ fi
+ ;;
++ *freebsd*)
++ add_make_enabled "HAVE_FREEBSD"
++ ;;
+ *bsd*)
+ add_make_enabled "HAVE_BSD"
+ ;;
diff --git a/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure
new file mode 100644
index 00000000000..dc9afae0bd7
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure
@@ -0,0 +1,11 @@
+--- contrib/native/pjproject-2.4.5/aconfigure.orig 2015-08-12 04:46:22 UTC
++++ contrib/native/pjproject-2.4.5/aconfigure
+@@ -7158,7 +7158,7 @@ $as_echo "Using OpenH264 prefix... $with
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenH264 usability" >&5
+ $as_echo_n "checking OpenH264 usability... " >&6; }
+
+- OPENH264_LIBS="-lopenh264 -lstdc++"
++ OPENH264_LIBS="-lopenh264"
+
+ SAVED_LIBS="$LIBS"
+ SAVED_LDFLAGS="$LDFLAGS"
diff --git a/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure.ac b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure.ac
new file mode 100644
index 00000000000..4b76907e7a4
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_aconfigure.ac
@@ -0,0 +1,11 @@
+--- contrib/native/pjproject-2.4.5/aconfigure.ac.orig 2015-08-12 04:46:22 UTC
++++ contrib/native/pjproject-2.4.5/aconfigure.ac
+@@ -1151,7 +1151,7 @@ AC_ARG_ENABLE(openh264,
+
+ AC_MSG_CHECKING([OpenH264 usability])
+
+- OPENH264_LIBS="-lopenh264 -lstdc++"
++ OPENH264_LIBS="-lopenh264"
+
+ SAVED_LIBS="$LIBS"
+ SAVED_LDFLAGS="$LDFLAGS"
diff --git a/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_build.mak.in b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_build.mak.in
new file mode 100644
index 00000000000..e63ca610fcb
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_build.mak.in
@@ -0,0 +1,10 @@
+--- contrib/native/pjproject-2.4.5/build.mak.in.orig 2015-08-12 04:46:22 UTC
++++ contrib/native/pjproject-2.4.5/build.mak.in
+@@ -265,7 +265,6 @@ export APP_LDLIBS := $(PJSUA_LIB_LDLIB)
+ $(PJLIB_LDLIB) \
+ @LIBS@
+ export APP_LDXXLIBS := $(PJSUA2_LIB_LDLIB) \
+- -lstdc++ \
+ $(APP_LDLIBS)
+
+ # Here are the variabels to use if application is using the library
diff --git a/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_pjsip_build_Makefile b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_pjsip_build_Makefile
new file mode 100644
index 00000000000..8ad334dd042
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_native_pjproject-2.4.5_pjsip_build_Makefile
@@ -0,0 +1,12 @@
+--- contrib/native/pjproject-2.4.5/pjsip/build/Makefile.orig 2015-08-12 04:46:22 UTC
++++ contrib/native/pjproject-2.4.5/pjsip/build/Makefile
+@@ -152,8 +152,7 @@ export PJSUA2_LIB_LDFLAGS += $(PJSUA_LIB
+ $(PJNATH_LDLIB) \
+ $(PJLIB_UTIL_LDLIB) \
+ $(PJLIB_LDLIB) \
+- $(_LDFLAGS) \
+- -lstdc++
++ $(_LDFLAGS)
+
+
+ ###############################################################################
diff --git a/net-im/ring-daemon/files/patch-contrib_src_main.mak b/net-im/ring-daemon/files/patch-contrib_src_main.mak
new file mode 100644
index 00000000000..4a6f1b44923
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_src_main.mak
@@ -0,0 +1,91 @@
+--- contrib/src/main.mak.orig 2016-05-10 20:45:50 UTC
++++ contrib/src/main.mak
+@@ -78,10 +78,10 @@ endif
+ #
+ ifndef HAVE_CROSS_COMPILE
+ ifneq ($(findstring $(origin CC),undefined default),)
+-CC := gcc
++CC := cc
+ endif
+ ifneq ($(findstring $(origin CXX),undefined default),)
+-CXX := g++
++CXX := c++
+ endif
+ ifneq ($(findstring $(origin LD),undefined default),)
+ LD := ld
+@@ -97,10 +97,10 @@ STRIP := strip
+ endif
+ else
+ ifneq ($(findstring $(origin CC),undefined default),)
+-CC := $(CROSS_COMPILE)gcc
++CC := $(CROSS_COMPILE)cc
+ endif
+ ifneq ($(findstring $(origin CXX),undefined default),)
+-CXX := $(CROSS_COMPILE)g++
++CXX := $(CROSS_COMPILE)c++
+ endif
+ ifneq ($(findstring $(origin LD),undefined default),)
+ LD := $(CROSS_COMPILE)ld
+@@ -117,8 +117,8 @@ endif
+ endif
+
+ ifdef HAVE_ANDROID
+-CC := $(CROSS_COMPILE)gcc --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
+-CXX := $(CROSS_COMPILE)g++ --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
++CC := $(CROSS_COMPILE)cc --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
++CXX := $(CROSS_COMPILE)c++ --sysroot=$(ANDROID_NDK)/platforms/$(ANDROID_API)/arch-$(PLATFORM_SHORT_ARCH)
+ endif
+
+ ifdef HAVE_MACOSX
+@@ -256,15 +256,15 @@ else
+ ZCAT ?= $(error Gunzip client (zcat) not found!)
+ endif
+
+-ifeq ($(shell sha512sum --version >/dev/null 2>&1 || echo FAIL),)
+-SHA512SUM = sha512sum --check
+-else ifeq ($(shell shasum --version >/dev/null 2>&1 || echo FAIL),)
+-SHA512SUM = shasum -a 512 --check
+-else ifeq ($(shell openssl version >/dev/null 2>&1 || echo FAIL),)
+-SHA512SUM = openssl dgst -sha512
+-else
+-SHA512SUM = $(error SHA-512 checksumming not found!)
+-endif
++#ifeq ($(shell sha512sum --version >/dev/null 2>&1 || echo FAIL),)
++#SHA512SUM = sha512sum --check
++#else ifeq ($(shell shasum --version >/dev/null 2>&1 || echo FAIL),)
++#SHA512SUM = shasum -a 512 --check
++#else ifeq ($(shell openssl version >/dev/null 2>&1 || echo FAIL),)
++#SHA512SUM = openssl dgst -sha512
++#else
++#SHA512SUM = $(error SHA-512 checksumming not found!)
++#endif
+
+ #
+ # Common helpers
+@@ -320,7 +320,7 @@ checksum = \
+ "$(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS" &&) \
+ (cd $(TARBALLS) && $(1) /dev/stdin) < \
+ "$(SRC)/$(patsubst .sum-%,%,$@)/$(2)SUMS"
+-CHECK_SHA512 = $(call checksum,$(SHA512SUM),SHA512)
++#CHECK_SHA512 = $(call checksum,$(SHA512SUM),SHA512)
+ UNPACK = $(RM) -R $@ \
+ $(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzf $(f)) \
+ $(foreach f,$(filter %.tar.bz2,$^), && tar xvjf $(f)) \
+@@ -459,12 +459,12 @@ endif
+ echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> $@
+
+ # Default pattern rules
+-.sum-%: $(SRC)/%/SHA512SUMS
+- $(CHECK_SHA512)
+- touch $@
++#.sum-%: $(SRC)/%/SHA512SUMS
++# $(CHECK_SHA512)
++# touch $@
+
+-.sum-%:
+- $(error Download and check target not defined for $*)
++#.sum-%:
++# $(error Download and check target not defined for $*)
+
+ # Dummy dependency on found packages
+ $(patsubst %,.dep-%,$(PKGS_FOUND)): .dep-%:
diff --git a/net-im/ring-daemon/files/patch-contrib_src_pjproject_rules.mak b/net-im/ring-daemon/files/patch-contrib_src_pjproject_rules.mak
new file mode 100644
index 00000000000..83bd8735c33
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_src_pjproject_rules.mak
@@ -0,0 +1,33 @@
+--- contrib/src/pjproject/rules.mak.orig 2016-05-10 20:45:50 UTC
++++ contrib/src/pjproject/rules.mak
+@@ -42,17 +42,17 @@ endif
+ DEPS_pjproject += gnutls
+ ifndef HAVE_WIN32
+ ifndef HAVE_MACOSX
+-DEPS_pjproject += uuid
++#DEPS_pjproject += uuid
+ endif
+ endif
+
+ $(TARBALLS)/pjproject-$(PJPROJECT_VERSION).tar.bz2:
+- $(call download,$(PJPROJECT_URL))
++ #$(call download,$(PJPROJECT_URL))
+
+-.sum-pjproject: pjproject-$(PJPROJECT_VERSION).tar.bz2
++#.sum-pjproject: pjproject-$(PJPROJECT_VERSION).tar.bz2
+
+-pjproject: pjproject-$(PJPROJECT_VERSION).tar.bz2 .sum-pjproject
+- $(UNPACK)
++pjproject: pjproject-$(PJPROJECT_VERSION).tar.bz2
++ #$(UNPACK)
+ ifdef HAVE_WIN32
+ $(APPLY) $(SRC)/pjproject/intptr_t.patch
+ $(APPLY) $(SRC)/pjproject/pj_win.patch
+@@ -68,6 +68,6 @@ endif
+ $(MOVE)
+
+ .pjproject: pjproject
+- cd $< && $(HOSTVARS) ./aconfigure $(HOSTCONF) $(PJPROJECT_OPTIONS)
++ cd $< && $(HOSTVARS) ./aconfigure $(HOSTCONF) $(PJPROJECT_OPTIONS) CPPFLAGS=-I/usr/local/include/ CFLAGS="-I/usr/local/include/ -fPIC" CPPFLAGS=-I/usr/local/include/ CFLAGS="-I/usr/local/include/ -fPIC"
+ cd $< && CFLAGS="$(PJPROJECT_EXTRA_CFLAGS)" $(MAKE) && $(MAKE) install
+ touch $@
diff --git a/net-im/ring-daemon/files/patch-contrib_src_uuid_rules.mak b/net-im/ring-daemon/files/patch-contrib_src_uuid_rules.mak
new file mode 100644
index 00000000000..5e1c764dc2e
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-contrib_src_uuid_rules.mak
@@ -0,0 +1,34 @@
+--- contrib/src/uuid/rules.mak.orig 2016-05-10 20:45:50 UTC
++++ contrib/src/uuid/rules.mak
+@@ -1,6 +1,6 @@
+ # libuuid part of util-linux
+
+-UUID_VERSION := 1.0.2
++UUID_VERSION := 1.0.3
+ UUID_URL := $(SF)/libuuid/libuuid-$(UUID_VERSION).tar.gz
+
+ ifeq ($(call need_pkg,"uuid >= 2.0.0"),)
+@@ -8,16 +8,16 @@ PKGS_FOUND += uuid
+ endif
+
+ $(TARBALLS)/libuuid-$(UUID_VERSION).tar.gz:
+- $(call download,$(UUID_URL))
++ #$(call download,$(UUID_URL))
+
+ .sum-uuid: libuuid-$(UUID_VERSION).tar.gz
+
+ uuid: libuuid-$(UUID_VERSION).tar.gz .sum-uuid
+- $(UNPACK)
+- $(APPLY) $(SRC)/uuid/android.patch
+- $(MOVE)
++ #$(UNPACK)
++ #$(APPLY) $(SRC)/uuid/android.patch
++ #$(MOVE)
+
+ .uuid: uuid
+- cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
+- cd $< && $(MAKE) install
+- touch $@
++ #cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
++ #cd $< && $(MAKE) install
++ #touch $@
diff --git a/net-im/ring-daemon/files/patch-src_Makefile.am b/net-im/ring-daemon/files/patch-src_Makefile.am
new file mode 100644
index 00000000000..535f49928b7
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src_Makefile.am
@@ -0,0 +1,11 @@
+--- src/Makefile.am.orig 2016-05-10 20:45:50 UTC
++++ src/Makefile.am
+@@ -4,7 +4,7 @@ RING_VIDEO_LIBS=
+
+ if RING_VIDEO
+ RING_VIDEO_LIBS+=./media/video/libvideo.la
+-if HAVE_LINUX
++if HAVE_FREEBSD
+ if HAVE_ANDROID
+ RING_VIDEO_LIBS+= \
+ ./media/video/androidvideo/libandroidvideo.la
diff --git a/net-im/ring-daemon/files/patch-src__dring__configurationmanager_interface.h b/net-im/ring-daemon/files/patch-src__dring__configurationmanager_interface.h
new file mode 100644
index 00000000000..e35223e8977
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src__dring__configurationmanager_interface.h
@@ -0,0 +1,11 @@
+--- src/dring/configurationmanager_interface.h.orig 2016-05-10 20:45:50 UTC
++++ src/dring/configurationmanager_interface.h
+@@ -31,6 +31,8 @@
+ #include <string>
+ #include <cstdint>
+
++#include <time.h>
++
+ #include "dring.h"
+ #include "security_const.h"
+
diff --git a/net-im/ring-daemon/files/patch-src_archiver.cpp b/net-im/ring-daemon/files/patch-src_archiver.cpp
new file mode 100644
index 00000000000..a9bcb9a1dab
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src_archiver.cpp
@@ -0,0 +1,22 @@
+--- src/archiver.cpp.orig 2016-05-10 20:45:50 UTC
++++ src/archiver.cpp
+@@ -97,7 +97,8 @@ Archiver::exportAccounts(std::vector<std
+ }
+
+ // Encrypt using provided password
+- auto encrypted = dht::crypto::aesEncrypt(compressed, password);
++ dht::Blob blob; for (auto c : password) blob.push_back(c);
++ auto encrypted = dht::crypto::aesEncrypt(compressed, blob);
+
+ // Write
+ try {
+@@ -151,7 +152,8 @@ Archiver::importAccounts(std::string arc
+
+ // Decrypt
+ try {
+- file = dht::crypto::aesDecrypt(file, password);
++ dht::Blob blob; for (auto c : password) blob.push_back(c);
++ file = dht::crypto::aesDecrypt(file, blob);
+ } catch (const std::exception& ex) {
+ RING_ERR("Decryption failed: %s", ex.what());
+ return EPERM;
diff --git a/net-im/ring-daemon/files/patch-src_media_video_Makefile.am b/net-im/ring-daemon/files/patch-src_media_video_Makefile.am
new file mode 100644
index 00000000000..72751cd8ab5
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src_media_video_Makefile.am
@@ -0,0 +1,11 @@
+--- src/media/video/Makefile.am.orig 2016-05-10 20:45:50 UTC
++++ src/media/video/Makefile.am
+@@ -2,7 +2,7 @@ include $(top_srcdir)/globals.mak
+
+ SUBDIRS= test
+
+-if HAVE_LINUX
++if HAVE_FREEBSD
+ if HAVE_ANDROID
+ SUBDIRS+= \
+ androidvideo
diff --git a/net-im/ring-daemon/files/patch-src_media_video_test_Makefile.am b/net-im/ring-daemon/files/patch-src_media_video_test_Makefile.am
new file mode 100644
index 00000000000..e9529baf807
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src_media_video_test_Makefile.am
@@ -0,0 +1,11 @@
+--- src/media/video/test/Makefile.am.orig 2016-05-10 20:45:50 UTC
++++ src/media/video/test/Makefile.am
+@@ -9,7 +9,7 @@ test_video_rtp_LDADD=$(top_builddir)/src
+ test_video_input_SOURCES=test_video_input.cpp test_video_input.h
+ test_video_input_LDADD=$(top_builddir)/src/libring.la $(top_builddir)/src/media/video/libvideo.la $(YAML_LIBS)
+
+-if HAVE_LINUX
++if HAVE_FREEBSD
+ test_shm_SOURCES=test_shm.cpp shm_src.cpp shm_src.h
+ test_shm_LDADD=$(top_builddir)/src/libring.la $(top_builddir)/src/media/video/libvideo.la $(YAML_LIBS) -lrt
+ test_shm_CXXFLAGS=$(AM_CXXFLAGS)
diff --git a/net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__impl.cpp b/net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__impl.cpp
new file mode 100644
index 00000000000..0a386cddbc8
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__impl.cpp
@@ -0,0 +1,11 @@
+--- src/media/video/v4l2/video_device_impl.cpp.orig 2016-05-10 20:45:50 UTC
++++ src/media/video/v4l2/video_device_impl.cpp
+@@ -285,7 +285,7 @@ VideoV4l2Size::getRate(FrameRate rate) c
+ {
+ double r = rate.real();
+ for (const auto& item : rates_) {
+- if (std::fabs(item.frame_rate.real() - r) < 0.0001d)
++ if (std::fabs(item.frame_rate.real() - r) < 0.0001f)
+ return item;
+ }
+ return rates_.back();
diff --git a/net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__monitor__impl.cpp b/net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__monitor__impl.cpp
new file mode 100644
index 00000000000..1ecdfdecc4d
--- /dev/null
+++ b/net-im/ring-daemon/files/patch-src_media_video_v4l2_video__device__monitor__impl.cpp
@@ -0,0 +1,90 @@
+--- src/media/video/v4l2/video_device_monitor_impl.cpp.orig 2016-05-10 20:45:50 UTC
++++ src/media/video/v4l2/video_device_monitor_impl.cpp
+@@ -24,7 +24,10 @@
+ #include <cerrno>
+ #include <cstdio>
+ #include <cstring>
++#if !defined(__FreeBSD__)
+ #include <libudev.h>
++#define HAVE_UDEV
++#endif
+ #include <mutex>
+ #include <sstream>
+ #include <stdexcept> // for std::runtime_error
+@@ -72,24 +75,31 @@ class VideoDeviceMonitorImpl {
+ std::thread thread_;
+ mutable std::mutex mutex_;
+
++#if defined(HAVE_UDEV)
+ udev *udev_;
+ udev_monitor *udev_mon_;
++#endif
+ bool probing_;
+ };
+
++#if defined(HAVE_UDEV)
+ static int is_v4l2(struct udev_device *dev)
+ {
+ const char *version = udev_device_get_property_value(dev, "ID_V4L_VERSION");
+ /* we do not support video4linux 1 */
+ return version and strcmp(version, "1");
+ }
++#endif
+
+ VideoDeviceMonitorImpl::VideoDeviceMonitorImpl(VideoDeviceMonitor* monitor) :
+ monitor_(monitor),
+ thread_(), mutex_(),
++#if defined(HAVE_UDEV)
+ udev_(0), udev_mon_(0),
++#endif
+ probing_(false)
+ {
++#if defined(HAVE_UDEV)
+ udev_list_entry *devlist;
+ udev_enumerate *devenum;
+
+@@ -149,15 +159,16 @@ udev_failed:
+ udev_unref(udev_);
+ udev_mon_ = NULL;
+ udev_ = NULL;
++#endif
+
+ /* fallback : go through /dev/video* */
+- for (int idx = 0;; ++idx) {
++ for (int idx = 0; idx<16; ++idx) {
+ std::stringstream ss;
+ ss << "/dev/video" << idx;
+ try {
+ monitor_->addDevice(ss.str());
+ } catch (const std::runtime_error &e) {
+- RING_ERR("%s", e.what());
++ RING_ERR("%s (YURI exit from constructor)", e.what());
+ return;
+ }
+ }
+@@ -174,14 +185,17 @@ VideoDeviceMonitorImpl::~VideoDeviceMoni
+ probing_ = false;
+ if (thread_.joinable())
+ thread_.join();
++#if defined(HAVE_UDEV)
+ if (udev_mon_)
+ udev_monitor_unref(udev_mon_);
+ if (udev_)
+ udev_unref(udev_);
++#endif
+ }
+
+ void VideoDeviceMonitorImpl::run()
+ {
++#if defined(HAVE_UDEV)
+ if (!udev_mon_) {
+ probing_ = false;
+ return;
+@@ -236,6 +250,7 @@ void VideoDeviceMonitorImpl::run()
+ return;
+ }
+ }
++#endif
+ }
+
+ VideoDeviceMonitor::VideoDeviceMonitor() :
diff --git a/net-im/ring-daemon/pkg-descr b/net-im/ring-daemon/pkg-descr
new file mode 100644
index 00000000000..357246eb1e7
--- /dev/null
+++ b/net-im/ring-daemon/pkg-descr
@@ -0,0 +1,5 @@
+Ring is a secure and distributed voice, video and chat communication
+platform that requires no centralized server and leaves the power
+of privacy in the hands of the user.
+
+WWW: https://ring.cx/
diff --git a/net-im/ring-daemon/pkg-plist b/net-im/ring-daemon/pkg-plist
new file mode 100644
index 00000000000..754d0c38b7d
--- /dev/null
+++ b/net-im/ring-daemon/pkg-plist
@@ -0,0 +1,17 @@
+include/dring/account_const.h
+include/dring/call_const.h
+include/dring/callmanager_interface.h
+include/dring/configurationmanager_interface.h
+include/dring/dring.h
+include/dring/media_const.h
+include/dring/presencemanager_interface.h
+include/dring/security_const.h
+include/dring/videomanager_interface.h
+lib/libring.so
+lib/libring.so.0
+lib/libring.so.0.0.0
+man/man1/dring.1.gz
+%%DBUS%%sbin/dring
+%%DBUS%%share/dbus-1/services/cx.ring.Ring.service
+share/ring/ringtones/default.wav
+share/ring/ringtones/konga.ul