diff options
Diffstat (limited to 'www/firefox-esr')
-rw-r--r-- | www/firefox-esr/Makefile | 2 | ||||
-rw-r--r-- | www/firefox-esr/files/patch-browser-app-Makefile.in | 63 | ||||
-rw-r--r-- | www/firefox-esr/files/patch-browser-app-nsBrowserApp.cpp | 221 |
3 files changed, 285 insertions, 1 deletions
diff --git a/www/firefox-esr/Makefile b/www/firefox-esr/Makefile index 7cd13b5fd4ba..977d6a439b1f 100644 --- a/www/firefox-esr/Makefile +++ b/www/firefox-esr/Makefile @@ -7,7 +7,7 @@ PORTNAME= firefox DISTVERSION= 7.0.1 -PORTREVISION= 2 +PORTREVISION= 3 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= ${MASTER_SITE_MOZILLA} diff --git a/www/firefox-esr/files/patch-browser-app-Makefile.in b/www/firefox-esr/files/patch-browser-app-Makefile.in new file mode 100644 index 000000000000..12c3f0bf8392 --- /dev/null +++ b/www/firefox-esr/files/patch-browser-app-Makefile.in @@ -0,0 +1,63 @@ +--- browser/app/Makefile.in 2011-09-28 22:24:36.000000000 +0200 ++++ ../../ff6/mozilla-release/browser/app/Makefile.in 2011-09-02 22:15:19.000000000 +0200 +@@ -92,22 +91,35 @@ + else + # Build a binary bootstrapping with XRE_main + ++ifneq (,$(filter OS2 WINNT,$(OS_ARCH))) + PROGRAM = $(MOZ_APP_NAME)$(BIN_SUFFIX) ++else ++PROGRAM = $(MOZ_APP_NAME)-bin$(BIN_SUFFIX) ++endif + + CPPSRCS = nsBrowserApp.cpp + + LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre + LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base +-LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build + +-DEFINES += -DXPCOM_GLUE +-STL_FLAGS= ++ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) ++LIBS += $(DIST)/bin/XUL ++TK_LIBS := $(TK_LIBS) ++else ++EXTRA_DSO_LIBS += xul ++endif + + LIBS += \ ++ $(STATIC_COMPONENTS_LINKER_PATH) \ + $(EXTRA_DSO_LIBS) \ +- $(XPCOM_STANDALONE_GLUE_LDOPTS) \ ++ $(XPCOM_GLUE_LDOPTS) \ ++ $(NSPR_LIBS) \ + $(NULL) + ++ifdef MOZ_JPROF ++LIBS += -ljprof ++endif ++ + ifndef MOZ_WINCONSOLE + ifdef MOZ_DEBUG + MOZ_WINCONSOLE = 1 +@@ -182,9 +194,18 @@ + + ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH))) + +-libs:: +- cp -p $(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX) ++$(MOZ_APP_NAME):: $(topsrcdir)/build/unix/mozilla.in $(GLOBAL_DEPS) ++ cat $< | sed -e "s|%MOZAPPDIR%|$(installdir)|" \ ++ -e "s|%MOZ_APP_DISPLAYNAME%|$(MOZ_APP_DISPLAYNAME)|" > $@ ++ chmod +x $@ ++ ++libs:: $(MOZ_APP_NAME) ++ $(INSTALL) $< $(DIST)/bin ++ ++install:: $(MOZ_APP_NAME) ++ $(SYSINSTALL) $< $(DESTDIR)$(bindir) + ++GARBAGE += $(MOZ_APP_NAME) + GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, firefox.js) + + endif diff --git a/www/firefox-esr/files/patch-browser-app-nsBrowserApp.cpp b/www/firefox-esr/files/patch-browser-app-nsBrowserApp.cpp new file mode 100644 index 000000000000..d0a9dd4c4310 --- /dev/null +++ b/www/firefox-esr/files/patch-browser-app-nsBrowserApp.cpp @@ -0,0 +1,221 @@ +--- browser/app/nsBrowserApp.cpp 2011-09-28 22:24:36.000000000 +0200 ++++ ../../ff6/mozilla-release/browser/app/nsBrowserApp.cpp 2011-09-02 22:15:19.000000000 +0200 +@@ -36,19 +36,14 @@ + * + * ***** END LICENSE BLOCK ***** */ + +-#include "nsXPCOMGlue.h" + #include "nsXULAppAPI.h" +-#if defined(XP_WIN) ++#ifdef XP_WIN + #include <windows.h> + #include <stdlib.h> +-#elif defined(XP_UNIX) +-#include <sys/time.h> +-#include <sys/resource.h> + #endif + + #include <stdio.h> + #include <stdarg.h> +-#include <string.h> + + #include "plstr.h" + #include "prprf.h" +@@ -59,16 +54,11 @@ + #include "nsStringGlue.h" + + #ifdef XP_WIN ++// we want to use the DLL blocklist if possible ++#define XRE_WANT_DLL_BLOCKLIST + // we want a wmain entry point + #include "nsWindowsWMain.cpp" +-#define snprintf _snprintf +-#define strcasecmp _stricmp + #endif +-#include "BinaryPath.h" +- +-#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL +- +-#include "mozilla/Telemetry.h" + + static void Output(const char *fmt, ... ) + { +@@ -95,12 +85,12 @@ + { + if (*++arg == '-') + ++arg; +- return !strcasecmp(arg, s); ++ return !PL_strcasecmp(arg, s); + } + + #if defined(XP_WIN) || defined(XP_OS2) + if (*arg == '/') +- return !strcasecmp(++arg, s); ++ return !PL_strcasecmp(++arg, s); + #endif + + return PR_FALSE; +@@ -116,48 +106,22 @@ + ~ScopedLogging() { NS_LogTerm(); } + }; + +-XRE_GetFileFromPathType XRE_GetFileFromPath; +-XRE_CreateAppDataType XRE_CreateAppData; +-XRE_FreeAppDataType XRE_FreeAppData; +-#ifdef XRE_HAS_DLL_BLOCKLIST +-XRE_SetupDllBlocklistType XRE_SetupDllBlocklist; +-#endif +-XRE_TelemetryAccumulateType XRE_TelemetryAccumulate; +-XRE_mainType XRE_main; +- +-static const nsDynamicFunctionLoad kXULFuncs[] = { +- { "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath }, +- { "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData }, +- { "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData }, +-#ifdef XRE_HAS_DLL_BLOCKLIST +- { "XRE_SetupDllBlocklist", (NSFuncPtr*) &XRE_SetupDllBlocklist }, +-#endif +- { "XRE_TelemetryAccumulate", (NSFuncPtr*) &XRE_TelemetryAccumulate }, +- { "XRE_main", (NSFuncPtr*) &XRE_main }, +- { nsnull, nsnull } +-}; +- +-static int do_main(const char *exePath, int argc, char* argv[]) ++int main(int argc, char* argv[]) + { ++ ScopedLogging log; ++ + nsCOMPtr<nsILocalFile> appini; +-#ifdef XP_WIN +- // exePath comes from mozilla::BinaryPath::Get, which returns a UTF-8 +- // encoded path, so it is safe to convert it +- nsresult rv = NS_NewLocalFile(NS_ConvertUTF8toUTF16(exePath), PR_FALSE, +- getter_AddRefs(appini)); +-#else +- nsresult rv = NS_NewNativeLocalFile(nsDependentCString(exePath), PR_FALSE, +- getter_AddRefs(appini)); +-#endif ++ nsresult rv = XRE_GetBinaryPath(argv[0], getter_AddRefs(appini)); + if (NS_FAILED(rv)) { ++ Output("Couldn't calculate the application directory."); + return 255; + } +- + appini->SetNativeLeafName(NS_LITERAL_CSTRING("application.ini")); + + // Allow firefox.exe to launch XULRunner apps via -app <application.ini> + // Note that -app must be the *first* argument. +- const char *appDataFile = getenv("XUL_APP_FILE"); ++ char *appEnv = nsnull; ++ const char *appDataFile = PR_GetEnv("XUL_APP_FILE"); + if (appDataFile && *appDataFile) { + rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appini)); + if (NS_FAILED(rv)) { +@@ -177,12 +141,8 @@ + return 255; + } + +- char appEnv[MAXPATHLEN]; +- snprintf(appEnv, MAXPATHLEN, "XUL_APP_FILE=%s", argv[2]); +- if (putenv(appEnv)) { +- Output("Couldn't set %s.\n", appEnv); +- return 255; +- } ++ appEnv = PR_smprintf("XUL_APP_FILE=%s", argv[2]); ++ PR_SetEnv(appEnv); + argv[2] = argv[0]; + argv += 2; + argc -= 2; +@@ -197,90 +157,7 @@ + + int result = XRE_main(argc, argv, appData); + XRE_FreeAppData(appData); +- return result; +-} +- +-int main(int argc, char* argv[]) +-{ +- char exePath[MAXPATHLEN]; +- +- nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath); +- if (NS_FAILED(rv)) { +- Output("Couldn't calculate the application directory.\n"); +- return 255; +- } +- +- char *lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); +- if (!lastSlash || (lastSlash - exePath > MAXPATHLEN - sizeof(XPCOM_DLL) - 1)) +- return 255; +- +- strcpy(++lastSlash, XPCOM_DLL); +- +- int gotCounters; +-#if defined(XP_UNIX) +- struct rusage initialRUsage; +- gotCounters = !getrusage(RUSAGE_SELF, &initialRUsage); +-#elif defined(XP_WIN) +- // GetProcessIoCounters().ReadOperationCount seems to have little to +- // do with actual read operations. It reports 0 or 1 at this stage +- // in the program. Luckily 1 coincides with when prefetch is +- // enabled. If Windows prefetch didn't happen we can do our own +- // faster dll preloading. +- IO_COUNTERS ioCounters; +- gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters); +- if (gotCounters && !ioCounters.ReadOperationCount) +-#endif +- { +- XPCOMGlueEnablePreload(); +- } +- +- +- rv = XPCOMGlueStartup(exePath); +- if (NS_FAILED(rv)) { +- Output("Couldn't load XPCOM.\n"); +- return 255; +- } +- +- rv = XPCOMGlueLoadXULFunctions(kXULFuncs); +- if (NS_FAILED(rv)) { +- Output("Couldn't load XRE functions.\n"); +- return 255; +- } +- +-#ifdef XRE_HAS_DLL_BLOCKLIST +- XRE_SetupDllBlocklist(); +-#endif +- +- if (gotCounters) { +-#if defined(XP_WIN) +- XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_OPS, +- int(ioCounters.ReadOperationCount)); +- XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_TRANSFER, +- int(ioCounters.ReadTransferCount / 1024)); +- IO_COUNTERS newIoCounters; +- if (GetProcessIoCounters(GetCurrentProcess(), &newIoCounters)) { +- XRE_TelemetryAccumulate(mozilla::Telemetry::GLUESTARTUP_READ_OPS, +- int(newIoCounters.ReadOperationCount - ioCounters.ReadOperationCount)); +- XRE_TelemetryAccumulate(mozilla::Telemetry::GLUESTARTUP_READ_TRANSFER, +- int((newIoCounters.ReadTransferCount - ioCounters.ReadTransferCount) / 1024)); +- } +-#elif defined(XP_UNIX) +- XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_HARD_FAULTS, +- int(initialRUsage.ru_majflt)); +- struct rusage newRUsage; +- if (!getrusage(RUSAGE_SELF, &newRUsage)) { +- XRE_TelemetryAccumulate(mozilla::Telemetry::GLUESTARTUP_HARD_FAULTS, +- int(newRUsage.ru_majflt - initialRUsage.ru_majflt)); +- } +-#endif +- } +- +- int result; +- { +- ScopedLogging log; +- result = do_main(exePath, argc, argv); +- } +- +- XPCOMGlueShutdown(); ++ if (appEnv) ++ PR_smprintf_free(appEnv); + return result; + } |