Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Nov 2009 03:00:16 GMT
From:      wahjava@gmail.com (Ashish SHUKLA)
To:        freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/133533: [PATCH] Add a static user/group for audio/musicpd port
Message-ID:  <200911230300.nAN30GGw008248@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: wahjava@gmail.com (Ashish SHUKLA)
To: Martin Wilke <miwi@freebsd.org>
Cc: bug-followup@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.
 
 --=-=-=--



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