[SM-Commit] GIT changes to master grimoire by Eric Sandall (a240faee3c27cec7b67ec9c44521a89363da1a36)

Eric Sandall scm at sourcemage.org
Thu Jul 19 17:55:12 EDT 2007


GIT changes to master grimoire by Eric Sandall <sandalle at sourcemage.org>:

 utils/sunbird/000_add-missing-LDFLAGS.patch            |   10 
 utils/sunbird/032_firefox-2.0_ppc64-1.patch            |  662 +++++++++++++++++
 utils/sunbird/033_firefox-2.0_ppc_powerpc.patch        |   17 
 utils/sunbird/050_respect-host-variable.patch          |   24 
 utils/sunbird/055_firefox-2.0_gfbsd-pthreads.patch     |   44 +
 utils/sunbird/BUILD                                    |   24 
 utils/sunbird/DEPENDS                                  |   45 -
 utils/sunbird/DETAILS                                  |   15 
 utils/sunbird/HISTORY                                  |   25 
 utils/sunbird/PRE_BUILD                                |   15 
 utils/sunbird/desktop/sunbird.desktop                  |    2 
 utils/sunbird/lightning-sunbird-0.5-source.tar.bz2.sig |binary
 utils/sunbird/mozconfig                                |   24 
 13 files changed, 849 insertions(+), 58 deletions(-)

New commits:
commit a483a6844b7d959287c61a81f4d27d699c0adc4c
Author: Eric Sandall <sandalle at sourcemage.org>
Commit: Eric Sandall <sandalle at sourcemage.org>

    sunbird: Build default extensions and disable xpfe. Works now :)

commit e12f433b2ec2d678a5c2743b5d4a4e661d9c7c6f
Author: Eric Sandall <sandalle at sourcemage.org>
Commit: Eric Sandall <sandalle at sourcemage.org>

    sunbird: Patches from Gentoo for various issues

commit 94dd312cb75882c9d6d786583bd740d308c27aab
Author: Eric Sandall <sandalle at sourcemage.org>
Commit: Eric Sandall <sandalle at sourcemage.org>

    sunbird: Updated to 0.5 (lightning)

