net/gerbera: New port, UPnP/DLNA media server

Gerbera is a DLNA compatible media server and a continuation of MediaTomb
It allows you to browse and playback your media via your network, supports
metadata extraction, media thumbnail support and generation, media transcoding
and offers a Web UI.

WWW: https://gerbera.io/

PR:		248475
Submitted by:	daniel.engberg.lists@pyret.net
Reviewed by:	meena
This commit is contained in:
Mikael Urankar 2020-11-16 16:53:37 +00:00
parent dcafb73623
commit c595a583e3
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=555498
11 changed files with 285 additions and 2 deletions

2
GIDs
View File

@ -818,7 +818,7 @@ librespeed:*:874:
# free: 875
# free: 876
# free: 877
# free: 878
gerbera:*:878:
_encrypted-dns:*:879:
pyspf-milter:*:880:
ultimaker:*:881:

2
UIDs
View File

@ -823,7 +823,7 @@ librespeed:*:874:874::0:0:LibreSpeed user:/nonexistent:/usr/sbin/nologin
# free: 875
# free: 876
# free: 877
# free: 878
gerbera:*:878:878::0:0:Gerbera DLNA Media Server:/nonexistent:/usr/sbin/nologin
_encrypted-dns:*:879:879::0:0:encrypted-dns user:/var/empty:/usr/sbin/nologin
pyspf-milter:*:880:880::0:0:pyspf-milter:/nonexistent:/usr/sbin/nologin
ultimaker:*:881:881::0:0:Ultimaker user:/nonexistent:/usr/sbin/nologin

View File

@ -174,6 +174,7 @@
SUBDIR += geoclue
SUBDIR += geocode-glib
SUBDIR += geoipupdate
SUBDIR += gerbera
SUBDIR += gfbgraph
SUBDIR += glflow
SUBDIR += glib-networking

94
net/gerbera/Makefile Normal file
View File

@ -0,0 +1,94 @@
# $FreeBSD$
PORTNAME= gerbera
DISTVERSIONPREFIX= v
DISTVERSION= 1.6.4
CATEGORIES= net multimedia
MAINTAINER= daniel.engberg.lists@pyret.net
COMMENT= Media server compatible with DLNA and UPnP
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/LICENSE.md
LIB_DEPENDS= libfmt.so:devel/libfmt \
libspdlog.so:devel/spdlog \
libpugixml.so:textproc/pugixml \
libinotify.so:devel/libinotify
USES= cmake compiler:c++17-lang iconv localbase:ldflags \
pkgconfig sqlite
USE_GITHUB= yes
USE_RC_SUBR= gerbera
TEST_TARGET= test
CMAKE_OFF= WITH_EXIF WITH_LASTFM WITH_MYSQL WITH_SYSTEMD
USERS= gerbera
GROUPS= gerbera
SUB_LIST= USER=${USERS} GROUP=${GROUPS}
PLIST_SUB= USER=${USERS} GROUP=${GROUPS}
SUB_FILES= pkg-message
OPTIONS_DEFINE= CURL DEBUG DUKTAPE EXIV2 FFMPEG FFMPEGTHUMBNAILER \
LIBMAGIC MATROSKA TAGLIB TEST
OPTIONS_DEFAULT= CURL DUKTAPE EXIV2 FFMPEG LIBMAGIC TAGLIB LIBNPUPNP
OPTIONS_SINGLE= UPNPLIB
OPTIONS_SINGLE_UPNPLIB= LIBNPUPNP LIBUPNP
CURL_DESC= Support for online services via cURL
DUKTAPE_DESC= Javascript support for custom import scripts
FFMPEGTHUMBNAILER_DESC= Support for thumbnail generation
LIBNPUPNP_DESC= Use high performance libnpupnp library
LIBMAGIC_DESC= Identify file mime types via libmagic
LIBUPNP_DESC= Use libupnp library
MATROSKA_DESC= Extract video/mkv metadata via libmatroska
TAGLIB_DESC= Extract audio file metadata via taglib
CURL_LIB_DEPENDS= libcurl.so:ftp/curl
CURL_CMAKE_BOOL= WITH_CURL
DEBUG_CMAKE_BOOL= WITH_DEBUG
DUKTAPE_LIB_DEPENDS= libduktape.so:lang/duktape-lib
DUKTAPE_CMAKE_BOOL= WITH_JS
EXIV2_LIB_DEPENDS= libexiv2.so:graphics/exiv2
EXIV2_CMAKE_BOOL= WITH_EXIV2
FFMPEG_LIB_DEPENDS= libavformat.so:multimedia/ffmpeg \
libavutil.so:multimedia/ffmpeg
FFMPEG_CMAKE_BOOL= WITH_AVCODEC
FFMPEGTHUMBNAILER_LIB_DEPENDS= libffmpegthumbnailer.so:multimedia/ffmpegthumbnailer
FFMPEGTHUMBNAILER_CMAKE_BOOL= WITH_FFMPEGTHUMBNAILER
FFMPEGTHUMBNAILER_IMPLIES= FFMPEG
LIBMAGIC_LIB_DEPENDS= libmagic.so:sysutils/file
LIBMAGIC_CMAKE_BOOL= WITH_MAGIC
LIBNPUPNP_LIB_DEPENDS= libnpupnp.so:net/libnpupnp
LIBNPUPNP_CMAKE_BOOL= WITH_NPUPNP
LIBUPNP_LIB_DEPENDS= libupnp.so:devel/upnp
MATROSKA_LIB_DEPENDS= libmatroska.so:multimedia/libmatroska
MATROSKA_CMAKE_BOOL= WITH_MATROSKA
TAGLIB_LIB_DEPENDS= libtag.so:audio/taglib
TAGLIB_CMAKE_BOOL= WITH_TAGLIB
TEST_BUILD_DEPENDS= googletest>=0:devel/googletest
TEST_CMAKE_BOOL= WITH_TESTS
TEST_IMPLIES= CURL DUKTAPE
post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/gerbera
@${MKDIR} ${STAGEDIR}/var/db/gerbera
@${MKDIR} ${STAGEDIR}/var/log/gerbera
@${STAGEDIR}${PREFIX}/bin/gerbera -f /var/db/gerbera --create-config > ${STAGEDIR}${PREFIX}/etc/gerbera-config.xml.sample
.include <bsd.port.mk>

