Darwin Streaming Server (DSS) 6.0.3, on Solaris 10
mai 27th, 2008 by Prune

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…
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
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.
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
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
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.
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…
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.
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.
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…
PS. It works. Yay.
Thanks again for the patch, made life a lot easier even if I wound up with this last issue.
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.
Croft, could you please copy/past the change you made with every detail so we can tune the patch ?
Thanks.
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.
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.
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.
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)