diff --git a/utils/sunbird/000_add-missing-LDFLAGS.patch b/utils/sunbird/000_add-missing-LDFLAGS.patch
new file mode 100644
index 0000000..6452dc8
--- /dev/null
+++ b/utils/sunbird/000_add-missing-LDFLAGS.patch
@@ -0,0 +1,10 @@
+--- layout/build/Makefile.in.orig	2007-02-12 20:42:13.000000000 +0100
++++ layout/build/Makefile.in	2007-02-12 20:49:48.000000000 +0100
+@@ -291,6 +291,7 @@
+ endif
+ endif
+ 
++LDFLAGS += -lX11 -lXrender
+ 
+ export:: $(BUILD_DATE)
+ 
diff --git a/utils/sunbird/032_firefox-2.0_ppc64-1.patch b/utils/sunbird/032_firefox-2.0_ppc64-1.patch
new file mode 100644
index 0000000..abac015
--- /dev/null
+++ b/utils/sunbird/032_firefox-2.0_ppc64-1.patch
@@ -0,0 +1,662 @@
+# Upstream https://bugzilla.mozilla.org/show_bug.cgi?id=361415
+
+unchanged:
+--- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/Makefile.in	2006-11-21 17:09:28.000000000 +0000
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in	2006-11-20 10:13:38.000000000 +0000
+@@ -267,6 +267,11 @@
+ ASFILES		:= xptcinvoke_asm_ppc_linux.s xptcstubs_asm_ppc_linux.s
+ AS		:= $(CC) -c -x assembler-with-cpp
+ endif
++ifeq ($(OS_ARCH)$(OS_TEST),Linuxppc64)
++CPPSRCS		:= xptcinvoke_ppc64_linux.cpp xptcstubs_ppc64_linux.cpp
++ASFILES		:= xptcinvoke_asm_ppc64_linux.s xptcstubs_asm_ppc64_linux.s
++AS		:= $(CC) -c -x assembler-with-cpp
++endif
+ 
+ #
+ # NetBSD/PPC
+diff -u mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s
+--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s	2006-11-21 14:01:45.000000000 +0000
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc64_linux.s	2006-11-22 10:43:26.000000000 +0000
+@@ -0,0 +1,154 @@
++// -*- Mode: Asm -*-
++//
++// The contents of this file are subject to the Netscape Public
++// License Version 1.1 (the "License"); you may not use this file
++// except in compliance with the License. You may obtain a copy of
++// the License at http://www.mozilla.org/NPL/
++//
++// Software distributed under the License is distributed on an "AS
++// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++// implied. See the License for the specific language governing
++// rights and limitations under the License.
++//
++// The Original Code is mozilla.org code.
++//
++// The Initial Developer of the Original Code is Netscape
++// Communications Corporation.  Portions created by Netscape are
++// Copyright (C) 1999 Netscape Communications Corporation. All
++// Rights Reserved.
++//
++// Contributor(s):
++//   dwmw2 at infradead.org (David Woodhouse)
++//   Franz.Sirl-kernel at lauterbach.com (Franz Sirl)
++//   beard at netscape.com (Patrick Beard)
++//   waterson at netscape.com (Chris Waterson)
++//
++
++.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4
++.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
++.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14
++.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
++.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
++.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
++.set r30,30; .set r31,31
++.set f0,0; .set f1,1; .set f2,2; .set f3,3; .set f4,4
++.set f5,5; .set f6,6; .set f7,7; .set f8,8; .set f9,9
++.set f10,10; .set f11,11; .set f12,12; .set f13,13; .set f14,14
++.set f15,15; .set f16,16; .set f17,17; .set f18,18; .set f19,19
++.set f20,20; .set f21,21; .set f22,22; .set f23,23; .set f24,24
++.set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29
++.set f30,30; .set f31,31
++
++
++//
++// XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++//                    PRUint32 paramCount, nsXPTCVariant* params)
++//
++
++	.section ".toc","aw"
++	.section ".text"
++	.align 2
++	.globl XPTC_InvokeByIndex
++	.section ".opd","aw"
++	.align 3
++XPTC_InvokeByIndex:
++	.quad   .XPTC_InvokeByIndex,.TOC. at tocbase
++	.previous
++	.type  XPTC_InvokeByIndex, at function
++.XPTC_InvokeByIndex:
++	mflr	0
++	std	0,16(r1)
++	
++	std	r29,-24(r1)
++	std	r30,-16(r1)
++	std	r31,-8(r1)
++
++	mr	r29,r3			// Save 'that' in r29
++	mr	r30,r4			// Save 'methodIndex' in r30
++	mr	r31,r1			// Save old frame
++
++	// Allocate stack frame with space for params. Since at least the
++	// first 7 parameters (not including 'that') will be in registers,
++	// we don't actually need stack space for those. We must ensure
++	// that the stack remains 16-byte aligned.
++	//
++	//  | ..128-byte stack frame.. |     | 7 GP | 13 FP | 3 NV |
++	//  |               |(params)........| regs | regs  | regs |
++	// (r1)...........(+112)....(+128)
++	//                               (-23*8).(-16*8).(-3*8)..(r31)
++
++	// +stack frame, -unused stack params, +regs storage, +1 for alignment
++	addi	r7,r5,((112/8)-7+7+13+3+1)
++	rldicr	r7,r7,3,59		// multiply by 8 and mask with ~15
++	neg	r7,r7
++	stdux	r1,r1,r7
++
++	
++	// Call invoke_copy_to_stack(PRUint64* gpregs, double* fpregs,
++	//			     PRUint32 paramCount, nsXPTCVariant* s, 
++	//			     PRUint64* d))
++	
++	// r5, r6 are passed through intact (paramCount, params)
++	// r7 (d) has to be r1+112 -- where parameters are passed on the stack.
++	// r3, r4 are above that, easier to address from r31 than from r1
++
++	subi	r3,r31,(23*8)		// r3 --> GPRS
++	subi	r4,r31,(16*8)		// r4 --> FPRS
++	addi	r7,r1,112		// r7 --> params
++	bl	invoke_copy_to_stack
++	nop
++
++	// Set up to invoke function
++	
++	ld	r9,0(r29)		// vtable (r29 is 'that')
++	mr	r3,r29		// self is first arg, obviously
++
++	sldi	r30,r30,3	// Find function descriptor 
++	add	r9,r9,r30
++	ld	r9,0(r9)
++	
++	ld	r0,0(r9)	// Actual address from fd.
++	std	r2,40(r1)	// Save r2 (TOC pointer)
++
++	mtctr	0
++	ld	r11,16(r9)	// Environment pointer from fd.
++	ld	r2,8(r9)	// TOC pointer from fd.
++
++	// Load FP and GP registers as required
++	ld	r4, -(23*8)(r31) 
++	ld	r5, -(22*8)(r31) 
++	ld	r6, -(21*8)(r31) 
++	ld	r7, -(20*8)(r31) 
++	ld	r8, -(19*8)(r31) 
++	ld	r9, -(18*8)(r31) 
++	ld	r10, -(17*8)(r31) 
++
++	lfd	f1, -(16*8)(r31)
++	lfd	f2, -(15*8)(r31)
++	lfd	f3, -(14*8)(r31)
++	lfd	f4, -(13*8)(r31)
++	lfd	f5, -(12*8)(r31)
++	lfd	f6, -(11*8)(r31)
++	lfd	f7, -(10*8)(r31)
++	lfd	f8, -(9*8)(r31)
++	lfd	f9, -(8*8)(r31)
++	lfd	f10, -(7*8)(r31)
++	lfd	f11, -(6*8)(r31)
++	lfd	f12, -(5*8)(r31)
++	lfd	f13, -(4*8)(r31)
++
++	bctrl			// Do it
++
++	ld	r2,40(r1)	// Load our own TOC pointer
++	ld	r1,0(r1)	// Revert stack frame
++	ld	0,16(r1)	// Reload lr
++	ld	29,-24(r1)	// Restore NVGPRS
++	ld	30,-16(r1)
++	ld	31,-8(r1)
++	mtlr	0
++	blr
++
++	.size   XPTC_InvokeByIndex,.-.XPTC_InvokeByIndex
++
++	/* Magic indicating no need for an executable stack */
++	.section .note.GNU-stack, "", @progbits ; .previous
+--- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc64_linux.cpp	1970-01-01 01:00:00.000000000 +0100
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_ppc64_linux.cpp	2006-11-21 17:00:06.000000000 +0000
+@@ -0,0 +1,127 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Mozilla Public License Version
++ * 1.1 (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1998
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *   dwmw2 at infradead.org (David Woodhouse)
++ *   Franz.Sirl-kernel at lauterbach.com (Franz Sirl)
++ *   beard at netscape.com (Patrick Beard)
++ *   waterson at netscape.com (Chris Waterson)
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either of the GNU General Public License Version 2 or later (the "GPL"),
++ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the MPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the MPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++// Platform specific code to invoke XPCOM methods on native objects
++
++// The purpose of XPTC_InvokeByIndex() is to map a platform
++// independent call to the platform ABI. To do that,
++// XPTC_InvokeByIndex() has to determine the method to call via vtable
++// access. The parameters for the method are read from the
++// nsXPTCVariant* and prepared for the native ABI.
++
++#include <stdio.h>
++#include "xptcprivate.h"
++
++// 8 integral parameters are passed in registers, not including 'that'
++#define GPR_COUNT     7
++
++// 8 floating point parameters are passed in registers, floats are
++// promoted to doubles when passed in registers
++#define FPR_COUNT     13
++
++extern "C" PRUint32
++invoke_count_words(PRUint32 paramCount, nsXPTCVariant* s)
++{
++  return PRUint32(((paramCount * 2) + 3) & ~3);
++}
++
++extern "C" void
++invoke_copy_to_stack(PRUint64* gpregs,
++                     double* fpregs,
++                     PRUint32 paramCount,
++                     nsXPTCVariant* s, 
++                     PRUint64* d)
++{
++    PRUint64 tempu64;
++
++    for(uint32 i = 0; i < paramCount; i++, s++) {
++        if(s->IsPtrData())
++            tempu64 = (PRUint64) s->ptr;
++        else {
++            switch(s->type) {
++            case nsXPTType::T_FLOAT:                                  break;
++            case nsXPTType::T_DOUBLE:                                 break;
++            case nsXPTType::T_I8:     tempu64 = s->val.i8;            break;
++            case nsXPTType::T_I16:    tempu64 = s->val.i16;           break;
++            case nsXPTType::T_I32:    tempu64 = s->val.i32;           break;
++            case nsXPTType::T_I64:    tempu64 = s->val.i64;           break;
++            case nsXPTType::T_U8:     tempu64 = s->val.u8;            break;
++            case nsXPTType::T_U16:    tempu64 = s->val.u16;           break;
++            case nsXPTType::T_U32:    tempu64 = s->val.u32;           break;
++            case nsXPTType::T_U64:    tempu64 = s->val.u64;           break;
++            case nsXPTType::T_BOOL:   tempu64 = s->val.b;             break;
++            case nsXPTType::T_CHAR:   tempu64 = s->val.c;             break;
++            case nsXPTType::T_WCHAR:  tempu64 = s->val.wc;            break;
++            default:                  tempu64 = (PRUint64) s->val.p;  break;
++            }
++        }
++
++        if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
++            if (i < FPR_COUNT)
++                fpregs[i]    = s->val.d;
++            else
++                *(double *)d = s->val.d;
++        }
++        else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
++            if (i < FPR_COUNT) {
++                fpregs[i]   = s->val.f; // if passed in registers, floats are promoted to doubles
++            } else {
++                float *p = (float *)d;
++                p++;
++                *p = s->val.f;
++            }
++        }
++        else {
++            if (i < GPR_COUNT)
++                gpregs[i] = tempu64;
++            else
++                *d          = tempu64;
++        }
++        if (i >= 7)
++            d++;
++    }
++}
++
++extern "C"
++XPTC_PUBLIC_API(nsresult)
++XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
++                   PRUint32 paramCount, nsXPTCVariant* params);
++
+diff -u mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s
+--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s	2006-11-21 16:38:52.000000000 +0000
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc64_linux.s	2006-11-22 10:51:14.000000000 +0000
+@@ -0,0 +1,102 @@
++// -*- Mode: Asm -*-
++//
++// The contents of this file are subject to the Netscape Public
++// License Version 1.1 (the "License"); you may not use this file
++// except in compliance with the License. You may obtain a copy of
++// the License at http://www.mozilla.org/NPL/
++//
++// Software distributed under the License is distributed on an "AS
++// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
++// implied. See the License for the specific language governing
++// rights and limitations under the License.
++//
++// The Original Code is mozilla.org code.
++//
++// The Initial Developer of the Original Code is Netscape
++// Communications Corporation.  Portions created by Netscape are
++// Copyright (C) 1999 Netscape Communications Corporation. All
++// Rights Reserved.
++//
++// Contributor(s):
++//   dwmw2 at infradead.org (David Woodhouse)
++//   Franz.Sirl-kernel at lauterbach.com (Franz Sirl)
++//   beard at netscape.com (Patrick Beard)
++//   waterson at netscape.com (Chris Waterson)
++//
++
++.set r0,0; .set r1,1; .set RTOC,2; .set r3,3; .set r4,4
++.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
++.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14
++.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
++.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
++.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
++.set r30,30; .set r31,31
++.set f0,0; .set f1,1; .set f2,2; .set f3,3; .set f4,4
++.set f5,5; .set f6,6; .set f7,7; .set f8,8; .set f9,9
++.set f10,10; .set f11,11; .set f12,12; .set f13,13; .set f14,14
++.set f15,15; .set f16,16; .set f17,17; .set f18,18; .set f19,19
++.set f20,20; .set f21,21; .set f22,22; .set f23,23; .set f24,24
++.set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29
++.set f30,30; .set f31,31
++
++	.section ".text"
++	.align 2
++	.globl SharedStub
++	.section	".opd","aw"
++	.align 3
++
++SharedStub:
++	.quad   .SharedStub,.TOC. at tocbase
++	.previous
++      	.type  SharedStub, at function
++
++.SharedStub:
++	mflr	r0
++
++	std	r4, -56(r1)			// Save all GPRS
++	std	r5, -48(r1)
++	std	r6, -40(r1)
++	std	r7, -32(r1)
++	std	r8, -24(r1)
++	std	r9, -16(r1)
++	std	r10, -8(r1)
++
++	stfd	f13, -64(r1)			// ... and FPRS
++	stfd	f12, -72(r1)
++	stfd	f11, -80(r1)
++	stfd	f10, -88(r1)
++	stfd	f9, -96(r1)
++	stfd	f8, -104(r1)
++	stfd	f7, -112(r1)
++	stfd	f6, -120(r1)
++	stfd	f5, -128(r1)
++	stfd	f4, -136(r1)
++	stfd	f3, -144(r1)
++	stfd	f2, -152(r1)
++	stfd	f1, -160(r1)
++
++	subi	r6,r1,56			// r6 --> gprData
++	subi	r7,r1,160			// r7 --> fprData
++	addi	r5,r1,112			// r5 --> extra stack args
++
++	std	r0, 16(r1)
++	
++	stdu	r1,-288(r1)
++					// r3 has the 'self' pointer already
++	
++	mr      r4,r11		// r4 is methodIndex selector, passed
++				// via r11 in the nsXPTCStubBase::StubXX() call
++	
++	bl	PrepareAndDispatch
++	nop
++
++	ld	1,0(r1)				// restore stack
++	ld	r0,16(r1)			// restore LR
++	mtlr	r0
++	blr
++
++	.size   SharedStub,.-.SharedStub
++
++
++/* Magic indicating no need for an executable stack */
++.section .note.GNU-stack, "", @progbits ; .previous
+unchanged:
+--- mozilla.orig/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc64_linux.cpp	1970-01-01 01:00:00.000000000 +0100
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_ppc64_linux.cpp	2006-11-21 16:59:46.000000000 +0000
+@@ -0,0 +1,247 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Mozilla Public License Version
++ * 1.1 (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is mozilla.org code.
++ *
++ * The Initial Developer of the Original Code is
++ * Netscape Communications Corporation.
++ * Portions created by the Initial Developer are Copyright (C) 1999
++ * the Initial Developer. All Rights Reserved.
++ *
++ * Contributor(s):
++ *   dwmw2 at infradead.org (David Woodhouse)
++ *   Franz.Sirl-kernel at lauterbach.com (Franz Sirl)
++ *   beard at netscape.com (Patrick Beard)
++ *   waterson at netscape.com (Chris Waterson)
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either of the GNU General Public License Version 2 or later (the "GPL"),
++ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the MPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the MPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++// Implement shared vtbl methods.
++
++#include "xptcprivate.h"
++
++// The Linux/PPC ABI (aka PPC/SYSV ABI) passes the first 8 integral
++// parameters and the first 13 floating point parameters in registers
++// (r3-r10 and f1-f13), no stack space is allocated for these by the
++// caller.  The rest of the parameters are passed in the callers stack
++// area. The stack pointer has to retain 16-byte alignment, longlongs
++// and doubles are aligned on 8-byte boundaries.
++
++#define PARAM_BUFFER_COUNT     16
++#define GPR_COUNT               7
++#define FPR_COUNT               13
++
++// PrepareAndDispatch() is called by SharedStub() and calls the actual method.
++//
++// - 'args[]' contains the arguments passed on stack
++// - 'gprData[]' contains the arguments passed in integer registers
++// - 'fprData[]' contains the arguments passed in floating point registers
++// 
++// The parameters are mapped into an array of type 'nsXPTCMiniVariant'
++// and then the method gets called.
++#include <stdio.h>
++extern "C" nsresult
++PrepareAndDispatch(nsXPTCStubBase* self,
++                   PRUint64 methodIndex,
++                   PRUint64* args,
++                   PRUint64 *gprData,
++                   double *fprData)
++{
++    nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
++    nsXPTCMiniVariant* dispatchParams = NULL;
++    nsIInterfaceInfo* iface_info = NULL;
++    const nsXPTMethodInfo* info;
++    PRUint32 paramCount;
++    PRUint32 i;
++    nsresult result = NS_ERROR_FAILURE;
++
++    NS_ASSERTION(self,"no self");
++
++    self->GetInterfaceInfo(&iface_info);
++    NS_ASSERTION(iface_info,"no interface info");
++    if (! iface_info)
++        return NS_ERROR_UNEXPECTED;
++
++    iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
++    NS_ASSERTION(info,"no method info");
++    if (! info)
++        return NS_ERROR_UNEXPECTED;
++
++    paramCount = info->GetParamCount();
++
++    // setup variant array pointer
++    if(paramCount > PARAM_BUFFER_COUNT)
++        dispatchParams = new nsXPTCMiniVariant[paramCount];
++    else
++        dispatchParams = paramBuffer;
++
++    NS_ASSERTION(dispatchParams,"no place for params");
++    if (! dispatchParams)
++        return NS_ERROR_OUT_OF_MEMORY;
++
++    PRUint64* ap = args;
++    PRUint64 tempu64;
++
++    for(i = 0; i < paramCount; i++) {
++        const nsXPTParamInfo& param = info->GetParam(i);
++        const nsXPTType& type = param.GetType();
++        nsXPTCMiniVariant* dp = &dispatchParams[i];
++	
++        if (!param.IsOut() && type == nsXPTType::T_DOUBLE) {
++            if (i < FPR_COUNT)
++                dp->val.d = fprData[i];
++            else
++                dp->val.d = *(double*) ap;
++        } else if (!param.IsOut() && type == nsXPTType::T_FLOAT) {
++            if (i < FPR_COUNT)
++                dp->val.f = (float) fprData[i]; // in registers floats are passed as doubles
++            else {
++                float *p = (float *)ap;
++                p++;
++                dp->val.f = *p;
++            }
++        } else { /* integer type or pointer */
++            if (i < GPR_COUNT)
++                tempu64 = gprData[i];
++            else
++                tempu64 = *ap;
++
++            if (param.IsOut() || !type.IsArithmetic())
++                dp->val.p = (void*) tempu64;
++            else if (type ==nsXPTType::T_I8)
++                dp->val.i8  = (PRInt8)   tempu64;
++            else if (type ==nsXPTType::T_I16)
++                dp->val.i16 = (PRInt16)  tempu64;
++            else if (type ==nsXPTType::T_I32)
++                dp->val.i32 = (PRInt32)  tempu64;
++            else if (type ==nsXPTType::T_I64)
++                dp->val.i64 = (PRInt64)  tempu64;
++            else if (type ==nsXPTType::T_U8)
++                dp->val.u8  = (PRUint8)  tempu64;
++            else if (type ==nsXPTType::T_U16)
++                dp->val.u16 = (PRUint16) tempu64;
++            else if (type ==nsXPTType::T_U32)
++                dp->val.u32 = (PRUint32) tempu64;
++            else if (type ==nsXPTType::T_U64)
++                dp->val.u64 = (PRUint64) tempu64;
++            else if (type ==nsXPTType::T_BOOL)
++                dp->val.b   = (PRBool)   tempu64;
++            else if (type ==nsXPTType::T_CHAR)
++                dp->val.c   = (char)     tempu64;
++            else if (type ==nsXPTType::T_WCHAR)
++                dp->val.wc  = (wchar_t)  tempu64;
++            else
++                NS_ASSERTION(0, "bad type");
++        }
++
++        if (i >= 7)
++            ap++;
++    }
++
++    result = self->CallMethod((PRUint16) methodIndex, info, dispatchParams);
++
++    NS_RELEASE(iface_info);
++
++    if (dispatchParams != paramBuffer)
++        delete [] dispatchParams;
++
++    return result;
++}
++
++// Load r11 with the constant 'n' and branch to SharedStub().
++//
++// XXX Yes, it's ugly that we're relying on gcc's name-mangling here;
++// however, it's quick, dirty, and'll break when the ABI changes on
++// us, which is what we want ;-).
++
++#if __GXX_ABI_VERSION < 100
++#error Prehistoric GCC not supported here
++#else
++// gcc-3 version
++//
++// As G++3 ABI contains the length of the functionname in the mangled
++// name, it is difficult to get a generic assembler mechanism like
++// in the G++ 2.95 case.
++// Create names would be like:
++// _ZN14nsXPTCStubBase5Stub1Ev
++// _ZN14nsXPTCStubBase6Stub12Ev
++// _ZN14nsXPTCStubBase7Stub123Ev
++// _ZN14nsXPTCStubBase8Stub1234Ev
++// etc.
++// Use assembler directives to get the names right...
++
++# define STUB_ENTRY(n)							\
++__asm__ (								\
++        ".section \".toc\",\"aw\" \n\t"                                 \
++        ".section \".text\" \n\t"                                       \
++	".align	2 \n\t"							\
++	".if	"#n" < 10 \n\t"						\
++	".globl	_ZN14nsXPTCStubBase5Stub"#n"Ev \n\t"			\
++        ".section \".opd\",\"aw\" \n\t"                                 \
++	".align	3 \n\t"							\
++"_ZN14nsXPTCStubBase5Stub"#n"Ev: \n\t"					\
++        ".quad  ._ZN14nsXPTCStubBase5Stub"#n"Ev,.TOC. at tocbase \n\t"     \
++	".previous \n\t"						\
++	".type	_ZN14nsXPTCStubBase5Stub"#n"Ev, at function \n\n"		\
++"._ZN14nsXPTCStubBase5Stub"#n"Ev: \n\t"					\
++									\
++	".elseif "#n" < 100 \n\t"					\
++	".globl	_ZN14nsXPTCStubBase6Stub"#n"Ev \n\t"			\
++        ".section \".opd\",\"aw\" \n\t"                                 \
++	".align	3 \n\t"							\
++"_ZN14nsXPTCStubBase6Stub"#n"Ev: \n\t"					\
++        ".quad  ._ZN14nsXPTCStubBase6Stub"#n"Ev,.TOC. at tocbase \n\t"     \
++	".previous \n\t"						\
++	".type	_ZN14nsXPTCStubBase6Stub"#n"Ev, at function \n\n"		\
++"._ZN14nsXPTCStubBase6Stub"#n"Ev: \n\t"					\
++									\
++	".elseif "#n" < 1000 \n\t"					\
++	".globl	_ZN14nsXPTCStubBase7Stub"#n"Ev \n\t"			\
++        ".section \".opd\",\"aw\" \n\t"                                 \
++	".align	3 \n\t"							\
++"_ZN14nsXPTCStubBase7Stub"#n"Ev: \n\t"					\
++        ".quad  ._ZN14nsXPTCStubBase7Stub"#n"Ev,.TOC. at tocbase \n\t"     \
++	".previous \n\t"						\
++	".type	_ZN14nsXPTCStubBase7Stub"#n"Ev, at function \n\n"		\
++"._ZN14nsXPTCStubBase7Stub"#n"Ev: \n\t"					\
++									\
++	".else \n\t"							\
++	".err	\"stub number "#n" >= 1000 not yet supported\"\n"	\
++	".endif \n\t"							\
++									\
++	"li	11,"#n" \n\t"						\
++	"b	SharedStub \n"					\
++);
++#endif
++
++#define SENTINEL_ENTRY(n)                            \
++nsresult nsXPTCStubBase::Sentinel##n()               \
++{                                                    \
++  NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
++  return NS_ERROR_NOT_IMPLEMENTED;                   \
++}
++
++#include "xptcstubsdef.inc"
diff --git a/utils/sunbird/033_firefox-2.0_ppc_powerpc.patch b/utils/sunbird/033_firefox-2.0_ppc_powerpc.patch
new file mode 100644
index 0000000..f909927
--- /dev/null
+++ b/utils/sunbird/033_firefox-2.0_ppc_powerpc.patch
@@ -0,0 +1,17 @@
+--- mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig	2007-03-05 13:46:38.000000000 +0100
++++ mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in	2007-03-05 13:47:30.000000000 +0100
+@@ -288,12 +288,12 @@
+ #
+ # Linux/PPC
+ #
+-ifeq ($(OS_ARCH)$(OS_TEST),Linuxppc)
++ifeq ($(OS_ARCH)$(OS_TEST),Linuxpowerpc)
+ CPPSRCS		:= xptcinvoke_ppc_linux.cpp xptcstubs_ppc_linux.cpp
+ ASFILES		:= xptcinvoke_asm_ppc_linux.s xptcstubs_asm_ppc_linux.s
+ AS		:= $(CC) -c -x assembler-with-cpp
+ endif
+-ifeq ($(OS_ARCH)$(OS_TEST),Linuxppc64)
++ifeq ($(OS_ARCH)$(OS_TEST),Linuxpowerpc64)
+ CPPSRCS		:= xptcinvoke_ppc64_linux.cpp xptcstubs_ppc64_linux.cpp
+ ASFILES		:= xptcinvoke_asm_ppc64_linux.s xptcstubs_asm_ppc64_linux.s
+ AS		:= $(CC) -c -x assembler-with-cpp
diff --git a/utils/sunbird/050_respect-host-variable.patch b/utils/sunbird/050_respect-host-variable.patch
new file mode 100644
index 0000000..3cba8d3
--- /dev/null
+++ b/utils/sunbird/050_respect-host-variable.patch
@@ -0,0 +1,24 @@
+# https://bugs.gentoo.org/show_bug.cgi?id=168893
+
+--- mozilla/configure.in.old	2007-03-02 23:28:27.000000000 +0200
++++ mozilla/configure.in	2007-03-02 23:29:23.000000000 +0200
+@@ -825,7 +825,6 @@
+     OS_TARGET="${target_os}"
+     OS_ARCH=`echo $target_os | sed -e 's|/|_|g'`
+     OS_RELEASE=
+-    OS_TEST="${target_cpu}"
+     case "${target_os}" in
+         linux*)       OS_ARCH=Linux ;;
+         solaris*)     OS_ARCH=SunOS OS_RELEASE=5 ;;
+@@ -837,8 +836,10 @@
+     OS_TARGET=`uname -s`
+     OS_ARCH=`uname -s | sed -e 's|/|_|g'`
+     OS_RELEASE=`uname -r`
+-    OS_TEST=`uname -m`
+ fi
++
++OS_TEST="${target_cpu}"
++
+ _COMPILER_PREFIX=
+ 
+ HOST_OS_ARCH=`echo $host_os | sed -e 's|/|_|g'`
diff --git a/utils/sunbird/055_firefox-2.0_gfbsd-pthreads.patch b/utils/sunbird/055_firefox-2.0_gfbsd-pthreads.patch
new file mode 100644
index 0000000..5a92855
--- /dev/null
+++ b/utils/sunbird/055_firefox-2.0_gfbsd-pthreads.patch
@@ -0,0 +1,44 @@
+# https://bugs.gentoo.org/show_bug.cgi?id=169825
+
+--- mozilla/config/rules.mk.orig	Thu Sep 14 14:07:03 2006
++++ mozilla/config/rules.mk	Wed Oct 18 11:00:09 2006
+@@ -442,9 +442,7 @@
+ endif
+ 
+ ifeq ($(OS_ARCH),FreeBSD)
+-ifdef IS_COMPONENT
+-EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic
+-endif
++EXTRA_DSO_LDOPTS += -Wl,-Bsymbolic -lc
+ endif
+ 
+ ifeq ($(OS_ARCH),NetBSD)
+--- mozilla/configure.in.orig	2007-02-06 02:37:37 -0300
++++ mozilla/configure.in	2007-03-07 15:35:41 -0300
+@@ -2667,7 +2667,7 @@
+ *-hpux11.*)
+ 	;;
+ *)
+-	AC_CHECK_LIB(c_r, gethostbyname_r)
++	AC_SEARCH_LIBS([gethostbyname_r], [c_r])
+ 	;;
+ esac
+ AC_CHECK_LIB(m, atan)
+--- mozilla/configure.in.orig   2007-02-06 02:37:37 -0300
++++ mozilla/configure.in	2007-03-07 13:59:53 -0300
+@@ -2839,11 +2839,12 @@
+ 	    *-*-freebsd*)
+ 			AC_DEFINE(_REENTRANT)
+ 			AC_DEFINE(_THREAD_SAFE)
+-			dnl -pthread links in -lc_r, so don't specify it explicitly.
+-			if test "$ac_cv_have_dash_pthread" = "yes"; then
+-				_PTHREAD_LDFLAGS="-pthread"
++			dnl use the environment PTHREAD_LIBS
++			if test -n "$PTHREAD_LIBS"; then
++				_PTHREAD_LDFLAGS="$PTHREAD_LIBS"
+ 			else
+-				_PTHREAD_LDFLAGS="-lc_r"
++				_PTHREAD_LDFLAGS="-lpthread"
+ 			fi
++			LDFLAGS="${_PTHREAD_LDFLAGS} ${LDFLAGS}"
+ 			;;
diff --git a/utils/sunbird/BUILD b/utils/sunbird/BUILD
index e8b7f56..6cec49a 100755
--- a/utils/sunbird/BUILD
+++ b/utils/sunbird/BUILD
@@ -1,5 +1,19 @@
-CFLAGS="${CFLAGS//-O3/-O2}"      &&
-CXXFLAGS="${CXXFLAGS//-O3/-O2}"  &&
-make_single                      &&
-make -f client.mk build          &&
-make_normal
+export CFLAGS="${CFLAGS//-O3/-O2}"      &&
+export CXXFLAGS="${CXXFLAGS//-O3/-O2}"  &&
+export MOZ_CO_PROJECT=calendar          &&
+export BUILD_OFFICIAL=1                 &&
+export MOZILLA_OFFICIAL=1               &&
+
+OPTS="--with-pthreads                                                \
+      --with-default-mozilla-five-home=$INSTALL_ROOT/usr/lib/$SPELL  \
+      --enable-application=calendar                                  \
+      --enable-extensions=default                                    \
+      --disable-system-cairo                                         \
+      --disable-updater                                              \
+      --disable-installer                                            \
+      --disable-tests                                                \
+      --disable-xpfe-components                                      \
+      $OPTS"                                                         &&
+
+make_single    &&
+default_build
diff --git a/utils/sunbird/DEPENDS b/utils/sunbird/DEPENDS
index 3c1899b..2a90992 100755
--- a/utils/sunbird/DEPENDS
+++ b/utils/sunbird/DEPENDS
@@ -1,14 +1,31 @@
-depends atk                         &&
-depends g++                         &&
-depends xulrunner                   &&
-depends gtk+2                       &&
-depends glib2                       &&
-depends nspr                        &&
-depends nss                         &&
-depends jpeg                        &&
-depends zlib                        &&
-depends libpng                      &&
-depends glitz                       &&
-depends JDK                         &&
-depends libidl                      &&
-depends X11-SERVER 
+depends  atk                                                     &&
+depends  fontconfig  '--enable-xft  --disable-freetype2'         &&
+depends  g++                                                     &&
+depends  GECKO                                                   &&
+depends  gtk+2       '--enable-default-toolkit=gtk2'             &&
+depends  glib2                                                   &&
+depends  JDK                                                     &&
+depends  jpeg        "--with-system-jpeg=$INSTALL_ROOT/usr/lib"  &&
+depends  libidl                                                  &&
+depends  libpng      "--with-system-png=$INSTALL_ROOT/usr/lib"   &&
+depends  nspr        '--with-system-nspr'                        &&
+depends  nss         '--with-system-nss'                         &&
+depends  pango       '--enable-pango'                            &&
+depends  X11-SERVER                                              &&
+depends  zlib        "--with-system-zlib=$INSTALL_ROOT/usr/lib"  &&
+
+source  $GRIMOIRE/FUNCTIONS  &&
+
+if  check_if_xorg_modular_server;  then
+  depends  libxft
+fi  &&
+
+optional_depends  libgnomeui                       \
+                  '--enable-libgnomeui'            \
+                  '--disable-libgnome-ui'          \
+                  'for GNOME integration support'  &&
+
+optional_depends  gnome-vfs2                              \
+                  '--enable-gnomevfs'                     \
+                  '--disable-gnomevfs'                    \
+                  'for GNOME Virtual Filesystem support'
diff --git a/utils/sunbird/DETAILS b/utils/sunbird/DETAILS
index 10e9a0a..8c5f782 100755
--- a/utils/sunbird/DETAILS
+++ b/utils/sunbird/DETAILS
@@ -1,11 +1,12 @@
            SPELL=sunbird
