From owner-svn-ports-head@freebsd.org Thu Apr 9 10:29:01 2020 Return-Path: Delivered-To: svn-ports-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 186862B5ED0; Thu, 9 Apr 2020 10:29:01 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48ycnT08bbz4QyS; Thu, 9 Apr 2020 10:29:01 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0050EB2F7; Thu, 9 Apr 2020 10:29:01 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 039AT0RL089686; Thu, 9 Apr 2020 10:29:00 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 039ASxb5089672; Thu, 9 Apr 2020 10:28:59 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <202004091028.039ASxb5089672@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Thu, 9 Apr 2020 10:28:59 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r531197 - in head: . audio audio/gonic audio/gonic/files X-SVN-Group: ports-head X-SVN-Commit-Author: bapt X-SVN-Commit-Paths: in head: . audio audio/gonic audio/gonic/files X-SVN-Commit-Revision: 531197 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Apr 2020 10:29:01 -0000 Author: bapt Date: Thu Apr 9 10:28:59 2020 New Revision: 531197 URL: https://svnweb.freebsd.org/changeset/ports/531197 Log: New port audio/gonic music streaming server / subsonic server API implementation features * browsing by folder (keeping your full tree intact) * browsing by tags (using taglib - supports mp3, opus, flac, ape, m4a, wav, etc.) * on-the-fly audio transcoding and caching (requires ffmpeg) (thank you spijet) * pretty fast scanning (with my library of ~27k tracks, initial scan takes about 10m, and about 5s after incrementally) * multiple users, each with their own transcoding preferences, playlists, top tracks, top artists, etc. * last.fm scrobbling * artist similarities and biographies from the last.fm api * a web interface for configuration (set up last.fm, manage users, start scans, etc.) * support for the album-artist tag, to not clutter your artist list with compilation album appearances * written in go, so lightweight and suitable for a raspberry pi, etc. * newer salt and token auth * tested on dsub, jamstash, sublime music, and soundwaves WWW: https://github.com/sentriz/gonic Added: head/audio/gonic/ head/audio/gonic/Makefile (contents, props changed) head/audio/gonic/distinfo (contents, props changed) head/audio/gonic/files/ head/audio/gonic/files/gonic.in (contents, props changed) head/audio/gonic/pkg-descr (contents, props changed) Modified: head/GIDs head/UIDs head/audio/Makefile Modified: head/GIDs ============================================================================== --- head/GIDs Thu Apr 9 10:12:33 2020 (r531196) +++ head/GIDs Thu Apr 9 10:28:59 2020 (r531197) @@ -192,7 +192,7 @@ signal-cli:*:248: sonarqube:*:249: sems:*:250: irrd:*:251: -# free: 252 +gonic:*:252: _adsuck:*:253: imds:*:254: _i2pd:*:255: Modified: head/UIDs ============================================================================== --- head/UIDs Thu Apr 9 10:12:33 2020 (r531196) +++ head/UIDs Thu Apr 9 10:28:59 2020 (r531197) @@ -197,7 +197,7 @@ signal-cli:*:248:248::0:0:Signal CLI:/nonexistent:/usr sonarqube:*:249:249::0:0:SonarQube Server:/nonexistent:/usr/sbin/nologin sems:*:250:250::0:0:SIP Express Media Server:/nonexistent:/usr/sbin/nologin irrd:*:251:251::0:0:irrd Daemon:/nonexistent:/usr/sbin/nologin -# free: 252 +gonic:*:252:252::0:0:Music streaming server:/nonexistent:/usr/sbin/nologin _adsuck:*:253:253::0:0:Adsuck ad blocking user:/nonexistent:/usr/sbin/nologin imds:*:254:254::0:0:Instance Metadata Service filter:/nonexistent:/usr/sbin/nologin _i2pd:*:255:255::0:0:I2P daemon:/var/db/i2pd:/usr/sbin/nologin Modified: head/audio/Makefile ============================================================================== --- head/audio/Makefile Thu Apr 9 10:12:33 2020 (r531196) +++ head/audio/Makefile Thu Apr 9 10:28:59 2020 (r531197) @@ -233,6 +233,7 @@ SUBDIR += gnustep-cdplayer SUBDIR += goattracker SUBDIR += gogglesmm + SUBDIR += gonic SUBDIR += goobox SUBDIR += gqradio SUBDIR += gradio Added: head/audio/gonic/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/gonic/Makefile Thu Apr 9 10:28:59 2020 (r531197) @@ -0,0 +1,71 @@ +# $FreeBSD$ + +PORTNAME= gonic +PORTVERSION= 0.8.4 +DISTVERSIONPREFIX= v +CATEGORIES= audio net + +MAINTAINER= bapt@FreeBSD.org +COMMENT= Music streaming server / subsonic server API implementation + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE + +LIB_DEPENDS= libtag.so:audio/taglib + +USES= go:modules pkgconfig + +USE_RC_SUBR= ${PORTNAME} + +USE_GITHUB= yes +GH_ACCOUNT= sentriz +GO_TARGET= cmd/gonic cmd/gonicscan + +GH_TUPLE= \ + Masterminds:goutils:v1.1.0:masterminds_goutils/vendor/github.com/Masterminds/goutils \ + Masterminds:semver:v1.4.2:masterminds_semver/vendor/github.com/Masterminds/semver \ + Masterminds:sprig:v2.20.0:masterminds_sprig/vendor/github.com/Masterminds/sprig \ + cespare:xxhash:v1.1.0:cespare_xxhash/vendor/github.com/cespare/xxhash \ + dustin:go-humanize:v1.0.0:dustin_go_humanize/vendor/github.com/dustin/go-humanize \ + go-gormigrate:gormigrate:v1.6.0:go_gormigrate_gormigrate/vendor/gopkg.in/gormigrate.v1 \ + golang:appengine:v1.6.1:golang_appengine/vendor/google.golang.org/appengine \ + golang:crypto:cc06ce4a13d4:golang_crypto/vendor/golang.org/x/crypto \ + golang:lint:959b441ac422:golang_lint/vendor/github.com/golang/lint \ + google:uuid:v1.1.1:google_uuid/vendor/github.com/google/uuid \ + googleapis:google-cloud-go:v0.40.0:googleapis_google_cloud_go/vendor/cloud.google.com/go \ + gorilla:context:v1.1.1:gorilla_context/vendor/github.com/gorilla/context \ + gorilla:mux:v1.7.3:gorilla_mux/vendor/github.com/gorilla/mux \ + gorilla:securecookie:v1.1.1:gorilla_securecookie/vendor/github.com/gorilla/securecookie \ + gorilla:sessions:v1.1.3:gorilla_sessions/vendor/github.com/gorilla/sessions \ + huandu:xstrings:v1.2.0:huandu_xstrings/vendor/github.com/huandu/xstrings \ + imdario:mergo:v0.3.7:imdario_mergo/vendor/github.com/imdario/mergo \ + jinzhu:gorm:v1.9.10:jinzhu_gorm/vendor/github.com/jinzhu/gorm \ + jinzhu:inflection:v1.0.0:jinzhu_inflection/vendor/github.com/jinzhu/inflection \ + josephburnett:jd:1f9071c800e7:josephburnett_jd/vendor/github.com/josephburnett/jd \ + karrick:godirwalk:v1.15.2:karrick_godirwalk/vendor/github.com/karrick/godirwalk \ + kr:pretty:v0.1.0:kr_pretty/vendor/github.com/kr/pretty \ + mattn:go-sqlite3:v1.10.0:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \ + nicksellen:audiotags:94015fa599bd:nicksellen_audiotags/vendor/github.com/nicksellen/audiotags \ + oxtoacart:bpool:03653db5a59c:oxtoacart_bpool/vendor/github.com/oxtoacart/bpool \ + peterbourgon:ff:v1.2.0:peterbourgon_ff/vendor/github.com/peterbourgon/ff \ + pkg:errors:v0.8.1:pkg_errors/vendor/github.com/pkg/errors \ + rainycape:unidecode:cb7f23ec59be:rainycape_unidecode/vendor/github.com/rainycape/unidecode \ + wader:gormstore:acb787ba3755:wader_gormstore/vendor/github.com/wader/gormstore + +USERS= ${PORTNAME} +GROUPS= ${PORTNAME} + +PLIST_FILES= bin/gonic \ + bin/gonicscan + +do-build: + (cd ${GO_WRKSRC}; \ + ${ECHO_MSG} "===> Building gonic from cmd/gonic/main.go"; \ + ${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} build ${GO_BUILDFLAGS} \ + -o ${GO_WRKDIR_BIN}/gonic cmd/gonic/main.go ; \ + ${ECHO_MSG} "===> Building gonicscan from cmd/gonicscan/main.go"; \ + ${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} build ${GO_BUILDFLAGS} \ + -o ${GO_WRKDIR_BIN}/gonicscan cmd/gonicscan/main.go ; \ + ) + +.include Added: head/audio/gonic/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/gonic/distinfo Thu Apr 9 10:28:59 2020 (r531197) @@ -0,0 +1,61 @@ +TIMESTAMP = 1586418832 +SHA256 (sentriz-gonic-v0.8.4_GH0.tar.gz) = d9dfcc9094ee340632d85edb36c3a0cba54be9ee72b83b0e7de8ae79d84a9891 +SIZE (sentriz-gonic-v0.8.4_GH0.tar.gz) = 1088182 +SHA256 (Masterminds-goutils-v1.1.0_GH0.tar.gz) = 053a61c4b0d78e6978600c99562f04d053993c428d549a20b627151cf1aabbae +SIZE (Masterminds-goutils-v1.1.0_GH0.tar.gz) = 14610 +SHA256 (Masterminds-semver-v1.4.2_GH0.tar.gz) = 13532037b53099292eca94fffba355f2399284b5f7b5c9cb7d9d4fce760336dd +SIZE (Masterminds-semver-v1.4.2_GH0.tar.gz) = 15901 +SHA256 (Masterminds-sprig-v2.20.0_GH0.tar.gz) = d1e09d0deb5586e30d2781975f7237fa1fab9b70f503acf8e1fca2ac75af811e +SIZE (Masterminds-sprig-v2.20.0_GH0.tar.gz) = 38720 +SHA256 (cespare-xxhash-v1.1.0_GH0.tar.gz) = 9418be390574092f0ca989b9ae2f5450270ead8125a635a100850b28c8c9c495 +SIZE (cespare-xxhash-v1.1.0_GH0.tar.gz) = 8200 +SHA256 (dustin-go-humanize-v1.0.0_GH0.tar.gz) = e4540bd50ac855143b4f2e509313079c50cf5d8774f09cc10dbca5ae9803d8ba +SIZE (dustin-go-humanize-v1.0.0_GH0.tar.gz) = 17260 +SHA256 (go-gormigrate-gormigrate-v1.6.0_GH0.tar.gz) = f88aa9d97e99e6463d5469fc39683f86651fb36ca55f7018f7781c552276cb27 +SIZE (go-gormigrate-gormigrate-v1.6.0_GH0.tar.gz) = 12738 +SHA256 (golang-appengine-v1.6.1_GH0.tar.gz) = 1755aaf4c6246579337bf1bc4f834ef00c56216da87b20456863ca91985b5afa +SIZE (golang-appengine-v1.6.1_GH0.tar.gz) = 333353 +SHA256 (golang-crypto-cc06ce4a13d4_GH0.tar.gz) = 12d4a82aeb8c2b1c19149d99b5a8307866d8083342ad54ffb4df59d275236e2b +SIZE (golang-crypto-cc06ce4a13d4_GH0.tar.gz) = 1693029 +SHA256 (golang-lint-959b441ac422_GH0.tar.gz) = fc9f3cfe7ba2a932975bd513c40384b2eb32f3967a130c40676d72c592e4ac1d +SIZE (golang-lint-959b441ac422_GH0.tar.gz) = 32998 +SHA256 (google-uuid-v1.1.1_GH0.tar.gz) = bebd4b0b4ea152a9793615ef23c83f688876d8c284a2092264d20a4bf4ffc423 +SIZE (google-uuid-v1.1.1_GH0.tar.gz) = 13543 +SHA256 (googleapis-google-cloud-go-v0.40.0_GH0.tar.gz) = 0d071f37137e1fdf75ca39cf19ce3fd966a1e2e28091e01c4ecd4e6437c2cd72 +SIZE (googleapis-google-cloud-go-v0.40.0_GH0.tar.gz) = 2090665 +SHA256 (gorilla-context-v1.1.1_GH0.tar.gz) = 2dfdd051c238695bf9ebfed0bf6a8c533507ac0893bce23be5930e973736bb03 +SIZE (gorilla-context-v1.1.1_GH0.tar.gz) = 4574 +SHA256 (gorilla-mux-v1.7.3_GH0.tar.gz) = 92adb9aea022f8b35686b75be50ba1206c4457c2f8a0e2a9d10d8721f35b3f11 +SIZE (gorilla-mux-v1.7.3_GH0.tar.gz) = 42495 +SHA256 (gorilla-securecookie-v1.1.1_GH0.tar.gz) = b7897b2243f0d43913aca318593c5c2586294fcd3265189d564ddda1b880fe95 +SIZE (gorilla-securecookie-v1.1.1_GH0.tar.gz) = 41240 +SHA256 (gorilla-sessions-v1.1.3_GH0.tar.gz) = dfc859af8f547fd2c746815d6665aa35263479cbd699f5aa3221b9564d18f976 +SIZE (gorilla-sessions-v1.1.3_GH0.tar.gz) = 12778 +SHA256 (huandu-xstrings-v1.2.0_GH0.tar.gz) = c43737734bb260e7d77329af8a33bf687f9430abc1b21d3b1f4a8fa6fb3dbde3 +SIZE (huandu-xstrings-v1.2.0_GH0.tar.gz) = 16628 +SHA256 (imdario-mergo-v0.3.7_GH0.tar.gz) = ce29171c44a6b4084ed514bc9b4ed6c3c01462c210b7ec6fe5e56691a46eb939 +SIZE (imdario-mergo-v0.3.7_GH0.tar.gz) = 16668 +SHA256 (jinzhu-gorm-v1.9.10_GH0.tar.gz) = 4cad5ee883c7bec8ec508935b8733adaaf2c95ff3b315984b5699b60979a8008 +SIZE (jinzhu-gorm-v1.9.10_GH0.tar.gz) = 99371 +SHA256 (jinzhu-inflection-v1.0.0_GH0.tar.gz) = 582808364cc268544e3e6775b15d7fffbc28ccfb930a29840bb25e32d7d95e1f +SIZE (jinzhu-inflection-v1.0.0_GH0.tar.gz) = 4766 +SHA256 (josephburnett-jd-1f9071c800e7_GH0.tar.gz) = 5364efd8f83ed30e0cf74db256d0253c74fbf1c30d8cf72cf6f30d1bec4c5509 +SIZE (josephburnett-jd-1f9071c800e7_GH0.tar.gz) = 31845 +SHA256 (karrick-godirwalk-v1.15.2_GH0.tar.gz) = ff489e2d8c65707865149ee0d80959452b2001565866828aa6eb4fd5fd73971f +SIZE (karrick-godirwalk-v1.15.2_GH0.tar.gz) = 24143 +SHA256 (kr-pretty-v0.1.0_GH0.tar.gz) = 3aeb5d90b719765781befb9f156d0d0b8e5a7aafbcf15321e9eabbd35df31358 +SIZE (kr-pretty-v0.1.0_GH0.tar.gz) = 8550 +SHA256 (mattn-go-sqlite3-v1.10.0_GH0.tar.gz) = 26373461df8c717540b48b6014d823216a69545337cde6683308c6a67f63de01 +SIZE (mattn-go-sqlite3-v1.10.0_GH0.tar.gz) = 2231288 +SHA256 (nicksellen-audiotags-94015fa599bd_GH0.tar.gz) = 7577ef460c7c7dfdac1a5f80a74945b1a70343584b714c35b21affcb45c1988b +SIZE (nicksellen-audiotags-94015fa599bd_GH0.tar.gz) = 12235 +SHA256 (oxtoacart-bpool-03653db5a59c_GH0.tar.gz) = b5898969c50f5677fa8ea955bd7a06b77083b56ae76607f49ae1aed0abd61b41 +SIZE (oxtoacart-bpool-03653db5a59c_GH0.tar.gz) = 8478 +SHA256 (peterbourgon-ff-v1.2.0_GH0.tar.gz) = a000ac71a8554a4918050f5ce4ab93f399b51f64efaf016cec9758877e8bbc1e +SIZE (peterbourgon-ff-v1.2.0_GH0.tar.gz) = 9672 +SHA256 (pkg-errors-v0.8.1_GH0.tar.gz) = 7a428967c6fc2e80cd84a0d9469ab6bd4dbe6b13493ba6294322a933a5a7e356 +SIZE (pkg-errors-v0.8.1_GH0.tar.gz) = 11009 +SHA256 (rainycape-unidecode-cb7f23ec59be_GH0.tar.gz) = cd66a7ee66c8061c2d05585058323d0bcc6692761db94885511762428acfef96 +SIZE (rainycape-unidecode-cb7f23ec59be_GH0.tar.gz) = 387823 +SHA256 (wader-gormstore-acb787ba3755_GH0.tar.gz) = 377a3b5ab29da09123c323407941695e701cd14c1c62e9e89f896cf17bf40727 +SIZE (wader-gormstore-acb787ba3755_GH0.tar.gz) = 5934 Added: head/audio/gonic/files/gonic.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/gonic/files/gonic.in Thu Apr 9 10:28:59 2020 (r531197) @@ -0,0 +1,41 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: gonic +# REQUIRE: LOGIN +# KEYWORD: shutdown + +. /etc/rc.subr + +name=gonic +rcvar=${name}_enable +desc="Music streaming server" + +load_rc_config "${name}" + +# other variables: +# gonic_scan_interval +# gonic_music_path + +: ${gonic_enable:="NO"} +: ${gonic_user:="gonic"} +: ${gonic_group:="gonic"} +: ${gonic_proxy_prefix:="/"} +: ${gonic_db_path:="/var/db/gonic/gonic.db"} +: ${gonic_listen_addr:="0.0.0.0:4747"} + +pidfile=/var/run/gonic.pid +procname="%%PREFIX%%/bin/gonic" +command="/usr/sbin/daemon" +command_args="-cf -p ${pidfile} ${procname} ${gonic_music_path:+-music-path=${gonic_music_path}} ${gonic_proxy_prefix:+-proxy-prefix=${gonic_proxy_prefix}} ${gonic_listen_addr:+-listen-addr=${gonic_listen_addr}} ${gonic_scan_interval:+-scan-interval=${gonic_scan_interval}} ${gonic_db_path:+-db-path=${gonic_db_path}} ${gonic_args}" + +gonic_startprecmd() +{ + if [ ! -e ${pidfile} ]; then + install -o ${gonic_user} -g ${gonic_group} /dev/null ${pidfile}; + fi +} +start_precmd=gonic_startprecmd +run_rc_command "$1" Added: head/audio/gonic/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/audio/gonic/pkg-descr Thu Apr 9 10:28:59 2020 (r531197) @@ -0,0 +1,22 @@ +music streaming server / subsonic server API implementation + +features +* browsing by folder (keeping your full tree intact) +* browsing by tags (using taglib - supports mp3, opus, flac, ape, m4a, wav, + etc.) +* on-the-fly audio transcoding and caching (requires ffmpeg) (thank you spijet) +* pretty fast scanning (with my library of ~27k tracks, initial scan takes + about 10m, and about 5s after incrementally) +* multiple users, each with their own transcoding preferences, playlists, top + tracks, top artists, etc. +* last.fm scrobbling +* artist similarities and biographies from the last.fm api +* a web interface for configuration (set up last.fm, manage users, start scans, + etc.) +* support for the album-artist tag, to not clutter your artist list with + compilation album appearances +* written in go, so lightweight and suitable for a raspberry pi, etc. +* newer salt and token auth +* tested on dsub, jamstash, sublime music, and soundwaves + +WWW: https://github.com/sentriz/gonic