ports/133533: [PATCH] Add a static user/group for audio/musicpd port
Ashish SHUKLA
wahjava at gmail.com
Mon Nov 23 03:00:18 UTC 2009
The following reply was made to PR ports/133533; it has been noted by GNATS.
From: wahjava at gmail.com (Ashish SHUKLA)
To: Martin Wilke <miwi at freebsd.org>
Cc: bug-followup at FreeBSD.org
Subject: Re: ports/133533: [PATCH] Add a static user/group for audio/musicpd port
Date: Mon, 23 Nov 2009 08:22:59 +0530
--=-=-=
Content-Transfer-Encoding: quoted-printable
=2D----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Martin,
Please found the attached diff file, which you'll need to apply on current
musicpd port.
Thanks
=2D --=20
Ashish SHUKLA
=2D----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)
iEYEARECAAYFAksJ+Q8ACgkQHy+EEHYuXnTW5gCffR5xFvWMjX92LXp3C7Kxslie
jmEAn3gntkf9MdqLU2FsQLQLUN/cSz9Q
=3DdOto
=2D----END PGP SIGNATURE-----
--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment; filename=musicpd.diff
diff -urN /usr/ports/audio/musicpd/Makefile musicpd/Makefile
--- /usr/ports/audio/musicpd/Makefile 2009-09-18 21:35:23.000000000 +0530
+++ musicpd/Makefile 2009-11-23 05:37:34.000000000 +0530
@@ -7,6 +7,7 @@
PORTNAME= musicpd
PORTVERSION= 0.15
+PORTREVISION= 1
CATEGORIES= audio ipv6
MASTER_SITES= SF/${PORTNAME}/mpd/${PORTVERSION}
DISTNAME= mpd-${PORTVERSION}
@@ -60,6 +61,26 @@
HTTPD "Support for httpd output streaming" off \
SAMPLERATE "Support sample rate conversion" off
+MPDUSER?= mpd
+MPDGROUP?= mpd
+MPDDIR?= var/mpd
+
+MPDUID= 137
+MPDGID= ${MPDUID}
+
+PLIST_SUB= MPDUSER=${MPDUSER} \
+ MPDGROUP=${MPDGROUP}
+
+PLIST_DIRS= ${MPDDIR}
+
+SUB_LIST+= MPDUSER=${MPDUSER} \
+ MPDGROUP=${MPDGROUP} \
+ MPDDIR=${PREFIX}/${MPDDIR} \
+ MPDUID=${MPDUID} \
+ MPDGID=${MPDGID}
+
+SUB_FILES+= pkg-install pkg-deinstall
+
.include <bsd.port.pre.mk>
.if defined(WITHOUT_FLAC)
@@ -200,13 +221,20 @@
CONFIGURE_ARGS+=--enable-lsr
.endif
-.if defined(NOPORTDOCS)
post-patch:
+ @${REINPLACE_CMD} -e "s/%%MPDDIR%%/${PREFIX:C/\//\\\//g}\/${MPDDIR:C/\//\\\//g}/g" -e "s/%%MPDUSER%%/${MPDUSER}/g" \
+ ${WRKSRC}/doc/mpdconf.example
+.if defined(NOPORTDOCS)
@${REINPLACE_CMD} -e 's|install-docDATA ||' \
${WRKSRC}/Makefile.in
.endif
+pre-install:
+ @PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
+
post-install:
+ @${MKDIR} ${PREFIX}/${MPDDIR}
+ @${CHOWN} -R ${MPDUSER}:${MPDGROUP} ${PREFIX}/${MPDDIR}
@${ECHO_MSG}
@${CAT} ${PKGMESSAGE}
@${ECHO_MSG}
diff -urN /usr/ports/audio/musicpd/files/musicpd.in musicpd/files/musicpd.in
--- /usr/ports/audio/musicpd/files/musicpd.in 2009-03-18 22:15:44.000000000 +0530
+++ musicpd/files/musicpd.in 2009-08-21 20:55:29.000000000 +0530
@@ -13,11 +13,18 @@
name=musicpd
rcvar=`set_rcvar`
+stop_cmd="${name}_stop"
config=%%PREFIX%%/etc/mpd.conf
command=%%PREFIX%%/bin/mpd
required_files=$config
+musicpd_stop()
+{
+ echo -n "Stopping musicpd: ";
+ ${command} --kill ${config} && echo "stopped.";
+}
+
load_rc_config $name
: ${musicpd_enable="NO"}
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-08-21 22:39:47.000000000 +0530
@@ -0,0 +1,93 @@
+
+$FreeBSD$
+
+--- doc/mpdconf.example.orig
++++ doc/mpdconf.example
+@@ -10,14 +10,14 @@
+ # be disabled and audio files will only be accepted over ipc socket (using
+ # file:// protocol) or streaming files over an accepted protocol.
+ #
+-#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. This setting defaults to playlist saving being disabled.
+ #
+-#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
+@@ -25,7 +25,7 @@
+ # MPD to accept files over ipc socket (using file:// protocol) or streaming
+ # files over an accepted protocol.
+ #
+-#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
+@@ -34,20 +34,21 @@
+ # The special value "syslog" makes MPD use the local syslog daemon. This
+ # setting defaults to logging to syslog, otherwise logging is disabled.
+ #
+-#log_file "~/.mpd/log"
++log_file "%%MPDDIR%%/log"
++error_file "%%MPDDIR%%/error-log"
+ #
+ # This setting sets the location of the file which stores the process ID
+ # for use of mpd --kill and some init scripts. This setting is disabled by
+ # default and the pid file will not be stored.
+ #
+-#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 and the server
+ # state will be reset on server start up.
+ #
+-#state_file "~/.mpd/state"
++state_file "%%MPDDIR%%/state"
+ #
+ ###############################################################################
+
+@@ -59,7 +60,7 @@
+ # initialization. This setting is disabled by default and MPD is run as the
+ # current user.
+ #
+-#user "nobody"
++user "mpd"
+ #
+ # 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.
+@@ -69,7 +70,7 @@
+ #bind_to_address "any"
+ #
+ # And for Unix Socket
+-#bind_to_address "~/.mpd/socket"
++#bind_to_address "%%MPDDIR%%/socket"
+ #
+ # This setting is the TCP port that is desired for the daemon to get assigned
+ # to.
+@@ -172,18 +173,6 @@
+ # See <http://mpd.wikia.com/wiki/Configuration#Audio_Outputs> for examples of
+ # other audio outputs.
+ #
+-# An example of an ALSA output:
+-#
+-#audio_output {
+-# type "alsa"
+-# name "My ALSA Device"
+-# device "hw:0,0" # optional
+-# format "44100:16:2" # optional
+-# mixer_device "default" # optional
+-# mixer_control "PCM" # optional
+-# mixer_index "0" # optional
+-#}
+-#
+ # An example of an OSS output:
+ #
+ #audio_output {
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-08-21 20:52:42.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-08-21 21:52:46.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 -p ${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-08-21 20:53:38.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.
--=-=-=--
More information about the freebsd-ports-bugs
mailing list