-         VERSION=0.3.1
-          SOURCE="${SPELL}-${VERSION}.source.tar.bz2"
-   SOURCE_URL[0]=http://releases.mozilla.org/pub/mozilla.org/calendar/${SPELL}/releases/${VERSION}/source/${SOURCE}
-     SOURCE_HASH=sha512:9b44e7e1f19ac96c81ff23f171ae278e8ce9f2dd5b88789ae0efbbf14b32072b1e89b1ec5b3c67464fa7dea2e4988af2dbf92cc8db4df567e28da8323ed84f23
-SOURCE_DIRECTORY="${BUILD_DIRECTORY}/mozilla"
-        WEB_SITE="http://www.mozilla.org"
-      LICENSE[0]=GPL
+         VERSION=0.5
+          SOURCE=lightning-$SPELL-$VERSION-source.tar.bz2
+   SOURCE_URL[0]=http://releases.mozilla.org/pub/mozilla.org/calendar/$SPELL/re
+      SOURCE_GPG="gurus.gpg:$SOURCE.sig"
+#     SOURCE_HASH=sha512:9b44e7e1f19ac96c81ff23f171ae278e8ce9f2dd5b88789ae0efbb
+SOURCE_DIRECTORY="$BUILD_DIRECTORY/mozilla"
+       LICENSE[0]=GPL
+        WEB_SITE="http://www.mozilla.org/projects/calendar/"
          ENTERED=20070501
            SHORT="Mozilla-style ease-of-use for your calendar"
 cat << EOF