3
net/gerbera/distinfo Normal file
View File

@ -0,0 +1,3 @@
TIMESTAMP = 1602879743
SHA256 (gerbera-gerbera-v1.6.4_GH0.tar.gz) = cbe7ea78977db8c02fcca1759ed149f199a590afaf4a6d21ffcca8623d1a0cc5
SIZE (gerbera-gerbera-v1.6.4_GH0.tar.gz) = 3060809

View File

@ -0,0 +1,54 @@
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: gerbera
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable gerbera:
# gerbera_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable gerbera.
# gerbera_flags (str): Custom additional arguments to be passed
# to gerbera (default empty).
# gerbera_conf_dir (str): Directory where ${name} configuration
# data is stored.
. /etc/rc.subr
name="gerbera"
rcvar=gerbera_enable
load_rc_config ${name}
: ${gerbera_enable:="NO"}
: ${gerbera_user:="%%USER%%"}
: ${gerbera_group:="%%GROUP%%"}
: ${gerbera_conf_dir="%%PREFIX%%/etc"}
start_precmd=gerbera_precmd
stop_postcmd=gerbera_stop_postcmd
procname="%%PREFIX%%/bin/${name}"
pidfile="/var/run/gerbera/gerbera.pid"
required_files="${gerbera_conf_dir}/gerbera-config.xml"
command="/usr/sbin/daemon"
command_args="-f -t ${name} -p ${pidfile} ${procname} -c ${required_files} -l /var/log/gerbera/gerbera.log ${gerbera_args}"
gerbera_precmd()
{
local rundir=${pidfile%/*}
if [ ! -d $rundir ] ; then
install -d -m 0755 -o %%USER%% -g %%GROUP%% $rundir
fi
}
gerbera_stop_postcmd()
{
rm -f "$rundir"
}
run_rc_command "$1"

View File

@ -0,0 +1,8 @@
--- CMakeLists.txt.orig 2020-09-06 01:54:18 UTC
+++ CMakeLists.txt
@@ -528,4 +528,4 @@ INSTALL(FILES
${PROJECT_SOURCE_DIR}/config/mysql.sql
${PROJECT_SOURCE_DIR}/config/sqlite3.sql
DESTINATION share/gerbera)
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/doc/gerbera.1 DESTINATION share/man/man1)
+INSTALL(FILES ${PROJECT_SOURCE_DIR}/doc/gerbera.1 DESTINATION man/man1)

View File

@ -0,0 +1,20 @@
--- test/core/test_server.cc.orig 2020-07-27 06:07:30 UTC
+++ test/core/test_server.cc
@@ -51,17 +51,6 @@ TEST_F(ServerTest, ServerOutputsHelpInformation)
ASSERT_THAT(output.c_str(), HasSubstr(expectedOutput.c_str()));
}
-TEST_F(ServerTest, ServerOutputsCompileInformationIncludingGit)
-{
- fs::path cmd = fs::path(CMAKE_BINARY_DIR) / "gerbera --compile-info 2>&1";
- std::string output = exec(cmd.c_str());
-
- ASSERT_THAT(output, HasSubstr("Compile info\n-------------\nWITH_"));
- ASSERT_THAT(output, HasSubstr("Git info:\n-------------\n"));
- ASSERT_THAT(output, HasSubstr("Git Branch: "));
- ASSERT_THAT(output, HasSubstr("Git Commit: "));
-}
-
TEST_F(ServerTest, GeneratesFullConfigFromServerCommand)
{
// simple check to ensure complete generation from server

View File

@ -0,0 +1,11 @@
[
{ type: install
message: <<EOM
Edit /etc/rc.conf(.local) to start Gerbera automatically at system
startup. Command line arguments can be set via gerbera_args.
A sample configuration file is installed at the follow location:
%%PREFIX%%/etc/gerbera-config.xml.sample
EOM
}
]

6
net/gerbera/pkg-descr Normal file
View File

@ -0,0 +1,6 @@
Gerbera is a DLNA compatible media server and a continuation of MediaTomb
It allows you to browse and playback your media via your network, supports
metadata extraction, media thumbnail support and generation, media transcoding
and offers a Web UI.
WWW: https://gerbera.io/

86
net/gerbera/pkg-plist Normal file
View File

@ -0,0 +1,86 @@
bin/gerbera
%%DATADIR%%/js/common.js
%%DATADIR%%/js/import.js
%%DATADIR%%/js/import_structured.js
%%DATADIR%%/js/playlists.js
%%DATADIR%%/mappings.xml
%%DATADIR%%/mysql.sql
%%DATADIR%%/sqlite3.sql
%%DATADIR%%/web/README.md
%%DATADIR%%/web/assets/theme/colors.css
%%DATADIR%%/web/assets/theme/gerbera-logo-white.png
%%DATADIR%%/web/assets/theme/gerbera.css
%%DATADIR%%/web/cds.xml
%%DATADIR%%/web/cm.xml
%%DATADIR%%/web/disabled.html
%%DATADIR%%/web/favicon.ico
%%DATADIR%%/web/icons/mt-icon120.bmp
%%DATADIR%%/web/icons/mt-icon120.jpg
%%DATADIR%%/web/icons/mt-icon120.png
%%DATADIR%%/web/icons/mt-icon32.bmp
%%DATADIR%%/web/icons/mt-icon32.jpg
%%DATADIR%%/web/icons/mt-icon32.png
%%DATADIR%%/web/icons/mt-icon48.bmp
%%DATADIR%%/web/icons/mt-icon48.jpg
%%DATADIR%%/web/icons/mt-icon48.png
%%DATADIR%%/web/index.html
%%DATADIR%%/web/js/gerbera-app.module.js
%%DATADIR%%/web/js/gerbera-auth.module.js
%%DATADIR%%/web/js/gerbera-autoscan.module.js
%%DATADIR%%/web/js/gerbera-clients.module.js
%%DATADIR%%/web/js/gerbera-items.module.js
%%DATADIR%%/web/js/gerbera-menu.module.js
%%DATADIR%%/web/js/gerbera-trail.module.js
%%DATADIR%%/web/js/gerbera-tree.module.js
%%DATADIR%%/web/js/gerbera-updates.module.js
%%DATADIR%%/web/js/jquery.gerbera.autoscan.js
%%DATADIR%%/web/js/jquery.gerbera.clients.js
%%DATADIR%%/web/js/jquery.gerbera.editor.js
%%DATADIR%%/web/js/jquery.gerbera.items.js
%%DATADIR%%/web/js/jquery.gerbera.toast.js
%%DATADIR%%/web/js/jquery.gerbera.trail.js
%%DATADIR%%/web/js/jquery.gerbera.tree.js
%%DATADIR%%/web/js/md5.js
%%DATADIR%%/web/mr_reg.xml
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-grid.css
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-grid.css.map
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-grid.min.css
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-grid.min.css.map
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-reboot.css
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-reboot.css.map
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-reboot.min.css
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap-reboot.min.css.map
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap.css
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap.css.map
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap.min.css
%%DATADIR%%/web/vendor/bootstrap/css/bootstrap.min.css.map
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.bundle.js
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.bundle.js.map
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.bundle.min.js
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.bundle.min.js.map
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.js
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.js.map
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.min.js
%%DATADIR%%/web/vendor/bootstrap/js/bootstrap.min.js.map
%%DATADIR%%/web/vendor/font-awesome/css/font-awesome.css
%%DATADIR%%/web/vendor/font-awesome/css/font-awesome.min.css
%%DATADIR%%/web/vendor/font-awesome/fonts/FontAwesome.otf
%%DATADIR%%/web/vendor/font-awesome/fonts/fontawesome-webfont.eot
%%DATADIR%%/web/vendor/font-awesome/fonts/fontawesome-webfont.svg
%%DATADIR%%/web/vendor/font-awesome/fonts/fontawesome-webfont.ttf
%%DATADIR%%/web/vendor/font-awesome/fonts/fontawesome-webfont.woff
%%DATADIR%%/web/vendor/font-awesome/fonts/fontawesome-webfont.woff2
%%DATADIR%%/web/vendor/jquery/jquery-3.4.0.min.js
%%DATADIR%%/web/vendor/jquery/jquery-ui.min.js
%%DATADIR%%/web/vendor/js-cookie.js
%%DATADIR%%/web/vendor/lato/LICENCE.md
%%DATADIR%%/web/vendor/lato/lato-v14-latin-ext_latin-regular.woff
%%DATADIR%%/web/vendor/lato/lato-v14-latin-ext_latin-regular.woff2
%%DATADIR%%/web/vendor/popper/popper.js
%%DATADIR%%/web/vendor/tether/tether.min.js
man/man1/gerbera.1.gz
@owner %%USER%%
@group %%GROUP%%
@dir /var/db/gerbera
@dir /var/log/gerbera
@sample(gerbera,gerbera,0640) /usr/local/etc/gerbera-config.xml.sample