Merge branch 'master' into f15

This commit is contained in:
Jan Horak 2011-12-20 13:47:11 +01:00
commit 84e7db2571
8 changed files with 115 additions and 174 deletions

2
.gitignore vendored
View File

@ -30,3 +30,5 @@ thunderbird-langpacks-3.1.2-20100803.tar.bz2
/thunderbird-langpacks-7.0.1-20110930.tar.xz
/thunderbird-8.0.source.tar.bz2
/thunderbird-langpacks-8.0-20111108.tar.xz
/thunderbird-9.0.source.tar.bz2
/thunderbird-langpacks-9.0-20111220.tar.xz

View File

@ -1,53 +0,0 @@
# HG changeset patch
# User Mike Hommey <mh+mozilla@glandium.org>
# Date 1313846520 -7200
# Node ID fdc3b63938f5a76d99c1e2bb12fd448465debc94
# Parent 07a5a618ebe3f67b23100ceb1b51e92bb79be0cd
Bug 670719 - Only add -DENABLE_JIT=1 to CXXFLAGS if any of trace/method/yarr jit is enabled.
diff --git a/js/src/Makefile.in b/js/src/Makefile.in
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -433,16 +433,19 @@ CPPSRCS += \
YarrPattern.cpp \
YarrSyntaxChecker.cpp \
$(NULL)
else
###############################################
# BEGIN include sources for the Nitro assembler
#
+
+ENABLE_YARR_JIT = 1
+
VPATH += $(srcdir)/assembler \
$(srcdir)/assembler/wtf \
$(srcdir)/assembler/jit \
$(srcdir)/assembler/assembler \
$(srcdir)/methodjit \
$(srcdir)/yarr \
$(NONE)
@@ -1070,17 +1073,21 @@ endif
###############################################
# BEGIN kludges for the Nitro assembler
#
# Needed to "configure" it correctly. Unfortunately these
# flags wind up being applied to all code in js/src, not just
# the code in js/src/assembler.
-CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1 -DENABLE_JIT=1
+CXXFLAGS += -DUSE_SYSTEM_MALLOC=1 -DENABLE_ASSEMBLER=1
+
+ifneq (,$(ENABLE_YARR_JIT)$(ENABLE_TRACEJIT)$(ENABLE_METHODJIT))
+CXXFLAGS += -DENABLE_JIT=1
+endif
INCLUDES += -I$(srcdir)/assembler -I$(srcdir)/yarr
ifdef ENABLE_METHODJIT
# Build a standalone test program that exercises the assembler
# sources a bit.
TESTMAIN_OBJS = \
Assertions.$(OBJ_SUFFIX) \

View File

