dss.spec 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. ##
  2. ## dss.spec -- OpenPKG RPM Specification
  3. ## Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
  4. ## Copyright (c) 2000-2003 Ralf S. Engelschall <rse@engelschall.com>
  5. ## Copyright (c) 2000-2003 Cable & Wireless <http://www.cw.com/>
  6. ##
  7. ## Permission to use, copy, modify, and distribute this software for
  8. ## any purpose with or without fee is hereby granted, provided that
  9. ## the above copyright notice and this permission notice appear in all
  10. ## copies.
  11. ##
  12. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  13. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  14. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  15. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  16. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  17. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  18. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  19. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  20. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  21. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  22. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  23. ## SUCH DAMAGE.
  24. ##
  25. # package versions
  26. %define V_opkg 4.1.3
  27. %define V_dss 4_1_3
  28. # package information
  29. Name: dss
  30. Summary: Darwin Streaming Server
  31. URL: http://developer.apple.com/darwin/projects/streaming/
  32. Vendor: Apple Computer, Incorporated
  33. Packager: The OpenPKG Project
  34. Distribution: OpenPKG [EVAL]
  35. Group: Video
  36. License: APSL
  37. Version: %{V_opkg}
  38. Release: 20030915
  39. # list of sources
  40. Source0: http://www.opensource.apple.com/projects/streaming/source/DSS-%{V_dss}.src.tar.gz
  41. Source1: rc.dss
  42. Patch0: dss.patch
  43. %NoSource 0
  44. # build information
  45. Prefix: %{l_prefix}
  46. BuildRoot: %{l_buildroot}
  47. BuildPreReq: OpenPKG, openpkg >= 20030718, perl, make, gcc
  48. PreReq: OpenPKG, openpkg >= 20030718, perl, perl-ssl
  49. AutoReq: no
  50. AutoReqProv: no
  51. %description
  52. The Darwin Streaming Server is server technology which allows you
  53. to send streaming QuickTime data to clients across the Internet
  54. using the industry standard RTP and RTSP protocols. It is based on
  55. the same code as Apple's QuickTime Streaming Server.
  56. %prep
  57. %integrity
  58. %setup -q -n DSS-%{V_dss}g.src
  59. %patch -p1
  60. l_hostname=`%{l_shtool} echo -e %h%d`
  61. %{l_shtool} subst \
  62. -e 's;/etc/streaming/;%{l_prefix}/etc/dss/;g' \
  63. -e 's;/etc/streamingserver.xml;%{l_prefix}/etc/dss/streamingserver.xml;g' \
  64. -e 's;/etc/streamingadminserver.conf;%{l_prefix}/etc/dss/streamingadmin.conf;g' \
  65. -e 's;streamingadminserver.pl;streamingadminserver;g' \
  66. APIModules/QTSSAccessModule/QTSSAccessModule.cpp \
  67. APIModules/QTSSDemoAuthorizationModule.bproj/QTSSDemoModule.cpp \
  68. APIModules/QTSSReflectorModule/QTSSRelayModule.cpp \
  69. MP3Broadcaster/MP3Broadcaster.cpp \
  70. Server.tproj/main.cpp \
  71. StreamingProxy.tproj/proxy_unix.c \
  72. WebAdmin/src/streamingadminserver.pl \
  73. WebAdmin/streamingadminserver_Darwin.conf
  74. %{l_shtool} subst \
  75. -e 's;/var/streaming/AdminHtml;%{l_prefix}/var/dss/webadmin;g' \
  76. -e 's;/usr/local/bin/qtpasswd;%{l_prefix}/bin/qtpasswd;g' \
  77. -e 's;/usr/local/bin/PlaylistBroadcaster;%{l_prefix}/bin/PlaylistBroadcaster;g' \
  78. -e 's;/usr/local/bin/MP3Broadcaster;%{l_prefix}/bin/MP3Broadcaster;g' \
  79. -e 's;/var/streaming/playlists/;share/dss/playlists;g' \
  80. -e 's;"realm", "DSS Admin Server";"realm", "Streaming Admin Server";g' \
  81. -e 's;"qtssAdmin", "streamingadmin";"qtssAdmin", "dssadmin";g' \
  82. -e 's;#"pidfile", "/var/streaming/streamingadminserver.pid";"pidfile", "%{l_prefix}/var/dss/dssadmin.pid";g' \
  83. -e 's;/usr/local/sbin/DarwinStreamingServer;%{l_prefix}/sbin/DarwinStreamingServer -c %{l_prefix}/etc/dss/streamingadmin.conf;g' \
  84. -e 's;/var/streaming/logs/streamingadminserver.log;%{l_prefix}/var/dss/logs/StreamingAdmin.log;g' \
  85. WebAdmin/src/streamingadminserver.pl
  86. %{l_shtool} subst \
  87. -e 's;/etc/streaming/qtusers;%{l_prefix}/etc/dss/qtusers;g' \
  88. qtpasswd.tproj/QTSSPasswd.cpp
  89. %{l_shtool} subst \
  90. -e 's;[ \t]$;;g' \
  91. -e 's;\t; ;g' \
  92. streamingserver.xml \
  93. relayconfig.xml-Sample \
  94. streamingadminserver.conf
  95. %{l_shtool} subst \
  96. -e 's;/Library/QuickTimeStreaming/Logs;%{l_prefix}/var/dss/logs;g' \
  97. -e 's;/Library/QuickTimeStreaming/Modules;%{l_prefix}/share/dss/modules;g' \
  98. -e 's;/Library/QuickTimeStreaming/Movies;%{l_prefix}/share/dss/movies;g' \
  99. -e 's;/Library/QuickTimeStreaming/Config/relayconfig.xml;%{l_prefix}/etc/dss/relayconfig.xml;g' \
  100. -e 's;/Library/QuickTimeStreaming/Config/qtgroups;%{l_prefix}/etc/dss/qtgroups;g' \
  101. -e 's;/Library/QuickTimeStreaming/Config/qtusers;%{l_prefix}/etc/dss/qtusers;g' \
  102. streamingserver.xml
  103. %{l_shtool} subst \
  104. -e 's;qtssAutoStart=1;qtssAutoStart=0;g' \
  105. -e "s;host=foo.bar.com;host=$l_hostname;g" \
  106. -e 's;/Library/QuickTimeStreaming/Logs/streamingadminserver.log;%{l_prefix}/var/dss/logs/StreamingAdmin.log;g' \
  107. -e 's;/Library/QuickTimeStreaming/AdminHtml;%{l_prefix}/var/dss/webadmin;g' \
  108. -e 's;/Library/QuickTimeStreaming/Playlists;%{l_prefix}/share/dss/playlists;g' \
  109. -e 's;/usr/sbin/QuickTimeStreamingServer;%{l_prefix}/sbin/DarwinStreamingServer -c %{l_prefix}/etc/dss/streamingserver.xml;g' \
  110. WebAdmin/streamingadminserver.conf
  111. %{l_shtool} subst \
  112. -e 's;^#!/.*/perl;#! %{l_prefix}/bin/perl;' \
  113. WebAdmin/WebAdminHtml/*.pl \
  114. WebAdmin/WebAdminHtml/*.cgi
  115. %{l_shtool} subst %{l_value -s -a} \
  116. qtaccess
  117. %{l_shtool} echo \
  118. '# OpenPKG additional' \
  119. >>WebAdmin/streamingadminserver.conf
  120. %{l_shtool} echo \
  121. 'keyfile=%{l_prefix}/etc/dss/streamingadminserver.pem' \
  122. >>WebAdmin/streamingadminserver.conf
  123. %{l_shtool} echo \
  124. 'crtfile=%{l_prefix}/etc/dss/streamingadminserver.pem' \
  125. >>WebAdmin/streamingadminserver.conf
  126. %{l_shtool} echo \
  127. 'qtssQTPasswd=%{l_prefix}/bin/qtpasswd' \
  128. >>WebAdmin/streamingadminserver.conf
  129. %{l_shtool} echo \
  130. 'qtssPlaylistBroadcaster=%{l_prefix}/bin/PlaylistBroadcaster' \
  131. >>WebAdmin/streamingadminserver.conf
  132. %{l_shtool} echo \
  133. 'qtssMP3Broadcaster=%{l_prefix}/bin/MP3Broadcaster' \
  134. >>WebAdmin/streamingadminserver.conf
  135. %{l_shtool} echo \
  136. 'pidfile=%{l_prefix}/var/dss/dssadmin.pid' \
  137. >>WebAdmin/streamingadminserver.conf
  138. %build
  139. # standard OpenPKG build variables
  140. CC="%{l_cc}"
  141. CXX="%{l_cxx}"
  142. CFLAGS="%{l_cflags -O}"
  143. CXXFLAGS="%{l_cxxflags -O}"
  144. CPPFLAGS="%{l_cppflags}"
  145. LDFLAGS="%{l_ldflags}"
  146. export CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
  147. # special Darwin build variables
  148. CPLUS="g++"
  149. CCOMP="gcc"
  150. LINKER="g++"
  151. MAKE="%{l_make}"
  152. INCLUDE_FLAG="-include"
  153. export CPLUS CCOMP LINKER MAKE INCLUDE_FLAG
  154. case "%{l_platform -t}" in
  155. *-sunos* )
  156. COMPILER_FLAGS="-D__solaris__ -D_REENTRANT -L/usr/local/lib -R/usr/local/lib"
  157. CORE_LINK_LIBS="-lpthread -ldl -lsocket -lnsl -lresolv -lm -lcrypt -lstdc++"
  158. SHARED=-G
  159. MODULE_LIBS=
  160. ;;
  161. *-freebsd* )
  162. COMPILER_FLAGS=
  163. CORE_LINK_LIBS="-pthread -lm -lcrypt"
  164. SHARED=-shared
  165. MODULE_LIBS="-lgcc -lstdc++"
  166. ;;
  167. *-linux* )
  168. COMPILER_FLAGS="-D_REENTRANT -D__USE_POSIX -D__linux__ -pipe"
  169. CORE_LINK_LIBS="-lpthread -ldl -lm -lcrypt -lstdc++"
  170. SHARED=-shared
  171. MODULE_LIBS=
  172. if [ -f /usr/include/socketbits.h ]; then
  173. NEED_SOCKETBITS=1
  174. export NEED_SOCKETBITS
  175. fi
  176. ;;
  177. * )
  178. COMPILER_FLAGS="-D__linux__"
  179. CORE_LINK_LIBS="-lpthread -ldl -lm -lcrypt"
  180. SHARED=-shared
  181. MODULE_LIBS=
  182. if [ -f /usr/include/socketbits.h ]; then
  183. NEED_SOCKETBITS=1
  184. export NEED_SOCKETBITS
  185. fi
  186. ;;
  187. esac
  188. export COMPILER_FLAGS CORE_LINK_LIBS SHARED MODULE_LIBS
  189. # build the program parts (order important)
  190. for dir in \
  191. CommonUtilitiesLib \
  192. QTFileLib \
  193. . \
  194. APIModules/QTSSDemoAuthorizationModule.bproj \
  195. APIModules/QTSSRawFileModule.bproj \
  196. APIModules/QTSSSpamDefenseModule.bproj \
  197. StreamingProxy.tproj \
  198. qtpasswd.tproj \
  199. PlaylistBroadcaster.tproj \
  200. MP3Broadcaster \
  201. QTFileTools/QTBroadcaster.tproj \
  202. QTFileTools/QTFileInfo.tproj \
  203. QTFileTools/QTFileTest.tproj \
  204. QTFileTools/QTRTPFileTest.tproj \
  205. QTFileTools/QTRTPGen.tproj \
  206. QTFileTools/QTSDPGen.tproj \
  207. QTFileTools/QTSampleLister.tproj \
  208. QTFileTools/QTTrackInfo.tproj; \
  209. do
  210. ( cd $dir && %{l_make} %{l_mflags -O} -f Makefile.POSIX ) || exit $?
  211. done
  212. %install
  213. rm -rf $RPM_BUILD_ROOT
  214. # make directory structure
  215. %{l_shtool} mkdir -f -p -m 755 \
  216. $RPM_BUILD_ROOT%{l_prefix}/bin \
  217. $RPM_BUILD_ROOT%{l_prefix}/sbin \
  218. $RPM_BUILD_ROOT%{l_prefix}/etc/dss \
  219. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
  220. $RPM_BUILD_ROOT%{l_prefix}/share/dss/movies \
  221. $RPM_BUILD_ROOT%{l_prefix}/share/dss/modules \
  222. $RPM_BUILD_ROOT%{l_prefix}/share/dss/playlists \
  223. $RPM_BUILD_ROOT%{l_prefix}/var/dss/logs
  224. # install the server and administrative binaries
  225. %{l_shtool} install -s -c -m 755 \
  226. DarwinStreamingServer $RPM_BUILD_ROOT%{l_prefix}/sbin/
  227. %{l_shtool} install -c -m 755 \
  228. -e 's;#!/usr/bin/perl;#! %{l_prefix}/bin/perl;' \
  229. WebAdmin/src/streamingadminserver.pl \
  230. $RPM_BUILD_ROOT%{l_prefix}/sbin/streamingadminserver
  231. cp -rp WebAdmin/WebAdminHtml $RPM_BUILD_ROOT%{l_prefix}/var/dss/webadmin
  232. chmod a+x $RPM_BUILD_ROOT%{l_prefix}/var/dss/webadmin/*.cgi
  233. # install miscellaneous binaries
  234. %{l_shtool} install -s -c -m 755 \
  235. PlaylistBroadcaster.tproj/PlaylistBroadcaster \
  236. MP3Broadcaster/MP3Broadcaster \
  237. qtpasswd.tproj/qtpasswd \
  238. $RPM_BUILD_ROOT%{l_prefix}/bin/
  239. # install configuration files
  240. %{l_shtool} install -c -m 644 \
  241. streamingserver.xml \
  242. relayconfig.xml-Sample \
  243. WebAdmin/streamingadminserver.conf \
  244. $RPM_BUILD_ROOT%{l_prefix}/etc/dss/
  245. (
  246. cd $RPM_BUILD_ROOT%{l_prefix}/etc/dss/
  247. mv -f relayconfig.xml-Sample relayconfig.xml
  248. mv -f streamingadminserver.conf streamingadmin.conf
  249. touch qtusers
  250. touch qtgroups
  251. echo 'realm Streaming Server' >qtusers
  252. ) || exit $?
  253. # install run commands
  254. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  255. %{SOURCE rc.dss} \
  256. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  257. # install sample movies, audio files, and access file
  258. %{l_shtool} install -c -m 644 \
  259. qtaccess \
  260. sample.mp3 \
  261. sample_100kbit.mov \
  262. sample_300kbit.mov \
  263. sample_100kbit.mp4 \
  264. sample_300kbit.mp4 \
  265. $RPM_BUILD_ROOT%{l_prefix}/share/dss/movies/
  266. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  267. %{l_files_std} \
  268. '%config %{l_prefix}/share/dss/movies/qtaccess' \
  269. '%config %{l_prefix}/etc/dss/*'
  270. %files -f files
  271. %clean
  272. rm -rf $RPM_BUILD_ROOT
  273. %post
  274. if [ $1 -eq 1 ]; then
  275. # after install, write default admin username and password to qtusers
  276. username='ghandi'; password='india'
  277. $RPM_INSTALL_PREFIX/bin/qtpasswd -p $password $username
  278. # add the new admin username to {l_prefix}/etc/dss/qtgroupsusers
  279. echo "admin: $username" >$RPM_INSTALL_PREFIX/etc/dss/qtgroups
  280. fi