diff --git a/utils/sunbird/HISTORY b/utils/sunbird/HISTORY
index 4187f1f..a4bb26a 100644
--- a/utils/sunbird/HISTORY
+++ b/utils/sunbird/HISTORY
@@ -1,6 +1,31 @@
+2007-07-19 Eric Sandall <sandalle at sourcemage.org>
+	* BUILD: Enable default extensions
+	  Disable building xpfe component, 'tis broken
+
+2007-07-18 Eric Sandall <sandalle at sourcemage.org>
+	* DETAILS: Updated to 0.5
+	  Uses Lightning source code (works with Thunderbird)
+	  Set WEB_SITE to sunbird specific site
+	* BUILD: Use default_build and use OPTS instead of mozconfig
+	  Export variables
+	  Added BUILD_OFFICIAL=1 and MOZILLA_OFFICIAL=1
+	* DEPENDS: Pass dependency flags
+	  Added dependency on pango
+	  Added optional dependencies on libgnomeui and gnome-vfs2
+	  Removed dependency on glitz
+	  Use any GECKO provider, not just xulrunner
+	* PRE_BUILD: Apply patches from Gentoo
+	* desktop/sunbird.desktop: Update Version field
+	* mozconfig: Removed, now using ./configure flags
+	* 000_add-missing-LDFLAGS.patch, 032_firefox-2.0_ppc64-1.patch,
+	  033_firefox-2.0_ppc_powerpc.patch, 050_respect-host-variable.patch,
+	  055_firefox-2.0_gfbsd-pthreads.patch: Patches from
+	  http://gentoo.osuosl.org/distfiles/mozilla-sunbird-0.5-patches-0.1.tar.bz2
+
 2007-05-09 Florian Franzmann <siflfran at hawo.stw.uni-erlangen.de>
 	* DETAILS: really use $VERSION
 
 2007-05-01 Florian Franzmann <siflfran at hawo.stw.uni-erlangen.de>
 	* desktop/sunbird.desktop, BUILD, HISTORY, mozconfig, PRE_BUILD, 
 	  DEPENDS, DETAILS: created spell