@ -1,7 +1,7 @@
diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp
--- mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 2011-11-04 17:34:23.000000000 -0400
+++ mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp 2011-12-01 12:25:09.947558444 -0500
@@ -200,56 +200,22 @@ invoke_copy_to_stack(PRUint32 paramCount
diff -up xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp
--- xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp.696393 2011-12-07 07:28:08.000000000 +0100
+++ xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp 2011-12-09 15:06:10.584998410 +0100
@@ -200,52 +200,21 @@ invoke_copy_to_stack(PRUint32 paramCount
}
}
@ -12,22 +12,12 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
PRUint32 paramCount, nsXPTCVariant* params)
{
- PRUint32 *vtable = *(PRUint32 **)that;
-#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
- PRUint32 method = vtable[methodIndex];
-#else /* not G++ V3 ABI */
- PRUint32 method = vtable[methodIndex + 2];
-#endif /* G++ V3 ABI */
+ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
+ vtable_func method = vtable[methodIndex];
PRUint32 overflow = invoke_count_words (paramCount, params);
- PRUint32 result;
+ PRUint32 *stack_space = reinterpret_cast<PRUint32 *>(__builtin_alloca((overflow + 8 /* 4 32-bits gpr + 2 64-bits fpr */) * 4));
+
+ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
+
+ PRUint32 *d_gpr = stack_space + overflow;
+ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
-
- __asm__ __volatile__
- (
- "lr 7,15\n\t"
@ -39,19 +29,23 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
- "l 2,0(15)\n\t"
- "la 15,0(3,7)\n\t"
- "st 2,0(15)\n\t"
-
+ PRUint32 *stack_space = reinterpret_cast<PRUint32 *>(__builtin_alloca((overflow + 8 /* 4 32-bits gpr + 2 64-bits fpr */) * 4));
- "lr 2,%1\n\t"
- "lr 3,%2\n\t"
- "la 4,96(15)\n\t"
- "lr 5,%3\n\t"
- "basr 14,%4\n\t"
-
+ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
- "lr 2,%5\n\t"
- "ld 0,112(7)\n\t"
- "ld 2,120(7)\n\t"
- "lm 3,6,96(7)\n\t"
- "basr 14,%6\n\t"
-
+ PRUint32 *d_gpr = stack_space + overflow;
+ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
- "la 15,32(7)\n\t"
-
- "lr %0,2\n\t"
@ -68,11 +62,11 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
- return result;
+ return method(that, d_gpr[0], d_gpr[1], d_gpr[2], d_gpr[3], d_fpr[0], d_fpr[1]);
}
diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp.696393 mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp
--- mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp.696393 2011-11-04 17:34:23.000000000 -0400
+++ mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp 2011-12-02 09:33:06.717556519 -0500
@@ -194,59 +194,23 @@ invoke_copy_to_stack(PRUint32 paramCount
-
diff -up xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp.696393 xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp
--- xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp.696393 2011-12-07 07:28:08.000000000 +0100
+++ xulrunner-9.0/mozilla-beta/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp 2011-12-09 15:07:07.609097348 +0100
@@ -194,55 +194,22 @@ invoke_copy_to_stack(PRUint32 paramCount
}
}
@ -83,11 +77,7 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
PRUint32 paramCount, nsXPTCVariant* params)
{
- PRUint64 *vtable = *(PRUint64 **)that;
-#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */
- PRUint64 method = vtable[methodIndex];
-#else /* not G++ V3 ABI */
- PRUint64 method = vtable[methodIndex + 2];
-#endif /* G++ V3 ABI */
+ vtable_func *vtable = *reinterpret_cast<vtable_func **>(that);
+ vtable_func method = vtable[methodIndex];
PRUint64 overflow = invoke_count_words (paramCount, params);
@ -111,7 +101,8 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
- "la 4,160(15)\n\t"
- "lgr 5,%3\n\t"
- "basr 14,%4\n\t"
-
+ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
- "lgr 2,%5\n\t"
- "ld 0,192(7)\n\t"
- "ld 2,200(7)\n\t"
@ -119,7 +110,9 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
- "ld 6,216(7)\n\t"
- "lmg 3,6,160(7)\n\t"
- "basr 14,%6\n\t"
-
+ PRUint64 *d_gpr = stack_space + overflow;
+ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
- "la 15,64(7)\n\t"
-
- "lgr %0,2\n\t"
@ -135,11 +128,6 @@ diff -up mozilla-release/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390
- );
-
- return result;
+ invoke_copy_to_stack(paramCount, params, stack_space, overflow);
+
+ PRUint64 *d_gpr = stack_space + overflow;
+ double *d_fpr = reinterpret_cast<double *>(d_gpr + 4);
+
+ return method(that, d_gpr[0], d_gpr[1], d_gpr[2], d_gpr[3], d_fpr[0], d_fpr[1], d_fpr[2], d_fpr[3]);
}
-

View File

@ -1,2 +1,2 @@
332f60036aebdce7dec6ee2b1af4941d thunderbird-8.0.source.tar.bz2
6bffd9152416e3ddb52afc51269cefcc thunderbird-langpacks-8.0-20111108.tar.xz
d558b457d439fd0d86e23543f0cc30ba thunderbird-9.0.source.tar.bz2
394af2d9c73460843e0be77aa9619e1b thunderbird-langpacks-9.0-20111220.tar.xz

View File

