ports/151724: [path] update www/red5 up to 0.9.1

Alex Deiter alex.deiter at gmail.com
Mon Oct 25 18:50:10 UTC 2010


>Number:         151724
>Category:       ports
>Synopsis:       [path] update www/red5 up to 0.9.1
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 25 18:50:09 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Alex Deiter
>Release:        8.1-RELEASE
>Organization:
N/A
>Environment:
FreeBSD x4150b.tdc 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:36:49 UTC 2010     root at mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

>Description:
Update www/red5 up to 0.9.1.

Port changes:
 - change MASTER_SITES
 - change MAINTAINER
 - update pkg-descr
 - add rc.d script
 - add pkg-install script
 - add new system user/group: red5 with uid/gid: 931
 - tested on 8.1 i386/amd64 with Sun JDK/OpenJDK


>How-To-Repeat:
cd /usr/ports/www/red5 && make install
>Fix:


Patch attached with submission follows:

diff -Nur red5.orig/Makefile red5/Makefile
--- red5.orig/Makefile	2010-02-01 12:52:52.000000000 +0000
+++ red5/Makefile	2010-10-24 22:51:19.000000000 +0000
@@ -6,55 +6,36 @@
 #
 
 PORTNAME=	red5
-PORTVERSION=	0.7.0
-PORTREVISION=	2
+PORTVERSION=	0.9.1
 CATEGORIES=	www java
-MASTER_SITES=	http://www.nielsenaa.com/red5-installers/   \
-		http://www.red5.fr/release/0.7.0/war/
-DISTNAME=	Red5War_${PORTVERSION}-java5
+MASTER_SITES=	http://www.red5.org/downloads/0_9/
 
-MAINTAINER=	ports at FreeBSD.org
+MAINTAINER=	alex.deiter at gmail.com
 COMMENT=	Red5 is an Open Source flash server
 
-OPTIONS=	TOMCAT4	"Use Tomcat 4.1" OFF \
-		TOMCAT5 "Use Tomcat 5.5" OFF \
-		TOMCAT6 "Use Tomcat 6.0" ON
-
-WRKSRC=		${WRKDIR}
-USE_ZIP=	yes
 USE_JAVA=	yes
-JAVA_VERSION=	1.5
+JAVA_VERSION=	1.6
 NO_BUILD=	yes
+USE_RC_SUBR=	${PORTNAME}
+SUB_FILES=	pkg-install
+RED5HOME?=	${PREFIX}/lib/${PORTNAME}
+RED5USER?=	red5
+RED5GROUP?=	red5
+RED5LOGDIR?=	/var/log/red5
+SUB_LIST=	RED5HOME=${RED5HOME} \
+		RED5USER=${RED5USER} \
+		RED5GROUP=${RED5GROUP} \
+		RED5LOGDIR=${RED5LOGDIR}
 
-.include <bsd.port.pre.mk>
-
-.if	(defined(WITH_TOMCAT4) && defined(WITH_TOMCAT5)) || \
-	(defined(WITH_TOMCAT4) && defined(WITH_TOMCAT6)) || \
-	(defined(WITH_TOMCAT5) && defined(WITH_TOMCAT6))
-IGNORE=	please select only one version of Tomcat
-.endif
-
-.if defined(WITH_TOMCAT4)
-RUN_DEPENDS+=	${LOCALBASE}/apache-tomcat4.1:${PORTSDIR}/www/tomcat41
-WEBAPPDIR=	${PREFIX}/apache-tomcat4.1/webapps
-.elif defined(WITH_TOMCAT5)
-RUN_DEPENDS+=	${LOCALBASE}/tomcat5.5:${PORTSDIR}/www/tomcat55
-WEBAPPDIR=	${PREFIX}/tomcat5.5/webapps
-.elif defined(WITH_TOMCAT6)
-RUN_DEPENDS+=	${LOCALBASE}/apache-tomcat-6.0:${PORTSDIR}/www/tomcat6
-WEBAPPDIR=	${PREFIX}/apache-tomcat-6.0/webapps
-.else
-IGNORE=	please select one version of Tomcat
-.endif
-
-PLIST_FILES=	${WEBAPPDIR:S|^${PREFIX}/||}/red5.war
+pre-install:
+	@${SETENV} ${SCRIPTS_ENV} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
 
 do-install:
