import multimedia/dms 1.7.2 with two IPv6 commits on top; OK caspar

dms is a UPnP DLNA Digital Media Server. It runs from the terminal,
and serves content directly from the filesystem from the working
directory, or the path given. The SSDP component will broadcast and
respond to requests on all available network interfaces.

dms advertises and serves the raw files, in addition to alternate
transcoded streams when it's able, such as mpeg2 PAL-DVD and WebM
for the Chromecast. It will also provide thumbnails where possible.

dms also supports serving dynamic streams (e.g. a live rtsp stream)
generated on the fly with the help of an external application (e.g.
ffmpeg).
This commit is contained in:
kn
2025-11-28 18:32:18 +00:00
parent 0c41ccaa50
commit ab3fe3ee43
6 changed files with 226 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
COMMENT = UPnP DLNA server with transcoding
CATEGORIES = multimedia net
MODGO_MODNAME = github.com/anacrolix/dms
MODGO_VERSION = v1.7.2
DISTNAME = dms-${MODGO_VERSION}
HOMEPAGE = https://github.com/anacrolix/dms
MAINTAINER = Klemens Nanni <kn@openbsd.org>
# BSD 3-clause
PERMIT_PACKAGE = Yes
WANTLIB = c pthread
SITES.ipv6 = https://${MODGO_MODNAME}/commit/
# first commit after release: "feat: add IPv6 support for SSDP"
PATCHFILES.ipv6 = 105c744ed2138c85167c2d8b66cb3830694fba24.patch
# pending "Ensure :: in -http argument ends up as IPv6 socket"
# https://github.com/anacrolix/dms/pull/171
PATCHFILES.ipv6 += a16a4b302c6525a13acbb4c22571a19c2a62a905.patch
PATCH_DIST_STRIP = -p1
# make patch and update-patches work
WRKDIST = ${WRKSRC}
MODULES = lang/go
# '-forceTranscodeTo vp8' currently wants unported avconv, but that is subject
# to change upstream already, so just leave it.
RUN_DEPENDS = graphics/ffmpeg \
graphics/ffmpegthumbnailer
.include "modules.inc"
.include <bsd.port.mk>
+120
View File
@@ -0,0 +1,120 @@
SHA256 (105c744ed2138c85167c2d8b66cb3830694fba24.patch) = 5lZ5D0mBBcpNqFhWJPgcaQycHw69aNrRQueTOgXi9Sk=
SHA256 (a16a4b302c6525a13acbb4c22571a19c2a62a905.patch) = kJZfycCtejV7GA+S7sSfD868gAsJm8FjWJ10Qgvgkek=
SHA256 (dms-v1.7.2.zip) = vC7MT4lesy4ZTTswu4hSZdwbzrNPUIc2hATCzFZt+8Q=
SHA256 (go_modules/github.com/anacrolix/envpprof/@v/v1.0.0.mod) = DvyYIC+xlI19QnUjisxre2TxKn8faLyJcs6e3ME1ky0=
SHA256 (go_modules/github.com/anacrolix/envpprof/@v/v1.0.0.zip) = pCza9Xjf/7rNzYrwn/lDOykgDUf/cCcv8rvoS1cg76k=
SHA256 (go_modules/github.com/anacrolix/ffprobe/@v/v1.1.0.mod) = ghkdW71/THNzgDJ3Qx7OuRofd6cUNXY2dX/jRV+1Fwk=
SHA256 (go_modules/github.com/anacrolix/ffprobe/@v/v1.1.0.zip) = mRrySRIdfR84iElbS66CziGToJ8t93KXReOIBTjGxVE=
SHA256 (go_modules/github.com/anacrolix/generics/@v/v0.0.0-20230113004304-d6428d516633.mod) = 23fAT/adzjqMyIV9El0L5Hd5kH7j3WhtGes+z6wvCUo=
SHA256 (go_modules/github.com/anacrolix/generics/@v/v0.0.1.mod) = 23fAT/adzjqMyIV9El0L5Hd5kH7j3WhtGes+z6wvCUo=
SHA256 (go_modules/github.com/anacrolix/generics/@v/v0.0.1.zip) = vo0lN7tUyr8rztHmysyYyXJtmSUg/mEg2B3QNd9fKdQ=
SHA256 (go_modules/github.com/anacrolix/log/@v/v0.15.2.mod) = 9E25cTJBvLb2Tlcr3vtmYZffJrhDqxjl0awp0xbBCmA=
SHA256 (go_modules/github.com/anacrolix/log/@v/v0.15.2.zip) = zo9c0lXqUTeyQB8/3nbElaMo0dAgOeY33DKCrcsO+lU=
SHA256 (go_modules/github.com/anacrolix/missinggo/@v/v1.1.0.mod) = KpurmU2ZzMP7eEyXV2+L6fvbb04WAQYdnZ/JJCA2gxY=
SHA256 (go_modules/github.com/anacrolix/missinggo/@v/v1.1.0.zip) = vbou1pF+BWtRErBZ7KX0wpLNXmO14ADREE5wl3IBZEM=
SHA256 (go_modules/github.com/bradfitz/iter/@v/v0.0.0-20140124041915-454541ec3da2.mod) = K5+SPCdbb/mCn3Bb/r3egVX6y2Y7FGHqnE2RUaFyd9o=
SHA256 (go_modules/github.com/bradfitz/iter/@v/v0.0.0-20140124041915-454541ec3da2.zip) = xDkXRq7RbNpnfGo0VhqkhY/yosmpUgxq3sh27EKZjOY=
SHA256 (go_modules/github.com/davecgh/go-spew/@v/v1.1.0.mod) = vLKTkyUSN7eaF7bBm/KRNPQ+j0OMMZiYj81GGhzfBcw=
SHA256 (go_modules/github.com/davecgh/go-spew/@v/v1.1.1.mod) = vLKTkyUSN7eaF7bBm/KRNPQ+j0OMMZiYj81GGhzfBcw=
SHA256 (go_modules/github.com/davecgh/go-spew/@v/v1.1.1.zip) = a0SoQ5UfNxtwEMdU7MPKvv6BXVztHFuUCfstaX6KiQ0=
SHA256 (go_modules/github.com/frankban/quicktest/@v/v1.14.4.mod) = aLKthKInPSO6xKV0F3Wj+llKB9KnH4DoR6fWPFOlvZ8=
SHA256 (go_modules/github.com/frankban/quicktest/@v/v1.14.4.zip) = 3uueG53Rg2Lt50i1+TfQguZ8Q/J5wmWnOxT1yDbvXWo=
SHA256 (go_modules/github.com/google/go-cmp/@v/v0.5.9.mod) = 58dmnUod1Ym6PgJLon9D8pPbYR/gdc4g17iENw1j/r0=
SHA256 (go_modules/github.com/google/go-cmp/@v/v0.6.0.mod) = 58dmnUod1Ym6PgJLon9D8pPbYR/gdc4g17iENw1j/r0=
SHA256 (go_modules/github.com/google/go-cmp/@v/v0.6.0.zip) = S06b9sSCEQgGUbSR37SNaLc2xmowW8+UYFYG4bouqko=
SHA256 (go_modules/github.com/kr/pretty/@v/v0.3.1.mod) = hPPkCAOx69SoAuVXlLmZffCxc8SAnoVy/5BC7FWMobw=
SHA256 (go_modules/github.com/kr/pretty/@v/v0.3.1.zip) = 7PWkrySCbDrXWM4GQQygji1Y5NlQU747nd4uFIUsDNw=
SHA256 (go_modules/github.com/kr/text/@v/v0.2.0.mod) = 9jh5sgT2zolc6lNZS4FPWsCvCEhrM7HKecZXOE77xyY=
SHA256 (go_modules/github.com/kr/text/@v/v0.2.0.zip) = No6zGPkaW2e+kFxHAyq1wxodSal4SLEBGg0KISKzC6Q=
SHA256 (go_modules/github.com/nfnt/resize/@v/v0.0.0-20180221191011-83c6a9932646.mod) = UShf/MHJ0yYhc7wa9g61MWz7hDcwPFpgAWtjvn9PktI=
SHA256 (go_modules/github.com/nfnt/resize/@v/v0.0.0-20180221191011-83c6a9932646.zip) = uOl8sU5eXvKddi0t/4kPYnmhJZkN35y3rlxNKgFbEJw=
SHA256 (go_modules/github.com/pmezard/go-difflib/@v/v1.0.0.mod) = dLLnZushU3eGTVh7rfV+lVIfaS0qeGCzx3WQk/nJvsI=
SHA256 (go_modules/github.com/pmezard/go-difflib/@v/v1.0.0.zip) = 3gTOzBpLjVPkNXBRAmeUvLxU8uaiYM+sUIzmnV1kV6A=
SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.mod) = kFmpfaKZDIGaCXZ6XpvYeEtFpXt6JeKQVbvRsKqhRP8=
SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.zip) = fXd5CLnJGhaF8tcJVQ5rdHjhTpxGmd/9fwoVDjbbx+k=
SHA256 (go_modules/github.com/stretchr/testify/@v/v1.3.0.mod) = qwY9UVSo6HMLztTFJpjldw61C/rjR768NeykiLjj9uM=
SHA256 (go_modules/github.com/stretchr/testify/@v/v1.8.1.mod) = rxpdyzMazno/n8G11+7pwLyCtKKhgv5M7CrdIX4oU9Y=
SHA256 (go_modules/github.com/stretchr/testify/@v/v1.8.1.zip) = NvZOTyKfh2cu+N4cdWZIxBZedqvQNDYlF1eDl+gkhWw=
SHA256 (go_modules/golang.org/x/crypto/@v/v0.24.0.mod) = TfsA4zw5LLQjnS/FtlBpqR3vs7YZC7i5dyYmfuLnRfs=
SHA256 (go_modules/golang.org/x/crypto/@v/v0.24.0.zip) = eFO1CX3q4N6H8TYaDGPQHwm/QajiD3AzOIQmqWGqnTg=
SHA256 (go_modules/golang.org/x/exp/@v/v0.0.0-20220428152302-39d4317da171.mod) = 2xLf5Sji5F9WmEsb0fzMU4xUTuJ8IVnzE3Jy/45ZULw=
SHA256 (go_modules/golang.org/x/exp/@v/v0.0.0-20240613232115-7f521ea00fb8.mod) = LRDDzkV7/O9vXZLxXLBCpFruxmXpIS/9SUSJANeeQHU=
SHA256 (go_modules/golang.org/x/exp/@v/v0.0.0-20240613232115-7f521ea00fb8.zip) = brJmgK8qpY7zw0e3mjRie9rM2CZMjVRN747zS9eZu2c=
SHA256 (go_modules/golang.org/x/mod/@v/v0.18.0.mod) = XErAMQolMwdXA5zPOpjnX+/by31ETd0EkjAAOkSUW94=
SHA256 (go_modules/golang.org/x/mod/@v/v0.18.0.zip) = nGSj79pDySAUZ1NhsmIN4fKBXVmHWjefCzNhAY5b31k=
SHA256 (go_modules/golang.org/x/net/@v/v0.26.0.mod) = 82mj44SGDykPhwGlhZt2CTrof6JdWHyMnIFqLC40p5w=
SHA256 (go_modules/golang.org/x/net/@v/v0.26.0.zip) = PqkMFHQiacfB1SF7wePPWKcVUuVyT9QP+mm6UaEzrbA=
SHA256 (go_modules/golang.org/x/sync/@v/v0.7.0.mod) = cA5dsA3SaqGaF9zl/FUkNtYPaMVgbIW4IfJMPWByoVE=
SHA256 (go_modules/golang.org/x/sync/@v/v0.7.0.zip) = ILAQhSQOZhv/x/WTg/IbkPES1ml4QiDG5ZyAEkMhbSI=
SHA256 (go_modules/golang.org/x/sys/@v/v0.21.0.mod) = 0iezJfYh9OvijTm6dz6pm4cPOTt8CcNFksNlsW3VYN4=
SHA256 (go_modules/golang.org/x/sys/@v/v0.21.0.zip) = JYj053yDd0vG8WjoWU8ty9IcHSaEmod/fmoNFROS5zU=
SHA256 (go_modules/golang.org/x/term/@v/v0.21.0.mod) = lr7v7NJLCYAqci5gIBTC15xPekwyjMdSEr60AtyQM5c=
SHA256 (go_modules/golang.org/x/term/@v/v0.21.0.zip) = O6WcXJKcUm4L8BZpbbj/7DE7Q4dkKGd+zaQZgxKm9pY=
SHA256 (go_modules/golang.org/x/text/@v/v0.16.0.mod) = ChicdviH/nAsHxkZtDLcIejiMbXDI6N6Cz9yMB6QZsU=
SHA256 (go_modules/golang.org/x/text/@v/v0.16.0.zip) = m3wFdciUIkvH+F36LvsO+T19VK6WLNlcjekM7LQH3pQ=
SHA256 (go_modules/golang.org/x/tools/@v/v0.22.0.mod) = cf0XssEb8eaLYH/TgnrjtX2H7PRxsFMjic+iCIsv6zo=
SHA256 (go_modules/golang.org/x/tools/@v/v0.22.0.zip) = bBLNQZ2ZcpD+u0QWmNDlLKtacb6VmsfE3QI/hrLQHR4=
SHA256 (go_modules/gopkg.in/check.v1/@v/v1.0.0-20190902080502-41f04d3bba15.mod) = XDBuDWM81moRtA4uX7vG2kIRDbfXLqPBUkzrRe5Awz8=
SHA256 (go_modules/gopkg.in/check.v1/@v/v1.0.0-20190902080502-41f04d3bba15.zip) = AEU3yxnb5FlU7BYF8zFwX2aFzMJn7d1CicHrJ1E6uBc=
SHA256 (go_modules/gopkg.in/yaml.v3/@v/v3.0.1.mod) = IVeYYKIDBvz0OxvSNNH7oxlJnHdhG3HAX5vzupDauTk=
SHA256 (go_modules/gopkg.in/yaml.v3/@v/v3.0.1.zip) = qrj7xOYwDqCOav4crqGKIckMefSJ9SxT4vIEMfGpoBU=
SIZE (105c744ed2138c85167c2d8b66cb3830694fba24.patch) = 5670
SIZE (a16a4b302c6525a13acbb4c22571a19c2a62a905.patch) = 2866
SIZE (dms-v1.7.2.zip) = 85393
SIZE (go_modules/github.com/anacrolix/envpprof/@v/v1.0.0.mod) = 37
SIZE (go_modules/github.com/anacrolix/envpprof/@v/v1.0.0.zip) = 2004
SIZE (go_modules/github.com/anacrolix/ffprobe/@v/v1.1.0.mod) = 354
SIZE (go_modules/github.com/anacrolix/ffprobe/@v/v1.1.0.zip) = 12782
SIZE (go_modules/github.com/anacrolix/generics/@v/v0.0.0-20230113004304-d6428d516633.mod) = 107
SIZE (go_modules/github.com/anacrolix/generics/@v/v0.0.1.mod) = 107
SIZE (go_modules/github.com/anacrolix/generics/@v/v0.0.1.zip) = 22962
SIZE (go_modules/github.com/anacrolix/log/@v/v0.15.2.mod) = 650
SIZE (go_modules/github.com/anacrolix/log/@v/v0.15.2.zip) = 25999
SIZE (go_modules/github.com/anacrolix/missinggo/@v/v1.1.0.mod) = 1448
SIZE (go_modules/github.com/anacrolix/missinggo/@v/v1.1.0.zip) = 114086
SIZE (go_modules/github.com/bradfitz/iter/@v/v0.0.0-20140124041915-454541ec3da2.mod) = 32
SIZE (go_modules/github.com/bradfitz/iter/@v/v0.0.0-20140124041915-454541ec3da2.zip) = 1524
SIZE (go_modules/github.com/davecgh/go-spew/@v/v1.1.0.mod) = 34
SIZE (go_modules/github.com/davecgh/go-spew/@v/v1.1.1.mod) = 34
SIZE (go_modules/github.com/davecgh/go-spew/@v/v1.1.1.zip) = 60320
SIZE (go_modules/github.com/frankban/quicktest/@v/v1.14.4.mod) = 121
SIZE (go_modules/github.com/frankban/quicktest/@v/v1.14.4.zip) = 55637
SIZE (go_modules/github.com/google/go-cmp/@v/v0.5.9.mod) = 41
SIZE (go_modules/github.com/google/go-cmp/@v/v0.6.0.mod) = 41
SIZE (go_modules/github.com/google/go-cmp/@v/v0.6.0.zip) = 129773
SIZE (go_modules/github.com/kr/pretty/@v/v0.3.1.mod) = 117
SIZE (go_modules/github.com/kr/pretty/@v/v0.3.1.zip) = 13388
SIZE (go_modules/github.com/kr/text/@v/v0.2.0.mod) = 68
SIZE (go_modules/github.com/kr/text/@v/v0.2.0.zip) = 12607
SIZE (go_modules/github.com/nfnt/resize/@v/v0.0.0-20180221191011-83c6a9932646.mod) = 30
SIZE (go_modules/github.com/nfnt/resize/@v/v0.0.0-20180221191011-83c6a9932646.zip) = 21438
SIZE (go_modules/github.com/pmezard/go-difflib/@v/v1.0.0.mod) = 37
SIZE (go_modules/github.com/pmezard/go-difflib/@v/v1.0.0.zip) = 12433
SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.mod) = 112
SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.zip) = 210263
SIZE (go_modules/github.com/stretchr/testify/@v/v1.3.0.mod) = 154
SIZE (go_modules/github.com/stretchr/testify/@v/v1.8.1.mod) = 188
SIZE (go_modules/github.com/stretchr/testify/@v/v1.8.1.zip) = 113583
SIZE (go_modules/golang.org/x/crypto/@v/v0.24.0.mod) = 190
SIZE (go_modules/golang.org/x/crypto/@v/v0.24.0.zip) = 1803483
SIZE (go_modules/golang.org/x/exp/@v/v0.0.0-20220428152302-39d4317da171.mod) = 309
SIZE (go_modules/golang.org/x/exp/@v/v0.0.0-20240613232115-7f521ea00fb8.mod) = 179
SIZE (go_modules/golang.org/x/exp/@v/v0.0.0-20240613232115-7f521ea00fb8.zip) = 629051
SIZE (go_modules/golang.org/x/mod/@v/v0.18.0.mod) = 84
SIZE (go_modules/golang.org/x/mod/@v/v0.18.0.zip) = 166237
SIZE (go_modules/golang.org/x/net/@v/v0.26.0.mod) = 155
SIZE (go_modules/golang.org/x/net/@v/v0.26.0.zip) = 1836588
SIZE (go_modules/golang.org/x/sync/@v/v0.7.0.mod) = 34
SIZE (go_modules/golang.org/x/sync/@v/v0.7.0.zip) = 26990
SIZE (go_modules/golang.org/x/sys/@v/v0.21.0.mod) = 33
SIZE (go_modules/golang.org/x/sys/@v/v0.21.0.zip) = 1957330
SIZE (go_modules/golang.org/x/term/@v/v0.21.0.mod) = 68
SIZE (go_modules/golang.org/x/term/@v/v0.21.0.zip) = 19883
SIZE (go_modules/golang.org/x/text/@v/v0.16.0.mod) = 220
SIZE (go_modules/golang.org/x/text/@v/v0.16.0.zip) = 9235305
SIZE (go_modules/golang.org/x/tools/@v/v0.22.0.mod) = 339
SIZE (go_modules/golang.org/x/tools/@v/v0.22.0.zip) = 3175435
SIZE (go_modules/gopkg.in/check.v1/@v/v1.0.0-20190902080502-41f04d3bba15.mod) = 25
SIZE (go_modules/gopkg.in/check.v1/@v/v1.0.0-20190902080502-41f04d3bba15.zip) = 41481
SIZE (go_modules/gopkg.in/yaml.v3/@v/v3.0.1.mod) = 95
SIZE (go_modules/gopkg.in/yaml.v3/@v/v3.0.1.zip) = 104623
+35
View File
@@ -0,0 +1,35 @@
MODGO_MODULES = \
github.com/anacrolix/envpprof v1.0.0 \
github.com/anacrolix/ffprobe v1.1.0 \
github.com/anacrolix/generics v0.0.1 \
github.com/anacrolix/log v0.15.2 \
github.com/anacrolix/missinggo v1.1.0 \
github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2 \
github.com/davecgh/go-spew v1.1.1 \
github.com/frankban/quicktest v1.14.4 \
github.com/google/go-cmp v0.6.0 \
github.com/kr/pretty v0.3.1 \
github.com/kr/text v0.2.0 \
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 \
github.com/pmezard/go-difflib v1.0.0 \
github.com/rogpeppe/go-internal v1.9.0 \
github.com/stretchr/testify v1.8.1 \
golang.org/x/crypto v0.24.0 \
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 \
golang.org/x/mod v0.18.0 \
golang.org/x/net v0.26.0 \
golang.org/x/sync v0.7.0 \
golang.org/x/sys v0.21.0 \
golang.org/x/term v0.21.0 \
golang.org/x/text v0.16.0 \
golang.org/x/tools v0.22.0 \
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 \
gopkg.in/yaml.v3 v3.0.1
MODGO_MODFILES = \
github.com/anacrolix/generics v0.0.0-20230113004304-d6428d516633 \
github.com/davecgh/go-spew v1.1.0 \
github.com/google/go-cmp v0.5.9 \
github.com/stretchr/testify v1.3.0 \
golang.org/x/exp v0.0.0-20220428152302-39d4317da171
+17
View File
@@ -0,0 +1,17 @@
dms is a UPnP DLNA Digital Media Server. It runs from the terminal,
and serves content directly from the filesystem from the working
directory, or the path given. The SSDP component will broadcast and
respond to requests on all available network interfaces.
dms advertises and serves the raw files, in addition to alternate
transcoded streams when it's able, such as mpeg2 PAL-DVD and WebM
for the Chromecast. It will also provide thumbnails where possible.
dms also supports serving dynamic streams (e.g. a live rtsp stream)
generated on the fly with the help of an external application (e.g.
ffmpeg).
dms uses ffprobe/avprobe to get media data such as bitrate and
duration, ffmpeg/avconv for video transoding, and ffmpegthumbnailer
for generating thumbnails when browsing. These commands must be in
the PATH given to dms or the features requiring them will be disabled.
+4
View File
@@ -0,0 +1,4 @@
@newgroup _dms:596
@newuser _dms:596:596::dms:/nonexistent:/sbin/nologin
@rcscript ${RCDIR}/dms
@bin bin/dms
+14
View File
@@ -0,0 +1,14 @@
#!/bin/ksh
daemon="${TRUEPREFIX}/bin/dms"
daemon_user="_dms"
. /etc/rc.d/rc.subr
rc_bg=YES
rc_reload=NO
# '-http [::]:1338' breaks pgrep(1)
pexp=$(echo "$pexp" | tr [ .)
rc_cmd $1