Thursday Apr 08, 2010

sorrt, no new SL viewer

Sorry folks but I just haven't had the time to dive into a Second Live viewer for Solaris in almost a year.   I wish I could dedicate some time to it but priorities as they are prevent me from doing much extra circular work.  The good news is that there are some folks working on a port and I hope they announce something soon.  I'm not going to give any details and put them on the spot.

Tuesday Jan 13, 2009

new build of SL 1.20

Well I have yet to get a successful build from SL 1.21 or 1.22.  I just haven't had the time to dive into the new build environment.   Luckily, Linden Lab released a bunch of updates for SL 1.20.17.  Therefore, you can download updated packages using the links Solaris 10 and OpenSolaris/Nevada.

I'll try to work on the newer versions of the viewer as soon as I get the next release of Solaris CAT out the door.

Wednesday Oct 15, 2008

Second Life Viewer Security Builds (1.20.17) Now Available

Since Linden Lab released security patches for their viewer, Clark has made builds available to everyone.  Those URLs are: 1.20.17 for Solaris 10 & 1.20.17 for Nevada/OpenSolaris.  Since this is a security-related build, all prior versions have been removed.

I've also seen updates on all the Solaris related PJira issues saying they are now pending!  Sweet! That means that we'll soon have the Solaris patches integrated into the viewer trunk.

Lastly, I have yet to start on the port of 1.21.  I just haven't had the time to dive into the cmake changes.  If anyone has a set of Viewer related cmake patches for Solaris, please share.

Tuesday Aug 19, 2008

SL Viewer 1.20.15 plus Locale packages changed in Solaris Nevada/OpenSolaris

Since a few people have moved to newer builds of Solaris Nevada they noticed that the locale packages changed.  On Solaris, the Second Life viewer requires locale support for ISO 8859-1 and ISO 8859-15. These are the default locales expected by the viewer and in older SL versions, not having them has led to crashes. On Solaris 10, these locales are bundled in SUNWi15cs, SUNWi1cs, & SUNWnamos. Now for the tricky part. Somewhere around Nevada/OpenSolaris build 91, the packages for this locale support changed from those listed above to SUNWlang-common-extra & SUNWlang-en-extra. If you are using a newer build of Nevada, just make sure you have SUNWlang-common-extra & SUNWlang-en-extra installed. I've modified the package dependencies for Nevada/OpenSolaris. The downloads for viewer version 1.20.15 are available for Nevada/OpenSolaris and Solaris 10

