diff options
author | Daniel Solano Gómez <gentoo@sattvik.com> | 2010-09-16 21:12:27 -0500 |
---|---|---|
committer | Daniel Solano Gómez <gentoo@sattvik.com> | 2010-09-16 21:12:27 -0500 |
commit | 52b63f8ead5f5106238801628bb3b223e806adc3 (patch) | |
tree | 356454827f228d92d1ea53660414640d011cb317 | |
parent | Add icecat 3.6.9 that does not depend on net-print/cups[gnutls]. (diff) | |
download | sattvik-52b63f8ead5f5106238801628bb3b223e806adc3.tar.gz sattvik-52b63f8ead5f5106238801628bb3b223e806adc3.tar.bz2 sattvik-52b63f8ead5f5106238801628bb3b223e806adc3.zip |
Add net-libs/xulrunner-1.9.2.9 without cups[gnutls].
20 files changed, 1569 insertions, 0 deletions
diff --git a/net-libs/xulrunner/Manifest b/net-libs/xulrunner/Manifest new file mode 100644 index 0000000..b7d1589 --- /dev/null +++ b/net-libs/xulrunner/Manifest @@ -0,0 +1,21 @@ +AUX 000_flex-configure-LANG.patch 1761 RMD160 638ae47607f582d6d264f7b6f4c3626ff60dbcb6 SHA1 db6d868d034b46b63ad292ab2e1c9b889fbeef75 SHA256 88719f2b3ab2be74a4d27173f7464f6fbc8e7697b84e3c32d19cf6e16170e532 +AUX 066-fix-includedir-mozilla-js.patch 747 RMD160 39c4430f77e42f5f5ad5f8038c036fccac1a7bb0 SHA1 9a1a09ee9bdca8ab9aeec6408baf207da9abe88a SHA256 069f6b1a43662e417e7f0194ceb039941c209409f8fb788914f862595cdf52f4 +AUX 1000_fix_alignment.patch 796 RMD160 d6098c483a90d47ead8cc7c643bf51270465b4cd SHA1 d2e861a0892550659a152d6a4ae9a1d31996c800 SHA256 49675bf2771b3e1bc50069f3a07f96062c771e8281d8e5abc2219dd08a23d377 +AUX 1002_fix-system-hunspell-dict-detections.patch 3394 RMD160 5db17109743eeff4550dd23c7780afb5eead6505 SHA1 3855eec6b3fc23652bb113ce4215555e7375566e SHA256 335e6f51c5e22ef8735c5a4c99b21b903f6d5dd32d6e766761c39a421ee651f3 +AUX 1009-armv4t-nanojit-v2.patch 12251 RMD160 9e9d862879d4897067605879245c1a6d50cf32fe SHA1 dcfe3da40dc822f2769e244571b721b59e59f322 SHA256 68c4df9c5313b93e8c5d7c7e8ed8375a88e9afa28c05e3965180058ba06cf05b +AUX 301-xulrunner-xpctools.diff 550 RMD160 12d370d5473de5c54233a70533cd35e37305ef86 SHA1 e3812ce6a4446b0b9d496a9dd4760d03bf0de449 SHA256 6bf510f7df5a41f47501cbdbcffc46d0c04865e3597dc6a575cd4a9cfae1def4 +AUX 801-enable-x86_64-tracemonkey.patch 501 RMD160 e8341671a9ab7f05cf58735a2b862ded55d82829 SHA1 d0c194c79993c3c47a8c46726d3f024e044766a0 SHA256 20f558efbf4ed1960b390c353c7eeb94108fcdb8aaf33f1fea6caf44468aeb7c +AUX fix_crash_in_windowwatcher.patch 1102 RMD160 d539f5d8d82b389a8b2969a294821fd2d1184dd4 SHA1 0c2a8a36cdff57ba45166c76def0950cce297470 SHA256 5dd5145c1f3c0de1267384f0d68aa48c7cf50ba080d5074144f5b706af85d737 +AUX xulrunner-1.9-no_sunstudio.patch 416 RMD160 fbd1be7182ff8a7aead935cf2f2ce5432aa5f5b8 SHA1 b50c3c30485ef140a0aeeb6de3875761cd906bcb SHA256 2dce8f5a07c623701ce5ae8c2517bd8776adff6c3a371d4762570e806ccf0a34 +AUX xulrunner-1.9-solaris64.patch 18082 RMD160 8d1b3e2b8a6eb191b0d775f0e96391a321d6e981 SHA1 b984870ff665613ece1af103220f7a7a2d4296cb SHA256 d6c8a8f5835aa3075f1da70aa7524dc81d4a081d9b78503ec929d22e5c742f05 +AUX xulrunner-1.9.1.5-solaris-undef-regs.patch 433 RMD160 11f805b661ce8ded829b00ae5e3b134a32420ac4 SHA1 d90ef838e52c3f3d7d21e91bb2451614a9ebefbc SHA256 730150845b311b394dc0c398afb72ef74c7d220dbc6013872d922610189ab0f8 +AUX xulrunner-1.9.2-arm-fixes.patch 587 RMD160 495e8037785a1867fad0c088a4c834df6f02291c SHA1 5f08ef1f65771c2891a067c7baac8a4ef8466deb SHA256 a1b0aef546deecafe64c9ce70b08e7252a3eaf8d84a381a62b5edfaf1f735817 +AUX xulrunner-1.9.2-fix-pkgconfig-file.patch 397 RMD160 f1724e2476d21751e59845826dfc76dadd9db048 SHA1 0f70bfb689cba2fc609b6642408c41b0032422bc SHA256 74590a970f96a767c353e5530e40048c3c1ea0f652029eb35e782029c0b45d6e +AUX xulrunner-1.9.2-noalsa-fixup.patch 1031 RMD160 6eae45ee3e29fa47a7b31688cfcbfb594fcdd79b SHA1 845d4962708281bbd0cba45db82335739a50897b SHA256 1c4e017b6a8d81267a9d4b29b10cc4cfe69b090f8f8903a663f25b5e300eddd5 +AUX xulrunner-1.9.2-solaris-madvise.patch 339 RMD160 50228123c1e85a5bbbe9b53d669f219916addac4 SHA1 363f9a62cd28bc4c0a326b73041c0b9f76909079 SHA256 8380ccd3153e9f31a1c6dcd45cc3ca8a772b2f7663d2839e92831c0198d3f90c +AUX xulrunner-1.9_beta5-prefix.patch 1824 RMD160 e784c2fe11620a39699aea341d2e363ca4ce9e1e SHA1 6992f18c0ea289a28bcf2ea23f00bec88a791af0 SHA256 0d3c6f761dfce8d86be4af75c994100152e889065ad3aa78d5ff7cdfad0a86ad +AUX xulrunner-default-prefs.js 677 RMD160 73ec130da332c1d6517a6f838d5fab0cc134289a SHA1 b9efc3ef5e95ad3081f6b68d771e32e848b4b9ac SHA256 53493080276f221f1619153c114caf268206a6fa107972b33a4eb7f1c1cf6fe8 +DIST firefox-3.6.9.source.tar.bz2 51240588 RMD160 530b1d64cc02ba0433c3a39d1c97c569dad090ef SHA1 2429154c8d50bb5eeef80233b56fb26dcf727ea3 SHA256 9f7f09e2d064a5835d719ccb59a70d2d32a1860f67cb9cc88c4b693668580503 +DIST xulrunner-1.9.2-patches-0.7.tar.bz2 16366 RMD160 2bfa5f56d58d5bb4508512190cf07454814fb0b5 SHA1 2c6e2cfb0c50a5595795561126de26941dbed576 SHA256 3e25e9b8d5fe9109f03889bca9240f92acd502fd68efe0e7eda304f5487b6bf0 +EBUILD xulrunner-1.9.2.9.ebuild 7934 RMD160 93945468f9a5a668f2e19faa0f6b84504e45bc36 SHA1 c6475a85ab7be90f6428fdfcaba8a5b6bd9b0658 SHA256 fc7a2a57a2d40464e206595f6907d06bb7afdf85a8ca05675800b24b386f624c +MISC metadata.xml 534 RMD160 6f9915565c51559c0e4726fed4e43cffce894306 SHA1 7ababd8846ab59b3ea43ac0153750584aa792055 SHA256 60f561d9e9846e96bfa0d6a9161058986c65dba93879073e7138477b6ce61978 diff --git a/net-libs/xulrunner/files/000_flex-configure-LANG.patch b/net-libs/xulrunner/files/000_flex-configure-LANG.patch new file mode 100644 index 0000000..6d32a85 --- /dev/null +++ b/net-libs/xulrunner/files/000_flex-configure-LANG.patch @@ -0,0 +1,41 @@ +The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in +option parsing, it may break. + +http://bugs.gentoo.org/103483 + +--- configure~ 2009-07-31 20:07:25.087663220 -0500 ++++ configure 2009-07-31 20:07:37.987684452 -0500 +@@ -468,6 +468,16 @@ + infodir='${prefix}/info' + mandir='${prefix}/man' + ++# NLS nuisances. ++# Only set these to C if already set. These must not be set unconditionally ++# because not all systems understand e.g. LANG=C (notably SCO). ++# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! ++# Non-C LC_CTYPE values break the ctype check. ++if test "${LANG+set}" = set; then LANG=C; export LANG; fi ++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi ++if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi ++if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi ++ + # Initialize some other variables. + subdirs= + MFLAGS= MAKEFLAGS= +@@ -856,16 +866,6 @@ + esac + done + +-# NLS nuisances. +-# Only set these to C if already set. These must not be set unconditionally +-# because not all systems understand e.g. LANG=C (notably SCO). +-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +-# Non-C LC_CTYPE values break the ctype check. +-if test "${LANG+set}" = set; then LANG=C; export LANG; fi +-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi +- + # confdefs.h avoids OS command line length limits that DEFS can exceed. + rm -rf conftest* confdefs.h + # AIX cpp loses on an empty file, so make sure it contains at least a newline. diff --git a/net-libs/xulrunner/files/066-fix-includedir-mozilla-js.patch b/net-libs/xulrunner/files/066-fix-includedir-mozilla-js.patch new file mode 100644 index 0000000..4900427 --- /dev/null +++ b/net-libs/xulrunner/files/066-fix-includedir-mozilla-js.patch @@ -0,0 +1,24 @@ +mozjs stuff is actually in /unstable not in /stable + +Causes bugs like http://bugs.gentoo.org/275318 + +Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=500645 + +Will likely be fixed in 1.9.2 + +--- +--- xulrunner/installer/mozilla-js.pc.in 2009-06-26 08:37:34.458635913 -0500 ++++ xulrunner/installer/mozilla-js.pc.in 2009-06-26 08:38:13.623656097 -0500 +@@ -1,10 +1,11 @@ + prefix=%prefix% + sdkdir=%sdkdir% + includedir=%includedir% ++includetypes=unstable + + Name: JavaScript + Description: The Mozilla JavaScript Library + Version: %MOZILLA_VERSION% + Requires: %NSPR_NAME% >= %NSPR_VERSION% + Libs: -L${sdkdir}/lib -lmozjs +-Cflags: -I${includedir}/stable -DXP_UNIX -DJS_THREADSAFE ++Cflags: -I${includedir}/${includetypes} -DXP_UNIX -DJS_THREADSAFE diff --git a/net-libs/xulrunner/files/1000_fix_alignment.patch b/net-libs/xulrunner/files/1000_fix_alignment.patch new file mode 100644 index 0000000..2ef47c3 --- /dev/null +++ b/net-libs/xulrunner/files/1000_fix_alignment.patch @@ -0,0 +1,33 @@ +From: David Mandelin <dmandelin@mozilla.com> + +diff --git a/memory/jemalloc/jemalloc.c b/memory/jemalloc/jemalloc.c +--- a/memory/jemalloc/jemalloc.c ++++ b/memory/jemalloc/jemalloc.c +@@ -5792,24 +5792,24 @@ __attribute__((noinline)) + #else + inline + #endif + void * + memalign(size_t alignment, size_t size) + { + void *ret; + +- assert(((alignment - 1) & alignment) == 0 && alignment >= +- sizeof(void *)); ++ assert(((alignment - 1) & alignment) == 0); + + if (malloc_init()) { + ret = NULL; + goto RETURN; + } + ++ alignment = alignment < sizeof(void*) ? sizeof(void*) : alignment; + ret = ipalloc(alignment, size); + + RETURN: + #ifdef MALLOC_XMALLOC + if (opt_xmalloc && ret == NULL) { + _malloc_message(_getprogname(), + ": (malloc) Error in memalign(): out of memory\n", "", ""); + abort(); + diff --git a/net-libs/xulrunner/files/1002_fix-system-hunspell-dict-detections.patch b/net-libs/xulrunner/files/1002_fix-system-hunspell-dict-detections.patch new file mode 100644 index 0000000..0e2986e --- /dev/null +++ b/net-libs/xulrunner/files/1002_fix-system-hunspell-dict-detections.patch @@ -0,0 +1,112 @@ +diff -r e06632956519 extensions/spellcheck/Makefile.in +--- a/extensions/spellcheck/Makefile.in Sun Apr 04 07:02:14 2010 +0300 ++++ b/extensions/spellcheck/Makefile.in Tue Apr 06 23:07:03 2010 -0500 +@@ -42,13 +42,19 @@ + include $(DEPTH)/config/autoconf.mk + + MODULE = spellchecker ++ifndef MOZ_NATIVE_HUNSPELL + DIRS = idl locales ++else ++DIRS = idl ++endif + + ifeq (camino,$(MOZ_BUILD_APP)) + DIRS += osxspell + else ++ifndef MOZ_NATIVE_HUNSPELL + DIRS += hunspell + endif ++endif + + DIRS += src + +diff -r e06632956519 extensions/spellcheck/hunspell/src/mozHunspell.cpp +--- a/extensions/spellcheck/hunspell/src/mozHunspell.cpp Sun Apr 04 07:02:14 2010 +0300 ++++ b/extensions/spellcheck/hunspell/src/mozHunspell.cpp Tue Apr 06 23:07:03 2010 -0500 +@@ -63,6 +63,9 @@ + #include "nsISimpleEnumerator.h" + #include "nsIDirectoryEnumerator.h" + #include "nsIFile.h" ++#ifdef MOZ_NATIVE_HUNSPELL ++#include "nsILocalFile.h" ++#endif + #include "nsDirectoryServiceUtils.h" + #include "nsDirectoryServiceDefs.h" + #include "mozISpellI18NManager.h" +@@ -307,7 +310,16 @@ + return; + + nsCOMPtr<nsIFile> dictDir; +- rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY, ++ #ifdef MOZ_NATIVE_HUNSPELL ++ nsCOMPtr<nsILocalFile> localFile; ++ rv = NS_NewNativeLocalFile(nsDependentCString("/usr/share/myspell"),PR_TRUE, getter_AddRefs(localFile)); ++ if (localFile && NS_SUCCEEDED(rv)) { ++ localFile->QueryInterface(NS_GET_IID(nsIFile), getter_AddRefs(dictDir)); ++ LoadDictionariesFromDir(dictDir); ++ } ++ else { ++ #endif ++ rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY, + NS_GET_IID(nsIFile), getter_AddRefs(dictDir)); + if (NS_SUCCEEDED(rv)) { + LoadDictionariesFromDir(dictDir); +@@ -332,6 +344,9 @@ + LoadDictionariesFromDir(appDir); + } + } ++#ifdef MOZ_NATIVE_HUNSPELL ++ } ++#endif + + nsCOMPtr<nsISimpleEnumerator> dictDirs; + rv = dirSvc->Get(DICTIONARY_SEARCH_DIRECTORY_LIST, +diff -r e06632956519 extensions/spellcheck/src/Makefile.in +--- a/extensions/spellcheck/src/Makefile.in Sun Apr 04 07:02:14 2010 +0300 ++++ b/extensions/spellcheck/src/Makefile.in Tue Apr 06 23:07:03 2010 -0500 +@@ -63,9 +63,15 @@ + txtsvc \ + uconv \ + unicharutil \ ++ xulapp \ + $(NULL) + +-CPPSRCS = \ ++ifdef MOZ_NATIVE_HUNSPELL ++CPPSRCS += mozHunspell.cpp \ ++ mozHunspellDirProvider.cpp ++endif ++ ++CPPSRCS += \ + mozSpellCheckerFactory.cpp \ + mozSpellChecker.cpp \ + mozPersonalDictionary.cpp \ +@@ -80,8 +86,15 @@ + SHARED_LIBRARY_LIBS += ../osxspell/src/$(LIB_PREFIX)osxspell_s.$(LIB_SUFFIX) + LOCAL_INCLUDES += -I$(srcdir)/../osxspell/src + else ++ifndef MOZ_NATIVE_HUNSPELL + SHARED_LIBRARY_LIBS += ../hunspell/src/$(LIB_PREFIX)hunspell_s.$(LIB_SUFFIX) + LOCAL_INCLUDES += -I$(srcdir)/../hunspell/src ++else ++LOCAL_INCLUDES += $(MOZ_HUNSPELL_CFLAGS) \ ++ -I$(srcdir)/../hunspell/src \ ++ -DMOZ_NATIVE_HUNSPELL \ ++ $(NULL) ++endif + endif + + EXTRA_DSO_LDOPTS = \ +@@ -96,3 +109,11 @@ + LOCAL_INCLUDES += \ + -I$(topsrcdir)/xpcom/io \ + $(NULL) ++ ++ifdef MOZ_NATIVE_HUNSPELL ++export:: $(srcdir)/../hunspell/src/mozHunspell.cpp $(srcdir)/../hunspell/src/mozHunspellDirProvider.cpp ++ $(INSTALL) $(srcdir)/../hunspell/src/mozHunspell.* $(srcdir)/../hunspell/src/mozHunspellDirProvider.* . ++GARBAGE += mozHunspell.$(OBJ_SUFFIX) mozHunspell.cpp mozHunspellDirProvider.$(OBJ_SUFFIX) mozHunspellDirProvider.cpp ++clean:: ++ rm -f mozHunspell.* mozHunspellDirProvider.* ++endif diff --git a/net-libs/xulrunner/files/1009-armv4t-nanojit-v2.patch b/net-libs/xulrunner/files/1009-armv4t-nanojit-v2.patch new file mode 100644 index 0000000..2d57c95 --- /dev/null +++ b/net-libs/xulrunner/files/1009-armv4t-nanojit-v2.patch @@ -0,0 +1,320 @@ +From: Mike Hommey <glandium@debian.org> +Date: Fri, 30 Apr 2010 14:32:41 +0200 +Subject: Add nanojit support for ARMv4T + +Thanks Albin Tonnerre for the initial patch. +https://bugzilla.mozilla.org/show_bug.cgi?id=552624 +--- + js/src/nanojit/NativeARM.cpp | 105 ++++++++++++++++++++++------------------ + js/src/nanojit/avmplus.h | 2 + + js/src/nanojit/njcpudetect.h | 111 ++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 170 insertions(+), 48 deletions(-) + create mode 100644 js/src/nanojit/njcpudetect.h + +diff --git a/js/src/nanojit/NativeARM.cpp b/js/src/nanojit/NativeARM.cpp +index 9387191..a50898c 100644 +--- a/js/src/nanojit/NativeARM.cpp ++++ b/js/src/nanojit/NativeARM.cpp +@@ -61,6 +61,8 @@ extern "C" void __clear_cache(void *BEG, void *END); + + #ifdef FEATURE_NANOJIT + ++#define ARM_ARCH_AT_LEAST(wanted) ((NJ_COMPILER_ARM_ARCH >= wanted) || (ARM_ARCH >= wanted)) ++ + namespace nanojit + { + +@@ -114,49 +116,50 @@ Assembler::CountLeadingZeroes(uint32_t data) + { + uint32_t leading_zeroes; + +- // We can't do CLZ on anything earlier than ARMv5. Architectures as early +- // as that aren't supported, but assert that we aren't running on one +- // anyway. +- // If ARMv4 support is required in the future for some reason, we can do a +- // run-time check on config.arch and fall back to the C routine, but for +- // now we can avoid the cost of the check as we don't intend to support +- // ARMv4 anyway. +- NanoAssert(ARM_ARCH >= 5); +- + #if defined(__ARMCC__) + // ARMCC can do this with an intrinsic. + leading_zeroes = __clz(data); + +-// current Android GCC compiler incorrectly refuses to compile 'clz' for armv5 +-// (even though this is a legal instruction there). Since we currently only compile for ARMv5 +-// for emulation, we don't care too much (but we DO care for ARMv6+ since those are "real" +-// devices). +-#elif defined(__GNUC__) && !(defined(ANDROID) && __ARM_ARCH__ <= 5) ++ if (0) // We don't need the fallback ++#elif defined(__GNUC__) + // GCC can use inline assembler to insert a CLZ instruction. +- __asm ( +- " clz %0, %1 \n" +- : "=r" (leading_zeroes) +- : "r" (data) +- ); ++ // Targetting armv5t allows a toolchain with armv4t default target to ++ // still build with clz. On Android gcc compiler, clz is not supported ++ // with a target smaller than armv7. ++ if (ARM_ARCH_AT_LEAST(5)) ++ __asm ( ++#if defined(ANDROID) && NJ_COMPILER_ARM_ARCH <= 5 ++ ".arch armv7\n" ++#elif (NJ_COMPILER_ARM_ARCH < 5) ++ ".arch armv5t\n" ++#endif ++ " clz %0, %1 \n" ++ : "=r" (leading_zeroes) ++ : "r" (data) ++ ); ++ else + #elif defined(WINCE) + // WinCE can do this with an intrinsic. + leading_zeroes = _CountLeadingZeros(data); +-#else +- // Other platforms must fall back to a C routine. This won't be as +- // efficient as the CLZ instruction, but it is functional. +- uint32_t try_shift; +- +- leading_zeroes = 0; +- +- // This loop does a bisection search rather than the obvious rotation loop. +- // This should be faster, though it will still be no match for CLZ. +- for (try_shift = 16; try_shift != 0; try_shift /= 2) { +- uint32_t shift = leading_zeroes + try_shift; +- if (((data << shift) >> shift) == data) { +- leading_zeroes = shift; ++ ++ if (0) // We don't need the fallback ++#endif ++ { ++ // Other platforms must fall back to a C routine. This won't be as ++ // efficient as the CLZ instruction, but it is functional. ++ uint32_t try_shift; ++ ++ leading_zeroes = 0; ++ ++ // This loop does a bisection search rather than the obvious rotation loop. ++ // This should be faster, though it will still be no match for CLZ. ++ for (try_shift = 16; try_shift != 0; try_shift /= 2) { ++ uint32_t shift = leading_zeroes + try_shift; ++ if (((data << shift) >> shift) == data) { ++ leading_zeroes = shift; ++ } + } + } +-#endif + + // Assert that the operation worked! + NanoAssert(((0xffffffff >> leading_zeroes) & data) == data); +@@ -555,13 +558,18 @@ NIns* + Assembler::genEpilogue() + { + // On ARMv5+, loading directly to PC correctly handles interworking. +- // Note that we don't support anything older than ARMv5. +- NanoAssert(ARM_ARCH >= 5); +- +- RegisterMask savingMask = rmask(FP) | rmask(PC); ++ // On ARMv4T, interworking is not handled properly, therefore, we pop ++ // lr into ip and use bx ip to avoid that. ++ if (ARM_ARCH_AT_LEAST(5)) { ++ RegisterMask savingMask = rmask(FP) | rmask(PC); + +- POP_mask(savingMask); // regs ++ POP_mask(savingMask); // regs ++ } else { ++ RegisterMask savingMask = rmask(FP) | rmask(IP); + ++ BX(IP); ++ POP_mask(savingMask); // regs ++ } + return _nIns; + } + +@@ -1502,7 +1510,7 @@ Assembler::BranchWithLink(NIns* addr) + + // ARMv5 and above can use BLX <imm> for branches within ±32MB of the + // PC and BLX Rm for long branches. +- if (isS24(offs>>2)) { ++ if (isS24(offs>>2) && (ARM_ARCH_AT_LEAST(5))) { + // the value we need to stick in the instruction; masked, + // because it will be sign-extended back to 32 bits. + intptr_t offs2 = (offs>>2) & 0xffffff; +@@ -1519,7 +1527,6 @@ Assembler::BranchWithLink(NIns* addr) + // We need to emit an ARMv5+ instruction, so assert that we have a + // suitable processor. Note that we don't support ARMv4(T), but + // this serves as a useful sanity check. +- NanoAssert(ARM_ARCH >= 5); + + // The (pre-shifted) value of the "H" bit in the BLX encoding. + uint32_t H = (offs & 0x2) << 23; +@@ -1543,11 +1550,6 @@ Assembler::BranchWithLink(NIns* addr) + inline void + Assembler::BLX(Register addr, bool chk /* = true */) + { +- // We need to emit an ARMv5+ instruction, so assert that we have a suitable +- // processor. Note that we don't support ARMv4(T), but this serves as a +- // useful sanity check. +- NanoAssert(ARM_ARCH >= 5); +- + NanoAssert(IsGpReg(addr)); + // There is a bug in the WinCE device emulator which stops "BLX LR" from + // working as expected. Assert that we never do that! +@@ -1558,8 +1560,15 @@ Assembler::BLX(Register addr, bool chk /* = true */) + } + + // BLX IP +- *(--_nIns) = (NIns)( (COND_AL) | (0x12<<20) | (0xFFF<<8) | (0x3<<4) | (addr) ); +- asm_output("blx ip"); ++ if (ARM_ARCH_AT_LEAST(5)) { ++ *(--_nIns) = (NIns)( (COND_AL) | (0x12<<20) | (0xFFF<<8) | (0x3<<4) | (addr) ); ++ asm_output("blx %s", gpn(addr)); ++ } else { ++ *(--_nIns) = (NIns)( (COND_AL) | (0x12fff1 << 4) | (addr) ); ++ asm_output("bx %s", gpn(addr)); ++ *(--_nIns) = (NIns)( (COND_AL) | (0x1A0 << 16) | (0xE << 12) | 0xF ); ++ asm_output("mov lr, pc"); ++ } + } + + // Emit the code required to load a memory address into a register as follows: +@@ -2177,7 +2186,7 @@ Assembler::asm_arith(LInsp ins) + // common for (rr == ra) and is thus likely to be the most + // efficient case; if ra is no longer used after this LIR + // instruction, it is re-used for the result register (rr). +- if ((ARM_ARCH > 5) || (rr != rb)) { ++ if ((ARM_ARCH_AT_LEAST(6)) || (rr != rb)) { + // Newer cores place no restrictions on the registers used in a + // MUL instruction (compared to other arithmetic instructions). + MUL(rr, rb, ra); +diff --git a/js/src/nanojit/avmplus.h b/js/src/nanojit/avmplus.h +index ffc0873..e86f22e 100644 +--- a/js/src/nanojit/avmplus.h ++++ b/js/src/nanojit/avmplus.h +@@ -50,6 +50,8 @@ + #include "jstypes.h" + #include "jsstdint.h" + ++#include "njcpudetect.h" ++ + #ifdef AVMPLUS_ARM + #define ARM_ARCH config.arch + #define ARM_VFP config.vfp +diff --git a/js/src/nanojit/njcpudetect.h b/js/src/nanojit/njcpudetect.h +new file mode 100644 +index 0000000..79ea90b +--- /dev/null ++++ b/js/src/nanojit/njcpudetect.h +@@ -0,0 +1,111 @@ ++/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4 -*- */ ++/* vi: set ts=4 sw=4 expandtab: (add to ~/.vimrc: set modeline modelines=5) */ ++/* ***** 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 [Open Source Virtual Machine]. ++ * ++ * The Initial Developer of the Original Code is ++ * Adobe System Incorporated. ++ * Portions created by the Initial Developer are Copyright (C) 2004-2007 ++ * the Initial Developer. All Rights Reserved. ++ * ++ * Contributor(s): ++ * Adobe AS3 Team ++ * ++ * Alternatively, the contents of this file may be used under the terms of ++ * either 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 ***** */ ++ ++#ifndef __njcpudetect__ ++#define __njcpudetect__ ++ ++/*** ++ * Note: this file should not include *any* other files, nor should it wrap ++ * itself in ifdef FEATURE_NANOJIT, nor should it do anything other than ++ * define preprocessor symbols. ++ */ ++ ++/*** ++ * NJ_COMPILER_ARM_ARCH attempts to specify the minimum ARM architecture ++ * that the C++ compiler has specified. Note that although Config::arm_arch ++ * is initialized to this value by default, there is no requirement that they ++ * be in sync. ++ * ++ * Note, this is done via #define so that downstream preprocessor usage can ++ * examine it, but please don't attempt to redefine it. ++ * ++ * Note, this is deliberately not encased in "ifdef NANOJIT_ARM", as this file ++ * may be included before that is defined. On non-ARM platforms we will hit the ++ * "Unable to determine" case. ++ */ ++ ++// GCC and RealView usually define __ARM_ARCH__ ++#if defined(__ARM_ARCH__) ++ ++ #define NJ_COMPILER_ARM_ARCH __ARM_ARCH__ ++ ++// ok, try well-known GCC flags ( see http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html ) ++#elif defined(__ARM_ARCH_7__) || \ ++ defined(__ARM_ARCH_7A__) || \ ++ defined(__ARM_ARCH_7M__) || \ ++ defined(__ARM_ARCH_7R__) || \ ++ defined(_ARM_ARCH_7) ++ ++ #define NJ_COMPILER_ARM_ARCH 7 ++ ++#elif defined(__ARM_ARCH_6__) || \ ++ defined(__ARM_ARCH_6J__) || \ ++ defined(__ARM_ARCH_6T2__) || \ ++ defined(__ARM_ARCH_6Z__) || \ ++ defined(__ARM_ARCH_6ZK__) || \ ++ defined(__ARM_ARCH_6M__) || \ ++ defined(_ARM_ARCH_6) ++ ++ #define NJ_COMPILER_ARM_ARCH 6 ++ ++#elif defined(__ARM_ARCH_5__) || \ ++ defined(__ARM_ARCH_5T__) || \ ++ defined(__ARM_ARCH_5E__) || \ ++ defined(__ARM_ARCH_5TE__) ++ ++ #define NJ_COMPILER_ARM_ARCH 5 ++ ++#elif defined(__ARM_ARCH_4__) || \ ++ defined(__ARM_ARCH_4T__) ++ ++ #define NJ_COMPILER_ARM_ARCH 4 ++ ++// Visual C has its own mojo ++#elif defined(_MSC_VER) && defined(_M_ARM) ++ ++ #define NJ_COMPILER_ARM_ARCH _M_ARM ++ ++#else ++ ++ // non-numeric value ++ #define NJ_COMPILER_ARM_ARCH "Unable to determine valid NJ_COMPILER_ARM_ARCH (nanojit only supports ARMv5 or later)" ++ ++#endif ++ ++#endif // __njcpudetect__ diff --git a/net-libs/xulrunner/files/301-xulrunner-xpctools.diff b/net-libs/xulrunner/files/301-xulrunner-xpctools.diff new file mode 100644 index 0000000..2ff82a5 --- /dev/null +++ b/net-libs/xulrunner/files/301-xulrunner-xpctools.diff @@ -0,0 +1,25 @@ +--- js/src/xpconnect/src/Makefile.in~ 2009-09-20 13:13:15.508713367 -0500 ++++ js/src/xpconnect/src/Makefile.in 2009-09-20 13:14:30.994713367 -0500 +@@ -77,6 +77,10 @@ + widget \ + $(NULL) + ++ifdef MOZ_XPCTOOLS ++DEFINES += -DXPC_TOOLS_SUPPORT ++REQUIRES += xpctools ++endif + + CPPSRCS = \ + nsScriptError.cpp \ +@@ -174,11 +178,6 @@ + + endif # ENABLE_JIT + +-ifdef MOZ_XPCTOOLS +-DEFINES += -DXPC_TOOLS_SUPPORT +-REQUIRES += xpctools +-endif +- + ifdef XPC_IDISPATCH_SUPPORT + DEFINES += -DXPC_IDISPATCH_SUPPORT + ifdef XPC_COMOBJECT diff --git a/net-libs/xulrunner/files/801-enable-x86_64-tracemonkey.patch b/net-libs/xulrunner/files/801-enable-x86_64-tracemonkey.patch new file mode 100644 index 0000000..b72ad76 --- /dev/null +++ b/net-libs/xulrunner/files/801-enable-x86_64-tracemonkey.patch @@ -0,0 +1,25 @@ +--- js/src/configure.in.old 2009-11-08 19:50:54.299642792 -0500 ++++ js/src/configure.in 2009-11-08 19:57:49.235621814 -0500 +@@ -2465,6 +2465,10 @@ + ENABLE_JIT=1 + NANOJIT_ARCH=i386 + ;; ++x86_64*-*) ++ ENABLE_JIT=1 ++ NANOJIT_ARCH=X64 ++ ;; + arm*-*) + ENABLE_JIT=1 + NANOJIT_ARCH=ARM +@@ -2488,7 +2492,10 @@ + i?86-*) + AC_DEFINE(AVMPLUS_IA32) + ;; +- ++x86_64*-*) ++ AC_DEFINE(AVMPLUS_AMD64) ++ AC_DEFINE(AVMPLUS_64BIT) ++ ;; + arm*-*) + AC_DEFINE(AVMPLUS_ARM) + ;; diff --git a/net-libs/xulrunner/files/fix_crash_in_windowwatcher.patch b/net-libs/xulrunner/files/fix_crash_in_windowwatcher.patch new file mode 100644 index 0000000..774e43a --- /dev/null +++ b/net-libs/xulrunner/files/fix_crash_in_windowwatcher.patch @@ -0,0 +1,28 @@ +# HG changeset patch +# Parent e981d93d6534b48a75655ad886d494bd3bbe3ff2 +# User Blake Kaplan <mrbkap@gmail.com> +Bug 594699 - Null check this to return to pre-bug 532730 behavior in pathological cases. + +diff --git a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp +--- a/embedding/components/windowwatcher/src/nsWindowWatcher.cpp ++++ b/embedding/components/windowwatcher/src/nsWindowWatcher.cpp +@@ -517,17 +517,17 @@ nsWindowWatcher::OpenWindowJSInternal(ns + nsCOMPtr<nsIDocShellTreeItem> newDocShellItem; // from the new window + JSContextAutoPopper callerContextGuard; + + NS_ENSURE_ARG_POINTER(_retval); + *_retval = 0; + + nsCOMPtr<nsIContentUtils> utils = + do_GetService("@mozilla.org/content/contentutils;1"); +- if (!utils->IsSafeToRunScript()) { ++ if (utils && !utils->IsSafeToRunScript()) { + return NS_ERROR_FAILURE; + } + + GetWindowTreeOwner(aParent, getter_AddRefs(parentTreeOwner)); + + if (aUrl) { + rv = URIfromURL(aUrl, aParent, getter_AddRefs(uriToLoad)); + if (NS_FAILED(rv)) + diff --git a/net-libs/xulrunner/files/xulrunner-1.9-no_sunstudio.patch b/net-libs/xulrunner/files/xulrunner-1.9-no_sunstudio.patch new file mode 100644 index 0000000..7bfb5f1 --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9-no_sunstudio.patch @@ -0,0 +1,14 @@ +http://bugs.gentoo.org/show_bug.cgi?id=228717 + +diff -ur a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in +--- a/toolkit/library/Makefile.in 2008-05-08 11:20:45.000000000 +0200 ++++ b/toolkit/library/Makefile.in 2008-06-21 12:18:33.373338400 +0200 +@@ -227,7 +227,7 @@ + endif + + ifeq ($(OS_ARCH),SunOS) +-EXTRA_DSO_LDOPTS += -lelf -ldemangle -lCstd ++EXTRA_DSO_LDOPTS += -lelf + endif + + ifeq ($(OS_ARCH),WINNT) diff --git a/net-libs/xulrunner/files/xulrunner-1.9-solaris64.patch b/net-libs/xulrunner/files/xulrunner-1.9-solaris64.patch new file mode 100644 index 0000000..0f2c5ac --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9-solaris64.patch @@ -0,0 +1,493 @@ +Don't use -G, it results in a relocation error against _DYNAMIC on +amd64, use -shared instead per the manpage, and as it works as well. + +Add assemblyish files for x86_64 solaris + +--- configure.in ++++ configure.in +@@ -2481,7 +2481,7 @@ + AC_LANG_RESTORE + else + ASFLAGS="$ASFLAGS -fPIC" +- DSO_LDOPTS='-G' ++ DSO_LDOPTS='-shared' + _WARNINGS_CFLAGS='' + _WARNINGS_CXXFLAGS='' + if test "$OS_RELEASE" = "5.3"; then +--- js/src/configure.in ++++ js/src/configure.in +@@ -2339,7 +2339,7 @@ + AC_LANG_RESTORE + else + ASFLAGS="$ASFLAGS -fPIC" +- DSO_LDOPTS='-G' ++ DSO_LDOPTS='-shared' + _WARNINGS_CFLAGS='' + _WARNINGS_CXXFLAGS='' + if test "$OS_RELEASE" = "5.3"; then +--- xpcom/reflect/xptcall/src/md/unix/Makefile.in ++++ xpcom/reflect/xptcall/src/md/unix/Makefile.in +@@ -130,7 +130,11 @@ + # + ifeq ($(OS_ARCH),SunOS) + ifeq (86,$(findstring 86,$(OS_TEST))) ++ifdef HAVE_64BIT_OS ++CPPSRCS := xptcinvoke_x86_64_solaris.cpp xptcstubs_x86_64_solaris.cpp ++else + CPPSRCS := xptcinvoke_x86_solaris.cpp xptcstubs_x86_solaris.cpp ++endif + # 28817: if Solaris Intel OS, and native compiler, always build optimised. + ifndef GNU_CC + ASFILES := xptcinvoke_asm_x86_solaris_SUNW.s xptcstubs_asm_x86_solaris_SUNW.s +--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_solaris.cpp ++++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_solaris.cpp +@@ -0,0 +1,210 @@ ++/* -*- 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): ++ * ++ * 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 ++ ++#include "xptcprivate.h" ++ ++// 6 integral parameters are passed in registers ++const PRUint32 GPR_COUNT = 6; ++ ++// 8 floating point parameters are passed in SSE registers ++const PRUint32 FPR_COUNT = 8; ++ ++// Remember that these 'words' are 64-bit long ++static inline void ++invoke_count_words(PRUint32 paramCount, nsXPTCVariant * s, ++ PRUint32 & nr_gpr, PRUint32 & nr_fpr, PRUint32 & nr_stack) ++{ ++ nr_gpr = 1; // skip one GP register for 'that' ++ nr_fpr = 0; ++ nr_stack = 0; ++ ++ /* Compute number of eightbytes of class MEMORY. */ ++ for (uint32 i = 0; i < paramCount; i++, s++) { ++ if (!s->IsPtrData() ++ && (s->type == nsXPTType::T_FLOAT || s->type == nsXPTType::T_DOUBLE)) { ++ if (nr_fpr < FPR_COUNT) ++ nr_fpr++; ++ else ++ nr_stack++; ++ } ++ else { ++ if (nr_gpr < GPR_COUNT) ++ nr_gpr++; ++ else ++ nr_stack++; ++ } ++ } ++} ++ ++static void ++invoke_copy_to_stack(PRUint64 * d, PRUint32 paramCount, nsXPTCVariant * s, ++ PRUint64 * gpregs, double * fpregs) ++{ ++ PRUint32 nr_gpr = 1; // skip one GP register for 'that' ++ PRUint32 nr_fpr = 0; ++ PRUint64 value; ++ ++ for (uint32 i = 0; i < paramCount; i++, s++) { ++ if (s->IsPtrData()) ++ value = (PRUint64) s->ptr; ++ else { ++ switch (s->type) { ++ case nsXPTType::T_FLOAT: break; ++ case nsXPTType::T_DOUBLE: break; ++ case nsXPTType::T_I8: value = s->val.i8; break; ++ case nsXPTType::T_I16: value = s->val.i16; break; ++ case nsXPTType::T_I32: value = s->val.i32; break; ++ case nsXPTType::T_I64: value = s->val.i64; break; ++ case nsXPTType::T_U8: value = s->val.u8; break; ++ case nsXPTType::T_U16: value = s->val.u16; break; ++ case nsXPTType::T_U32: value = s->val.u32; break; ++ case nsXPTType::T_U64: value = s->val.u64; break; ++ case nsXPTType::T_BOOL: value = s->val.b; break; ++ case nsXPTType::T_CHAR: value = s->val.c; break; ++ case nsXPTType::T_WCHAR: value = s->val.wc; break; ++ default: value = (PRUint64) s->val.p; break; ++ } ++ } ++ ++ if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) { ++ if (nr_fpr < FPR_COUNT) ++ fpregs[nr_fpr++] = s->val.d; ++ else { ++ *((double *)d) = s->val.d; ++ d++; ++ } ++ } ++ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) { ++ if (nr_fpr < FPR_COUNT) ++ // The value in %xmm register is already prepared to ++ // be retrieved as a float. Therefore, we pass the ++ // value verbatim, as a double without conversion. ++ fpregs[nr_fpr++] = s->val.d; ++ else { ++ *((float *)d) = s->val.f; ++ d++; ++ } ++ } ++ else { ++ if (nr_gpr < GPR_COUNT) ++ gpregs[nr_gpr++] = value; ++ else ++ *d++ = value; ++ } ++ } ++} ++ ++EXPORT_XPCOM_API(nsresult) ++NS_InvokeByIndex_P(nsISupports * that, PRUint32 methodIndex, ++ PRUint32 paramCount, nsXPTCVariant * params) ++{ ++ PRUint32 nr_gpr, nr_fpr, nr_stack; ++ invoke_count_words(paramCount, params, nr_gpr, nr_fpr, nr_stack); ++ ++ // Stack, if used, must be 16-bytes aligned ++ if (nr_stack) ++ nr_stack = (nr_stack + 1) & ~1; ++ ++ // Load parameters to stack, if necessary ++ PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8); ++ PRUint64 gpregs[GPR_COUNT]; ++ double fpregs[FPR_COUNT]; ++ invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs); ++ ++ // Load FPR registers from fpregs[] ++ register double d0 asm("xmm0"); ++ register double d1 asm("xmm1"); ++ register double d2 asm("xmm2"); ++ register double d3 asm("xmm3"); ++ register double d4 asm("xmm4"); ++ register double d5 asm("xmm5"); ++ register double d6 asm("xmm6"); ++ register double d7 asm("xmm7"); ++ ++ switch (nr_fpr) { ++#define ARG_FPR(N) \ ++ case N+1: d##N = fpregs[N]; ++ ARG_FPR(7); ++ ARG_FPR(6); ++ ARG_FPR(5); ++ ARG_FPR(4); ++ ARG_FPR(3); ++ ARG_FPR(2); ++ ARG_FPR(1); ++ ARG_FPR(0); ++ case 0:; ++#undef ARG_FPR ++ } ++ ++ // Load GPR registers from gpregs[] ++ register PRUint64 a0 asm("rdi"); ++ register PRUint64 a1 asm("rsi"); ++ register PRUint64 a2 asm("rdx"); ++ register PRUint64 a3 asm("rcx"); ++ register PRUint64 a4 asm("r8"); ++ register PRUint64 a5 asm("r9"); ++ ++ switch (nr_gpr) { ++#define ARG_GPR(N) \ ++ case N+1: a##N = gpregs[N]; ++ ARG_GPR(5); ++ ARG_GPR(4); ++ ARG_GPR(3); ++ ARG_GPR(2); ++ ARG_GPR(1); ++ case 1: a0 = (PRUint64) that; ++ case 0:; ++#undef ARG_GPR ++ } ++ ++ // Ensure that assignments to SSE registers won't be optimized away ++ asm("" :: ++ "x" (d0), "x" (d1), "x" (d2), "x" (d3), ++ "x" (d4), "x" (d5), "x" (d6), "x" (d7)); ++ ++ // Get pointer to method ++ PRUint64 methodAddress = *((PRUint64 *)that); ++ methodAddress += 8 * methodIndex; ++ methodAddress = *((PRUint64 *)methodAddress); ++ ++ typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64); ++ PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5); ++ return result; ++} +--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_solaris.cpp ++++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_x86_64_solaris.cpp +@@ -0,0 +1,236 @@ ++/* -*- 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): ++ * ++ * 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" ++#include "xptiprivate.h" ++ ++ ++const PRUint32 PARAM_BUFFER_COUNT = 16; ++const PRUint32 GPR_COUNT = 6; ++const PRUint32 FPR_COUNT = 8; ++ ++// PrepareAndDispatch() is called by SharedStub() and calls the actual method. ++// ++// - 'args[]' contains the arguments passed on stack ++// - 'gpregs[]' contains the arguments passed in integer registers ++// - 'fpregs[]' contains the arguments passed in floating point registers ++// ++// The parameters are mapped into an array of type 'nsXPTCMiniVariant' ++// and then the method gets called. ++ ++extern "C" nsresult ++PrepareAndDispatch(nsXPTCStubBase * self, PRUint32 methodIndex, ++ PRUint64 * args, PRUint64 * gpregs, double *fpregs) ++{ ++ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT]; ++ nsXPTCMiniVariant* dispatchParams = NULL; ++ const nsXPTMethodInfo* info; ++ PRUint32 paramCount; ++ PRUint32 i; ++ nsresult result = NS_ERROR_FAILURE; ++ ++ NS_ASSERTION(self,"no self"); ++ ++ self->mEntry->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; ++ PRUint32 nr_gpr = 1; // skip one GPR register for 'that' ++ PRUint32 nr_fpr = 0; ++ PRUint64 value; ++ ++ 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 (nr_fpr < FPR_COUNT) ++ dp->val.d = fpregs[nr_fpr++]; ++ else ++ dp->val.d = *(double*) ap++; ++ continue; ++ } ++ else if (!param.IsOut() && type == nsXPTType::T_FLOAT) { ++ if (nr_fpr < FPR_COUNT) ++ // The value in %xmm register is already prepared to ++ // be retrieved as a float. Therefore, we pass the ++ // value verbatim, as a double without conversion. ++ dp->val.d = *(double*) ap++; ++ else ++ dp->val.f = *(float*) ap++; ++ continue; ++ } ++ else { ++ if (nr_gpr < GPR_COUNT) ++ value = gpregs[nr_gpr++]; ++ else ++ value = *ap++; ++ } ++ ++ if (param.IsOut() || !type.IsArithmetic()) { ++ dp->val.p = (void*) value; ++ continue; ++ } ++ ++ switch (type) { ++ case nsXPTType::T_I8: dp->val.i8 = (PRInt8) value; break; ++ case nsXPTType::T_I16: dp->val.i16 = (PRInt16) value; break; ++ case nsXPTType::T_I32: dp->val.i32 = (PRInt32) value; break; ++ case nsXPTType::T_I64: dp->val.i64 = (PRInt64) value; break; ++ case nsXPTType::T_U8: dp->val.u8 = (PRUint8) value; break; ++ case nsXPTType::T_U16: dp->val.u16 = (PRUint16) value; break; ++ case nsXPTType::T_U32: dp->val.u32 = (PRUint32) value; break; ++ case nsXPTType::T_U64: dp->val.u64 = (PRUint64) value; break; ++ case nsXPTType::T_BOOL: dp->val.b = (PRBool) value; break; ++ case nsXPTType::T_CHAR: dp->val.c = (char) value; break; ++ case nsXPTType::T_WCHAR: dp->val.wc = (wchar_t) value; break; ++ ++ default: ++ NS_ASSERTION(0, "bad type"); ++ break; ++ } ++ } ++ ++ result = self->mOuter->CallMethod((PRUint16) methodIndex, info, dispatchParams); ++ ++ if (dispatchParams != paramBuffer) ++ delete [] dispatchParams; ++ ++ return result; ++} ++ ++#ifdef __GNUC__ /* Gnu Compiler. */ ++#define STUB_ENTRY(n) \ ++asm(".section \".text\"\n\t" \ ++ ".align 2\n\t" \ ++ ".if " #n " < 10\n\t" \ ++ ".globl _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ ++ ".hidden _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ ++ ".type _ZN14nsXPTCStubBase5Stub" #n "Ev,@function\n" \ ++ "_ZN14nsXPTCStubBase5Stub" #n "Ev:\n\t" \ ++ ".elseif " #n " < 100\n\t" \ ++ ".globl _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ ++ ".hidden _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ ++ ".type _ZN14nsXPTCStubBase6Stub" #n "Ev,@function\n" \ ++ "_ZN14nsXPTCStubBase6Stub" #n "Ev:\n\t" \ ++ ".elseif " #n " < 1000\n\t" \ ++ ".globl _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ ++ ".hidden _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ ++ ".type _ZN14nsXPTCStubBase7Stub" #n "Ev,@function\n" \ ++ "_ZN14nsXPTCStubBase7Stub" #n "Ev:\n\t" \ ++ ".else\n\t" \ ++ ".err \"stub number " #n " >= 1000 not yet supported\"\n\t" \ ++ ".endif\n\t" \ ++ "movl $" #n ", %eax\n\t" \ ++ "jmp SharedStub\n\t" \ ++ ".if " #n " < 10\n\t" \ ++ ".size _ZN14nsXPTCStubBase5Stub" #n "Ev,.-_ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ ++ ".elseif " #n " < 100\n\t" \ ++ ".size _ZN14nsXPTCStubBase6Stub" #n "Ev,.-_ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ ++ ".else\n\t" \ ++ ".size _ZN14nsXPTCStubBase7Stub" #n "Ev,.-_ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ ++ ".endif"); ++ ++// static nsresult SharedStub(PRUint32 methodIndex) ++asm(".section \".text\"\n\t" ++ ".align 2\n\t" ++ ".type SharedStub,@function\n\t" ++ "SharedStub:\n\t" ++ // make room for gpregs (48), fpregs (64) ++ "pushq %rbp\n\t" ++ "movq %rsp,%rbp\n\t" ++ "subq $112,%rsp\n\t" ++ // save GP registers ++ "movq %rdi,-112(%rbp)\n\t" ++ "movq %rsi,-104(%rbp)\n\t" ++ "movq %rdx, -96(%rbp)\n\t" ++ "movq %rcx, -88(%rbp)\n\t" ++ "movq %r8 , -80(%rbp)\n\t" ++ "movq %r9 , -72(%rbp)\n\t" ++ "leaq -112(%rbp),%rcx\n\t" ++ // save FP registers ++ "movsd %xmm0,-64(%rbp)\n\t" ++ "movsd %xmm1,-56(%rbp)\n\t" ++ "movsd %xmm2,-48(%rbp)\n\t" ++ "movsd %xmm3,-40(%rbp)\n\t" ++ "movsd %xmm4,-32(%rbp)\n\t" ++ "movsd %xmm5,-24(%rbp)\n\t" ++ "movsd %xmm6,-16(%rbp)\n\t" ++ "movsd %xmm7, -8(%rbp)\n\t" ++ "leaq -64(%rbp),%r8\n\t" ++ // rdi has the 'self' pointer already ++ "movl %eax,%esi\n\t" ++ "leaq 16(%rbp),%rdx\n\t" ++ "call PrepareAndDispatch@plt\n\t" ++ "leave\n\t" ++ "ret\n\t" ++ ".size SharedStub,.-SharedStub"); ++ ++#elif defined(__SUNPRO_CC) /* Sun Workshop Compiler. */ ++ ++#define STUB_ENTRY(n) ++ ++#else ++#error "can't find a compiler to use" ++#endif /* __GNUC__ */ ++ ++#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/net-libs/xulrunner/files/xulrunner-1.9.1.5-solaris-undef-regs.patch b/net-libs/xulrunner/files/xulrunner-1.9.1.5-solaris-undef-regs.patch new file mode 100644 index 0000000..2ed620e --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9.1.5-solaris-undef-regs.patch @@ -0,0 +1,19 @@ +http://marc.info/?l=opensolaris-desktop-discuss&m=124625949400704&w=2 + +--- firefox/js/src/nanojit/Nativei386.h.orig 2008-12-19 16:11:09.743712966 +0800 ++++ firefox/js/src/nanojit/Nativei386.h 2008-12-19 16:12:32.156744648 +0800 +@@ -40,6 +40,14 @@ + #ifndef __nanojit_Nativei386__ + #define __nanojit_Nativei386__ + ++#undef EAX ++#undef EBX ++#undef ECX ++#undef EDX ++#undef ESP ++#undef EBP ++#undef ESI ++#undef EDI + + namespace nanojit + { diff --git a/net-libs/xulrunner/files/xulrunner-1.9.2-arm-fixes.patch b/net-libs/xulrunner/files/xulrunner-1.9.2-arm-fixes.patch new file mode 100644 index 0000000..a726209 --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9.2-arm-fixes.patch @@ -0,0 +1,35 @@ +Fix arm OS detection + +https://bugs.gentoo.org/327783 +https://bugzilla.mozilla.org/show_bug.cgi?id=577319 +--- +--- configure.in ++++ configure.in +@@ -1424,9 +1424,11 @@ + CPU_ARCH="$OS_TEST" + ;; + +-arm) ++arm*) + if test "$OS_TARGET" = "WINCE"; then + CPU_ARCH="$OS_TEST" ++ else ++ CPU_ARCH="arm" + fi + ;; + esac +--- js/src/configure.in ++++ js/src/configure.in +@@ -1162,9 +1162,11 @@ + CPU_ARCH="$OS_TEST" + ;; + +-arm) ++arm*) + if test "$OS_TARGET" = "WINCE"; then + CPU_ARCH="$OS_TEST" ++ else ++ CPU_ARCH="arm" + fi + ;; + esac diff --git a/net-libs/xulrunner/files/xulrunner-1.9.2-fix-pkgconfig-file.patch b/net-libs/xulrunner/files/xulrunner-1.9.2-fix-pkgconfig-file.patch new file mode 100644 index 0000000..540f9d0 --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9.2-fix-pkgconfig-file.patch @@ -0,0 +1,9 @@ +--- mozilla-1.9.2/xulrunner/installer/mozilla-plugin.pc.in-orig 2010-01-18 22:07:22.609207920 -0600 ++++ mozilla-1.9.2/xulrunner/installer/mozilla-plugin.pc.in 2010-01-18 22:07:31.665185152 -0600 +@@ -5,5 +5,5 @@ + Name: Mozilla Plug-In API + Description: Mozilla Plug-In API + Version: %MOZILLA_VERSION% +-Cflags: -I${includedir}/stable -DXP_UNIX %ojidef% ++Cflags: -I${includedir} -DXP_UNIX %ojidef% + diff --git a/net-libs/xulrunner/files/xulrunner-1.9.2-noalsa-fixup.patch b/net-libs/xulrunner/files/xulrunner-1.9.2-noalsa-fixup.patch new file mode 100644 index 0000000..1fc7b6f --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9.2-noalsa-fixup.patch @@ -0,0 +1,26 @@ +diff -urN mozilla-1.9.2-orig/content/base/src/nsDocument.cpp mozilla-1.9.2/content/base/src/nsDocument.cpp +--- mozilla-1.9.2-orig/content/base/src/nsDocument.cpp 2010-01-28 22:16:08.683135912 -0600 ++++ mozilla-1.9.2/content/base/src/nsDocument.cpp 2010-01-28 22:17:57.605126833 -0600 +@@ -169,7 +169,9 @@ + #include "nsIPropertyBag2.h" + #include "nsIDOMPageTransitionEvent.h" + #include "nsFrameLoader.h" ++#ifdef MOZ_MEDIA + #include "nsHTMLMediaElement.h" ++#endif + + #include "mozAutoDocUpdate.h" + +diff -urN mozilla-1.9.2-orig/content/base/src/nsNodeUtils.cpp mozilla-1.9.2/content/base/src/nsNodeUtils.cpp +--- mozilla-1.9.2-orig/content/base/src/nsNodeUtils.cpp 2010-01-28 22:16:08.686138846 -0600 ++++ mozilla-1.9.2/content/base/src/nsNodeUtils.cpp 2010-01-28 22:17:14.618150370 -0600 +@@ -55,7 +55,9 @@ + #endif + #include "nsBindingManager.h" + #include "nsGenericHTMLElement.h" ++#ifdef MOZ_MEDIA + #include "nsHTMLMediaElement.h" ++#endif + + // This macro expects the ownerDocument of content_ to be in scope as + // |nsIDocument* doc| diff --git a/net-libs/xulrunner/files/xulrunner-1.9.2-solaris-madvise.patch b/net-libs/xulrunner/files/xulrunner-1.9.2-solaris-madvise.patch new file mode 100644 index 0000000..fd3b345 --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9.2-solaris-madvise.patch @@ -0,0 +1,13 @@ +--- layout/base/nsPresArena.cpp ++++ layout/base/nsPresArena.cpp +@@ -73,6 +73,10 @@ + #else + # include <unistd.h> + # include <sys/mman.h> ++# ifdef SOLARIS ++/* madvise is not declared for C++ */ ++extern "C" int madvise(void *addr, size_t len, int behav); ++# endif + # ifndef MAP_ANON + # ifdef MAP_ANONYMOUS + # define MAP_ANON MAP_ANONYMOUS diff --git a/net-libs/xulrunner/files/xulrunner-1.9_beta5-prefix.patch b/net-libs/xulrunner/files/xulrunner-1.9_beta5-prefix.patch new file mode 100644 index 0000000..a06a92b --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-1.9_beta5-prefix.patch @@ -0,0 +1,59 @@ +* gre conf location is a bit hardcoded unfortunately :( + +--- extensions/java/xpcom/interfaces/org/mozilla/xpcom/Mozilla.java ++++ extensions/java/xpcom/interfaces/org/mozilla/xpcom/Mozilla.java +@@ -470,8 +470,8 @@ + + final String greUserConfFile = ".gre.config"; + final String greUserConfDir = ".gre.d"; +- final String greConfPath = "/etc/gre.conf"; +- final String greConfDir = "/etc/gre.d"; ++ final String greConfPath = "@GENTOO_PORTAGE_EPREFIX@/etc/gre.conf"; ++ final String greConfDir = "@GENTOO_PORTAGE_EPREFIX@/etc/gre.d"; + + env = System.getProperty("user.home"); + if (env != null) { +--- xpcom/build/nsXPCOMPrivate.h ++++ xpcom/build/nsXPCOMPrivate.h +@@ -245,8 +245,8 @@ + #endif + + #define GRE_CONF_NAME ".gre.config" +-#define GRE_CONF_PATH "/etc/gre.conf" +-#define GRE_CONF_DIR "/etc/gre.d" ++#define GRE_CONF_PATH "@GENTOO_PORTAGE_EPREFIX@/etc/gre.conf" ++#define GRE_CONF_DIR "@GENTOO_PORTAGE_EPREFIX@/etc/gre.d" + #define GRE_USER_CONF_DIR ".gre.d" + #endif + +--- xulrunner/installer/Makefile.in ++++ xulrunner/installer/Makefile.in +@@ -73,7 +73,7 @@ + + ifndef SKIP_GRE_REGISTRATION + # to register xulrunner per-user, override this with $HOME/.gre.d +-regdir = /etc/gre.d ++regdir = @sysconfdir@/gre.d + + install:: $(MOZILLA_VERSION).system.conf + $(NSINSTALL) -D $(DESTDIR)$(regdir) +--- xulrunner/app/nsRegisterGREUnix.cpp ++++ xulrunner/app/nsRegisterGREUnix.cpp +@@ -130,7 +130,7 @@ + + nsresult rv; + +- char root[MAXPATHLEN] = "/etc/gre.d"; ++ char root[MAXPATHLEN] = "@GENTOO_PORTAGE_EPREFIX@/etc/gre.d"; + + if (!aRegisterGlobally) { + char *home = PR_GetEnv("HOME"); +@@ -222,7 +222,7 @@ + { + nsresult rv; + +- char root[MAXPATHLEN] = "/etc/gre.d"; ++ char root[MAXPATHLEN] = "@GENTOO_PORTAGE_EPREFIX@/etc/gre.d"; + + if (!aRegisterGlobally) { + char *home = PR_GetEnv("HOME"); diff --git a/net-libs/xulrunner/files/xulrunner-default-prefs.js b/net-libs/xulrunner/files/xulrunner-default-prefs.js new file mode 100644 index 0000000..4546d3f --- /dev/null +++ b/net-libs/xulrunner/files/xulrunner-default-prefs.js @@ -0,0 +1,14 @@ +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +pref("browser.display.use_system_colors", true); +pref("browser.link.open_external", 3); +pref("general.smoothScroll", true); +pref("general.autoScroll", false); +pref("browser.tabs.tabMinWidth", 15); +pref("browser.backspace_action", 0); +pref("browser.urlbar.hideGoButton", true); +pref("accessibility.typeaheadfind", true); +pref("browser.shell.checkDefaultBrowser", false); +pref("browser.EULA.override", true); +pref("general.useragent.vendor", "Gentoo"); +pref("intl.locale.matchOS", true); diff --git a/net-libs/xulrunner/metadata.xml b/net-libs/xulrunner/metadata.xml new file mode 100644 index 0000000..7691e8c --- /dev/null +++ b/net-libs/xulrunner/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>mozilla</herd> + <use> + <flag name="custom-optimization">Fine-tune custom compiler optimizations</flag> + <flag name="ipc">Use inter-process communication between tabs and plugins. + Allows for greater stability in case of plugin crashes</flag> + <flag name="system-sqlite">Use the system-wide <pkg>dev-db/sqlite</pkg> + installation with secure-delete enabled</flag> + </use> +</pkgmetadata> diff --git a/net-libs/xulrunner/xulrunner-1.9.2.9.ebuild b/net-libs/xulrunner/xulrunner-1.9.2.9.ebuild new file mode 100644 index 0000000..1f46b49 --- /dev/null +++ b/net-libs/xulrunner/xulrunner-1.9.2.9.ebuild @@ -0,0 +1,246 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-libs/xulrunner/xulrunner-1.9.2.9.ebuild,v 1.8 2010/09/14 21:20:06 jer Exp $ + +EAPI="3" +WANT_AUTOCONF="2.1" + +inherit flag-o-matic toolchain-funcs eutils mozconfig-3 makeedit multilib java-pkg-opt-2 autotools python prefix pax-utils + +MY_PV="${PV/_rc/rc}" # Handle beta +MY_PV="${MY_PV/1.9.2/3.6}" +MAJ_PV="1.9.2" # from mozilla-* branch name +PATCH="${PN}-1.9.2-patches-0.7" + +DESCRIPTION="Mozilla runtime package that can be used to bootstrap XUL+XPCOM applications" +HOMEPAGE="http://developer.mozilla.org/en/docs/XULRunner" +SRC_URI="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${MY_PV}/source/firefox-${MY_PV}.source.tar.bz2 + http://dev.gentoo.org/~anarchy/mozilla/patchsets/${PATCH}.tar.bz2" + +KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 ~sparc x86 ~amd64-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris" +SLOT="1.9" +LICENSE="|| ( MPL-1.1 GPL-2 LGPL-2.1 )" +IUSE="+alsa +cups debug +ipc libnotify system-sqlite wifi" + +RDEPEND=" + >=sys-devel/binutils-2.16.1 + >=dev-libs/nss-3.12.7 + >=dev-libs/nspr-4.8.6 + system-sqlite? ( >=dev-db/sqlite-3.6.22-r2[fts3,secure-delete] ) + alsa? ( media-libs/alsa-lib ) + >=app-text/hunspell-1.2 + >=x11-libs/cairo-1.8.8[X] + x11-libs/pango[X] + x11-libs/libXt + x11-libs/pixman + >=dev-libs/libevent-1.4.7 + wifi? ( net-wireless/wireless-tools ) + libnotify? ( >=x11-libs/libnotify-0.4 ) + cups? ( net-print/cups )" + +DEPEND="java? ( >=virtual/jdk-1.4 ) + ${RDEPEND} + =dev-lang/python-2*[threads] + dev-util/pkgconfig" + +# virtual/jre should not be in DEPEND. bug 325981 +RDEPEND="java? ( >=virtual/jre-1.4 ) ${RDEPEND}" + +S="${WORKDIR}/mozilla-${MAJ_PV}" + +pkg_setup() { + # Ensure we always build with C locale. + export LANG="C" + export LC_ALL="C" + export LC_MESSAGES="C" + export LC_CTYPE="C" + + java-pkg-opt-2_pkg_setup + + python_set_active_version 2 +} + +src_prepare() { + # Apply our patches + EPATCH_SUFFIX="patch" \ + EPATCH_FORCE="yes" \ + epatch "${WORKDIR}" + + eprefixify \ + extensions/java/xpcom/interfaces/org/mozilla/xpcom/Mozilla.java \ + xpcom/build/nsXPCOMPrivate.h \ + xulrunner/installer/Makefile.in \ + xulrunner/app/nsRegisterGREUnix.cpp + + # fix double symbols due to double -ljemalloc + sed -i -e '/^LIBS += $(JEMALLOC_LIBS)/s/^/#/' \ + xulrunner/stub/Makefile.in || die + + # Allow user to apply additional patches without modifing ebuild + epatch_user + + # Same as in config/autoconf.mk.in + MOZLIBDIR="/usr/$(get_libdir)/${PN}-${MAJ_PV}" + SDKDIR="/usr/$(get_libdir)/${PN}-devel-${MAJ_PV}/sdk" + + # Gentoo install dirs + sed -i -e "s:@PV@:${MAJ_PV}:" "${S}"/config/autoconf.mk.in \ + || die "${MAJ_PV} sed failed!" + + # Enable gnomebreakpad + if use debug ; then + sed -i -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \ + "${S}"/build/unix/run-mozilla.sh || die "sed failed!" + fi + + eautoreconf + + cd js/src + eautoreconf +} + +src_configure() { + #################################### + # + # mozconfig, CFLAGS and CXXFLAGS setup + # + #################################### + + mozconfig_init + mozconfig_config + + MEXTENSIONS="default" + + MOZLIBDIR="/usr/$(get_libdir)/${PN}-${MAJ_PV}" + + # It doesn't compile on alpha without this LDFLAGS + use alpha && append-ldflags "-Wl,--no-relax" + + mozconfig_annotate '' --with-default-mozilla-five-home="${MOZLIBDIR}" + mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}" + mozconfig_annotate '' --enable-application=xulrunner + mozconfig_annotate '' --disable-mailnews + mozconfig_annotate 'broken' --disable-crashreporter + mozconfig_annotate '' --enable-image-encoder=all + mozconfig_annotate '' --enable-canvas + mozconfig_annotate 'gtk' --enable-default-toolkit=cairo-gtk2 + # Bug 60668: Galeon doesn't build without oji enabled, so enable it + # regardless of java setting. + mozconfig_annotate '' --enable-oji --enable-mathml + mozconfig_annotate 'places' --enable-storage --enable-places + mozconfig_annotate '' --enable-safe-browsing + + # Build mozdevelop permately + mozconfig_annotate '' --enable-jsd --enable-xpctools + + # System-wide install specs + mozconfig_annotate '' --disable-installer + mozconfig_annotate '' --disable-updater + mozconfig_annotate '' --disable-strip + mozconfig_annotate '' --disable-install-strip + + # Use system libraries + mozconfig_annotate '' --enable-system-cairo + mozconfig_annotate '' --enable-system-hunspell + mozconfig_annotate '' --with-system-nspr --with-nspr-prefix="${EPREFIX}"/usr + mozconfig_annotate '' --with-system-nss --with-nss-prefix="${EPREFIX}"/usr + mozconfig_annotate '' --x-includes="${EPREFIX}"/usr/include --x-libraries="${EPREFIX}"/usr/$(get_libdir) + mozconfig_annotate '' --with-system-bz2 + mozconfig_annotate '' --with-system-libevent="${EPREFIX}"/usr + + mozconfig_use_enable ipc # +ipc, upstream default + mozconfig_use_enable libnotify + mozconfig_use_enable java javaxpcom + mozconfig_use_enable wifi necko-wifi + mozconfig_use_enable alsa ogg + mozconfig_use_enable alsa wave + mozconfig_use_enable system-sqlite + mozconfig_use_enable cups printing + + # Debug + if use debug ; then + mozconfig_annotate 'debug' --disable-optimize + mozconfig_annotate 'debug' --enable-debug=-ggdb + mozconfig_annotate 'debug' --enable-debug-modules=all + mozconfig_annotate 'debug' --enable-debugger-info-modules + fi + + # Finalize and report settings + mozconfig_final + + if [[ $(gcc-major-version) -lt 4 ]]; then + append-flags -fno-stack-protector + fi + + #################################### + # + # Configure and build + # + #################################### + + # Disable no-print-directory + MAKEOPTS=${MAKEOPTS/--no-print-directory/} + + # Ensure that are plugins dir is enabled as default + sed -i -e "s:/usr/lib/mozilla/plugins:/usr/$(get_libdir)/nsbrowser/plugins:" \ + "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path!" + + # hack added to workaround bug 299905 on hosts with libc that doesn't + # support tls, (probably will only hit this condition with Gentoo Prefix) + tc-has-tls -l || export ac_cv_thread_keyword=no + + CC="$(tc-getCC)" CXX="$(tc-getCXX)" LD="$(tc-getLD)" PYTHON="$(PYTHON)" econf +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + rm "${ED}"/usr/bin/xulrunner + + MOZLIBDIR="/usr/$(get_libdir)/${PN}-${MAJ_PV}" + SDKDIR="/usr/$(get_libdir)/${PN}-devel-${MAJ_PV}/sdk" + + if has_multilib_profile; then + local config + for config in "${ED}"/etc/gre.d/*.system.conf ; do + mv "${config}" "${config%.conf}.${CHOST}.conf" + done + fi + + dodir /usr/bin + dosym "${MOZLIBDIR}/xulrunner" "/usr/bin/xulrunner-${MAJ_PV}" || die + + # env.d file for ld search path + dodir /etc/env.d + echo "LDPATH=${EPREFIX}/${MOZLIBDIR}" > "${ED}"/etc/env.d/08xulrunner || die "env.d failed" + + # Add our defaults to xulrunner and out of firefox + cp "${FILESDIR}"/xulrunner-default-prefs.js \ + "${ED}/${MOZLIBDIR}/defaults/pref/all-gentoo.js" || \ + die "failed to cp xulrunner-default-prefs.js" + + pax-mark m "${D}"/${MOZLIBDIR}/plugin-container + + if use java ; then + java-pkg_regjar "${ED}/${MOZLIBDIR}/javaxpcom.jar" + java-pkg_regso "${ED}/${MOZLIBDIR}/libjavaxpcomglue.so" + java-pkg_regjar "${ED}/${SDKDIR}/lib/MozillaGlue.jar" + java-pkg_regjar "${ED}/${SDKDIR}/lib/MozillaInterfaces.jar" + fi +} + +pkg_postinst() { + ewarn "If firefox fails to start with \"failed to load xpcom\", run revdep-rebuild" + ewarn "If that does not fix the problem, rebuild dev-libs/nss" + ewarn "Try dev-util/lafilefixer if you get build failures related to .la files" + + einfo + einfo "All prefs can be overridden by the user. The preferences are to make" + einfo "use of xulrunner out of the box on an average system without the user" + einfo "having to go through and enable the basics." + + einfo + ewarn "Any package that requires xulrunner:1.9 slot could and most likely will" + ewarn "have issues. These issues should be reported to maintainer, and mozilla herd" + ewarn "should be cc'd on the bug report. Thank you anarchy@gentoo.org ." +} |