dss.spec 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  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. # package information
  27. Name: dss
  28. Summary: Darwin Streaming Server
  29. URL: http://developer.apple.com/darwin/projects/streaming/
  30. Vendor: Apple Computer, Incorporated
  31. Packager: The OpenPKG Project
  32. Distribution: OpenPKG [EVAL]
  33. Group: Video
  34. License: APSL
  35. Version: 5.0
  36. Release: 20031128
  37. # list of sources
  38. Source0: http://www.opensource.apple.com/projects/streaming/release/DarwinStreamingSrc%{version}.zip
  39. Source1: rc.dss
  40. %NoSource 0
  41. # build information
  42. Prefix: %{l_prefix}
  43. BuildRoot: %{l_buildroot}
  44. BuildPreReq: OpenPKG, openpkg >= 20031127, perl, infozip, make, gcc
  45. PreReq: OpenPKG, openpkg >= 20031127, perl, perl-ssl
  46. AutoReq: no
  47. AutoReqProv: no
  48. %description
  49. The Darwin Streaming Server is server technology which allows you
  50. to send streaming QuickTime data to clients across the Internet
  51. using the industry standard RTP and RTSP protocols. It is based on
  52. the same code as Apple's QuickTime Streaming Server.
  53. %prep
  54. # bunch of crap to handle zip format
  55. rm -rf DarwinStreamingSrc%{version}
  56. %{l_prefix}/bin/unzip -x %{SOURCE0}
  57. %setup -D -T -n DarwinStreamingSrc%{version}
  58. # just a few corrections to source files
  59. %{l_shtool} subst \
  60. -e 's;/etc/streaming;%{l_prefix}/etc/dss;g' \
  61. defaultPaths.h \
  62. WebAdmin/src/streamingadminserver.pl \
  63. WebAdmin/streamingadminserver_Darwin.conf
  64. %{l_shtool} subst \
  65. -e 's;streamingadminserver.pl;streamingadminserver;g' \
  66. WebAdmin/StartupItems.bproj/QuickTimeStreamingServer \
  67. WebAdmin/src/streamingadminserver.pl
  68. %{l_shtool} subst \
  69. -e 's;#!/usr/bin/perl;#! %{l_prefix}/bin/perl;g' \
  70. -e 's;/var/streaming/AdminHtml;%{l_prefix}/var/dss/webadmin;g' \
  71. -e 's;/var/streaming/playlists/;%{l_prefix}/share/dss/playlists;g' \
  72. -e 's;"realm", "DSS Admin Server";"realm", "Streaming Admin Server";g' \
  73. -e 's;/usr/local/sbin/DarwinStreamingServer;%{l_prefix}/sbin/DarwinStreamingServer;g' \
  74. -e 's;/var/streaming/logs/streamingadminserver.log;%{l_prefix}/var/dss/log/StreamingAdmin.log;g' \
  75. -e 's;/usr/local/bin/qtpasswd;%{l_prefix}/bin/qtpasswd;g' \
  76. -e 's;/usr/local/bin/PlaylistBroadcaster;%{l_prefix}/bin/PlaylistBroadcaster;g' \
  77. -e 's;/usr/local/bin/MP3Broadcaster;%{l_prefix}/bin/MP3Broadcaster;g' \
  78. -e 's;/etc/streaming/streamingadminserver.pem;%{l_prefix}/etc/dss/streamingadminserver.pem;g' \
  79. -e 's;"qtssAdmin", "streamingadmin";"qtssAdmin", "dssadmin";g' \
  80. -e 's;/var/run/streamingadminserver.pid;%{l_prefix}/var/dss/dssadmin.pid;g' \
  81. -e 's;"runUser", "qtss";"runUser", "%{l_musr}";g' \
  82. -e 's;"runGroup", "qtss";"runGroup", "%{l_musr}";g' \
  83. WebAdmin/src/streamingadminserver.pl
  84. %{l_shtool} subst \
  85. -e 's;\t; ;g' \
  86. -e 's; *$;;g' \
  87. qtaccess \
  88. relayconfig.xml-Sample \
  89. streamingserver.xml-POSIX \
  90. WebAdmin/streamingadminserver.conf
  91. %{l_shtool} subst \
  92. -e 's;/var/streaming/logs;%{l_prefix}/var/dss/log;g' \
  93. -e 's;/var/run/DarwinStreamingServer.pid;%{l_prefix}/var/dss/dssdaemon.pid;g' \
  94. -e 's;/usr/local/sbin/StreamingServerModules;%{l_prefix}/share/dss/modules;g' \
  95. -e 's;/usr/local/movies;%{l_prefix}/share/dss/movies;g' \
  96. -e 's;/etc/streaming/relayconfig.xml;%{l_prefix}/etc/dss/relayconfig.xml;g' \
  97. -e 's;/etc/streaming/qtgroups;%{l_prefix}/etc/dss/qtgroups;g' \
  98. -e 's;/etc/streaming/qtusers;%{l_prefix}/etc/dss/qtusers;g' \
  99. -e 's;"error_logfile_name">Error;"error_logfile_name">error;g' \
  100. -e 's;"request_logfile_name">StreamingServer;"request_logfile_name">streamingserver;g' \
  101. -e 's;http_logfile_name">Http;http_logfile_name">http;g' \
  102. -e 's;"bind_ip_addr">0;"bind_ip_addr">127.0.0.1;g' \
  103. -e 's;"run_user_name"></PREF>;"run_user_name">%{l_musr}</PREF>;g' \
  104. -e 's;"run_group_name"></PREF>;"run_group_name">%{l_mgrp}</PREF>;g' \
  105. streamingserver.xml-POSIX
  106. %{l_shtool} subst \
  107. -e 's;qtssAutoStart=1;qtssAutoStart=0;g' \
  108. -e "s;host=foo.bar.com;host=`%{l_shtool} echo -e %h%d`;g" \
  109. -e 's;/Library/QuickTimeStreaming/Logs/streamingadminserver.log;%{l_prefix}/var/dss/log/StreamingAdmin.log;g' \
  110. -e 's;/Library/QuickTimeStreaming/AdminHtml;%{l_prefix}/var/dss/webadmin;g' \
  111. -e 's;/Library/QuickTimeStreaming/Playlists;%{l_prefix}/share/dss/playlists;g' \
  112. -e 's;/usr/sbin/QuickTimeStreamingServer;%{l_prefix}/sbin/DarwinStreamingServer;g' \
  113. -e 's;streamingadminserver.conf;streamingadmin.conf;g' \
  114. WebAdmin/streamingadminserver.conf
  115. %{l_shtool} subst \
  116. -e 's;^#!/.*/perl;#! %{l_prefix}/bin/perl;' \
  117. WebAdmin/WebAdminHtml/*.pl \
  118. WebAdmin/WebAdminHtml/*.cgi \
  119. WebAdmin/src/streamingadminserver.pl
  120. %{l_shtool} subst \
  121. -e 's;^AuthScheme .*;AuthScheme digest;g' \
  122. -e 's;^AuthName .*;AuthName "Streaming Server";g' \
  123. -e 's;^AuthUserFile .*;AuthUserFile %{l_prefix}/etc/dss/qtusers;g' \
  124. -e 's;^AuthGroupFile .*;AuthGroupFile %{l_prefix}/etc/dss/qtgroups;g' \
  125. -e 's;^require user.*;require any-user;g' \
  126. -e 's;^\(require group .*\=;#\1;g' \
  127. -e 's;\(<Limit WRITE>\);#\1;g' \
  128. -e 's;^\( AuthName "streaming server broadcaster realm"\);#\1;g' \
  129. -e 's;^\( AuthUserFile /Library/QuickTimeStreaming/Config/qtbroadcastusers\);#\1;g' \
  130. -e 's;^\( AuthGroupFile /Library/QuickTimeStreaming/Config/qtbroadcastgroups\);#\1;g' \
  131. -e 's;^ \(require group broadcaster\);#\1;g' \
  132. -e 's;\(</Limit>\);#\1;g' \
  133. qtaccess
  134. %{l_shtool} subst \
  135. -e 's;if ($wt == "");if ($wt eq "");g' \
  136. WebAdmin/WebAdminHtml/playlist-lib.pl
  137. %{l_shtool} subst \
  138. -e 's;\(\\r\\nConnection:close\\r\\n\);\\r\\n\1;g' \
  139. WebAdmin/WebAdminHtml/cgi-lib.pl
  140. %{l_shtool} echo \
  141. '# OpenPKG additional' \
  142. >>WebAdmin/streamingadminserver.conf
  143. %{l_shtool} echo \
  144. 'keyfile=%{l_prefix}/etc/dss/streamingadminserver.pem' \
  145. >>WebAdmin/streamingadminserver.conf
  146. %{l_shtool} echo \
  147. 'crtfile=%{l_prefix}/etc/dss/streamingadminserver.pem' \
  148. >>WebAdmin/streamingadminserver.conf
  149. %{l_shtool} echo \
  150. 'qtssQTPasswd=%{l_prefix}/bin/qtpasswd' \
  151. >>WebAdmin/streamingadminserver.conf
  152. %{l_shtool} echo \
  153. 'qtssPlaylistBroadcaster=%{l_prefix}/bin/PlaylistBroadcaster' \
  154. >>WebAdmin/streamingadminserver.conf
  155. %{l_shtool} echo \
  156. 'qtssMP3Broadcaster=%{l_prefix}/bin/MP3Broadcaster' \
  157. >>WebAdmin/streamingadminserver.conf
  158. %{l_shtool} echo \
  159. 'pidfile=%{l_prefix}/var/dss/dssadmin.pid' \
  160. >>WebAdmin/streamingadminserver.conf
  161. %build
  162. # standard OpenPKG build variables
  163. CC="%{l_cc}"
  164. CXX="%{l_cxx}"
  165. CFLAGS="%{l_cflags -O}"
  166. CXXFLAGS="%{l_cxxflags -O}"
  167. CPPFLAGS="%{l_cppflags}"
  168. LDFLAGS="%{l_ldflags}"
  169. export CC CXX CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
  170. # special Darwin build variables
  171. CPLUS="g++"
  172. CCOMP="gcc"
  173. LINKER="g++"
  174. MAKE="%{l_make}"
  175. INCLUDE_FLAG="-include"
  176. export CPLUS CCOMP LINKER MAKE INCLUDE_FLAG
  177. case "%{l_platform -t}" in
  178. *-sunos* )
  179. COMPILER_FLAGS="-D__solaris__ -D_REENTRANT -L/usr/local/lib -R/usr/local/lib"
  180. CORE_LINK_LIBS="-lpthread -ldl -lsocket -lnsl -lresolv -lm -lcrypt -lstdc++"
  181. SHARED=-G
  182. MODULE_LIBS=
  183. ;;
  184. *-freebsd* )
  185. COMPILER_FLAGS=
  186. CORE_LINK_LIBS="-pthread -lm -lcrypt"
  187. SHARED=-shared
  188. MODULE_LIBS="-lgcc -lstdc++"
  189. ;;
  190. *-linux* )
  191. COMPILER_FLAGS="-D_REENTRANT -D__USE_POSIX -D__linux__ -pipe"
  192. CORE_LINK_LIBS="-lpthread -ldl -lstdc++ -lm -lcrypt"
  193. SHARED=-shared
  194. MODULE_LIBS=
  195. if [ -f /usr/include/socketbits.h ]; then
  196. NEED_SOCKETBITS=1
  197. export NEED_SOCKETBITS
  198. fi
  199. ;;
  200. * )
  201. echo "platform %{l_platform -t} not supported" 2>&1
  202. exit 1
  203. ;;
  204. esac
  205. export COMPILER_FLAGS CORE_LINK_LIBS SHARED MODULE_LIBS
  206. # build the program parts (order important)
  207. for dir in \
  208. CommonUtilitiesLib \
  209. QTFileLib \
  210. . \
  211. APIModules/QTSSRefMovieModule \
  212. APIModules/QTSSDemoAuthorizationModule.bproj \
  213. APIModules/QTSSRawFileModule.bproj \
  214. APIModules/QTSSSpamDefenseModule.bproj \
  215. APIModules/QTSSHomeDirectoryModule \
  216. StreamingProxy.tproj \
  217. qtpasswd.tproj \
  218. PlaylistBroadcaster.tproj \
  219. MP3Broadcaster \
  220. QTFileTools/QTBroadcaster.tproj \
  221. QTFileTools/QTFileInfo.tproj \
  222. QTFileTools/QTFileTest.tproj \
  223. QTFileTools/QTRTPFileTest.tproj \
  224. QTFileTools/QTRTPGen.tproj \
  225. QTFileTools/QTSDPGen.tproj \
  226. QTFileTools/QTSampleLister.tproj \
  227. QTFileTools/QTTrackInfo.tproj; \
  228. do
  229. ( cd $dir && %{l_make} %{l_mflags -O} -f Makefile.POSIX ) || exit $?
  230. done
  231. %install
  232. rm -rf $RPM_BUILD_ROOT
  233. # make directory structure
  234. %{l_shtool} mkdir -f -p -m 755 \
  235. $RPM_BUILD_ROOT%{l_prefix}/bin \
  236. $RPM_BUILD_ROOT%{l_prefix}/sbin \
  237. $RPM_BUILD_ROOT%{l_prefix}/etc/dss \
  238. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
  239. $RPM_BUILD_ROOT%{l_prefix}/share/dss/movies \
  240. $RPM_BUILD_ROOT%{l_prefix}/share/dss/modules \
  241. $RPM_BUILD_ROOT%{l_prefix}/share/dss/playlists \
  242. $RPM_BUILD_ROOT%{l_prefix}/var/dss/log
  243. # install the server and administrative binaries
  244. %{l_shtool} install -s -c -m 755 \
  245. DarwinStreamingServer $RPM_BUILD_ROOT%{l_prefix}/sbin/
  246. %{l_shtool} install -c -m 755 \
  247. WebAdmin/src/streamingadminserver.pl \
  248. $RPM_BUILD_ROOT%{l_prefix}/sbin/streamingadminserver
  249. cp -rp WebAdmin/WebAdminHtml $RPM_BUILD_ROOT%{l_prefix}/var/dss/webadmin
  250. chmod a+x $RPM_BUILD_ROOT%{l_prefix}/var/dss/webadmin/*.cgi
  251. # install miscellaneous binaries
  252. %{l_shtool} install -s -c -m 755 \
  253. PlaylistBroadcaster.tproj/PlaylistBroadcaster \
  254. MP3Broadcaster/MP3Broadcaster \
  255. qtpasswd.tproj/qtpasswd \
  256. $RPM_BUILD_ROOT%{l_prefix}/bin/
  257. # install configuration files
  258. %{l_shtool} install -c -m 644 \
  259. relayconfig.xml-Sample \
  260. streamingserver.xml-POSIX \
  261. WebAdmin/streamingadminserver.conf \
  262. $RPM_BUILD_ROOT%{l_prefix}/etc/dss/
  263. (
  264. cd $RPM_BUILD_ROOT%{l_prefix}/etc/dss/
  265. mv -f relayconfig.xml-Sample relayconfig.xml
  266. mv -f streamingserver.xml-POSIX streamingserver.xml
  267. mv -f streamingadminserver.conf streamingadmin.conf
  268. touch qtusers
  269. touch qtgroups
  270. ) || exit $?
  271. # install run commands
  272. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  273. %{SOURCE rc.dss} \
  274. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  275. # install sample movies, audio files, and access file
  276. %{l_shtool} install -c -m 644 \
  277. qtaccess \
  278. sample.mp3 \
  279. sample_100kbit.mov \
  280. sample_300kbit.mov \
  281. sample_100kbit.mp4 \
  282. sample_300kbit.mp4 \
  283. $RPM_BUILD_ROOT%{l_prefix}/share/dss/movies/
  284. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  285. %{l_files_std} \
  286. '%config %{l_prefix}/etc/dss/*' \
  287. '%config %attr(0640,%{l_susr},%{l_sgrp}) %{l_prefix}/etc/dss/qtusers' \
  288. '%config %attr(0640,%{l_susr},%{l_sgrp}) %{l_prefix}/etc/dss/qtgroups' \
  289. '%config %attr(0640,%{l_susr},%{l_mgrp}) %{l_prefix}/share/dss/movies/qtaccess'
  290. %files -f files
  291. %clean
  292. rm -rf $RPM_BUILD_ROOT
  293. %post
  294. # after first time install, write default admin username and
  295. # password to qtusers and add the new admin username to qtgroups
  296. if [ $1 -eq 1 ]; then
  297. username='ghandi'; password='india'
  298. echo "realm Streaming Server" >$RPM_INSTALL_PREFIX/etc/dss/qtusers
  299. $RPM_INSTALL_PREFIX/bin/qtpasswd -p $password $username
  300. echo "admin: $username" >$RPM_INSTALL_PREFIX/etc/dss/qtgroups
  301. fi
  302. # after upgrade, restart service
  303. [ $1 -eq 2 ] || exit 0
  304. eval `%{l_rc} dss status 2>/dev/null`
  305. [ ".$dss_active" = .yes ] && %{l_rc} dss restart
  306. exit 0
  307. %preun
  308. # before erase, stop service and remove log files
  309. [ $1 -eq 0 ] || exit 0
  310. %{l_rc} dss stop 2>/dev/null
  311. rm -f $RPM_INSTALL_PREFIX/var/dss/log/* >/dev/null 2>&1 || true
  312. exit 0