-	@${MKDIR} ${WEBAPPDIR}
-	@${INSTALL_DATA} ${WRKSRC}/ROOT.war ${WEBAPPDIR}/red5.war
-	@${CHOWN} ${WWWOWN}:${WWWGRP} ${WEBAPPDIR}/red5.war
-
-post-install:
-	@${CAT} ${PKGMESSAGE}
+	@${MKDIR} ${RED5HOME}
+	@cd ${WRKSRC} && ${COPYTREE_SHARE} "boot.jar red5.jar conf lib webapps" ${RED5HOME}
+	@${INSTALL} -d -g ${RED5GROUP} -o ${RED5USER} ${RED5HOME}/work
+	@${CHOWN} -R ${RED5USER}:${RED5GROUP} ${RED5HOME}/conf ${RED5HOME}/webapps
+	@${FIND} -s -d ${RED5HOME} -type f | ${SED} "s#${PREFIX}/##g" >${TMPPLIST}
+	@${FIND} -s -d ${RED5HOME} -type d | ${SED} "s#${PREFIX}/#@dirrm #g" >>${TMPPLIST}
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff -Nur red5.orig/distinfo red5/distinfo
--- red5.orig/distinfo	2008-03-20 10:00:37.000000000 +0000
+++ red5/distinfo	2010-10-23 13:47:46.000000000 +0000
@@ -1,3 +1,3 @@
-MD5 (Red5War_0.7.0-java5.zip) = 88cd86aff8a50f35e8a4d07cb210bd0d
-SHA256 (Red5War_0.7.0-java5.zip) = 058d2be8ae20d567cf92be1edd02332532f0ca32b56365b8ae5302f086068946
-SIZE (Red5War_0.7.0-java5.zip) = 20335816
+MD5 (red5-0.9.1.tar.gz) = a2eb54ce2a86584c5274db9d0a515475
+SHA256 (red5-0.9.1.tar.gz) = 71290b8b22db8c267752be432126a89e4105809d16c9bfc84d6d1e7f52438efd
+SIZE (red5-0.9.1.tar.gz) = 35466436
diff -Nur red5.orig/files/patch-conf-red5-core.xml red5/files/patch-conf-red5-core.xml
--- red5.orig/files/patch-conf-red5-core.xml	1970-01-01 00:00:00.000000000 +0000
+++ red5/files/patch-conf-red5-core.xml	2010-10-25 15:21:00.000000000 +0000
@@ -0,0 +1,18 @@
+--- conf/red5-core.xml.orig	2010-10-25 15:19:56.000000000 +0000
++++ conf/red5-core.xml	2010-10-25 15:20:17.000000000 +0000
+@@ -115,7 +115,6 @@
+ 	</bean>
+ 		
+ 	<!-- RTMPT -->
+-<!--
+ 	<bean id="rtmpt.server" class="org.red5.server.tomcat.rtmpt.RTMPTLoader" init-method="init" lazy-init="true">
+ 	
+ 		<property name="webappFolder" value="${red5.root}/webapps" />
+@@ -149,7 +148,6 @@
+ 		</property>		
+ 
+ 	</bean>
+--->
+ 	
+ 	<!-- RTMPS -->
+     
diff -Nur red5.orig/files/pkg-install.in red5/files/pkg-install.in
--- red5.orig/files/pkg-install.in	1970-01-01 00:00:00.000000000 +0000
+++ red5/files/pkg-install.in	2010-10-24 22:40:05.000000000 +0000
@@ -0,0 +1,35 @@
+#!/bin/sh
+# $FreeBSD$
+#
+
+if [ "$2" != "PRE-INSTALL" ]; then
+	exit 0
+fi
+
+RED5USER=%%RED5USER%%
+RED5GROUP=%%RED5GROUP%%
+RED5UID=931
+RED5GID=${RED5UID}
+
+if ! pw groupshow "${RED5GROUP}" 2>/dev/null 1>&2; then
+	if pw groupadd ${RED5GROUP} -g ${RED5GID}; then
+		echo "Added group \"${RED5GROUP}\"."
+	else
+		echo "Adding group \"${RED5GROUP}\" failed..."
+		exit 1
+	fi
+fi
+
+if ! pw usershow "${RED5USER}" 2>/dev/null 1>&2; then
+	if pw useradd ${RED5USER} -u ${RED5UID} -g ${RED5GROUP} -h - \
+		-s "/sbin/nologin" -d "/nonexistent" \
+		-c "Red5 Daemon"; \
+	then
+		echo "Added user \"${RED5USER}\"."
+	else
+		echo "Adding user \"${RED5USER}\" failed..."
+		exit 1
+	fi
+fi
+
+exit 0
diff -Nur red5.orig/files/red5.in red5/files/red5.in
--- red5.orig/files/red5.in	1970-01-01 00:00:00.000000000 +0000
+++ red5/files/red5.in	2010-10-25 14:58:10.000000000 +0000
@@ -0,0 +1,188 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: red5
+# REQUIRE: NETWORKING SERVERS
+# BEFORE: DAEMON
+# KEYWORD: shutdown
+
+#
+# Configuration settings for red5
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# red5_enable (bool):
+#   Set to "NO" by default.
+#   Set it to "YES" to enable red5.
+#
+# red5_user (str):
+#   Set to "%%RED5USER%%" by default.
+#
+# red5_group (str):
+#   Set to "%%RED5GROUP%%" by default.
+#
+# red5_home (str):
+#  Set to "%%RED5HOME%%" by default.
+#
+# red5_log_dir (str):
+#  Set to "%%RED5LOGDIR%%" by default.
+#
+# red5_stop_timeout (num):
+#  Set to "10" by default.
+#
+# red5_start_opts (str):
+#   See below for default value.
+#   Java VM args for start red5.
+#
+# red5_stop_opts (str):
+#   See below for default value.
+#   Java VM args for stop red5.
+#
+# red5_start_class_opts (str):
+#   See below for default value.
+#   Start class arguments.
+#
+# red5_stop_class_opts (str):
+#   See below for default value.
+#   Stop class arguments.
+#
+
+. /etc/rc.subr
+
+name="red5"
+rcvar=`set_rcvar`
+pidfile="/var/run/${name}.pid"
+
+load_rc_config $name
+
+: ${red5_enable:="NO"}
+: ${red5_user:="%%RED5USER%%"}
+: ${red5_group:="%%RED5GROUP%%"}
+: ${red5_home:="%%RED5HOME%%"}
+: ${red5_log_dir:="%%RED5LOGDIR%%"}
+: ${red5_stop_timeout:="10"}
+: ${red5_start_opts:="-Xrs -Xms512M -Xmx1024M -Xss128K -XX:NewSize=256m -XX:SurvivorRatio=16 -XX:MinHeapFreeRatio=20 -XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -Dsun.rmi.dgc.client.gcInterval=990000 -Dsun.rmi.dgc.server.gcInterval=990000 -Djava.net.preferIPv4Stack=true -Xverify:none"}
+: ${red5_stop_opts:="-Djavax.net.ssl.keyStore=${red5_home}/conf/keystore.jmx -Djavax.net.ssl.keyStorePassword=password"}
+: ${red5_start_class_opts:=""}
+: ${red5_stop_class_opts:="9999 red5user changeme"}
+
+red5_chdir="${red5_home}"
+java_command="%%LOCALBASE%%/bin/java"
+red5_start_class="org.red5.server.Bootstrap"
+red5_stop_class="org.red5.server.Shutdown"
+
+red5_opts="-Dpython.home=lib \
+	-Dred5.root=${red5_home} \
+	-Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector \
+	-Dcatalina.useNaming=true \
+	-Djava.security.debug=failure \
+	-cp ${red5_home}/boot.jar:${red5_home}/conf"
+
+red5_stdout_log="${red5_log_dir}/stdout.log"
+red5_stderr_log="${red5_log_dir}/stderr.log"
+log_args=">>${red5_stdout_log} 2>>${red5_stderr_log}"
+
+required_files="${red5_home}/conf/red5.xml"
+
+command="/usr/sbin/daemon"
+command_args="-p ${pidfile} ${java_command} ${red5_start_opts} ${red5_opts} \
+	${red5_start_class} ${red5_start_class_opts} ${log_args}"
+
+start_precmd="red5_precmd"
+status_cmd="red5_status"
+stop_cmd="red5_stop"
+poll_cmd="red5_poll"
+
+red5_precmd() {
+	mkdir -p ${red5_log_dir}
+	chown ${red5_user}:${red5_group} ${red5_log_dir}
+        touch ${pidfile} ${red5_stdout_log} ${red5_stderr_log}
+        chown ${red5_user}:${red5_group} ${pidfile} \
+		${red5_stdout_log} ${red5_stderr_log}
+	rm -f ${red5_home}/log
+	ln -s ${red5_log_dir} ${red5_home}/log
+}
+
+red5_stop() {
+	rc_pid=$(red5_check_pidfile $pidfile)
+
+	if [ -z "$rc_pid" ]; then
+		[ -n "$rc_fast" ] && return 0
+		echo "${name} not running? (check $pidfile)."
+		return 1
+	fi
+	
+	echo "Stopping ${name}."
+	su -m ${red5_user} -c "sh -c '${java_command} ${red5_stop_opts} \
+		${red5_opts} ${red5_stop_class} ${red5_stop_class_opts} \
+		${log_args}'"
+	red5_wait_max_for_pid ${red5_stop_timeout} ${rc_pid}
+	kill -KILL ${rc_pid} 2>/dev/null && echo "Killed."
+	rm -f ${pidfile} ${red5_home}/log
+}
+
+red5_status() {
+	rc_pid=$(red5_check_pidfile $pidfile)
+
+	if [ -z "$rc_pid" ]; then
+		[ -n "$rc_fast" ] && return 0
+		echo "${name} not running? (check $pidfile)."
+		return 1
+	fi
+	echo "${name} is running as pid ${rc_pid}."
+}
+
+red5_poll() {
+	_prefix=
+	while (true) ; do
+		rc_pid=$(red5_check_pidfile $pidfile)
+		[ -z "$rc_pid" ] && break
+		echo -n ${_prefix:-"Waiting for PIDS: "}$rc_pid
+		_prefix=", "
+		sleep 2
+	done
+	if [ -n "$_prefix" ]; then
+		echo "."
+	fi
+}
+
+red5_check_pidfile() {
+	_pidfile=$1
+	if [ -z "$_pidfile" ]; then
+		err 3 'USAGE: red5_check_pidfile pidfile'
+	fi
+	if [ ! -f $_pidfile ]; then
+		debug "pid file ($_pidfile): not readable."
+		return
+	fi
+	read _pid _junk < $_pidfile
+	if [ -z "$_pid" ]; then
+		debug "pid file ($_pidfile): no pid in file."
+		return
+	fi
+	if [ -n "`%%LOCALBASE%%/bin/jps -l | grep -e "^$_pid ${red5_start_class}\$"`" ]; then
+		echo -n $_pid
+	fi
+}
+
+red5_wait_max_for_pid() {
+	_timeout=$1
+	shift
+	_pid=$1
+	_prefix=
+	while [ $_timeout -gt 0 ] ; do
+		echo -n ${_prefix:-"Waiting (max $_timeout secs) for PIDS: "}$_pid
+		_prefix=", "
+		sleep 2
+		kill -0 $_pid 2>/dev/null || break
+		_timeout=$(($_timeout-2))
+	done
+	if [ -n "$_prefix" ]; then
+		echo "."
+	fi
+}
+
+run_rc_command "$1"
diff -Nur red5.orig/pkg-descr red5/pkg-descr
--- red5.orig/pkg-descr	2008-03-20 10:00:37.000000000 +0000
+++ red5/pkg-descr	2010-10-23 13:35:01.000000000 +0000
@@ -1,6 +1,7 @@
-Red5 is an Open Source Flash Server written 
+Red5 is an Open Source Flash Server written
 in Java that supports streaming Audio/Video
-(FLV and MP3),Recording Client Streams,
-Live Stream Publishing, etc.
+(FLV, MP3, F4V, MP4, AAC and M4A), Recording
+Client Streams, Shared Objects, Live Stream
+Publishing, Remoting, etc.
 
-WWW: http://www.red5.fr/
+WWW: http://www.red5.org/
diff -Nur red5.orig/pkg-message red5/pkg-message
--- red5.orig/pkg-message	2008-03-20 10:00:37.000000000 +0000
+++ red5/pkg-message	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-=====================================
-Now start your Tomcat and browse with:
-http://your-server-ip:8180/red5/


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list