[sldev] [PATCH] changes I made to run snowglobe on Fedora 11 x86_64

Carlo Wood carlo at alinoe.com
Thu Aug 6 05:12:36 PDT 2009


Hey Ralph, looks good.

Can you create a pjira (on https://jira.secondlife.com/secure/CreateIssue!default.jspa)
for this and attach your patch?

Note that you might need to sign a contribution agreement for this,
not sure if it will be considered minor changes.

On Wed, Aug 05, 2009 at 08:44:31PM -0700, Ralph Campbell wrote:
> I was able to get snowglobe-src-viewer-1.0.2-r2451.tar.gz to compile
> and run on a Fedora 11 x86_64 system with the following patches.
> 
> Fixed compiler warnings since I didn't know how to turn off gcc -Werror
> in cmake.
> 
> Fixed viewer_manifest.py to copy secondlife-stripped to the right
> location for x86_64 builds.
> 
> When I started snowglobe, I was able to log in and it popped up
> a dialog box to accept the terms of usage. The usage agreement didn't
> display and I traced this to LLSDXMLParser::Impl::parse() being used
> on the text which defined "</head>" but didn't skip over it properly.
> LLSDXMLParser::Impl::parse() doesn't seem like a general purpose XML
> parser, just for reading saved configuration data. Since the parser
> returned an error, the "I agree" checkbox was not enabled and I couldn't
> make progress.  I hacked around the problem by temporarily making
> the checkbox enabled by default.
> Anyway, a patch is included to skip over unknown elements.
> 
> I edited tut-2008-11-30.tar.gz to include tut::result_type::skip since
> it wasn't defined. I guess there must be a newer version of tut
> somewhere.
> I also edited the hash_map C++ file to not warn about future
> incompatibility.
> 
> 

> Fix compiler warnings on Fedora 11 x86_64.
> 
> --- indra/llcommon/llstring.h.old	2009-08-02 19:52:13.549420229 -0700
> +++ indra/llcommon/llstring.h	2009-08-02 19:55:15.642777031 -0700
> @@ -41,6 +41,7 @@
>  #endif
>  
>  #include <string.h>
> +#include <stdio.h>
>  
>  #if LL_SOLARIS
>  // stricmp and strnicmp do not exist on Solaris:
> --- indra/llcommon/llstring.cpp.old	2009-08-02 19:04:52.374419361 -0700
> +++ indra/llcommon/llstring.cpp	2009-08-02 19:05:34.102740108 -0700
> @@ -134,7 +134,7 @@ S32 wchar_to_utf8chars(llwchar in_char, 
>  		*outchars++ = 0xF0 | (cur_char >> 18);
>  		*outchars++ = 0x80 | ((cur_char >> 12) & 0x3F);
>  		*outchars++ = 0x80 | ((cur_char >> 6) & 0x3F);
> -		*outchars++ = 0x80 | cur_char & 0x3F;
> +		*outchars++ = 0x80 | (cur_char & 0x3F);
>  	}
>  	else if (cur_char < 0x4000000)
>  	{
> @@ -142,7 +142,7 @@ S32 wchar_to_utf8chars(llwchar in_char, 
>  		*outchars++ = 0x80 | ((cur_char >> 18) & 0x3F);
>  		*outchars++ = 0x80 | ((cur_char >> 12) & 0x3F);
>  		*outchars++ = 0x80 | ((cur_char >> 6) & 0x3F);
> -		*outchars++ = 0x80 | cur_char & 0x3F;
> +		*outchars++ = 0x80 | (cur_char & 0x3F);
>  	}
>  	else if (cur_char < 0x80000000)
>  	{
> @@ -151,7 +151,7 @@ S32 wchar_to_utf8chars(llwchar in_char, 
>  		*outchars++ = 0x80 | ((cur_char >> 18) & 0x3F);
>  		*outchars++ = 0x80 | ((cur_char >> 12) & 0x3F);
>  		*outchars++ = 0x80 | ((cur_char >> 6) & 0x3F);
> -		*outchars++ = 0x80 | cur_char & 0x3F;
> +		*outchars++ = 0x80 | (cur_char & 0x3F);
>  	}
>  	else
>  	{
> --- indra/newview/llface.cpp.old	2009-08-02 20:08:44.758441558 -0700
> +++ indra/newview/llface.cpp	2009-08-02 20:09:31.333549560 -0700
> @@ -988,7 +988,7 @@ BOOL LLFace::getGeometryVolume(const LLV
>  			0.75f
>  		};
>  
> -		if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || LLPipeline::sRenderBump && tep->getShiny()))
> +		if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))
>  		{
>  			color.mV[3] = U8 (alpha[tep->getShiny()] * 255);
>  		}
> --- indra/newview/llviewerobject.cpp.old	2009-08-02 20:20:01.278799787 -0700
> +++ indra/newview/llviewerobject.cpp	2009-08-02 20:21:03.142651650 -0700
> @@ -624,8 +624,8 @@ BOOL LLViewerObject::setDrawableParent(L
>  	
>  	BOOL ret = mDrawable->mXform.setParent(parentp ? &parentp->mXform : NULL);
>  	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
> -	if(	old_parent != parentp &&
> -		old_parent || (parentp && parentp->isActive()))
> +	if(	(old_parent != parentp && old_parent) ||
> +		(parentp && parentp->isActive()))
>  	{
>  		// *TODO we should not be relying on setDrawable parent to call markMoved
>  		gPipeline.markMoved(mDrawable, FALSE);
> --- indra/newview/llvoavatar.cpp.old	2009-08-02 20:21:41.036419558 -0700
> +++ indra/newview/llvoavatar.cpp	2009-08-02 20:22:38.648667807 -0700
> @@ -1582,7 +1582,7 @@ BOOL LLVOAvatar::lineSegmentIntersect(co
>  		)
>  {
>  
> -	if (mIsSelf && !gAgent.needsRenderAvatar() || !LLPipeline::sPickAvatar)
> +	if ((mIsSelf && !gAgent.needsRenderAvatar()) || !LLPipeline::sPickAvatar)
>  	{
>  		return FALSE;
>  	}
> @@ -9070,9 +9070,9 @@ BOOL LLVOAvatar::updateLOD()
>  
>  	LLFace* facep = mDrawable->getFace(0);
>  	if (facep->mVertexBuffer.isNull() ||
> -		LLVertexBuffer::sEnableVBOs &&
> +		(LLVertexBuffer::sEnableVBOs &&
>  		((facep->mVertexBuffer->getUsage() == GL_STATIC_DRAW ? TRUE : FALSE) !=
> -		(facep->getPool()->getVertexShaderLevel() > 0 ? TRUE : FALSE)))
> +		(facep->getPool()->getVertexShaderLevel() > 0 ? TRUE : FALSE))))
>  	{
>  		mDirtyMesh = TRUE;
>  	}
> --- indra/newview/llvovolume.cpp.old	2009-08-02 20:25:05.546443870 -0700
> +++ indra/newview/llvovolume.cpp	2009-08-02 20:25:53.161545016 -0700
> @@ -468,8 +468,8 @@ void LLVOVolume::updateTextureVirtualSiz
>  
>  		if (face->mTextureMatrix != NULL)
>  		{
> -			if (vsize < MIN_TEX_ANIM_SIZE && old_size > MIN_TEX_ANIM_SIZE ||
> -				vsize > MIN_TEX_ANIM_SIZE && old_size < MIN_TEX_ANIM_SIZE)
> +			if ((vsize < MIN_TEX_ANIM_SIZE && old_size > MIN_TEX_ANIM_SIZE) ||
> +				(vsize > MIN_TEX_ANIM_SIZE && old_size < MIN_TEX_ANIM_SIZE))
>  			{
>  				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD, FALSE);
>  			}
> @@ -2333,7 +2333,7 @@ void LLVolumeGeometryManager::rebuildGeo
>  						{ //needs normal + binormal
>  							bump_faces.push_back(facep);
>  						}
> -						else if (te->getShiny() && LLPipeline::sRenderBump ||
> +						else if ((te->getShiny() && LLPipeline::sRenderBump) ||
>  							!te->getFullbright())
>  						{ //needs normal
>  							simple_faces.push_back(facep);
> --- indra/newview/llvosky.cpp.old	2009-08-02 20:23:21.098419519 -0700
> +++ indra/newview/llvosky.cpp	2009-08-02 20:24:10.443854152 -0700
> @@ -1095,10 +1095,10 @@ BOOL LLVOSky::updateSky()
>  							   mLastTotalAmbient.mV[2] - mTotalAmbient.mV[2]);
>  
>  			if ( mForceUpdate 
> -				 || ((dot_lighting < LIGHT_DIRECTION_THRESHOLD)
> +				 || (((dot_lighting < LIGHT_DIRECTION_THRESHOLD)
>  				 || (delta_color.length() > COLOR_CHANGE_THRESHOLD)
>  				 || !mInitialized)
> -				&& !direction.isExactlyZero())
> +				&& !direction.isExactlyZero()))
>  			{
>  				mLastLightingDirection = direction;
>  				mLastTotalAmbient = mTotalAmbient;
> --- indra/newview/llspatialpartition.cpp.old	2009-08-02 20:14:50.719419513 -0700
> +++ indra/newview/llspatialpartition.cpp	2009-08-02 20:15:22.499425689 -0700
> @@ -1671,9 +1671,9 @@ public:
>  	virtual bool earlyFail(LLSpatialGroup* group)
>  	{
>  		if (mResult || //already found a node, don't check any more
> -			group->mOctreeNode->getParent() &&	//never occlusion cull the root node
> +			(group->mOctreeNode->getParent() &&	//never occlusion cull the root node
>  			LLPipeline::sUseOcclusion &&			//ignore occlusion if disabled
> -			group->isState(LLSpatialGroup::OCCLUDED))
> +			group->isState(LLSpatialGroup::OCCLUDED)))
>  		{
>  			return true;
>  		}
> --- indra/newview/lldrawpoolbump.cpp.old	2009-08-02 20:04:53.718419420 -0700
> +++ indra/newview/lldrawpoolbump.cpp	2009-08-02 20:08:10.074442399 -0700
> @@ -309,8 +309,8 @@ void LLDrawPoolBump::endRenderPass(S32 p
>  void LLDrawPoolBump::beginShiny(bool invisible)
>  {
>  	LLFastTimer t(LLFastTimer::FTM_RENDER_SHINY);
> -	if (!invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_SHINY)|| 
> -		invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY))
> +	if ((!invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_SHINY)) || 
> +		(invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY)))
>  	{
>  		return;
>  	}
> @@ -384,8 +384,8 @@ void LLDrawPoolBump::beginShiny(bool inv
>  void LLDrawPoolBump::renderShiny(bool invisible)
>  {
>  	LLFastTimer t(LLFastTimer::FTM_RENDER_SHINY);
> -	if (!invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_SHINY)|| 
> -		invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY))
> +	if ((!invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_SHINY)) || 
> +		(invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY)))
>  	{
>  		return;
>  	}
> @@ -411,8 +411,8 @@ void LLDrawPoolBump::renderShiny(bool in
>  void LLDrawPoolBump::endShiny(bool invisible)
>  {
>  	LLFastTimer t(LLFastTimer::FTM_RENDER_SHINY);
> -	if (!invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_SHINY)|| 
> -		invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY))
> +	if ((!invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_SHINY)) ||
> +		(invisible && !gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY)))
>  	{
>  		return;
>  	}
> --- indra/newview/lltoolpie.cpp.old	2009-08-02 20:16:16.273667975 -0700
> +++ indra/newview/lltoolpie.cpp	2009-08-02 20:16:37.753481495 -0700
> @@ -189,8 +189,8 @@ BOOL LLToolPie::pickAndShowMenu(BOOL alw
>  			} // else nothing (fall through to touch)
>  			
>  		case CLICK_ACTION_PAY:
> -			if (object && object->flagTakesMoney()
> -				|| parent && parent->flagTakesMoney())
> +			if ((object && object->flagTakesMoney())
> +				|| (parent && parent->flagTakesMoney()))
>  			{
>  				// pay event goes to object actually clicked on
>  				mClickActionObject = object;
> --- indra/newview/llviewerkeyboard.cpp.old	2009-08-02 20:18:09.417419363 -0700
> +++ indra/newview/llviewerkeyboard.cpp	2009-08-02 20:19:28.185424042 -0700
> @@ -683,7 +683,7 @@ BOOL LLViewerKeyboard::bindKey(const S32
>  			if (idx >=2 && idx <= 12)
>  			{
>  				U32 keyidx = ((mask<<16)|key);
> -				(mRemapKeys[mode])[keyidx] = ((0<<16)|KEY_F1+(idx-1));
> +				(mRemapKeys[mode])[keyidx] = ((0<<16)|(KEY_F1+(idx-1)));
>  				return TRUE;
>  			}
>  		}
> --- indra/newview/llhudeffectlookat.cpp.old	2009-08-02 20:11:20.196419425 -0700
> +++ indra/newview/llhudeffectlookat.cpp	2009-08-02 20:12:35.818564610 -0700
> @@ -421,8 +421,8 @@ BOOL LLHUDEffectLookAt::setLookAt(ELookA
>  	BOOL lookAtChanged = (target_type != mTargetType) || (object != mTargetObject);
>  
>  	// lookat position has moved a certain amount and we haven't just sent an update
> -	lookAtChanged = lookAtChanged || (dist_vec(position, mLastSentOffsetGlobal) > MIN_DELTAPOS_FOR_UPDATE) && 
> -		((current_time - mLastSendTime) > (1.f / MAX_SENDS_PER_SEC));
> +	lookAtChanged = lookAtChanged || ((dist_vec(position, mLastSentOffsetGlobal) > MIN_DELTAPOS_FOR_UPDATE) && 
> +		((current_time - mLastSendTime) > (1.f / MAX_SENDS_PER_SEC)));
>  
>  	if (lookAtChanged)
>  	{
> --- indra/newview/llvosky.h.old	2009-08-02 19:57:47.632419969 -0700
> +++ indra/newview/llvosky.h	2009-08-02 20:01:46.860842458 -0700
> @@ -147,7 +147,7 @@ protected:
>  
>  	static S32 getResolution()						{ return sResolution; }
>  	static S32 getCurrent()						{ return sCurrent; }
> -	static S32 stepCurrent()					{ return (sCurrent = ++sCurrent % 2); }
> +	static S32 stepCurrent()					{ return (sCurrent = (sCurrent + 1) % 2); }
>  	static S32 getNext()						{ return ((sCurrent+1) % 2); }
>  	static S32 getWhich(const BOOL curr)		{ return curr ? sCurrent : getNext(); }
>  
> --- indra/newview/llviewercamera.cpp.old	2009-08-02 20:17:11.132435433 -0700
> +++ indra/newview/llviewercamera.cpp	2009-08-02 20:17:32.135718440 -0700
> @@ -769,8 +769,8 @@ BOOL LLViewerCamera::areVertsVisible(LLV
>  
>  			BOOL in_frustum = pointInFrustum(LLVector3(vec)) > 0;
>  
> -			if ( !in_frustum && all_verts ||
> -				 in_frustum && !all_verts)
> +			if ((!in_frustum && all_verts) ||
> +				 (in_frustum && !all_verts))
>  			{
>  				return !all_verts;
>  			}
> --- indra/llmessage/lliobuffer.cpp.old	2009-08-02 19:28:44.739420260 -0700
> +++ indra/llmessage/lliobuffer.cpp	2009-08-02 19:29:26.290441332 -0700
> @@ -87,7 +87,7 @@ LLIOPipe::EStatus LLIOBuffer::seek(LLIOB
>  	{
>  	case READ:
>  		if(((delta >= 0) && ((mReadHead + delta) <= mWriteHead))
> -		   || (delta < 0) && ((mReadHead + delta) >= mBuffer))
> +		   || ((delta < 0) && ((mReadHead + delta) >= mBuffer)))
>  		{
>  			mReadHead += delta;
>  			status = STATUS_OK;
> @@ -95,7 +95,7 @@ LLIOPipe::EStatus LLIOBuffer::seek(LLIOB
>  		break;
>  	case WRITE:
>  		if(((delta >= 0) && ((mWriteHead + delta) < (mBuffer + mBufferSize)))
> -		   || (delta < 0) && ((mWriteHead + delta) > mReadHead))
> +		   || ((delta < 0) && ((mWriteHead + delta) > mReadHead)))
>  		{
>  			mWriteHead += delta;
>  			status = STATUS_OK;
> --- indra/llui/llmenugl.cpp.old	2009-08-02 19:32:21.227489696 -0700
> +++ indra/llui/llmenugl.cpp	2009-08-02 19:32:47.332501176 -0700
> @@ -2413,8 +2413,8 @@ void LLMenuGL::createJumpKeys()
>  				{
>  					char jump_key = uppercase_word[i];
>  					
> -					if (LLStringOps::isDigit(jump_key) || LLStringOps::isUpper(jump_key) &&
> -						mJumpKeys.find(jump_key) == mJumpKeys.end())
> +					if (LLStringOps::isDigit(jump_key) || (LLStringOps::isUpper(jump_key) &&
> +						mJumpKeys.find(jump_key) == mJumpKeys.end()))
>  					{
>  						mJumpKeys.insert(std::pair<KEY, LLMenuItemGL*>(jump_key, (*item_it)));
>  						(*item_it)->setJumpKey(jump_key);
> --- indra/llmath/v3math.h.old	2009-08-02 19:01:55.634419501 -0700
> +++ indra/llmath/v3math.h	2009-08-02 19:03:39.578426127 -0700
> @@ -411,8 +411,8 @@ inline bool operator<(const LLVector3 &a
>  	return (a.mV[0] < b.mV[0]
>  			|| (a.mV[0] == b.mV[0]
>  				&& (a.mV[1] < b.mV[1]
> -					|| (a.mV[1] == b.mV[1])
> -						&& a.mV[2] < b.mV[2])));
> +					|| ((a.mV[1] == b.mV[1])
> +						&& a.mV[2] < b.mV[2]))));
>  }
>  
>  inline const LLVector3& operator+=(LLVector3 &a, const LLVector3 &b)
> --- indra/llrender/llrendertarget.cpp.old	2009-08-02 19:29:49.945485691 -0700
> +++ indra/llrender/llrendertarget.cpp	2009-08-02 19:30:30.470549575 -0700
> @@ -139,7 +139,7 @@ void LLRenderTarget::addColorAttachment(
>  
>  	U32 offset = mTex.size();
>  	if (offset >= 4 ||
> -		offset > 0 && (mFBO == 0 || !gGLManager.mHasDrawBuffers))
> +		(offset > 0 && (mFBO == 0 || !gGLManager.mHasDrawBuffers)))
>  	{
>  		llerrs << "Too many color attachments!" << llendl;
>  	}
> @@ -608,7 +608,7 @@ void LLMultisampleBuffer::addColorAttach
>  
>  	U32 offset = mTex.size();
>  	if (offset >= 4 ||
> -		offset > 0 && (mFBO == 0 || !gGLManager.mHasDrawBuffers))
> +		(offset > 0 && (mFBO == 0 || !gGLManager.mHasDrawBuffers)))
>  	{
>  		llerrs << "Too many color attachments!" << llendl;
>  	}

> --- indra/newview/viewer_manifest.py.old	2009-08-03 19:35:51.223659265 -0700
> +++ indra/newview/viewer_manifest.py	2009-08-04 23:56:25.562523297 -0700
> @@ -763,7 +763,7 @@ class Linux_i686Manifest(LinuxManifest):
>  class Linux_x86_64Manifest(LinuxManifest):
>      def construct(self):
>          super(Linux_x86_64Manifest, self).construct()
> -        self.path("secondlife-stripped",self.get_linuxbin())
> +        self.path("secondlife-stripped","bin/"+self.binary_name())
>          self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin")
>          self.path("linux_tools/launch_url.sh","launch_url.sh")
>          if self.prefix("res-sdl"):
> @@ -772,7 +772,7 @@ class Linux_x86_64Manifest(LinuxManifest
>              self.end_prefix("res-sdl")
>  
>          self.path("featuretable_linux.txt")
> -        self.path("secondlife-i686.supp")
> +        #self.path("secondlife-i686.supp")
>  
>  if __name__ == "__main__":
>      main()

> --- indra/llcommon/llsdserialize_xml.cpp.old	2009-08-04 19:34:36.119613187 -0700
> +++ indra/llcommon/llsdserialize_xml.cpp	2009-08-05 08:23:04.403267737 -0700
> @@ -408,7 +408,9 @@ S32 LLSDXMLParser::Impl::parse(std::istr
>  		{
>  			((char*) buffer)[count ? count - 1 : 0] = '\0';
>  		}
> -		llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl;
> +		llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR (" <<
> +			XML_GetErrorCode(mParser) << ") parsing :" <<
> +			(char*) buffer << llendl;
>  		data = LLSD();
>  		return LLSDParser::PARSE_FAILURE;
>  	}
> @@ -623,6 +625,9 @@ void LLSDXMLParser::Impl::startElementHa
>  			break;
>  		}
>  		
> +		case ELEMENT_UNKNOWN:
> +			return startSkipping();
> +
>  		default:
>  			// all rest are values, fall through
>  			;

> _______________________________________________
> Policies and (un)subscribe information available here:
> http://wiki.secondlife.com/wiki/SLDev
> Please read the policies before posting to keep unmoderated posting privileges

-- 
Carlo Wood <carlo at alinoe.com>


More information about the SLDev mailing list