@ -1,12 +1,18 @@
%define nspr_version 4.8
%define nss_version 3.12.10
%define nspr_version 4.8.8
%define nss_version 3.13.1
%define cairo_version 1.8.8
%define freetype_version 2.1.9
%define sqlite_version 3.6.14
%define sqlite_version 3.7.7.1
%define libnotify_version 0.4
%define build_langpacks 1
%define thunderbird_app_id \{3550f703-e582-4d05-9a08-453d09bdfdc6\}
%if 0%{?fedora} <= 15
%define system_sqlite 0
%else
%define system_sqlite 1
%endif
# The tarball is pretty inconsistent with directory structure.
# Sometimes there is a top level directory. That goes here.
#
@ -26,8 +32,8 @@
Summary: Mozilla Thunderbird mail/newsgroup client
Name: thunderbird
Version: 8.0
Release: 4%{?dist}
Version: 9.0
Release: 1%{?dist}
URL: http://www.mozilla.org/projects/thunderbird/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Group: Applications/Internet
@ -38,7 +44,7 @@ Group: Applications/Internet
%endif
Source0: %{tarball}
%if %{build_langpacks}
Source1: thunderbird-langpacks-%{version}-20111108.tar.xz
Source1: thunderbird-langpacks-%{version}-20111220.tar.xz
%endif
Source10: thunderbird-mozconfig
Source11: thunderbird-mozconfig-branded
@ -51,14 +57,12 @@ Source100: find-external-requires
# Mozilla (XULRunner) patches
Patch0: thunderbird-install-dir.patch
Patch7: crashreporter-remove-static.patch
Patch8: xulrunner-6.0-secondary-ipc.patch
Patch9: mozilla-670719.patch
Patch8: xulrunner-9.0-secondary-ipc.patch
Patch10: xulrunner-2.0-network-link-service.patch
Patch11: xulrunner-2.0-NetworkManager09.patch
Patch12: mozilla-696393.patch
# Build patches
Patch100: xulrunner-install.patch
# Linux specific
Patch200: thunderbird-8.0-enable-addons.patch
@ -91,7 +95,9 @@ BuildRequires: freetype-devel >= %{freetype_version}
BuildRequires: libXt-devel
BuildRequires: libXrender-devel
BuildRequires: hunspell-devel
%if %{?system_sqlite}
BuildRequires: sqlite-devel >= %{sqlite_version}
%endif
BuildRequires: startup-notification-devel
BuildRequires: alsa-lib-devel
BuildRequires: autoconf213
@ -102,7 +108,9 @@ BuildRequires: mesa-libGL-devel
Requires: mozilla-filesystem
Requires: nspr >= %{nspr_version}
Requires: nss >= %{nss_version}
%if %{?system_sqlite}
Requires: sqlite >= %{sqlite_version}
%endif
AutoProv: 0
%define _use_internal_dependency_generator 0
@ -140,11 +148,9 @@ cd %{tarballdir}
cd mozilla
%patch7 -p2 -b .static
%patch8 -p2 -b .secondary-ipc
%patch9 -p1 -b .moz670719
%patch10 -p1 -b .link-service
%patch11 -p1 -b .NetworkManager09
%patch12 -p1 -b .696393
%patch100 -p2 -b .install
%patch12 -p2 -b .696393
cd ..
%patch200 -p1 -b .addons
@ -166,6 +172,12 @@ cd ..
%{__cat} %{SOURCE13} >> .mozconfig
%endif
%if %{?system_sqlite}
echo "ac_add_options --enable-system-sqlite" >> .mozconfig
%else
echo "ac_add_options --disable-system-sqlite" >> .mozconfig
%endif
#===============================================================================
%build
@ -348,10 +360,14 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%exclude %{_includedir}/%{name}-%{version}
%exclude %{_libdir}/%{name}-devel-%{version}
%{mozappdir}/chrome.manifest
%{mozappdir}/distribution/extensions
#===============================================================================
%changelog
* Tue Dec 20 2011 Jan Horak <jhorak@redhat.com> - 9.0-1
- Update to 9.0
* Fri Dec 9 2011 Martin Stransky <stransky@redhat.com> - 8.0-4
- enabled gio support (#760644)

View File

@ -1,60 +0,0 @@
diff -up xulrunner-6.0/mozilla-release/ipc/chromium/src/base/data_pack.cc.secondary-ipc xulrunner-6.0/mozilla-release/ipc/chromium/src/base/data_pack.cc
--- xulrunner-6.0/mozilla-release/ipc/chromium/src/base/data_pack.cc.secondary-ipc 2011-08-11 23:41:01.000000000 +0200
+++ xulrunner-6.0/mozilla-release/ipc/chromium/src/base/data_pack.cc 2011-08-16 10:05:26.325449386 +0200
@@ -91,14 +91,7 @@ bool DataPack::Load(const FilePath& path
bool DataPack::Get(uint32_t resource_id, StringPiece* data) {
// It won't be hard to make this endian-agnostic, but it's not worth
// bothering to do right now.
-#if defined(__BYTE_ORDER)
- // Linux check
- COMPILE_ASSERT(__BYTE_ORDER == __LITTLE_ENDIAN,
- datapack_assumes_little_endian);
-#elif defined(__BIG_ENDIAN__)
- // Mac check
- #error DataPack assumes little endian
-#endif
+#warning DoTheRightThingMakingThisEndianAgnostic!
DataPackEntry* target = reinterpret_cast<DataPackEntry*>(
bsearch(&resource_id, mmap_->data() + kHeaderLength, resource_count_,
diff -up xulrunner-6.0/mozilla-release/ipc/chromium/src/build/build_config.h.secondary-ipc xulrunner-6.0/mozilla-release/ipc/chromium/src/build/build_config.h
--- xulrunner-6.0/mozilla-release/ipc/chromium/src/build/build_config.h.secondary-ipc 2011-08-11 23:41:01.000000000 +0200
+++ xulrunner-6.0/mozilla-release/ipc/chromium/src/build/build_config.h 2011-08-16 10:07:23.093899409 +0200
@@ -57,9 +57,24 @@
#define ARCH_CPU_ARMEL 1
#define ARCH_CPU_32_BITS 1
#define WCHAR_T_IS_UNSIGNED 1
+#elif defined(__powerpc64__)
+#define ARCH_CPU_PPC64 1
+#define ARCH_CPU_64_BITS 1
#elif defined(__ppc__) || defined(__powerpc__)
#define ARCH_CPU_PPC 1
#define ARCH_CPU_32_BITS 1
+#elif defined(__s390x__)
+#define ARCH_CPU_S390X 1
+#define ARCH_CPU_64_BITS 1
+#elif defined(__s390__)
+#define ARCH_CPU_S390 1
+#define ARCH_CPU_32_BITS 1
+#elif defined(__sparc__) && !defined(__arch64)
+#define ARCH_CPU_SPARC 1
+#define ARCH_CPU_32_BITS 1
+#elif defined(__sparc__) && defined(__arch64)
+#define ARCH_CPU_SPARC64 1
+#define ARCH_CPU_64_BITS 1
#else
#error Please add support for your architecture in build/build_config.h
#endif
diff -up xulrunner-6.0/mozilla-release/ipc/chromium/src/chrome/common/ipc_message_utils.h.secondary-ipc xulrunner-6.0/mozilla-release/ipc/chromium/src/chrome/common/ipc_message_utils.h
--- xulrunner-6.0/mozilla-release/ipc/chromium/src/chrome/common/ipc_message_utils.h.secondary-ipc 2011-08-11 23:41:01.000000000 +0200
+++ xulrunner-6.0/mozilla-release/ipc/chromium/src/chrome/common/ipc_message_utils.h 2011-08-16 10:05:26.326449206 +0200
@@ -219,7 +219,8 @@ struct ParamTraits<unsigned long> {
}
};
-#if !(defined(OS_MACOSX) || defined(OS_WIN) || (defined(CHROMIUM_MOZILLA_BUILD) && defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)))
+// Although s390 is a 32-bit system it defines size_t as unsigned long
+#if !(defined(OS_MACOSX) || defined(OS_WIN) || (defined(CHROMIUM_MOZILLA_BUILD) && defined(OS_LINUX) && (defined(ARCH_CPU_64_BITS) || defined(ARCH_CPU_S390))))
// There size_t is a synonym for |unsigned long| ...
template <>
struct ParamTraits<size_t> {

View File

@ -0,0 +1,60 @@
diff -up xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc.secondary-ipc xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc
--- xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc.secondary-ipc 2011-12-07 07:27:43.000000000 +0100
+++ xulrunner-9.0/mozilla-beta/ipc/chromium/src/base/data_pack.cc 2011-12-09 14:35:50.397220865 +0100
@@ -91,14 +91,7 @@ bool DataPack::Load(const FilePath& path
bool DataPack::Get(uint32_t resource_id, StringPiece* data) {
// It won't be hard to make this endian-agnostic, but it's not worth
// bothering to do right now.
-#if defined(__BYTE_ORDER)
- // Linux check
- COMPILE_ASSERT(__BYTE_ORDER == __LITTLE_ENDIAN,
- datapack_assumes_little_endian);
-#elif defined(__BIG_ENDIAN__)
- // Mac check
- #error DataPack assumes little endian
-#endif
+#warning DoTheRightThingMakingThisEndianAgnostic!
DataPackEntry* target = reinterpret_cast<DataPackEntry*>(
bsearch(&resource_id, mmap_->data() + kHeaderLength, resource_count_,
diff -up xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h.secondary-ipc xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h
--- xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h.secondary-ipc 2011-12-07 07:27:43.000000000 +0100
+++ xulrunner-9.0/mozilla-beta/ipc/chromium/src/build/build_config.h 2011-12-09 14:39:44.922231601 +0100
@@ -59,11 +59,23 @@
#define ARCH_CPU_ARMEL 1
#define ARCH_CPU_32_BITS 1
#define WCHAR_T_IS_UNSIGNED 1
+#elif defined(__powerpc64__)
+#define ARCH_CPU_PPC64 1
+#define ARCH_CPU_64_BITS 1
#elif defined(__ppc__) || defined(__powerpc__)
#define ARCH_CPU_PPC 1
#define ARCH_CPU_32_BITS 1
-#elif defined(__sparc64__)
+#elif defined(__s390x__)
+#define ARCH_CPU_S390X 1
+#define ARCH_CPU_64_BITS 1
+#elif defined(__s390__)
+#define ARCH_CPU_S390 1
+#define ARCH_CPU_32_BITS 1
+#elif defined(__sparc__) && !defined(__arch64)
#define ARCH_CPU_SPARC 1
+#define ARCH_CPU_32_BITS 1
+#elif defined(__sparc__) && defined(__arch64)
+#define ARCH_CPU_SPARC64 1
#define ARCH_CPU_64_BITS 1
#else
#error Please add support for your architecture in build/build_config.h
diff -up xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h.secondary-ipc xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h
--- xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h.secondary-ipc 2011-12-07 07:27:43.000000000 +0100
+++ xulrunner-9.0/mozilla-beta/ipc/chromium/src/chrome/common/ipc_message_utils.h 2011-12-09 14:40:59.602679278 +0100
@@ -195,7 +195,8 @@ struct ParamTraits<unsigned long long> {
};
#endif
-#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || (defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)))
+// Although s390 is a 32-bit system it defines size_t as unsigned long
+#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || (defined(OS_LINUX) && (defined(ARCH_CPU_64_BITS) || defined(ARCH_CPU_S390))))
// There size_t is a synonym for |unsigned long| ...
template <>
struct ParamTraits<size_t> {

View File

@ -1,12 +0,0 @@
diff -up comm-release/mozilla/toolkit/mozapps/installer/packager.mk.install comm-release/mozilla/toolkit/mozapps/installer/packager.mk
--- comm-release/mozilla/toolkit/mozapps/installer/packager.mk.install 2011-11-05 10:21:10.000000000 +0100
+++ comm-release/mozilla/toolkit/mozapps/installer/packager.mk 2011-11-08 18:48:08.674042803 +0100
@@ -401,7 +401,7 @@ PRECOMPILE_GRE=$$PWD
endif
GENERATE_CACHE = \
- $(_ABS_RUN_TEST_PROGRAM) $(LIBXUL_DIST)/bin/xpcshell$(BIN_SUFFIX) -g "$(PRECOMPILE_GRE)" -a "$$PWD" -f $(MOZILLA_DIR)/toolkit/mozapps/installer/precompile_cache.js -e "populate_startupcache('$(PRECOMPILE_DIR)', 'omni.jar', 'startupCache.zip');" && \
+ $(_ABS_RUN_TEST_PROGRAM) $(LIBXUL_DIST)/bin/xpcshell$(BIN_SUFFIX) -g "$(PRECOMPILE_GRE)" -a "$$PWD" -f $(call core_abspath,$(MOZILLA_DIR)/toolkit/mozapps/installer/precompile_cache.js) -e "populate_startupcache('$(PRECOMPILE_DIR)', 'omni.jar', 'startupCache.zip');" && \
rm -rf jsloader && \
$(UNZIP) startupCache.zip && \
rm startupCache.zip && \