+
diff --git a/utils/sunbird/PRE_BUILD b/utils/sunbird/PRE_BUILD
index 8170abe..29aee4e 100755
--- a/utils/sunbird/PRE_BUILD
+++ b/utils/sunbird/PRE_BUILD
@@ -1,7 +1,8 @@
-default_pre_build &&
-cat $SCRIPT_DIRECTORY/mozconfig | \
-	sed -e "s/INSTALL_ROOT/$INSTALL_ROOT/g" -e "s/BUILD/$BUILD/g" \
-	> $SOURCE_DIRECTORY/.mozconfig &&
-if [[ $CROSS_INSTALL == on ]]; then 
-	echo "ac_add_options --host=${HOST}" >> $SOURCE_DIRECTORY/.mozconfig
-fi
+default_pre_build  &&
+cd  $SOURCE_DIRECTORY  &&
+
+patch -p0 < $SCRIPT_DIRECTORY/000_add-missing-LDFLAGS.patch         &&
+patch -p1 < $SCRIPT_DIRECTORY/032_firefox-2.0_ppc64-1.patch         &&
+patch -p1 < $SCRIPT_DIRECTORY/033_firefox-2.0_ppc_powerpc.patch     &&
+patch -p1 < $SCRIPT_DIRECTORY/050_respect-host-variable.patch       &&
+patch -p1 < $SCRIPT_DIRECTORY/055_firefox-2.0_gfbsd-pthreads.patch
diff --git a/utils/sunbird/desktop/sunbird.desktop b/utils/sunbird/desktop/sunbird.desktop
index 9f5f6f4..ef4e143 100644
--- a/utils/sunbird/desktop/sunbird.desktop
+++ b/utils/sunbird/desktop/sunbird.desktop
@@ -1,6 +1,6 @@
 [Desktop Entry]
 Encoding=UTF-8
