Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Apr 2020 10:28:59 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
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
Message-ID:  <202004091028.039ASxb5089672@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 <bsd.port.mk>

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202004091028.039ASxb5089672>