While I have your attention, you may have noticed that the mp3 plugin is missing from builds of Nevada/OpenSolaris on builds after b83.  That surprised a lot of us and it was a conscious decision to protect Solaris licensees from litigation. (Since I love my job at Sun, I'll keep my personal feelings about this decision out of this blog.)  If you need a mp3 plugin, a free one is available from various sources including this place.  You can also build the default plugins yourself.  The source is available at the GStreamer Home Page. I advise you to pay special attention to the licenses documented in the packages. In a nutshell, just because something is free to download does not mean it's free to use!

Friday Jul 18, 2008

Solaris version of the SL viewer

I've had a few requests for SL since it includes the "skinning project" and of course, Clark was anxious for the patches so here's the packages (thanks Clark!):  Solaris 10 and Nevada/OpenSolaris.  I've been working hard to free up enough time to update the jira issues with my latest patches and promise I'll get them up there ASAP.

Wednesday Jun 18, 2008

Solaris version of the SL viewer

I thought is was about time to let folks know about the latest Solaris build of the Second Life viewer, version  Clark Dastardly has made them available at Package for Solaris 10  and Package for OpenSolaris. Streaming audio support returns in this release but only in Solaris Nevada/OpenSolaris because Solaris 10's GStreamer still needs to be updated.  Please let me know if you hit any bugs/problems/issues and please give me some feed back. I would love to know how the Solaris version behaves compared to Linden Lab's official builds - yes, we still need streaming video (waiting on Sun's official AAC decoder) and Voice (waiting on Linden Lab to release  a Vivox client for Solaris) so there's no need to tell me about these.

I'll try and get the patches posted to their related Second Life Jira tickets within the next few days.

Wednesday Feb 27, 2008

Second Life on Solaris x86. You want it & you can have it!

It's been months since I gave everyone an update on the Second Life viewer on Solaris. So here it is...

First, you need to know that the viewer is now available outside Sun. The pre-built packages are now available off of, see Jeff Barr's blog entry for the details. I want to thank these folks for putting the effort in and making the viewer available to everyone.

If you want to build the viewer yourself, please refer to my past posts on building the libraries and tweaking SConstruct. As for the patches themselves, I've submitted them under Second Life "jira" issues and, as such, I ask that you download the patches from there. The issue numbers are:

  • VWR-4800 - Use Solaris kstats when running on Solaris
  • VWR-4802 - add definitions for stricmp and strnicmp
  • VWR-4804 - Add necessary includes to llsys.h
  • VWR-4805 - add LL_SOLARIS to #if in lltimer.h
  • VWR-4806- llvfs changes
  • VWR-4807 - add Solaris to #if in llglstubs.h
  • VWR-4808 - featuretable_solaris.txt patch
  • VWR-4809 - llfloaterreporter.cpp
  • VWR-4810 - add Solaris required changes to llappviewer_linux.cpp
  • VWR-4811 - add LL_SOLARIS to #if in llfilepicker.cpp
  • VWR-4812 - include llstring.h in llfloateranimpreview.cpp
  • VWR-4813 - include llstring.h to llfloaterimagepreview.cpp
  • VWR-4814 - include llstring.h in llfloaternamedesc.cpp
  • VWR-4815 - add Solaris specific platform to llfloaterreporter.cpp
  • VWR-4816- include Solaris in llstartup.cpp
  • VWR-4817 - don't include gMovieMaker on Solaris builds
  • VWR-4818- add LL_SOLARIS to #if in llfilepicker.cpp
  • VWR-4819 - add LL_SOLARIS to linux #if in moviemaker.h
  • VWR-4820 - add solaris_tools to newview
If you want the latest audio updates, I suggest you refer to VWR-2662 for the latest patches. Be sure to read the comments included in VWR-2662 so that you get everything you need. The patches are added in the order documented in the jira issue, the result is a viewer with OpenAL supported audio as well as GStreamer supported audio streaming. However, streamed audio only works on OpenSolaris because the GStreamer support in SL requires GStreamer 0.10 (delivered in OpenSolaris) and Solaris 10 currently supports GStreamer 0.8.

Seriously, save yourself a bunch of time, and just take the pre-built packages mentioned above. Attempting a SL build can induce sleeplessness, outbursts of frustration, and possible tears.

My plans for the future work on the Second Life viewer depends priorities here at Sun. I have plenty of other work on my to-do list so we'll see. But if I do get the thumbs up, I plan on doing the following:

  • Reduce the number of libraries included in the SL package in favor of those bundled with OpenSolaris under the Project Indiana initiative.
  • Add patches to the cmake branch of the Second Life build tree. yes, that's right, SCons is no longer going to be used to build SL. I'm not sure I like cmake but it does provide a good cross-platform (Windows, OS X, Linux, and Solaris) build environment.
  • See what, if anything, can be done to get the Linux version of the Vivox client working under Solaris. I'm thinking that perhaps Project Indiana may help here.

Wednesday Jul 11, 2007

SecondLife on SPARC

Well folks, it has been a fun couple of months. After getting the SecondLife viewer ported to Solaris x86 I thought the move to SPARC would be a breeze. NOT!!! It turns out there were quite a few CPU alignment assumptions made throughout the code that caused headaches. But before I get into that I need to put in a plug for gccfss (gcc for SPARC System) which is a great tool to use if you have a huge application like the SecondLife viewer, have a community of folks who share development duties and therefore tie you to gcc, but want superior performance on SPARC. gccfss is the gcc 4.0.x front end on top of the Sun Studio 12 backend. You therefore can compile code that assumes gcc-isms while still able to use the SPARC performance tools. I also need to plug Sun Studio 12 which has many gcc compatible features. If you own the application in question I highly advise you to invest the time in getting your code to compile in Sun Studio 12. There are far too many reasons to describe here so look at the SunStudio overview page for more details. In either case, gccfss and SunStudio 12 are free so you'd be a fool if you didn't invest the time and give them a try. SunStudio is available for Solaris and most Linuxes.

OK, now back to SecondLife. After deciding to go with gccfss, I still had data alignment to deal with. Alexey Starovoytov came to the rescue advising me to add asm("ta\\t6"); to SL's main(). This little trick enables a corrective trap handler on SPARC that will fix unaligned references. For those who need a deeper definition, John Harres provided the following:

Since this is a user land trap, it ends up in the user side of the trap table, which effectively adds 0x100 to the trap number. This ends up in:

GOTO(.fix_alignment);           /\* 106  do unaligned references \*/

in the trap table. It ends up setting p_fixalignment in the proc structure, which then is noticed during trap() if you're taking a T_SYS_RTT_ALIGN trap from user land. WIth that flag set this results in the call to do_unaligned(). Therefore, each time the program takes an alignment trap, do_unaligned() is called. One would expect the overhead to be rather minimal unless one is doing a lot of unaligned references.

If you need a source reference, Alexy pointed me to simulator.c as well as a discussion of trap 6 in the Sun Studio Performance Library doc.

I can't thank Alexy and John enough for their help.

Once I got passed the alignment problems I then ran up against Open GL Library issues on SPARC. The SL deveopers assume the GLext, originally called the GL Extensions for Linux Library, exists. Well currently on SPARC GLext does not and at the moment I've #ifdef'ed around these calls to get a clean compile and wound up making the viewer ugly. This is what I'll be attacking next.

Here's a few other things that were done to the Viewer for Solaris compatibility:

  • All the libraries required by the viewer but not bundled with Solaris were built for the SPARC using the same methods described for the x86 port. They were then copied into the linden/libraries/sparc-sunos5 directory for the SCONS build.
  • The Lindens have dedicated pages of source to figuring out the type of x86 processor is in use. Instead of using their assembler calls and because said assembler does not apply to SPARC I used getisax(2) to extract the cpu info. The cpu kstats were used to determine the processor brand and clock rate while on x86/x64, getisax(2) was used to further define which CPU extensions were in use.
  • The in window color depth was reduced from 32 to 24 bits on SPARC to allow compatibility with more of the frame buffers available on SPARC.
  • The Viewer assumes the X-Window System server. It currently references the server logs to determine how much memory is configured on the GPU. A true kludge. On SPARC is not yet supported so this code is useless and it's ignored. According to its documentation the SDL library provides such information but when one inspects the SDL source one finds the variable but discovers it's not ever set. Doh! Therefore for now, the viewer assumes the maximum amount of memory is available, the default action when it can't be determined by any other means.
  • One of the largest stumbling blocks was big endian conversions on SPARC. I spent weeks trying to band-aid my way through fixes. Then last week, as he was adding the Solaris changes to the master repository at Linden Labs, Soft Linden discovered that a header file was missing from one of their message passing sources - a LL bug that I missed. That header was the one that defined LL_BIG_ENDIAN. Once I added that include everything fell together and I proceeded to rip out my endian changes. Without Soft's help I would have wasted a ton of more time "fixing things". Thanks Soft!
  • The SL community has offered an openal alternative to the FMOD audio library. Using the patches offered for openal I was able to add audio support to Solaris. There is a rumor that there may be an FMOD available for Solaris in the near future so that option may be viable soon as well.
So where does the Solaris port stand? Except for movie support the viewer on x86 works fine. The SPARC port still needs work to address the GL compatibility issues. Like I said earlier, I'll be attacking those next.

Lastly, I got approval from Sun Legal to sign the Linden Labs Contributor Agreement and am now officially able to give LL copies of the Solaris patches. I was asked not to distribute any 3rd party libraries outside Sun so I'm hoping someone else will build a version for general distribution. Soft Linden has been working with me to merge those changes into the official SVN repository so they should be available to everyone soon.

If you are interested in building the SL viewer on your own, you should start by reviewing the pages at the SecondLife Open Source Portal.


Don't ya just love toys and taking them apart to see how they work? To me it doesn't matter if it's an iPod, a laptop, or the biggest baddest thing a company makes. And nothing makes me more happy than showing how easy it is to develop stuff on Oracle Solaris.


« July 2016