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