-Version=0.3.1.source
+Version=0.5.source
 Name=sunbird
 Type=Application
 Comment=Mozilla-style ease-of-use for your calendar
diff --git a/utils/sunbird/lightning-sunbird-0.5-source.tar.bz2.sig b/utils/sunbird/lightning-sunbird-0.5-source.tar.bz2.sig
new file mode 100644
index 0000000..32533fe
Binary files /dev/null and b/utils/sunbird/lightning-sunbird-0.5-source.tar.bz2.sig differ
diff --git a/utils/sunbird/mozconfig b/utils/sunbird/mozconfig
deleted file mode 100644
index 18ea4a4..0000000
--- a/utils/sunbird/mozconfig
+++ /dev/null
@@ -1,24 +0,0 @@
-mk_add_options MOZ_CO_PROJECT=calendar
-ac_add_options --with-pthreads
-ac_add_options --with-system-nspr
-ac_add_options --with-system-nss
-ac_add_options --with-system-jpeg=/usr/lib
-ac_add_options --with-system-zlib=/usr/lib
-ac_add_options --with-system-png=/usr/lib
-ac_add_options --enable-application=calendar
-ac_add_options --enable-default-toolkit=gtk2 
-ac_add_options --disable-installer
-ac_add_options --disable-updater
-ac_add_options --disable-freetype2 
-ac_add_options --enable-pango
-ac_add_options --disable-dbus
-ac_add_options --disable-installer
-ac_add_options --disable-updater
-ac_add_options --disable-tests
-ac_add_options --with-default-mozilla-five-home=/usr/lib/sunbird
-ac_add_options --prefix="INSTALL_ROOT/usr"
-ac_add_options --sysconfdir="INSTALL_ROOT/etc"
-ac_add_options --localstatedir="INSTALL_ROOT/var"
-ac_add_options --mandir="INSTALL_ROOT/usr/share/man"
-ac_add_options --infodir="INSTALL_ROOT/usr/share/info"
-ac_add_options --build="BUILD"



More information about the SM-Commit mailing list