Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Apr 2009 05:30:04 GMT
From:      Ashish SHUKLA <wahjava@gmail.com>
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/133533: [PATCH] Add a static user/group for audio/musicpd port
Message-ID:  <200904110530.n3B5U4St004155@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/133533; it has been noted by GNATS.

From: Ashish SHUKLA <wahjava@gmail.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/133533: [PATCH] Add a static user/group for
	audio/musicpd port
Date: Sat, 11 Apr 2009 10:54:51 +0530

 --UlVJffcvxoiEqYs2
 Content-Type: text/plain; charset=utf-8; format=flowed
 Content-Disposition: inline
 
 Hi,
 
 I've noticed that the rc.d script of musicpd port is not terminating mpd 
 properly, so I'm sending a new diff which has this problem fixed.
 
 Please discard the old diff.
 
 Thanks
 -- 
 Ashish SHUKLA
 
 --UlVJffcvxoiEqYs2
 Content-Type: text/x-diff; charset=utf-8
 Content-Disposition: attachment; filename="musicpd.diff"
 
 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-11 10:47:54.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/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-04-11 10:39:30.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-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
 +@dirrmtry var/mpd
 +@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:
 
 --UlVJffcvxoiEqYs2--



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