Internet, UNIX, Video, Leisure…
Darwin Streaming Server (DSS) 6.0.3, on Solaris 10

DSS 6.0.3 is out ! Check this out at http://dss.macosforge.org/
I’m not sure what this new version brings, few things seems to have changed. I hope for the best..
They claim to be 64 bits compatible on OsX, with some speed up changes. Don’t know what this will bring on Solaris or Linux.
Whatever, this version will not compile out of the tar.
Sverker Abrahamsson have made a patch for Linux here.
He also provide a pre-patched source code there.
This will not compile on Solaris 10
So here are 2 patches for Solaris 10. I compiled using the coolthread Sun GCC, but it should be OK with whatever GCC you use.
Note that I had to so something dirty with the Timezone detection, and I still don’t know what the impact can be on a production server. I’ll come back here if I see any trouble one on production.
I also have few errors (warnings, in fact), that should be OK when running but detected by the pre-processor :
RTCPUtilitiesLib/RTCPAPPNADUPacket.h: In destructor `NaduList::~NaduList()':
RTCPUtilitiesLib/RTCPAPPNADUPacket.h:205: warning: comparison between signed and unsigned integer expressions
FYI, I’m not using DSS on production right now, and DSS 6 will have to be heavily tested before it is validated.
So…
[EDIT]
Thanks to Stefan Parvu, I added in the patch the Solaris x86 things. So DSS now also compile on it (tested on Sun Fire X4100 Server with AMD Opteron(tm) Processor – gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath))
[EDIT]
- dss-603-orig-to-solaris10-v3patch.gz
Use this patch if you just download the plain source.
gunzip the patch.
untar the DSS source code and rename the directory « DarwinStreamingSrvr6.0.3-Source-Solaris10″.
At the same level as the source directory, use « patch < dss-603-orig-to-solaris10-v3patch".
go inside the DSS directory, then use « ./buildtarball 6.0.3 » to compile it.
Your install package will be in something like DarwinStreamingSrvr6.0.3-SunOS.tar.gz - dss-603-linux-to-solaris-v2.patch
Use this if you start from the modified source code for Linux, provided by Sverker. Compile it the same way as above.
Then, Copy the tar file on your production server, untar it, and use the « ./Install » script for install in /usr/local.
I’m working on a modified installer script where you can change the root installation dir. Soon to come…
28 mai 2008 - 08:03
Good day,
Please review http://dss.macosforge.org/trac/ticket/7 snd submit the patches via the ticket,
This way we will ensure that DSS will build fine for future versions on Solaris !
As well review the modifications on Buildit for Solaris x86 too
Thanks,
stefan
28 mai 2008 - 09:58
Kool. Please update ticket:
http://dss.macosforge.org/trac/ticket/7
We need to submit patches to Apple in order to integrate our changes into DSS.
As well review 1). about Solaris x86 which you dont cover.
28 mai 2008 - 11:20
Patch edited. Now fully compile on Solaris 10 X86.
Still to do :
- add the patch for many multicast IP source.
- test, bench, load test, then test again
4 octobre 2008 - 03:05
I have been trying to get dss up and running on a Solaris 10 u4 x86 server for a couple of weeks now. I ran across this site but I am having some difficulties understanding on how to patch the tar ball. The file I downloaded looks like a set of commands that was captured by the command script. Is there something I am missing?
Thanks
5 octobre 2008 - 03:13
the patch is the result of a diff. You can apply it with a « patch » command line.
I know this is not efficient, and sometine does not work. I had a lot of troubles uploading this file here so it can work for everybody.
There are not so many line to change.
Something you can do is look at the file and change lines by hand.
What you’ll find in the file, first, is the file name of the source file.
Then you’ll find a line (starting line number and ending line number).
Then a minus « - » which means remove this line
Then a plus « + » line which means add this line.
What you can do is searche for the « - » line and replace it with the « + » line…
Once you know this it should be obvious….
I would definatly find somethins easier. Maybe provide a full tar with the source already patched, but I don’t think I’m allowed to by the licence…
Hope this wil help you. If not, let me know, I’ll send you the patched source for x86 solaris.
18 novembre 2008 - 17:10
I’ve been trying to compile DSS on OpenSolaris for roughly a day now and thanks to your patch I came pretty close. I had an issue with the OS itself and « ld » that I solved and then I managed to get a lot further, using Sun Studio for the compiler. Unfortunately, not all the way, since the buildtarball 6.0.3 command chokes towards the end:
g++: ../CommonUtilitiesLib/libCommonUtilitiesLib.a: No such file or directory
*** Error code 1
make: Fatal error: Command failed for target `StreamingLoadTool’
DarwinStreamingServer failed to build!
Buildit Failed. Exiting!
Still no joy on DSS on OpenSolaris. But then again OpenSolaris is not quite like Solaris 10…
18 novembre 2008 - 17:34
Solaris and Opensolrias are really close. I just don’t understand why you don’t use GCC as compiler
Your problem is compiling Streaming Load Tool. Chances are your build of the main DSS is already working.
Now, this means you have troubles compiling a library (.a). You should have previous errors somewhere… try to find that out.
Also, don’t forget to « clean » the directory before doing the build.
Let me know of your findings. If you really have a source problem I will change the patch if we find something.
18 novembre 2008 - 18:52
Umm yeah I was confused anyway and I was very much using gcc, not cc, for this. I am indeed getting an error when perusing the log of what went on when it comes to building libCommonUtilitiesLib.a earlier on in the process. I’ll just have to see if I can figure out just why that is.
18 novembre 2008 - 19:07
Ah here we go:
g++ -c -o OSMutex.o -D__solaris__ -D_REENTRANT -DFD_SETSIZE=65536 -L/usr/local/lib -R/usr/local/lib -include ../PlatformHeader.h -g -Wall -O2 -I. -I.. -I../APIStubLib -I../RTPMetaInfoLib -I../APICommonCode OSMutex.cpp
OSMutex.cpp:49: error: brace-enclosed initializer used to initialize `upad64_t’
*** Error code 1
make: Fatal error: Command failed for target `OSMutex.o’
Since it was complaining about curly braces around PTHREAD_ONCE_INIT in that file, I de-curly-braced it and lo and behold, it compiled successfully but with tons of warnings (not sure if that’s par for the course as I’ve never successfully compiled DSS until now.) Now to see if it actually works…
18 novembre 2008 - 19:50
PS. It works. Yay.
Thanks again for the patch, made life a lot easier even if I wound up with this last issue.
19 novembre 2008 - 09:04
Hi,
I will soon test as well on OpenSolaris bits. I have been able to compile DSS 6.0.3
using gcc on Solaris Express and Solaris 10, using latest patch set.
19 novembre 2008 - 10:39
Croft, could you please copy/past the change you made with every detail so we can tune the patch ?
Thanks.
19 novembre 2008 - 10:51
Sebastien: we need to evaluate the change making sure we dont break something else.
Wonder why wouldn’t compile out of box on OpenSolaris bits.
19 novembre 2008 - 12:16
The only thing I did was a quick and dirty change in OSMutex.cpp – there is a section in line 49-52 where you have two versions of PTHREAD_ONCE_INIT – one is surrounded by curly braces and the other isn’t. I just experimented and did the bare minimum – removed the curly braces making both lines identical and did another « buildtarball 6.0.3″. Built nicely and works fine to stream from, haven’t done any actual hammering of it to see if its unbreakable though.
This was on OpenSolaris 2008.5 Developer Preview, but after running « pkg image-update » to snv_101a (the latest as of yesterday.) I had other issues earlier with ld, but I suspect that was just that I had some issues when I earlier upgraded to snv_99, should have no bearing on compiling DSS.
19 novembre 2008 - 12:52
Stefan : of course !
Croft : which version of GCC are you exactly using ?
The {} this is special for Solaris… I don’t think there is another definition for OpenSolaris in DSS…
This may be a « new » gcc change if you’re bleeding edge… If yes, this means :
- keep the solaris patch as-is and have another opensolaris patch
- try other gcc (solaris) without the {} and change the patch if everything ok
Please give you gcc revision. Thanks.
19 novembre 2008 - 13:46
Sure, this is the output from gcc -v:
-bash-3.2$ gcc -v
Reading specs from /usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/specs
Configured with: /builds2/sfwnv-gate/usr/src/cmd/gcc/gcc-3.4.3/configure –prefix=/usr/sfw –with-as=/usr/sfw/bin/gas –with-gnu-as –with-ld=/usr/ccs/bin/ld –without-gnu-ld –enable-languages=c,c++,f77,objc –enable-shared
Thread model: posix
gcc version 3.4.3 (csl-sol210-3_4-20050802)
9 décembre 2008 - 23:53
Finally, I was working on 5.5.4 all day long and got to a part that just could figure out then stumbled upon this. I got alot further this time but here are my errors, it does ask to make a username and password after it completes but I still can\’t launch the app. Anyhelp would be great!!
Inserting path to perl into scripts..
Can\’t open perl script \"perlpath.pl\": No such file or directory
Creating unprivileged user to run the server = \"qtss\".
copying DarwinStreamingServer to /usr/local/sbin/DarwinStreamingServer
cp: cannot access DarwinStreamingServer
copying PlaylistBroadcaster to /usr/local/bin/PlaylistBroadcaster
cp: cannot access PlaylistBroadcaster
copying MP3Broadcaster to /usr/local/bin/MP3Broadcaster
cp: MP3Broadcaster: is a directory
copying qtpasswd to /usr/local/bin/qtpasswd
cp: cannot access qtpasswd
cp: cannot access StreamingServerModules/*
./Install: line 243: /usr/local/sbin/DarwinStreamingServer: No such file or directory
chmod: WARNING: can\’t access /etc/streaming/streamingserver.xml
chown: /etc/streaming/streamingserver.xml: No such file or directory
copying relayconfig.xml-Sample to /etc/streaming/relayconfig.xml-Sample
copying qtusers to /etc/streaming/qtusers
copying qtgroups to /etc/streaming/qtgroups
copying readme.txt to /var/streaming/readme.txt
cp: cannot access readme.txt
copying 3rdPartyAcknowledgements.rtf to /var/streaming/3rdPartyAcknowledgements.rtf
cp: cannot access 3rdPartyAcknowledgements.rtf
copying sample_100kbit.mov into /usr/local/movies/sample_100kbit.mov
copying sample_300kbit.mov into /usr/local/movies/sample_300kbit.mov
copying sample_100kbit.mp4 into /usr/local/movies/sample_100kbit.mp4
copying sample_300kbit.mp4 into /usr/local/movies/sample_300kbit.mp4
copying sample.mp3 into /usr/local/movies/sample.mp3
copying sample_50kbit.3gp into /usr/local/movies/sample_50kbit.3gp
copying sample_h264_100kbit.mp4 into /usr/local/movies/sample_h264_100kbit.mp4
copying sample_h264_300kbit.mp4 into /usr/local/movies/sample_h264_300kbit.mp4
copying sample_h264_1mbit.mp4 into /usr/local/movies/sample_h264_1mbit.mp4
copying StreamingLoadTool to /usr/local/bin/StreamingLoadTool
cp: StreamingLoadTool: is a directory
copying streamingloadtool.conf to /etc/streaming/streamingloadtool.conf
cp: cannot access streamingloadtool.conf
copying streamingadminserver.pl into /usr/local/sbin/streamingadminserver.pl
cp: cannot access streamingadminserver.pl
copying Admin HTML to /var/streaming/AdminHtml directory
cp: cannot access AdminHtml
Launching streamingadminserver.pl
./Install: line 355: /usr/local/sbin/streamingadminserver.pl: No such file or directory
Installation Complete