ports/133533: [PATCH] Add a static user/group for audio/musicpd port
Ashish SHUKLA
wahjava at gmail.com
Thu Apr 9 06:10:06 UTC 2009
>Number: 133533
>Category: ports
>Synopsis: [PATCH] Add a static user/group for audio/musicpd port
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Apr 09 06:10:05 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Ashish SHUKLA
>Release: FreeBSD 8.0-CURRENT amd64
>Organization:
N/A
>Environment:
System: FreeBSD chateau.d.lf 8.0-CURRENT FreeBSD 8.0-CURRENT #2: Wed Apr 8 09:26:34 IST 2009 root at chateau.d.lf:/usr/obj/usr/src/sys/CHATEAU amd64
>Description:
The audio/musicpd port isn't installing any user/group for running mpd, like other
distributions do. This attached diff adds a static user/group for the audio/musicpd
port.
The UID 137 and GID 137 needs to be reserved for this port. The diff for
${PORTSDIR}/UIDs and ${PORTSDIR}/GIDs is also attached in the same diff.
>How-To-Repeat:
>Fix:
diff -urN /usr/ports/audio/musicpd/Makefile musicpd/Makefile
--- /usr/ports/audio/musicpd/Makefile 2009-03-18 22:15:43.000000000 +0530
+++ musicpd/Makefile 2009-04-09 08:55:41.000000000 +0530
@@ -7,6 +7,7 @@
PORTNAME= musicpd
PORTVERSION= 0.14.2
+PORTREVISION= 1
CATEGORIES= audio ipv6
MASTER_SITES= SF
DISTNAME= mpd-${PORTVERSION}
@@ -51,6 +52,24 @@
LAME "Support for MP3 Icecast Streams" off \
SAMPLERATE "Support sample rate conversion" off
+MPDUSER?= mpd
+MPDGROUP?= mpd
+MPDDIR?= ${PREFIX}/var/mpd
+
+MPDUID= 137
+MPDGID= ${MPDUID}
+
+PLIST_SUB= MPDUSER=${MPDUSER} \
+ MPDGROUP=${MPDGROUP}
+
+SUB_LIST+= MPDUSER=${MPDUSER} \
+ MPDGROUP=${MPDGROUP} \
+ MPDDIR=${MPDDIR} \
+ MPDUID=${MPDUID} \
+ MPDGID=${MPDGID}
+
+SUB_FILES+= pkg-install pkg-deinstall
+
.include <bsd.port.pre.mk>
.if defined(WITHOUT_FLAC)
@@ -151,13 +170,20 @@
LIB_DEPENDS+= samplerate.1:${PORTSDIR}/audio/libsamplerate
.endif
-.if defined(NOPORTDOCS)
post-patch:
+ @${REINPLACE_CMD} -e "s/%%MPDDIR%%/${MPDDIR:C/\//\\\//g}/g" -e "s/%%MPDUSER%%/${MPDUSER}/g" \
+ ${WRKSRC}/doc/mpdconf.example
+.if defined(NOPORTDOCS)
@${REINPLACE_CMD} -e '/^install-data-am:/ s|install-docDATA||' \
${WRKSRC}/Makefile.in ${WRKSRC}/doc/Makefile.in
.endif
+pre-install:
+ @PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
+
post-install:
+ @${MKDIR} ${MPDDIR}
+ @${CHOWN} -R ${MPDUSER}:${MPDGROUP} ${MPDDIR}
@${ECHO_MSG}
@${CAT} ${PKGMESSAGE}
@${ECHO_MSG}
diff -urN /usr/ports/audio/musicpd/files/patch-doc_mpdconf.example musicpd/files/patch-doc_mpdconf.example
--- /usr/ports/audio/musicpd/files/patch-doc_mpdconf.example 1970-01-01 05:30:00.000000000 +0530
+++ musicpd/files/patch-doc_mpdconf.example 2009-04-09 08:32:02.000000000 +0530
@@ -0,0 +1,72 @@
+
+$FreeBSD$
+
+--- doc/mpdconf.example.orig
++++ doc/mpdconf.example
+@@ -6,27 +6,27 @@
+ # This setting controls the top directory which MPD will search to discover the
+ # available audio files and add them to the daemon's online database.
+ #
+-music_directory "~/music"
++music_directory "%%MPDDIR%%/music"
+ #
+ # This setting sets the MPD internal playlist directory. The purpose of this
+ # directory is storage for playlists created by MPD. The server will use
+ # playlist files not created by the server but only if they are in the MPD
+ # format.
+ #
+-playlist_directory "~/.mpd/playlists"
++playlist_directory "%%MPDDIR%%/playlists"
+ #
+ # This setting sets the location of the MPD database. This file is used to
+ # load the database at server start up and store the database while the
+ # server is not up.
+ #
+-db_file "~/.mpd/database"
++db_file "%%MPDDIR%%/database"
+ #
+ # These settings are the locations for the daemon log files for the daemon.
+ # These logs are great for troubleshooting, depending on your log_level
+ # settings.
+ #
+-log_file "~/.mpd/log"
+-error_file "~/.mpd/error-log"
++log_file "%%MPDDIR%%/log"
++error_file "%%MPDDIR%%/error-log"
+ ###############################################################################
+
+
+@@ -36,13 +36,13 @@
+ # for use of mpd --kill and some init scripts. This setting is disabled by
+ # default.
+ #
+-#pid_file "~/.mpd/pid"
++pid_file "%%MPDDIR%%/pid"
+ #
+ # This setting sets the location of the file which contains information about
+ # most variables to get MPD back into the same general shape it was in before
+ # it was brought down. This setting is disabled by default.
+ #
+-#state_file "~/.mpd/state"
++state_file "%%MPDDIR%%/state"
+ #
+ ###############################################################################
+
+@@ -55,7 +55,7 @@
+ # unprivileged user. This setting is disabled by default, and the server will
+ # run as root.
+ #
+-#user "nobody"
++user "%%MPDUSER%%"
+ #
+ # This setting sets the address for the daemon to listen on. Careful attention
+ # should be paid if this is assigned to anything other then the default, any.
+@@ -65,7 +65,7 @@
+ #bind_to_address "any"
+ #
+ # And for Unix Socket
+-#bind_to_address "~/.mpd/socket"
++#bind_to_address "%%MPDDIR%%/socket"
+ #
+ # This setting is the port that is desired for the daemon to get assigned to.
+ #
diff -urN /usr/ports/audio/musicpd/files/pkg-deinstall.in musicpd/files/pkg-deinstall.in
--- /usr/ports/audio/musicpd/files/pkg-deinstall.in 1970-01-01 05:30:00.000000000 +0530
+++ musicpd/files/pkg-deinstall.in 2009-04-09 08:17:51.000000000 +0530
@@ -0,0 +1,17 @@
+#!/bin/sh -
+#
+# $FreeBSD$
+#
+
+MPDUSER=%%MPDUSER%%
+MPDGROUP=%%MPDGROUP%%
+
+if [ "$2" = "POST-DEINSTALL" ]; then
+ if /usr/sbin/pw group show "${MPDGROUP}" 2>&1 >/dev/null; then
+ echo "You should manually remove the \"${MPDGROUP}\" group."
+ fi
+
+ if /usr/sbin/pw user show "${MPDUSER}" 2>&1 >/dev/null; then
+ echo "You should manually remove the \"${MPDUSER}\" user."
+ fi
+fi
diff -urN /usr/ports/audio/musicpd/files/pkg-install.in musicpd/files/pkg-install.in
--- /usr/ports/audio/musicpd/files/pkg-install.in 1970-01-01 05:30:00.000000000 +0530
+++ musicpd/files/pkg-install.in 2009-04-09 08:58:44.000000000 +0530
@@ -0,0 +1,76 @@
+#!/bin/sh -
+#
+# $FreeBSD$
+#
+
+MPDDIR=%%MPDDIR%%
+MPDUSER=%%MPDUSER%%
+MPDGROUP=%%MPDGROUP%%
+MPDUID=%%MPDUID%%
+MPDGID=%%MPDGID%%
+
+ask() {
+ local question default answer
+
+ question=$1
+ default=$2
+ if [ -z "${PACKAGE_BUILDING}" ]; then
+ read -p "${question} [${default}]? " answer
+ fi
+ if [ "x${answer}" = "x" ]; then
+ answer=${default}
+ fi
+ echo ${answer}
+}
+
+yesno() {
+ local default question answer
+
+ question=$1
+ default=$2
+ while :; do
+ answer=$(ask "${question}" "${default}")
+ case "${answer}" in
+ [Yy][Ee][Ss]|[Yy])
+ return 0
+ ;;
+ [Nn][Oo]|[Nn])
+ return 1
+ ;;
+ esac
+ echo "Please answer yes or no."
+ done
+}
+
+if [ "$2" = "PRE-INSTALL" ]; then
+ if /usr/sbin/pw group show "${MPDGROUP}" 2>&1 >/dev/null; then
+ echo "You already have a \"${MPDGROUP}\" group, so I will use it."
+ else
+ echo "You need a \"${MPDGROUP}\" group."
+ if yesno "Would you like me to create it" "YES"; then
+ /usr/sbin/pw groupadd "${MPDGROUP}" -g "${MPDGID}" -h - || \
+ /usr/sbin/pw groupadd "${MPDGROUP}" -h - || exit
+ echo "Done."
+ else
+ echo "Please create the \"${MPDGROUP}\" group manually and try again."
+ exit 1
+ fi
+ fi
+
+ if /usr/sbin/pw user show "${MPDUSER}" 2>&1 >/dev/null; then
+ echo "You already have a \"${MPDUSER}\" user, so I will use it."
+ else
+ echo "You need a \"${MPDUSER}\" user."
+ if yesno "Would you like me to create it" "YES"; then
+ /usr/sbin/pw useradd "${MPDUSER}" -u "${MPDUID}" -g "${MPDGROUP}" -h - -d "${MPDDIR}" \
+ -s /sbin/nologin -c "MusicPD pseudo-user" || \
+ /usr/sbin/pw useradd "${MPDUSER}" -g "${MPDGROUP}" -h - -d "${MPDDIR}" \
+ -s /sbin/nologin -c "MusicPD pseudo-user" || exit
+ else
+ echo "Please create the \"${MPDUSER}\" user manually and try again."
+ exit 1
+ fi
+ fi
+ [ -d ${MPDDIR} ] || mkdir ${MPDDIR};
+ chown -R ${MPDUSER}:${MPDGROUP} ${MPDDIR}
+fi
diff -urN /usr/ports/audio/musicpd/files/pkg-message.in musicpd/files/pkg-message.in
--- /usr/ports/audio/musicpd/files/pkg-message.in 2008-12-06 02:41:46.000000000 +0530
+++ musicpd/files/pkg-message.in 2009-04-09 08:45:58.000000000 +0530
@@ -17,6 +17,9 @@
or reboot.
+The example configuration of MPD server requires music files to
+be stored at %%MPDDIR%%/music .
+
NOTE: The musicpd server is pretty useless without a client.
You might want to install one of the following ports too:
mpc, ncmpc, glurp, gmpc, kmp, or phpmp.
diff -urN /usr/ports/audio/musicpd/pkg-plist musicpd/pkg-plist
--- /usr/ports/audio/musicpd/pkg-plist 2009-01-28 11:00:46.000000000 +0530
+++ musicpd/pkg-plist 2009-04-09 08:51:00.000000000 +0530
@@ -6,5 +6,8 @@
%%PORTDOCS%%%%DOCSDIR%%/TODO
%%PORTDOCS%%%%DOCSDIR%%/NEWS
%%PORTDOCS%%%%DOCSDIR%%/UPGRADING
+%%PORTDOCS%%%%DOCSDIR%%/protocol.html
%%PORTDOCS%%@dirrm %%DOCSDIR%%
%%PORTDOCS%%@unexec %D/%%DOCSDIR%% 2>/dev/null || true
+ at dirrmtry var/mpd
+ at dirrmtry var
--- /usr/ports/UIDs 2009-04-07 17:19:11.000000000 +0530
+++ UIDs 2009-04-09 11:20:33.000000000 +0530
@@ -76,6 +76,7 @@
undernet:*:134:134::0:0:Undernet ircu Daemon:/nonexistant:/usr/sbin/nologin
rabbitmq:*:135:135::0:0:RabbitMQ:/var/db/rabbitmq:/usr/sbin/nologin
dhcpd:*:136:136::0:0:ISC DHCP daemon:/nonexistent:/usr/sbin/nologin
+mpd:*:137:137:MusicPD pseudo-user:/var/tmp/musicpd/var/mpd:/sbin/nologin
cricket:*:141:80::0:0:Cricket Monitoring User:/usr/local/cricket:/usr/sbin/nologin
dovecot:*:143:143::0:0:Dovecot User:/var/empty:/usr/sbin/nologin
rbldns:*:153:153::0:0:rbldnsd pseudo-user:/nonexistent:/usr/sbin/nologin
--- /usr/ports/GIDs 2009-04-07 17:19:11.000000000 +0530
+++ GIDs 2009-04-09 11:20:43.000000000 +0530
@@ -68,6 +68,7 @@
undernet:*:134:
rabbitmq:*:135:
dhcpd:*:136:
+mpd:*:137
dovecot:*:143:
rbldns:*:153:
sfs:*:171:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list