diff options
author | Mikael Urankar <mikael@FreeBSD.org> | 2020-11-16 16:53:37 +0000 |
---|---|---|
committer | Mikael Urankar <mikael@FreeBSD.org> | 2020-11-16 16:53:37 +0000 |
commit | c595a583e37431c538a5e7e7590c27e1ee05d521 (patch) | |
tree | a28d7ce2f2f56c7ee8d56e55aabc78ee7632b325 | |
parent | dcafb73623cd0ba3d191ed3ff354198a73a55c29 (diff) | |
download | freebsd-ports-c595a583e37431c538a5e7e7590c27e1ee05d521.zip |
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
-rw-r--r-- | GIDs | 2 | ||||
-rw-r--r-- | UIDs | 2 | ||||
-rw-r--r-- | net/Makefile | 1 | ||||
-rw-r--r-- | net/gerbera/Makefile | 94 | ||||
-rw-r--r-- | net/gerbera/distinfo | 3 | ||||
-rw-r--r-- | net/gerbera/files/gerbera.in | 54 | ||||
-rw-r--r-- | net/gerbera/files/patch-CMakeLists.txt | 8 | ||||
-rw-r--r-- | net/gerbera/files/patch-test_core_test__server.cc | 20 | ||||
-rw-r--r-- | net/gerbera/files/pkg-message.in | 11 | ||||
-rw-r--r-- | net/gerbera/pkg-descr | 6 | ||||
-rw-r--r-- | net/gerbera/pkg-plist | 86 |
11 files changed, 285 insertions, 2 deletions
@@ -818,7 +818,7 @@ librespeed:*:874: # free: 875 # free: 876 # free: 877 -# free: 878 +gerbera:*:878: _encrypted-dns:*:879: pyspf-milter:*:880: ultimaker:*:881: @@ -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 diff --git a/net/Makefile b/net/Makefile index 0265efe24959..1268a31c421b 100644 --- a/net/Makefile +++ b/net/Makefile @@ -174,6 +174,7 @@ SUBDIR += geoclue SUBDIR += geocode-glib SUBDIR += geoipupdate + SUBDIR += gerbera SUBDIR += gfbgraph SUBDIR += glflow SUBDIR += glib-networking diff --git a/net/gerbera/Makefile b/net/gerbera/Makefile new file mode 100644 index 000000000000..6719202cd7cc --- /dev/null +++ b/net/gerbera/Makefile @@ -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> diff --git a/net/gerbera/distinfo b/net/gerbera/distinfo new file mode 100644 index 000000000000..69d63387ad3b --- /dev/null +++ b/net/gerbera/distinfo @@ -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 diff --git a/net/gerbera/files/gerbera.in b/net/gerbera/files/gerbera.in new file mode 100644 index 000000000000..372c0c32d694 --- /dev/null +++ b/net/gerbera/files/gerbera.in @@ -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" diff --git a/net/gerbera/files/patch-CMakeLists.txt b/net/gerbera/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..933123cc70d8 --- /dev/null +++ b/net/gerbera/files/patch-CMakeLists.txt @@ -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) diff --git a/net/gerbera/files/patch-test_core_test__server.cc b/net/gerbera/files/patch-test_core_test__server.cc new file mode 100644 index 000000000000..2d1eadbc156b --- /dev/null +++ b/net/gerbera/files/patch-test_core_test__server.cc @@ -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 diff --git a/net/gerbera/files/pkg-message.in b/net/gerbera/files/pkg-message.in new file mode 100644 index 000000000000..ee03136d30a8 --- /dev/null +++ b/net/gerbera/files/pkg-message.in @@ -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 +} +] diff --git a/net/gerbera/pkg-descr b/net/gerbera/pkg-descr new file mode 100644 index 000000000000..9957bd633c1b --- /dev/null +++ b/net/gerbera/pkg-descr @@ -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/ diff --git a/net/gerbera/pkg-plist b/net/gerbera/pkg-plist new file mode 100644 index 000000000000..c3bceadbac82 --- /dev/null +++ b/net/gerbera/pkg-plist @@ -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 |