diff options
author | Lars Wendler <polynomial-c@gentoo.org> | 2010-10-28 15:06:59 +0000 |
---|---|---|
committer | Lars Wendler <polynomial-c@gentoo.org> | 2010-10-28 15:06:59 +0000 |
commit | b2dead67d190c09788343f4dba47bfeec4b69a79 (patch) | |
tree | 8b3da053c2000983370a88339d8410fe53de1da4 /net-libs/xulrunner | |
parent | workaround broken repoman check (diff) | |
download | gentoo-2-b2dead67d190c09788343f4dba47bfeec4b69a79.tar.gz gentoo-2-b2dead67d190c09788343f4dba47bfeec4b69a79.tar.bz2 gentoo-2-b2dead67d190c09788343f4dba47bfeec4b69a79.zip |
Readded latest stable sparc version which I foolishly removed from the tree.
(Portage version: 2.2.0_alpha2/cvs/Linux x86_64, RepoMan options: --force)
Diffstat (limited to 'net-libs/xulrunner')
-rw-r--r-- | net-libs/xulrunner/ChangeLog | 7 | ||||
-rw-r--r-- | net-libs/xulrunner/files/1009-armv4t-nanojit-v2.patch | 320 | ||||
-rw-r--r-- | net-libs/xulrunner/xulrunner-1.9.2.8.ebuild | 240 |
3 files changed, 566 insertions, 1 deletions
diff --git a/net-libs/xulrunner/ChangeLog b/net-libs/xulrunner/ChangeLog index 69bb54a182a5..547a8092c0ac 100644 --- a/net-libs/xulrunner/ChangeLog +++ b/net-libs/xulrunner/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for net-libs/xulrunner # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-libs/xulrunner/ChangeLog,v 1.370 2010/10/28 13:53:46 polynomial-c Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-libs/xulrunner/ChangeLog,v 1.371 2010/10/28 15:06:59 polynomial-c Exp $ + + 28 Oct 2010; Lars Wendler <polynomial-c@gentoo.org> + +files/1009-armv4t-nanojit-v2.patch, +xulrunner-1.9.2.8.ebuild: + Readded latest stable sparc version which I foolishly removed from the + tree. *xulrunner-1.9.2.12 (28 Oct 2010) 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 000000000000..2d57c95067a9 --- /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/xulrunner-1.9.2.8.ebuild b/net-libs/xulrunner/xulrunner-1.9.2.8.ebuild new file mode 100644 index 000000000000..871bd055481c --- /dev/null +++ b/net-libs/xulrunner/xulrunner-1.9.2.8.ebuild @@ -0,0 +1,240 @@ +# 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.8.ebuild,v 1.12 2010/10/28 15:06:59 polynomial-c 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 + +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.6" + +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 debug +ipc libnotify system-sqlite wifi" + +RDEPEND="java? ( >=virtual/jre-1.4 ) + >=sys-devel/binutils-2.16.1 + >=dev-libs/nss-3.12.6 + >=dev-libs/nspr-4.8 + 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 + wifi? ( net-wireless/wireless-tools ) + libnotify? ( >=x11-libs/libnotify-0.4 )" + +DEPEND="java? ( >=virtual/jdk-1.4 ) + ${RDEPEND} + =dev-lang/python-2*[threads] + dev-util/pkgconfig" + +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_EXCLUDE="1009-armv4t-nanojit.patch" \ + EPATCH_SUFFIX="patch" \ + EPATCH_FORCE="yes" \ + epatch "${WORKDIR}" + + epatch "${FILESDIR}"/1009-armv4t-nanojit-v2.patch + + 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_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 + + # 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" + + 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 ." +} |