diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d88a9e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/firefox-*.source.tar.bz2 +/xulrunner-*.source.tar.bz2 diff --git a/dead.package b/dead.package deleted file mode 100644 index 3f37036..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -This package is no longer supported by upstream diff --git a/mozilla-193-pkgconfig.patch b/mozilla-193-pkgconfig.patch new file mode 100644 index 0000000..67ec302 --- /dev/null +++ b/mozilla-193-pkgconfig.patch @@ -0,0 +1,32 @@ +diff -up xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in.pk xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in +--- xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in.pk 2010-08-06 03:09:24.000000000 +0200 ++++ xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul-embedding.pc.in 2010-08-16 11:12:32.000000000 +0200 +@@ -6,5 +6,6 @@ idldir=%idldir% + Name: libxul-embedding + Description: Static library for version-independent embedding of the Mozilla runtime + Version: %MOZILLA_VERSION% ++Requires: %NSPR_NAME% >= %NSPR_VERSION% + Libs: -L${sdkdir}/lib -lxpcomglue -ldl + Cflags: -DXPCOM_GLUE -I${includedir} %WCHAR_CFLAGS% +diff -up xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in.pk xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in +--- xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in.pk 2010-08-06 03:09:24.000000000 +0200 ++++ xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/libxul.pc.in 2010-08-16 11:07:52.000000000 +0200 +@@ -2,6 +2,7 @@ prefix=%prefix% + sdkdir=%sdkdir% + includedir=%includedir% + idldir=%idldir% ++libdir=%libdir% + + Name: libxul + Description: The Mozilla Runtime and Embedding Engine +diff -up xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in.pk xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in +--- xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in.pk 2010-08-16 11:07:52.000000000 +0200 ++++ xulrunner-1.9.3.0/mozilla-central/xulrunner/installer/Makefile.in 2010-08-16 11:07:52.000000000 +0200 +@@ -116,6 +116,7 @@ endif + -e "s|%includedir%|$(includedir)|" \ + -e "s|%idldir%|$(idldir)|" \ + -e "s|%sdkdir%|$(sdkdir)|" \ ++ -e "s|%libdir%|$(installdir)|" \ + -e "s|%MOZ_APP_NAME%|$(MOZ_APP_NAME)|" \ + -e "s|%MOZILLA_VERSION%|$(MOZ_APP_VERSION)|" \ + -e "s|%WCHAR_CFLAGS%|$(WCHAR_CFLAGS)|" \ diff --git a/mozilla-239254.patch b/mozilla-239254.patch new file mode 100644 index 0000000..9ce3838 --- /dev/null +++ b/mozilla-239254.patch @@ -0,0 +1,483 @@ +# HG changeset patch +# Parent cb34bd8957ec517c72d506f7c439e3af1950e38d +# User Martin Stransky +Bug 239254 - [Linux] Support disk cache on a local path, r=michal.novotny + +diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp +--- a/netwerk/cache/nsCacheService.cpp ++++ b/netwerk/cache/nsCacheService.cpp +@@ -712,27 +712,18 @@ nsCacheProfilePrefObserver::ReadPrefs(ns + nsCOMPtr profDir; + NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, + getter_AddRefs(profDir)); + NS_GetSpecialDirectory(NS_APP_USER_PROFILE_LOCAL_50_DIR, + getter_AddRefs(directory)); + if (!directory) + directory = profDir; + else if (profDir) { +- bool same; +- if (NS_SUCCEEDED(profDir->Equals(directory, &same)) && !same) { +- // We no longer store the cache directory in the main +- // profile directory, so we should cleanup the old one. +- rv = profDir->AppendNative(NS_LITERAL_CSTRING("Cache")); +- if (NS_SUCCEEDED(rv)) { +- bool exists; +- if (NS_SUCCEEDED(profDir->Exists(&exists)) && exists) +- nsDeleteDir::DeleteDir(profDir, false); +- } +- } ++ nsCacheService::MoveOrRemoveDiskCache(profDir, directory, ++ "Cache"); + } + } + // use file cache in build tree only if asked, to avoid cache dir litter + if (!directory && PR_GetEnv("NECKO_DEV_ENABLE_DISK_CACHE")) { + rv = NS_GetSpecialDirectory(NS_XPCOM_CURRENT_PROCESS_DIR, + getter_AddRefs(directory)); + } + if (directory) +@@ -788,16 +779,20 @@ nsCacheProfilePrefObserver::ReadPrefs(ns + // try to get the profile directory (there may not be a profile yet) + nsCOMPtr profDir; + NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, + getter_AddRefs(profDir)); + NS_GetSpecialDirectory(NS_APP_USER_PROFILE_LOCAL_50_DIR, + getter_AddRefs(directory)); + if (!directory) + directory = profDir; ++ else if (profDir) { ++ nsCacheService::MoveOrRemoveDiskCache(profDir, directory, ++ "OfflineCache"); ++ } + } + #if DEBUG + if (!directory) { + // use current process directory during development + rv = NS_GetSpecialDirectory(NS_XPCOM_CURRENT_PROCESS_DIR, + getter_AddRefs(directory)); + } + #endif +@@ -3012,16 +3007,67 @@ nsCacheService::SetDiskSmartSize_Locked( + DispatchToCacheIOThread(event); + } else { + return NS_ERROR_FAILURE; + } + + return NS_OK; + } + ++void ++nsCacheService::MoveOrRemoveDiskCache(nsIFile *aOldCacheDir, ++ nsIFile *aNewCacheDir, ++ const char *aCacheSubdir) ++{ ++ bool same; ++ if (NS_FAILED(aOldCacheDir->Equals(aNewCacheDir, &same)) || same) ++ return; ++ ++ nsCOMPtr aOldCacheSubdir; ++ aOldCacheDir->Clone(getter_AddRefs(aOldCacheSubdir)); ++ ++ nsresult rv = aOldCacheSubdir->AppendNative( ++ nsDependentCString(aCacheSubdir)); ++ if (NS_FAILED(rv)) ++ return; ++ ++ bool exists; ++ if (NS_FAILED(aOldCacheSubdir->Exists(&exists)) || !exists) ++ return; ++ ++ nsCOMPtr aNewCacheSubdir; ++ aNewCacheDir->Clone(getter_AddRefs(aNewCacheSubdir)); ++ ++ rv = aNewCacheSubdir->AppendNative(nsDependentCString(aCacheSubdir)); ++ if (NS_FAILED(rv)) ++ return; ++ ++ nsAutoCString newPath; ++ rv = aNewCacheSubdir->GetNativePath(newPath); ++ if (NS_FAILED(rv)) ++ return; ++ ++ if (NS_SUCCEEDED(aNewCacheSubdir->Exists(&exists)) && !exists) { ++ // New cache directory does not exist, try to move the old one here ++ // rename needs an empty target directory ++ rv = aNewCacheSubdir->Create(nsIFile::DIRECTORY_TYPE, 0777); ++ if (NS_SUCCEEDED(rv)) { ++ nsAutoCString oldPath; ++ rv = aOldCacheSubdir->GetNativePath(oldPath); ++ if (NS_FAILED(rv)) ++ return; ++ if(rename(oldPath.get(), newPath.get()) == 0) ++ return; ++ } ++ } ++ ++ // Delay delete by 1 minute to avoid IO thrash on startup. ++ nsDeleteDir::DeleteDir(aOldCacheSubdir, false, 60000); ++} ++ + static bool + IsEntryPrivate(nsCacheEntry* entry) + { + return entry->IsPrivate(); + } + + void + nsCacheService::LeavePrivateBrowsing() +diff --git a/netwerk/cache/nsCacheService.h b/netwerk/cache/nsCacheService.h +--- a/netwerk/cache/nsCacheService.h ++++ b/netwerk/cache/nsCacheService.h +@@ -194,16 +194,20 @@ public: + + static void SetMemoryCache(); + + static void SetCacheCompressionLevel(int32_t level); + + // Starts smart cache size computation if disk device is available + static nsresult SetDiskSmartSize(); + ++ static void MoveOrRemoveDiskCache(nsIFile *aOldCacheDir, ++ nsIFile *aNewCacheDir, ++ const char *aCacheSubdir); ++ + nsresult Init(); + void Shutdown(); + + static bool IsInitialized() + { + if (!gService) { + return false; + } +diff --git a/startupcache/StartupCache.cpp b/startupcache/StartupCache.cpp +--- a/startupcache/StartupCache.cpp ++++ b/startupcache/StartupCache.cpp +@@ -168,16 +168,30 @@ StartupCache::Init() + nsCOMPtr file; + rv = NS_GetSpecialDirectory("ProfLDS", + getter_AddRefs(file)); + if (NS_FAILED(rv)) { + // return silently, this will fail in mochitests's xpcshell process. + return rv; + } + ++ nsCOMPtr profDir; ++ NS_GetSpecialDirectory("ProfDS", getter_AddRefs(profDir)); ++ if (profDir) { ++ bool same; ++ if (NS_SUCCEEDED(profDir->Equals(file, &same)) && !same) { ++ // We no longer store the startup cache in the main profile ++ // directory, so we should cleanup the old one. ++ if (NS_SUCCEEDED( ++ profDir->AppendNative(NS_LITERAL_CSTRING("startupCache")))) { ++ profDir->Remove(true); ++ } ++ } ++ } ++ + rv = file->AppendNative(NS_LITERAL_CSTRING("startupCache")); + NS_ENSURE_SUCCESS(rv, rv); + + // Try to create the directory if it's not there yet + rv = file->Create(nsIFile::DIRECTORY_TYPE, 0777); + if (NS_FAILED(rv) && rv != NS_ERROR_FILE_ALREADY_EXISTS) + return rv; + +diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp +--- a/toolkit/xre/nsXREDirProvider.cpp ++++ b/toolkit/xre/nsXREDirProvider.cpp +@@ -1170,18 +1170,32 @@ nsXREDirProvider::GetUserDataDirectoryHo + #elif defined(MOZ_WIDGET_GONK) + rv = NS_NewNativeLocalFile(NS_LITERAL_CSTRING("/data/b2g"), true, + getter_AddRefs(localDir)); + #elif defined(XP_UNIX) + const char* homeDir = getenv("HOME"); + if (!homeDir || !*homeDir) + return NS_ERROR_FAILURE; + +- rv = NS_NewNativeLocalFile(nsDependentCString(homeDir), true, +- getter_AddRefs(localDir)); ++ if (aLocal) { ++ // If $XDG_CACHE_HOME is defined use it, otherwise use $HOME/.cache. ++ const char* cacheHome = getenv("XDG_CACHE_HOME"); ++ if (cacheHome && *cacheHome) { ++ rv = NS_NewNativeLocalFile(nsDependentCString(cacheHome), true, ++ getter_AddRefs(localDir)); ++ } else { ++ rv = NS_NewNativeLocalFile(nsDependentCString(homeDir), true, ++ getter_AddRefs(localDir)); ++ if (NS_SUCCEEDED(rv)) ++ rv = localDir->AppendNative(NS_LITERAL_CSTRING(".cache")); ++ } ++ } else { ++ rv = NS_NewNativeLocalFile(nsDependentCString(homeDir), true, ++ getter_AddRefs(localDir)); ++ } + #else + #error "Don't know how to get product dir on your platform" + #endif + + NS_IF_ADDREF(*aFile = localDir); + return rv; + } + +@@ -1256,17 +1270,17 @@ nsXREDirProvider::GetUserDataDirectory(n + const nsACString* aProfileName, + const nsACString* aAppName, + const nsACString* aVendorName) + { + nsCOMPtr localDir; + nsresult rv = GetUserDataDirectoryHome(getter_AddRefs(localDir), aLocal); + NS_ENSURE_SUCCESS(rv, rv); + +- rv = AppendProfilePath(localDir, aProfileName, aAppName, aVendorName); ++ rv = AppendProfilePath(localDir, aProfileName, aAppName, aVendorName, aLocal); + NS_ENSURE_SUCCESS(rv, rv); + + #ifdef DEBUG_jungshik + nsAutoCString cwd; + localDir->GetNativePath(cwd); + printf("nsXREDirProvider::GetUserDataDirectory: %s\n", cwd.get()); + #endif + rv = EnsureDirectoryExists(localDir); +@@ -1377,17 +1391,18 @@ nsXREDirProvider::AppendSysUserExtension + return NS_OK; + } + + + nsresult + nsXREDirProvider::AppendProfilePath(nsIFile* aFile, + const nsACString* aProfileName, + const nsACString* aAppName, +- const nsACString* aVendorName) ++ const nsACString* aVendorName, ++ bool aLocal) + { + NS_ASSERTION(aFile, "Null pointer!"); + + if (!gAppData) { + return NS_ERROR_FAILURE; + } + + nsAutoCString profile; +@@ -1439,28 +1454,31 @@ nsXREDirProvider::AppendProfilePath(nsIF + // The parent of this directory is set in GetUserDataDirectoryHome + // XXX: handle gAppData->profile properly + // XXXsmaug ...and the rest of the profile creation! + MOZ_ASSERT(!aAppName, + "Profile creation for external applications is not implemented!"); + rv = aFile->AppendNative(nsDependentCString("mozilla")); + NS_ENSURE_SUCCESS(rv, rv); + #elif defined(XP_UNIX) +- // Make it hidden (i.e. using the ".") +- nsAutoCString folder("."); ++ nsAutoCString folder; ++ // Make it hidden (by starting with "."), except when local (the ++ // profile is already under ~/.cache or XDG_CACHE_HOME). ++ if (!aLocal) ++ folder.Assign('.'); + + if (!profile.IsEmpty()) { + // Skip any leading path characters + const char* profileStart = profile.get(); + while (*profileStart == '/' || *profileStart == '\\') + profileStart++; + + // On the off chance that someone wanted their folder to be hidden don't + // let it become ".." +- if (*profileStart == '.') ++ if (*profileStart == '.' && !aLocal) + profileStart++; + + folder.Append(profileStart); + ToLowerCase(folder); + + rv = AppendProfileString(aFile, folder.BeginReading()); + } + else { +diff --git a/toolkit/xre/nsXREDirProvider.h b/toolkit/xre/nsXREDirProvider.h +--- a/toolkit/xre/nsXREDirProvider.h ++++ b/toolkit/xre/nsXREDirProvider.h +@@ -109,17 +109,18 @@ protected: + static nsresult EnsureDirectoryExists(nsIFile* aDirectory); + void EnsureProfileFileExists(nsIFile* aFile); + + // Determine the profile path within the UAppData directory. This is different + // on every major platform. + static nsresult AppendProfilePath(nsIFile* aFile, + const nsACString* aProfileName, + const nsACString* aAppName, +- const nsACString* aVendorName); ++ const nsACString* aVendorName, ++ bool aLocal); + + static nsresult AppendSysUserExtensionPath(nsIFile* aFile); + + // Internal helper that splits a path into components using the '/' and '\\' + // delimiters. + static inline nsresult AppendProfileString(nsIFile* aFile, const char* aPath); + + // Calculate and register extension and theme bundle directories. +# HG changeset patch +# User Tim Taubert +# Date 1360362227 -3600 +# Node ID 873170d2679ac23114f22543cee3214a940abef3 +Bug 239254 - [Linux] Migrate existing thumbnails to their new local path + +diff --git a/browser/components/thumbnails/PageThumbs.jsm b/browser/components/thumbnails/PageThumbs.jsm +--- a/browser/components/thumbnails/PageThumbs.jsm ++++ b/browser/components/thumbnails/PageThumbs.jsm +@@ -7,17 +7,17 @@ + this.EXPORTED_SYMBOLS = ["PageThumbs", "PageThumbsStorage"]; + + const Cu = Components.utils; + const Cc = Components.classes; + const Ci = Components.interfaces; + + const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; + const PREF_STORAGE_VERSION = "browser.pagethumbnails.storage_version"; +-const LATEST_STORAGE_VERSION = 2; ++const LATEST_STORAGE_VERSION = 3; + + const EXPIRATION_MIN_CHUNK_SIZE = 50; + const EXPIRATION_INTERVAL_SECS = 3600; + + /** + * Name of the directory in the profile that contains the thumbnails. + */ + const THUMBNAIL_DIRECTORY = "thumbnails"; +@@ -359,47 +359,51 @@ let PageThumbsStorageMigrator = { + + set currentVersion(aVersion) { + Services.prefs.setIntPref(PREF_STORAGE_VERSION, aVersion); + }, + + migrate: function Migrator_migrate() { + let version = this.currentVersion; + +- if (version < 1) { +- this.removeThumbnailsFromRoamingProfile(); +- } +- if (version < 2) { +- this.renameThumbnailsFolder(); ++ // Storage version 1 never made it to beta. ++ // At the time of writing only Windows had (ProfD != ProfLD) and we ++ // needed to move thumbnails from the roaming profile to the locale ++ // one so that they're not needlessly included in backups and/or ++ // written via SMB. ++ ++ // Storage version 2 also never made it to beta. ++ // The thumbnail folder structure has been changed and old thumbnails ++ // were not migrated. Instead, we just renamed the current folder to ++ // "-old" and will remove it later. ++ ++ if (version < 3) { ++ this.migrateToVersion3(); + } + + this.currentVersion = LATEST_STORAGE_VERSION; + }, + +- removeThumbnailsFromRoamingProfile: +- function Migrator_removeThumbnailsFromRoamingProfile() { +- let local = FileUtils.getDir("ProfLD", [THUMBNAIL_DIRECTORY]); ++ /** ++ * Bug 239254 added support for having the disk cache and thumbnail ++ * directories on a local path (i.e. ~/.cache/) under Linux. We'll first ++ * try to move the old thumbnails to their new location. If that's not ++ * possible (because ProfD might be on a different file system than ++ * ProfLD) we'll just discard them. ++ */ ++ migrateToVersion3: function Migrator_migrateToVersion3() { ++ let local = FileUtils.getDir("ProfLD", [THUMBNAIL_DIRECTORY], true); + let roaming = FileUtils.getDir("ProfD", [THUMBNAIL_DIRECTORY]); + +- if (!roaming.equals(local) && roaming.exists()) { +- roaming.followLinks = false; +- try { +- roaming.remove(true); +- } catch (e) { +- // The directory might not exist or we're not permitted to remove it. +- } +- } +- }, +- +- renameThumbnailsFolder: function Migrator_renameThumbnailsFolder() { +- let dir = FileUtils.getDir("ProfLD", [THUMBNAIL_DIRECTORY]); +- try { +- dir.moveTo(null, dir.leafName + "-old"); +- } catch (e) { +- // The directory might not exist or we're not permitted to rename it. ++ if (!roaming.equals(local)) { ++ PageThumbsWorker.postMessage({ ++ type: "moveOrDeleteAllThumbnails", ++ from: roaming.path, ++ to: local.path ++ }); + } + } + }; + + let PageThumbsExpiration = { + _filters: [], + + init: function Expiration_init() { +diff --git a/browser/components/thumbnails/PageThumbsWorker.js b/browser/components/thumbnails/PageThumbsWorker.js +--- a/browser/components/thumbnails/PageThumbsWorker.js ++++ b/browser/components/thumbnails/PageThumbsWorker.js +@@ -20,16 +20,19 @@ let PageThumbsWorker = { + + switch (msg.type) { + case "removeFile": + data.result = this.removeFile(msg); + break; + case "expireFilesInDirectory": + data.result = this.expireFilesInDirectory(msg); + break; ++ case "moveOrDeleteAllThumbnails": ++ data.result = this.moveOrDeleteAllThumbnails(msg); ++ break; + default: + data.result = false; + data.detail = "message not understood"; + break; + } + + self.postMessage(data); + }, +@@ -62,12 +65,35 @@ let PageThumbsWorker = { + getFileEntriesInDirectory: + function Worker_getFileEntriesInDirectory(aPath, aSkipFiles) { + let skip = new Set(aSkipFiles); + let iter = new OS.File.DirectoryIterator(aPath); + + return [entry + for (entry in iter) + if (!entry.isDir && !entry.isSymLink && !skip.has(entry.name))]; ++ }, ++ ++ moveOrDeleteAllThumbnails: ++ function Worker_moveOrDeleteAllThumbnails(msg) { ++ if (!OS.File.exists(msg.from)) ++ return true; ++ ++ let iter = new OS.File.DirectoryIterator(msg.from); ++ for (let entry in iter) { ++ if (!entry.isDir && !entry.isSymLink) { ++ let from = OS.Path.join(msg.from, entry.name); ++ let to = OS.Path.join(msg.to, entry.name); ++ ++ try { ++ OS.File.move(from, to, {noOverwrite: true, noCopy: true}); ++ } catch (e) { ++ OS.File.remove(from); ++ } ++ } ++ } ++ ++ OS.File.removeEmptyDir(msg.from); ++ return true; + } + }; + + self.onmessage = PageThumbsWorker.handleMessage.bind(PageThumbsWorker); diff --git a/mozilla-639554.patch b/mozilla-639554.patch new file mode 100644 index 0000000..12d32b2 --- /dev/null +++ b/mozilla-639554.patch @@ -0,0 +1,15 @@ +--- a/toolkit/mozapps/installer/packager.mk ++++ b/toolkit/mozapps/installer/packager.mk +@@ -621,10 +621,12 @@ ifdef INSTALL_SDK # Here comes the hard + (cd $(DESTDIR)$(idldir) && tar -xf -) + # SDK directory is the libs + a bunch of symlinks + $(NSINSTALL) -D $(DESTDIR)$(sdkdir)/sdk/lib ++ $(NSINSTALL) -D $(DESTDIR)$(sdkdir)/sdk/bin + if test -f $(DIST)/include/xpcom-config.h; then \ + $(SYSINSTALL) $(IFLAGS1) $(DIST)/include/xpcom-config.h $(DESTDIR)$(sdkdir); \ + fi + (cd $(DIST)/sdk/lib && tar $(TAR_CREATE_FLAGS) - .) | (cd $(DESTDIR)$(sdkdir)/sdk/lib && tar -xf -) ++ (cd $(DIST)/sdk/bin && tar $(TAR_CREATE_FLAGS) - .) | (cd $(DESTDIR)$(sdkdir)/sdk/bin && tar -xf -) + $(RM) -f $(DESTDIR)$(sdkdir)/lib $(DESTDIR)$(sdkdir)/bin $(DESTDIR)$(sdkdir)/include $(DESTDIR)$(sdkdir)/include $(DESTDIR)$(sdkdir)/sdk/idl $(DESTDIR)$(sdkdir)/idl + ln -s $(sdkdir)/sdk/lib $(DESTDIR)$(sdkdir)/lib + ln -s $(installdir) $(DESTDIR)$(sdkdir)/bin diff --git a/mozilla-791626.patch b/mozilla-791626.patch new file mode 100644 index 0000000..c2e77ab --- /dev/null +++ b/mozilla-791626.patch @@ -0,0 +1,46 @@ +# HG changeset patch +# Parent 3523e7f7a89d7933c5f1dc8f5f22559b48ec44c4 +diff --git a/netwerk/base/src/nsIOService.cpp b/netwerk/base/src/nsIOService.cpp +--- a/netwerk/base/src/nsIOService.cpp ++++ b/netwerk/base/src/nsIOService.cpp +@@ -818,17 +818,18 @@ nsIOService::PrefsChanged(nsIPrefBranch + if (NS_SUCCEEDED(rv)) { + if (mSocketTransportService) + mSocketTransportService->SetAutodialEnabled(enableAutodial); + } + } + + if (!pref || strcmp(pref, MANAGE_OFFLINE_STATUS_PREF) == 0) { + bool manage; +- if (NS_SUCCEEDED(prefs->GetBoolPref(MANAGE_OFFLINE_STATUS_PREF, ++ if (mNetworkLinkServiceInitialized && ++ NS_SUCCEEDED(prefs->GetBoolPref(MANAGE_OFFLINE_STATUS_PREF, + &manage))) + SetManageOfflineStatus(manage); + } + + if (!pref || strcmp(pref, NECKO_BUFFER_CACHE_COUNT_PREF) == 0) { + int32_t count; + if (NS_SUCCEEDED(prefs->GetIntPref(NECKO_BUFFER_CACHE_COUNT_PREF, + &count))) +@@ -928,16 +929,20 @@ nsIOService::Observe(nsISupports *subjec + } + else if (!strcmp(topic, kProfileDoChange)) { + if (data && NS_LITERAL_STRING("startup").Equals(data)) { + // Lazy initialization of network link service (see bug 620472) + InitializeNetworkLinkService(); + // Set up the initilization flag regardless the actuall result. + // If we fail here, we will fail always on. + mNetworkLinkServiceInitialized = true; ++ // And now reflect the preference setting ++ nsCOMPtr prefBranch; ++ GetPrefBranch(getter_AddRefs(prefBranch)); ++ PrefsChanged(prefBranch, MANAGE_OFFLINE_STATUS_PREF); + } + } + else if (!strcmp(topic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) { + // Remember we passed XPCOM shutdown notification to prevent any + // changes of the offline status from now. We must not allow going + // online after this point. + mShutdown = true; + diff --git a/mozilla-build.patch b/mozilla-build.patch new file mode 100644 index 0000000..9468e02 --- /dev/null +++ b/mozilla-build.patch @@ -0,0 +1,23 @@ +diff -up mozilla-aurora-7676a9a06403/security/build/Makefile.in.build mozilla-aurora-7676a9a06403/security/build/Makefile.in +--- mozilla-aurora-7676a9a06403/security/build/Makefile.in.build 2012-09-13 14:18:35.000000000 +0200 ++++ mozilla-aurora-7676a9a06403/security/build/Makefile.in 2012-09-18 10:58:45.560063613 +0200 +@@ -139,7 +139,6 @@ DEFAULT_GMAKE_FLAGS += NSPR_INCLUDE_DIR= + DEFAULT_GMAKE_FLAGS += NSPR_LIB_DIR=$(NSPR_LIB_DIR) + DEFAULT_GMAKE_FLAGS += MOZILLA_CLIENT=1 + DEFAULT_GMAKE_FLAGS += NO_MDUPDATE=1 +-DEFAULT_GMAKE_FLAGS += NSS_ENABLE_ECC=1 + DEFAULT_GMAKE_FLAGS += NSINSTALL="$(NSINSTALL)" + ifndef MOZ_NATIVE_SQLITE + DEFAULT_GMAKE_FLAGS += SQLITE_LIB_NAME=mozsqlite3 +diff -up mozilla-aurora-7676a9a06403/security/manager/Makefile.in.build mozilla-aurora-7676a9a06403/security/manager/Makefile.in +diff -up mozilla-aurora-7676a9a06403/security/manager/ssl/src/Makefile.in.build mozilla-aurora-7676a9a06403/security/manager/ssl/src/Makefile.in +--- mozilla-aurora-7676a9a06403/security/manager/ssl/src/Makefile.in.build 2012-09-13 14:18:35.000000000 +0200 ++++ mozilla-aurora-7676a9a06403/security/manager/ssl/src/Makefile.in 2012-09-18 10:54:16.310505794 +0200 +@@ -84,7 +84,6 @@ CSRCS += md4.c + EXTRA_DEPS = $(NSS_DEP_LIBS) + + DEFINES += \ +- -DNSS_ENABLE_ECC \ + -DDLL_PREFIX=\"$(DLL_PREFIX)\" \ + -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" \ + $(NULL) diff --git a/rhbz-304121.patch b/rhbz-304121.patch new file mode 100644 index 0000000..941aca2 --- /dev/null +++ b/rhbz-304121.patch @@ -0,0 +1,13 @@ +diff -up firefox-18.0/mozilla-release/media/webrtc/trunk/Makefile.old firefox-18.0/mozilla-release/media/webrtc/trunk/Makefile +diff -up firefox-18.0/mozilla-release/media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py.old firefox-18.0/mozilla-release/media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py +--- firefox-18.0/mozilla-release/media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py.old 2013-01-05 00:44:41.000000000 +0100 ++++ firefox-18.0/mozilla-release/media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py 2013-01-10 14:48:58.418321640 +0100 +@@ -376,7 +376,7 @@ class MakefileGenerator(object): + WriteMakefile(output_file, data, build_file, depth, top, + # we set srcdir up one directory, since the subdir + # doesn't actually exist in the source directory +- swapslashes(os.path.join(top, self.relative_srcdir, os.path.split(rel_path)[0])), ++ swapslashes(os.path.normpath(os.path.join(top, self.relative_srcdir, os.path.split(rel_path)[0]))), + self.relative_srcdir) + return True + diff --git a/rhbz-911314.patch b/rhbz-911314.patch new file mode 100644 index 0000000..4f1cfa0 --- /dev/null +++ b/rhbz-911314.patch @@ -0,0 +1,547 @@ +Use the runtime page size to control arena decommit (RHBZ#911314) +Return success when decommit is disabled + +Author: Gustavo Luiz Duarte +Based on Terrence Cole's patch v0 on MOZ#840242 + +Index: mozilla-release/js/src/gc/Heap.h +=================================================================== +--- mozilla-release.orig/js/src/gc/Heap.h ++++ mozilla-release/js/src/gc/Heap.h +@@ -800,7 +800,7 @@ struct Chunk + + /* Search for a decommitted arena to allocate. */ + unsigned findDecommittedArenaOffset(); +- ArenaHeader* fetchNextDecommittedArena(); ++ ArenaHeader* fetchNextDecommittedArena(JSRuntime *rt); + + public: + /* Unlink and return the freeArenasHead. */ +Index: mozilla-release/js/src/gc/Memory.cpp +=================================================================== +--- mozilla-release.orig/js/src/gc/Memory.cpp ++++ mozilla-release/js/src/gc/Memory.cpp +@@ -8,6 +8,7 @@ + #include "mozilla/Assertions.h" + + #include "jstypes.h" ++#include "jscntxt.h" + + #include "js/Utility.h" + #include "gc/Memory.h" +@@ -19,39 +20,34 @@ namespace gc { + extern const size_t PageSize; + extern const size_t ArenaSize; + static bool +-DecommitEnabled() ++DecommitEnabled(JSRuntime *rt) + { +- return PageSize == ArenaSize; ++ return rt->gcSystemPageSize == ArenaSize; + } + + #if defined(XP_WIN) + #include "jswin.h" + #include + +-static size_t AllocationGranularity = 0; +- + void +-InitMemorySubsystem() ++InitMemorySubsystem(JSRuntime *rt) + { + SYSTEM_INFO sysinfo; + GetSystemInfo(&sysinfo); +- if (sysinfo.dwPageSize != PageSize) { +- fprintf(stderr,"SpiderMonkey compiled with incorrect page size; please update js/public/HeapAPI.h.\n"); +- MOZ_CRASH(); +- } +- AllocationGranularity = sysinfo.dwAllocationGranularity; ++ rt->gcSystemPageSize = sysinfo.dwPageSize; ++ rt->gcSystemAllocGranularity = sysinfo.dwAllocationGranularity; + } + + void * +-MapAlignedPages(size_t size, size_t alignment) ++MapAlignedPages(JSRuntime *rt, size_t size, size_t alignment) + { + JS_ASSERT(size >= alignment); + JS_ASSERT(size % alignment == 0); +- JS_ASSERT(size % PageSize == 0); +- JS_ASSERT(alignment % AllocationGranularity == 0); ++ JS_ASSERT(size % rt->gcSystemPageSize == 0); ++ JS_ASSERT(alignment % rt->gcSystemAllocGranularity == 0); + + /* Special case: If we want allocation alignment, no further work is needed. */ +- if (alignment == AllocationGranularity) { ++ if (alignment == rt->gcSystemAllocGranularity) { + return VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + } + +@@ -75,7 +71,7 @@ MapAlignedPages(size_t size, size_t alig + if (!p) + return NULL; + void *chunkStart = (void *)(uintptr_t(p) + (alignment - (uintptr_t(p) % alignment))); +- UnmapPages(p, size * 2); ++ UnmapPages(rt, p, size * 2); + p = VirtualAlloc(chunkStart, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + + /* Failure here indicates a race with another thread, so try again. */ +@@ -86,26 +82,26 @@ MapAlignedPages(size_t size, size_t alig + } + + void +-UnmapPages(void *p, size_t size) ++UnmapPages(JSRuntime *rt, void *p, size_t size) + { + JS_ALWAYS_TRUE(VirtualFree(p, 0, MEM_RELEASE)); + } + + bool +-MarkPagesUnused(void *p, size_t size) ++MarkPagesUnused(JSRuntime *rt, void *p, size_t size) + { +- if (!DecommitEnabled()) +- return false; ++ if (!DecommitEnabled(rt)) ++ return true; + +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + LPVOID p2 = VirtualAlloc(p, size, MEM_RESET, PAGE_READWRITE); + return p2 == p; + } + + bool +-MarkPagesInUse(void *p, size_t size) ++MarkPagesInUse(JSRuntime *rt, void *p, size_t size) + { +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + return true; + } + +@@ -127,12 +123,13 @@ GetPageFaultCount() + #define OS2_MAX_RECURSIONS 16 + + void +-InitMemorySubsystem() ++InitMemorySubsystem(JSRuntime *rt) + { ++ rt->gcSystemPageSize = rt->gcSystemAllocGranularity = ArenaSize; + } + + void +-UnmapPages(void *addr, size_t size) ++UnmapPages(JSRuntime *rt, void *addr, size_t size) + { + if (!DosFreeMem(addr)) + return; +@@ -153,7 +150,7 @@ UnmapPages(void *addr, size_t size) + } + + static void * +-MapAlignedPagesRecursively(size_t size, size_t alignment, int& recursions) ++MapAlignedPagesRecursively(JSRuntime *rt, size_t size, size_t alignment, int& recursions) + { + if (++recursions >= OS2_MAX_RECURSIONS) + return NULL; +@@ -179,7 +176,7 @@ MapAlignedPagesRecursively(size_t size, + unsigned long rc = DosQueryMem(&(static_cast(tmp))[size], + &cb, &flags); + if (!rc && (flags & PAG_FREE) && cb >= filler) { +- UnmapPages(tmp, 0); ++ UnmapPages(rt, tmp, 0); + if (DosAllocMem(&tmp, filler, + OBJ_ANY | PAG_COMMIT | PAG_READ | PAG_WRITE)) { + JS_ALWAYS_TRUE(DosAllocMem(&tmp, filler, +@@ -187,19 +184,19 @@ MapAlignedPagesRecursively(size_t size, + } + } + +- void *p = MapAlignedPagesRecursively(size, alignment, recursions); +- UnmapPages(tmp, 0); ++ void *p = MapAlignedPagesRecursively(rt, size, alignment, recursions); ++ UnmapPages(rt, tmp, 0); + + return p; + } + + void * +-MapAlignedPages(size_t size, size_t alignment) ++MapAlignedPages(JSRuntime *rt, size_t size, size_t alignment) + { + JS_ASSERT(size >= alignment); + JS_ASSERT(size % alignment == 0); +- JS_ASSERT(size % PageSize == 0); +- JS_ASSERT(alignment % PageSize == 0); ++ JS_ASSERT(size % rt->gcSystemPageSize == 0); ++ JS_ASSERT(alignment % rt->gcSystemAllocGranularity == 0); + + int recursions = -1; + +@@ -208,7 +205,7 @@ MapAlignedPages(size_t size, size_t alig + * of the right size by recursively allocating blocks of unaligned + * free memory until only an aligned allocation is possible. + */ +- void *p = MapAlignedPagesRecursively(size, alignment, recursions); ++ void *p = MapAlignedPagesRecursively(rt, size, alignment, recursions); + if (p) + return p; + +@@ -230,16 +227,15 @@ MapAlignedPages(size_t size, size_t alig + } + + bool +-MarkPagesUnused(void *p, size_t size) +-{ +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++MarkPagesUnused(JSRuntime *rt, void *p, size_t size) { ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + return true; + } + + bool +-MarkPagesInUse(void *p, size_t size) ++MarkPagesInUse(JSRuntime *rt, void *p, size_t size) + { +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + return true; + } + +@@ -259,17 +255,18 @@ GetPageFaultCount() + #endif + + void +-InitMemorySubsystem() ++InitMemorySubsystem(JSRuntime *rt) + { ++ rt->gcSystemPageSize = rt->gcSystemAllocGranularity = size_t(sysconf(_SC_PAGESIZE)); + } + + void * +-MapAlignedPages(size_t size, size_t alignment) ++MapAlignedPages(JSRuntime *rt, size_t size, size_t alignment) + { + JS_ASSERT(size >= alignment); + JS_ASSERT(size % alignment == 0); +- JS_ASSERT(size % PageSize == 0); +- JS_ASSERT(alignment % PageSize == 0); ++ JS_ASSERT(size % rt->gcSystemPageSize == 0); ++ JS_ASSERT(alignment % rt->gcSystemAllocGranularity == 0); + + int prot = PROT_READ | PROT_WRITE; + int flags = MAP_PRIVATE | MAP_ANON | MAP_ALIGN | MAP_NOSYNC; +@@ -281,22 +278,22 @@ MapAlignedPages(size_t size, size_t alig + } + + void +-UnmapPages(void *p, size_t size) ++UnmapPages(JSRuntime *rt, void *p, size_t size) + { + JS_ALWAYS_TRUE(0 == munmap((caddr_t)p, size)); + } + + bool +-MarkPagesUnused(void *p, size_t size) ++MarkPagesUnused(JSRuntime *rt, void *p, size_t size) + { +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + return true; + } + + bool +-MarkPagesInUse(void *p, size_t size) ++MarkPagesInUse(JSRuntime *rt, void *p, size_t size) + { +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + return true; + } + +@@ -314,27 +311,24 @@ GetPageFaultCount() + #include + + void +-InitMemorySubsystem() ++InitMemorySubsystem(JSRuntime *rt) + { +- if (size_t(sysconf(_SC_PAGESIZE)) != PageSize) { +- fprintf(stderr,"SpiderMonkey compiled with incorrect page size; please update js/public/HeapAPI.h.\n"); +- MOZ_CRASH(); +- } ++ rt->gcSystemPageSize = rt->gcSystemAllocGranularity = size_t(sysconf(_SC_PAGESIZE)); + } + + void * +-MapAlignedPages(size_t size, size_t alignment) ++MapAlignedPages(JSRuntime *rt, size_t size, size_t alignment) + { + JS_ASSERT(size >= alignment); + JS_ASSERT(size % alignment == 0); +- JS_ASSERT(size % PageSize == 0); +- JS_ASSERT(alignment % PageSize == 0); ++ JS_ASSERT(size % rt->gcSystemPageSize == 0); ++ JS_ASSERT(alignment % rt->gcSystemAllocGranularity == 0); + + int prot = PROT_READ | PROT_WRITE; + int flags = MAP_PRIVATE | MAP_ANON; + + /* Special case: If we want page alignment, no further work is needed. */ +- if (alignment == PageSize) { ++ if (alignment == rt->gcSystemAllocGranularity) { + return mmap(NULL, size, prot, flags, -1, 0); + } + +@@ -360,26 +354,26 @@ MapAlignedPages(size_t size, size_t alig + } + + void +-UnmapPages(void *p, size_t size) ++UnmapPages(JSRuntime *rt, void *p, size_t size) + { + JS_ALWAYS_TRUE(0 == munmap(p, size)); + } + + bool +-MarkPagesUnused(void *p, size_t size) ++MarkPagesUnused(JSRuntime *rt, void *p, size_t size) + { +- if (!DecommitEnabled()) +- return false; ++ if (!DecommitEnabled(rt)) ++ return true; + +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + int result = madvise(p, size, MADV_DONTNEED); + return result != -1; + } + + bool +-MarkPagesInUse(void *p, size_t size) ++MarkPagesInUse(JSRuntime *rt, void *p, size_t size) + { +- JS_ASSERT(uintptr_t(p) % PageSize == 0); ++ JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0); + return true; + } + +Index: mozilla-release/js/src/gc/Memory.h +=================================================================== +--- mozilla-release.orig/js/src/gc/Memory.h ++++ mozilla-release/js/src/gc/Memory.h +@@ -16,20 +16,20 @@ namespace gc { + + // Sanity check that our compiled configuration matches the currently running + // instance and initialize any runtime data needed for allocation. +-void InitMemorySubsystem(); ++void InitMemorySubsystem(JSRuntime *rt); + + // Allocate or deallocate pages from the system with the given alignment. +-void *MapAlignedPages(size_t size, size_t alignment); +-void UnmapPages(void *p, size_t size); ++void *MapAlignedPages(JSRuntime *rt, size_t size, size_t alignment); ++void UnmapPages(JSRuntime *rt, void *p, size_t size); + + // Tell the OS that the given pages are not in use, so they should not + // be written to a paging file. This may be a no-op on some platforms. +-bool MarkPagesUnused(void *p, size_t size); ++bool MarkPagesUnused(JSRuntime *rt, void *p, size_t size); + + // Undo |MarkPagesUnused|: tell the OS that the given pages are of interest + // and should be paged in and out normally. This may be a no-op on some + // platforms. +-bool MarkPagesInUse(void *p, size_t size); ++bool MarkPagesInUse(JSRuntime *rt, void *p, size_t size); + + // Returns #(hard faults) + #(soft faults) + size_t GetPageFaultCount(); +Index: mozilla-release/js/src/jsapi.cpp +=================================================================== +--- mozilla-release.orig/js/src/jsapi.cpp ++++ mozilla-release/js/src/jsapi.cpp +@@ -1105,8 +1105,6 @@ JS_NewRuntime(uint32_t maxbytes, JSUseHe + #undef MSG_DEF + #endif /* DEBUG */ + +- InitMemorySubsystem(); +- + if (!js::TlsPerThreadData.init()) + return NULL; + +Index: mozilla-release/js/src/jscntxt.h +=================================================================== +--- mozilla-release.orig/js/src/jscntxt.h ++++ mozilla-release/js/src/jscntxt.h +@@ -847,6 +847,15 @@ struct JSRuntime : js::RuntimeFriendFiel + /* Stack of thread-stack-allocated GC roots. */ + js::AutoGCRooter *autoGCRooters; + ++ /* ++ * The GC can only safely decommit memory when the page size of the ++ * running process matches the compiled arena size. ++ */ ++ size_t gcSystemPageSize; ++ ++ /* The OS allocation granularity may not match the page size. */ ++ size_t gcSystemAllocGranularity; ++ + /* Strong references on scripts held for PCCount profiling API. */ + js::ScriptAndCountsVector *scriptAndCountsVector; + +Index: mozilla-release/js/src/jsgc.cpp +=================================================================== +--- mozilla-release.orig/js/src/jsgc.cpp ++++ mozilla-release/js/src/jsgc.cpp +@@ -486,13 +486,13 @@ FinalizeArenas(FreeOp *fop, + } + + static inline Chunk * +-AllocChunk() { +- return static_cast(MapAlignedPages(ChunkSize, ChunkSize)); ++AllocChunk(JSRuntime *rt) { ++ return static_cast(MapAlignedPages(rt, ChunkSize, ChunkSize)); + } + + static inline void +-FreeChunk(Chunk *p) { +- UnmapPages(static_cast(p), ChunkSize); ++FreeChunk(JSRuntime *rt, Chunk *p) { ++ UnmapPages(rt, static_cast(p), ChunkSize); + } + + inline bool +@@ -582,25 +582,25 @@ ChunkPool::expire(JSRuntime *rt, bool re + } + + static void +-FreeChunkList(Chunk *chunkListHead) ++FreeChunkList(JSRuntime *rt, Chunk *chunkListHead) + { + while (Chunk *chunk = chunkListHead) { + JS_ASSERT(!chunk->info.numArenasFreeCommitted); + chunkListHead = chunk->info.next; +- FreeChunk(chunk); ++ FreeChunk(rt, chunk); + } + } + + void + ChunkPool::expireAndFree(JSRuntime *rt, bool releaseAll) + { +- FreeChunkList(expire(rt, releaseAll)); ++ FreeChunkList(rt, expire(rt, releaseAll)); + } + + /* static */ Chunk * + Chunk::allocate(JSRuntime *rt) + { +- Chunk *chunk = static_cast(AllocChunk()); ++ Chunk *chunk = static_cast(AllocChunk(rt)); + + #ifdef JSGC_ROOT_ANALYSIS + // Our poison pointers are not guaranteed to be invalid on 64-bit +@@ -613,7 +613,7 @@ Chunk::allocate(JSRuntime *rt) + // were marked as uncommitted, but it's a little complicated to avoid + // clobbering pre-existing unrelated mappings. + while (IsPoisonedPtr(chunk)) +- chunk = static_cast(AllocChunk()); ++ chunk = static_cast(AllocChunk(rt)); + #endif + + if (!chunk) +@@ -629,7 +629,7 @@ Chunk::release(JSRuntime *rt, Chunk *chu + { + JS_ASSERT(chunk); + chunk->prepareToBeFreed(rt); +- FreeChunk(chunk); ++ FreeChunk(rt, chunk); + } + + inline void +@@ -745,7 +745,7 @@ Chunk::findDecommittedArenaOffset() + } + + ArenaHeader * +-Chunk::fetchNextDecommittedArena() ++Chunk::fetchNextDecommittedArena(JSRuntime *rt) + { + JS_ASSERT(info.numArenasFreeCommitted == 0); + JS_ASSERT(info.numArenasFree > 0); +@@ -756,7 +756,7 @@ Chunk::fetchNextDecommittedArena() + decommittedArenas.unset(offset); + + Arena *arena = &arenas[offset]; +- MarkPagesInUse(arena, ArenaSize); ++ MarkPagesInUse(rt, arena, ArenaSize); + arena->aheader.setAsNotAllocated(); + + return &arena->aheader; +@@ -790,7 +790,7 @@ Chunk::allocateArena(JSCompartment *comp + + ArenaHeader *aheader = JS_LIKELY(info.numArenasFreeCommitted > 0) + ? fetchNextFreeArena(rt) +- : fetchNextDecommittedArena(); ++ : fetchNextDecommittedArena(rt); + aheader->init(comp, thingKind); + if (JS_UNLIKELY(!hasAvailableArenas())) + removeFromAvailableList(); +@@ -893,6 +893,8 @@ static const int64_t JIT_SCRIPT_RELEASE_ + JSBool + js_InitGC(JSRuntime *rt, uint32_t maxbytes) + { ++ InitMemorySubsystem(rt); ++ + if (!rt->gcChunkSet.init(INITIAL_CHUNK_CAPACITY)) + return false; + +@@ -2745,7 +2747,7 @@ DecommitArenasFromAvailableList(JSRuntim + Maybe maybeUnlock; + if (!rt->isHeapBusy()) + maybeUnlock.construct(rt); +- ok = MarkPagesUnused(aheader->getArena(), ArenaSize); ++ ok = MarkPagesUnused(rt, aheader->getArena(), ArenaSize); + } + + if (ok) { +@@ -2813,7 +2815,7 @@ ExpireChunksAndArenas(JSRuntime *rt, boo + { + if (Chunk *toFree = rt->gcChunkPool.expire(rt, shouldShrink)) { + AutoUnlockGC unlock(rt); +- FreeChunkList(toFree); ++ FreeChunkList(rt, toFree); + } + + if (shouldShrink) +Index: mozilla-release/js/public/HeapAPI.h +=================================================================== +--- mozilla-release.orig/js/public/HeapAPI.h ++++ mozilla-release/js/public/HeapAPI.h +@@ -11,24 +11,7 @@ + namespace js { + namespace gc { + +-/* +- * Page size must be static to support our arena pointer optimizations, so we +- * are forced to support each platform with non-4096 pages as a special case. +- * Note: The freelist supports a maximum arena shift of 15. +- * Note: Do not use JS_CPU_SPARC here, this header is used outside JS. +- */ +-#if (defined(SOLARIS) || defined(__FreeBSD__)) && \ +- (defined(__sparc) || defined(__sparcv9) || defined(__ia64)) +-const size_t PageShift = 13; +-const size_t ArenaShift = PageShift; +-#elif defined(__powerpc64__) +-const size_t PageShift = 16; + const size_t ArenaShift = 12; +-#else +-const size_t PageShift = 12; +-const size_t ArenaShift = PageShift; +-#endif +-const size_t PageSize = size_t(1) << PageShift; + const size_t ArenaSize = size_t(1) << ArenaShift; + const size_t ArenaMask = ArenaSize - 1; + diff --git a/sources b/sources new file mode 100644 index 0000000..a9d71e1 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +de09d603c3b768a1698d90141f3b2644 firefox-19.0.2.source.tar.bz2 diff --git a/xulrunner-15.0-gcc47.patch b/xulrunner-15.0-gcc47.patch new file mode 100644 index 0000000..0d44796 --- /dev/null +++ b/xulrunner-15.0-gcc47.patch @@ -0,0 +1,13 @@ +diff -up xulrunner-15.0/mozilla-beta/toolkit/crashreporter/client/Makefile.in.gcc47 xulrunner-15.0/mozilla-beta/toolkit/crashreporter/client/Makefile.in +--- xulrunner-15.0/mozilla-beta/toolkit/crashreporter/client/Makefile.in.gcc47 2012-08-15 07:48:31.000000000 +0200 ++++ xulrunner-15.0/mozilla-beta/toolkit/crashreporter/client/Makefile.in 2012-08-20 15:05:41.782947739 +0200 +@@ -34,6 +34,9 @@ CPPSRCS = \ + crashreporter.cpp \ + $(NULL) + ++# Needed for moz_free ++LIBS += -L$(LIBXUL_DIST)/lib -lmozalloc ++ + ifeq ($(OS_ARCH),WINNT) + CPPSRCS += crashreporter_win.cpp + LIBS += \ diff --git a/xulrunner-16.0-jemalloc-ppc.patch b/xulrunner-16.0-jemalloc-ppc.patch new file mode 100644 index 0000000..896a2c0 --- /dev/null +++ b/xulrunner-16.0-jemalloc-ppc.patch @@ -0,0 +1,14 @@ +Index: xulrunner-11.0/mozilla-release/memory/jemalloc/jemalloc.c +=================================================================== +--- xulrunner-11.0.orig/mozilla-release/memory/mozjemalloc/jemalloc.c ++++ xulrunner-11.0/mozilla-release/memory/mozjemalloc/jemalloc.c +@@ -1089,7 +1089,9 @@ static unsigned ncpus; + * controlling the malloc behavior are defined as compile-time constants + * for best performance and cannot be altered at runtime. + */ ++#if !(defined(__powerpc__)) + #define MALLOC_STATIC_SIZES 1 ++#endif + + #ifdef MALLOC_STATIC_SIZES + diff --git a/xulrunner-2.0-chromium-types.patch b/xulrunner-2.0-chromium-types.patch new file mode 100644 index 0000000..2b3db8c --- /dev/null +++ b/xulrunner-2.0-chromium-types.patch @@ -0,0 +1,31 @@ +diff -up xulrunner-17.0/mozilla-release/gfx/ycbcr/chromium_types.h.chromium-types xulrunner-17.0/mozilla-release/gfx/ycbcr/chromium_types.h +--- xulrunner-17.0/mozilla-release/gfx/ycbcr/chromium_types.h.chromium-types 2012-11-16 20:56:29.000000000 +0100 ++++ xulrunner-17.0/mozilla-release/gfx/ycbcr/chromium_types.h 2012-11-20 09:19:14.843448418 +0100 +@@ -30,7 +30,11 @@ typedef int16_t int16; + #define ARCH_CPU_ARM_FAMILY 1 + #define ARCH_CPU_ARMEL 1 + #define ARCH_CPU_32_BITS 1 +-#elif defined(__ppc__) || defined(__powerpc) || defined(__PPC__) ++#elif defined(__powerpc64__) ++#define ARCH_CPU_PPC_FAMILY 1 ++#define ARCH_CPU_PPC 1 ++#define ARCH_CPU_64_BITS 1 ++#elif defined(__ppc__) || defined(__powerpc__) || defined(__PPC__) + #define ARCH_CPU_PPC_FAMILY 1 + #define ARCH_CPU_PPC 1 + #define ARCH_CPU_32_BITS 1 +@@ -42,6 +46,14 @@ typedef int16_t int16; + #define ARCH_CPU_SPARC_FAMILY 1 + #define ARCH_CPU_SPARC 1 + #define ARCH_CPU_64_BITS 1 ++#elif defined(__s390x__) ++#define ARCH_CPU_S390_FAMILY 1 ++#define ARCH_CPU_S390 1 ++#define ARCH_CPU_64_BITS 1 ++#elif defined(__s390__) ++#define ARCH_CPU_S390_FAMILY 1 ++#define ARCH_CPU_S390 1 ++#define ARCH_CPU_32_BITS 1 + #else + #warning Please add support for your architecture in chromium_types.h + #endif diff --git a/xulrunner-install-dir.patch b/xulrunner-install-dir.patch new file mode 100644 index 0000000..e788fa0 --- /dev/null +++ b/xulrunner-install-dir.patch @@ -0,0 +1,23 @@ +diff -up mozilla-aurora-7676a9a06403/config/baseconfig.mk.dir mozilla-aurora-7676a9a06403/config/baseconfig.mk +--- mozilla-aurora-7676a9a06403/config/baseconfig.mk.dir 2012-09-13 14:18:35.000000000 +0200 ++++ mozilla-aurora-7676a9a06403/config/baseconfig.mk 2012-09-26 10:13:45.258240426 +0200 +@@ -2,7 +2,7 @@ INCLUDED_AUTOCONF_MK = 1 + + includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) + idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++installdir = $(libdir)/$(MOZ_APP_NAME) + sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) + DIST = $(DEPTH)/dist + +diff -up mozilla-aurora-7676a9a06403/js/src/config/baseconfig.mk.dir mozilla-aurora-7676a9a06403/js/src/config/baseconfig.mk +--- mozilla-aurora-7676a9a06403/js/src/config/baseconfig.mk.dir 2012-09-13 14:18:35.000000000 +0200 ++++ mozilla-aurora-7676a9a06403/js/src/config/baseconfig.mk 2012-09-26 10:14:07.353351833 +0200 +@@ -1,6 +1,6 @@ + INCLUDED_AUTOCONF_MK = 1 + +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) ++installdir = $(libdir)/$(MOZ_APP_NAME) + sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) + + ifneq (,$(filter /%,$(TOP_DIST))) diff --git a/xulrunner-mozconfig b/xulrunner-mozconfig new file mode 100644 index 0000000..7852dd4 --- /dev/null +++ b/xulrunner-mozconfig @@ -0,0 +1,43 @@ +. $topsrcdir/xulrunner/config/mozconfig +# --with-system-png is disabled because Mozilla requires APNG support in libpng +#ac_add_options --with-system-png + +ac_add_options --prefix="$PREFIX" +ac_add_options --libdir="$LIBDIR" +ac_add_options --with-system-jpeg +ac_add_options --with-system-zlib +ac_add_options --with-system-bz2 +ac_add_options --with-system-libvpx +ac_add_options --enable-system-hunspell +ac_add_options --with-pthreads +ac_add_options --disable-strip +ac_add_options --disable-tests +ac_add_options --disable-mochitest +ac_add_options --disable-installer +ac_add_options --enable-xinerama +ac_add_options --enable-default-toolkit=cairo-gtk2 +ac_add_options --enable-pango +ac_add_options --enable-svg +ac_add_options --enable-canvas +ac_add_options --disable-javaxpcom +ac_add_options --disable-crashreporter +ac_add_options --enable-safe-browsing +ac_add_options --enable-extensions=default +ac_add_options --enable-libnotify +ac_add_options --disable-necko-wifi +ac_add_options --enable-startup-notification +ac_add_options --disable-cpp-exceptions +ac_add_options --enable-shared-js +ac_add_options --enable-url-classifier +ac_add_options --enable-gio +ac_add_options --disable-gnomevfs +ac_add_options --disable-updater +ac_add_options --enable-chrome-format=omni + +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +export MOZ_UA_BUILDID=20100101 + +mk_add_options BUILD_OFFICIAL=1 +mk_add_options MOZILLA_OFFICIAL=1 +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir diff --git a/xulrunner-mozconfig-debuginfo b/xulrunner-mozconfig-debuginfo new file mode 100644 index 0000000..4dd2427 --- /dev/null +++ b/xulrunner-mozconfig-debuginfo @@ -0,0 +1,5 @@ +# For mozilla's debuginfo: +export CFLAGS="$CFLAGS -gdwarf-2" +export CXXFLAGS="$CXXFLAGS -gdwarf-2" +export MOZ_DEBUG_SYMBOLS=1 +ac_add_options --enable-crashreporter diff --git a/xulrunner-redhat-default-prefs.js b/xulrunner-redhat-default-prefs.js new file mode 100644 index 0000000..15a1e2a --- /dev/null +++ b/xulrunner-redhat-default-prefs.js @@ -0,0 +1,8 @@ +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +pref("general.smoothScroll", true); +pref("intl.locale.matchOS", true); +pref("network.manage-offline-status", true); +pref("toolkit.storage.synchronous", 0); +pref("toolkit.networkmanager.disable", false); +pref("offline.autoDetect", true); diff --git a/xulrunner.sh.in b/xulrunner.sh.in new file mode 100644 index 0000000..534b840 --- /dev/null +++ b/xulrunner.sh.in @@ -0,0 +1,69 @@ +#!/bin/sh +# +# The contents of this file are subject to the Netscape Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/NPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All +# Rights Reserved. +# +# Contributor(s): +# + +## +## Usage: +## +## $ xulrunner +## +## This script is meant to run a xulrunner program from the xulrunner +## rpm installation. +## + +cmdname=`basename $0` + +## +## Variables +## +XUL_ARCH=$(uname -m) +case $XUL_ARCH in + x86_64 | ia64 | s390 ) + XUL_LIB_DIR="/usr/lib64" + SECONDARY_LIB_DIR="/usr/lib" + ;; + * ) + XUL_LIB_DIR="/usr/lib" + SECONDARY_LIB_DIR="/usr/lib64" + ;; +esac + +if [ ! -x $XUL_LIB_DIR/xulrunner/xulrunner ]; then + if [ ! -x $SECONDARY_LIB_DIR/xulrunner/xulrunner ]; then + echo "Error: $XUL_LIB_DIR/xulrunner/xulrunner not found" + if [ -d $SECONDARY_LIB_DIR ]; then + echo " $SECONDARY_LIB_DIR/xulrunner/xulrunner not found" + fi + exit 1 + fi + XUL_LIB_DIR="$SECONDARY_LIB_DIR" +fi +XUL_DIST_BIN="$XUL_LIB_DIR/xulrunner" +XUL_PROGRAM="$XUL_DIST_BIN/xulrunner" + +## +## Enable WebGL +## +MOZ_GLX_IGNORE_BLACKLIST=1 +export MOZ_GLX_IGNORE_BLACKLIST + + +exec $XUL_PROGRAM "$@" diff --git a/xulrunner.spec b/xulrunner.spec new file mode 100644 index 0000000..f565b8f --- /dev/null +++ b/xulrunner.spec @@ -0,0 +1,1331 @@ +# Use system nspr/nss? +%define system_nss 1 + +# Use system sqlite? +%if 0%{?fedora} < 19 +%define system_sqlite 0 +%else +%define system_sqlite 1 +%endif + +# Use system cairo? +%define system_cairo 0 + +# Build as a debug package? +%define debug_build 0 + +# Minimal required versions +%global cairo_version 1.10.2 +%global freetype_version 2.1.9 +%global libnotify_version 0.7.0 +%global libvpx_version 1.0.0 + +%if %{?system_nss} +%global nspr_version 4.9.3 +%global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536) +%global nss_version 3.14.1 +%global nss_build_version %(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536) +%endif + +%if %{?system_sqlite} +%global sqlite_version 3.7.13 +# The actual sqlite version (see #480989): +%global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536) +%endif + +# gecko_dir_ver should be set to the version in our directory names +# alpha_version should be set to the alpha number if using an alpha, 0 otherwise +# beta_version should be set to the beta number if using a beta, 0 otherwise +# rc_version should be set to the RC number if using an RC, 0 otherwise +%global gecko_dir_ver %{version} +%global alpha_version 0 +%global beta_version 0 +%global rc_version 0 + +%global tarballname firefox +%global mozappdir %{_libdir}/%{name} +%global tarballdir mozilla-release + +# crash reporter work only on x86/x86_64 +%ifarch %{ix86} x86_64 +%global enable_mozilla_crashreporter 1 +%else +%global enable_mozilla_crashreporter 0 +%endif + +%if %{alpha_version} > 0 +%global pre_version a%{alpha_version} +%global tarballdir mozilla-beta +%endif +%if %{beta_version} > 0 +%global pre_version b%{beta_version} +%global tarballdir mozilla-beta +%endif +%if %{rc_version} > 0 +%global pre_version rc%{rc_version} +%global tarballdir mozilla-release +%endif + +%if %{defined pre_version} +%global gecko_verrel %{expand:%%{version}}-%{pre_version} +%global pre_tag .%{pre_version} +%else +%global gecko_verrel %{expand:%%{version}} +%endif + +Summary: XUL Runtime for Gecko Applications +Name: xulrunner +Version: 19.0.2 +Release: 2%{?pre_tag}%{?dist} +URL: http://developer.mozilla.org/En/XULRunner +License: MPLv1.1 or GPLv2+ or LGPLv2+ +Group: Applications/Internet +Source0: ftp://ftp.mozilla.org/pub/%{tarballname}/releases/%{version}%{?pre_version}/source/%{tarballname}-%{version}%{?pre_version}.source.tar.bz2 +Source10: %{name}-mozconfig +Source11: %{name}-mozconfig-debuginfo +Source12: %{name}-redhat-default-prefs.js +Source21: %{name}.sh.in + +# build patches +Patch1: xulrunner-install-dir.patch +Patch2: mozilla-build.patch +Patch14: xulrunner-2.0-chromium-types.patch +Patch17: xulrunner-15.0-gcc47.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=814879#c3 +Patch18: xulrunner-16.0-jemalloc-ppc.patch +Patch19: rhbz-304121.patch + +# Fedora specific patches +Patch20: mozilla-193-pkgconfig.patch +Patch21: rhbz-911314.patch + +# Upstream patches +Patch101: mozilla-791626.patch +Patch102: mozilla-239254.patch + +# --------------------------------------------------- + +%if %{?system_nss} +BuildRequires: nspr-devel >= %{nspr_version} +BuildRequires: nss-devel >= %{nss_version} +BuildRequires: nss-static >= %{nss_version} +%endif +%if %{?system_cairo} +BuildRequires: cairo-devel >= %{cairo_version} +%endif +BuildRequires: libpng-devel +BuildRequires: libjpeg-devel +BuildRequires: zip +BuildRequires: bzip2-devel +BuildRequires: zlib-devel +BuildRequires: libIDL-devel +BuildRequires: gtk2-devel +BuildRequires: krb5-devel +BuildRequires: pango-devel +BuildRequires: freetype-devel >= %{freetype_version} +BuildRequires: libXt-devel +BuildRequires: libXrender-devel +BuildRequires: hunspell-devel +BuildRequires: startup-notification-devel +BuildRequires: alsa-lib-devel +BuildRequires: libnotify-devel >= %{libnotify_version} +BuildRequires: mesa-libGL-devel +BuildRequires: libcurl-devel +BuildRequires: libvpx-devel >= %{libvpx_version} + +Requires: mozilla-filesystem +%if %{?system_nss} +Requires: nspr >= %{nspr_build_version} +Requires: nss >= %{nss_build_version} +%endif +Provides: gecko-libs = %{gecko_verrel} +Provides: gecko-libs%{?_isa} = %{gecko_verrel} +Conflicts: firefox < 3.6 + +%if %{?system_sqlite} +BuildRequires: sqlite-devel >= %{sqlite_version} +Requires: sqlite >= %{sqlite_build_version} +%endif + +%description +XULRunner is a Mozilla runtime package that can be used to bootstrap XUL+XPCOM +applications that are as rich as Firefox and Thunderbird. It provides mechanisms +for installing, upgrading, and uninstalling these applications. XULRunner also +provides libxul, a solution which allows the embedding of Mozilla technologies +in other projects and products. + +%package devel +Summary: Development files for Gecko +Group: Development/Libraries +Obsoletes: mozilla-devel < 1.9 +Obsoletes: firefox-devel < 2.1 +Obsoletes: xulrunner-devel-unstable +Provides: gecko-devel = %{gecko_verrel} +Provides: gecko-devel%{?_isa} = %{gecko_verrel} +Provides: gecko-devel-unstable = %{gecko_verrel} +Provides: gecko-devel-unstable%{?_isa} = %{gecko_verrel} + +Requires: xulrunner = %{version}-%{release} +%if %{?system_nss} +Requires: nspr-devel >= %{nspr_build_version} +Requires: nss-devel >= %{nss_build_version} +%endif +%if %{?system_cairo} +Requires: cairo-devel >= %{cairo_version} +%endif +Requires: libjpeg-devel +Requires: zip +Requires: bzip2-devel +Requires: zlib-devel +Requires: libIDL-devel +Requires: gtk2-devel +Requires: krb5-devel +Requires: pango-devel +Requires: freetype-devel >= %{freetype_version} +Requires: libXt-devel +Requires: libXrender-devel +Requires: hunspell-devel +%if %{?system_sqlite} +Requires: sqlite-devel +%endif +Requires: startup-notification-devel +Requires: alsa-lib-devel +Requires: libnotify-devel +Requires: mesa-libGL-devel +Requires: libvpx-devel >= %{libvpx_version} + +%description devel +This package contains the libraries amd header files that are needed +for writing XUL+XPCOM applications with Mozilla XULRunner and Gecko. + +%if %{enable_mozilla_crashreporter} +%global moz_debug_prefix %{_prefix}/lib/debug +%global moz_debug_dir %{moz_debug_prefix}%{mozappdir} +%global uname_m %(uname -m) +%global symbols_file_name %{name}-%{version}.en-US.%{_os}-%{uname_m}.crashreporter-symbols.zip +%global symbols_file_path %{moz_debug_dir}/%{symbols_file_name} +%global _find_debuginfo_opts -p %{symbols_file_path} -o debugcrashreporter.list +%global crashreporter_pkg_name mozilla-crashreporter-%{name}-debuginfo +%package -n %{crashreporter_pkg_name} +Summary: Debugging symbols used by Mozilla's crash reporter servers +Group: Development/Debug +%description -n %{crashreporter_pkg_name} +This package provides debug information for XULRunner, for use by +Mozilla's crash reporter servers. If you are trying to locally +debug %{name}, you want to install %{name}-debuginfo instead. +%files -n %{crashreporter_pkg_name} -f debugcrashreporter.list +%defattr(-,root,root) +%endif + +#--------------------------------------------------------------------- + +%prep +%setup -q -c +cd %{tarballdir} + +%patch1 -p1 +%patch2 -p1 -b .build +%patch14 -p2 -b .chromium-types +%patch17 -p2 -b .gcc47 +%patch18 -p2 -b .jemalloc-ppc +%patch19 -p2 -b .rhbz-304121 + +%patch20 -p2 -b .pk +%ifarch ppc ppc64 +%patch21 -p1 -b .ppc +%endif + +%patch101 -p1 -b .791626 +%patch102 -p1 -b .239254 + +%{__rm} -f .mozconfig +%{__cp} %{SOURCE10} .mozconfig +%if %{enable_mozilla_crashreporter} +%{__cat} %{SOURCE11} >> .mozconfig +%endif + +%if %{?system_nss} +echo "ac_add_options --with-system-nspr" >> .mozconfig +echo "ac_add_options --with-system-nss" >> .mozconfig +%else +echo "ac_add_options --without-system-nspr" >> .mozconfig +echo "ac_add_options --without-system-nss" >> .mozconfig +%endif + +%if %{?system_sqlite} +echo "ac_add_options --enable-system-sqlite" >> .mozconfig +%else +echo "ac_add_options --disable-system-sqlite" >> .mozconfig +%endif + +%if %{?system_cairo} +echo "ac_add_options --enable-system-cairo" >> .mozconfig +%else +echo "ac_add_options --disable-system-cairo" >> .mozconfig +%endif + +%if %{?debug_build} +echo "ac_add_options --enable-debug" >> .mozconfig +echo "ac_add_options --disable-optimize" >> .mozconfig +%else +echo "ac_add_options --disable-debug" >> .mozconfig +echo "ac_add_options --enable-optimize" >> .mozconfig +%endif + +# s390(x) fails to start with jemalloc enabled +%ifarch s390 s390x +echo "ac_add_options --disable-jemalloc" >> .mozconfig +%endif + +%ifarch armv7hl +echo "ac_add_options --with-arch=armv7-a" >> .mozconfig +echo "ac_add_options --with-float-abi=hard" >> .mozconfig +echo "ac_add_options --with-fpu=vfpv3-d16" >> .mozconfig +echo "ac_add_options --disable-elf-hack" >> .mozconfig +%endif +%ifarch armv7hnl +echo "ac_add_options --with-arch=armv7-a" >> .mozconfig +echo "ac_add_options --with-float-abi=hard" >> .mozconfig +echo "ac_add_options --with-fpu=neon" >> .mozconfig +echo "ac_add_options --disable-elf-hack" >> .mozconfig +%endif +%ifarch armv5tel +echo "ac_add_options --with-arch=armv5te" >> .mozconfig +echo "ac_add_options --with-float-abi=soft" >> .mozconfig +echo "ac_add_options --disable-elf-hack" >> .mozconfig +%endif + +%ifnarch %{ix86} x86_64 armv7hl armv7hnl +echo "ac_add_options --disable-methodjit" >> .mozconfig +echo "ac_add_options --disable-monoic" >> .mozconfig +echo "ac_add_options --disable-polyic" >> .mozconfig +echo "ac_add_options --disable-tracejit" >> .mozconfig +%endif + +%ifnarch %{ix86} x86_64 +echo "ac_add_options --disable-webrtc" >> .mozconfig +%endif + +#--------------------------------------------------------------------- + +%build +%if %{?system_sqlite} +# Do not proceed with build if the sqlite require would be broken: +# make sure the minimum requirement is non-empty, ... +sqlite_version=$(expr "%{sqlite_version}" : '\([0-9]*\.\)[0-9]*\.') || exit 1 +# ... and that major number of the computed build-time version matches: +case "%{sqlite_build_version}" in + "$sqlite_version"*) ;; + *) exit 1 ;; +esac +%endif + +cd %{tarballdir} + +# -fpermissive is needed to build with gcc 4.6+ which has become stricter +# +# Mozilla builds with -Wall with exception of a few warnings which show up +# everywhere in the code; so, don't override that. +# +# Disable C++ exceptions since Mozilla code is not exception-safe +# +MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS" | %{__sed} -e 's/-Wall//') +%if %{?debug_build} +MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') +%endif +%ifarch s390 +MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') +%endif +%ifarch s390 %{arm} ppc +MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" +%endif + +export CFLAGS=$MOZ_OPT_FLAGS +export CXXFLAGS="$MOZ_OPT_FLAGS -fpermissive" +export LDFLAGS=$MOZ_LINK_FLAGS + +export PREFIX='%{_prefix}' +export LIBDIR='%{_libdir}' + +MOZ_SMP_FLAGS=-j1 +# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel, +# however builds tend to fail on other arches when building in parallel. +%ifarch %{ix86} x86_64 ppc ppc64 +[ -z "$RPM_BUILD_NCPUS" ] && \ + RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" +[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 +[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4 +[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8 +%endif + +make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" MOZ_SERVICES_SYNC="1" + +# create debuginfo for crash-stats.mozilla.com +%if %{enable_mozilla_crashreporter} +#cd %{moz_objdir} +make -C objdir buildsymbols +%endif + +#--------------------------------------------------------------------- + +%install +cd %{tarballdir} + +# set up our prefs before install, so it gets pulled in to omni.jar +%{__cp} -p %{SOURCE12} objdir/dist/bin/defaults/pref/all-redhat.js + +DESTDIR=$RPM_BUILD_ROOT make -C objdir install + +# Start script install +%{__rm} -rf $RPM_BUILD_ROOT%{_bindir}/%{name} +%{__cat} %{SOURCE21} | %{__sed} -e 's,XULRUNNER_VERSION,%{gecko_dir_ver},g' > \ + $RPM_BUILD_ROOT%{_bindir}/%{name} +%{__chmod} 755 $RPM_BUILD_ROOT%{_bindir}/%{name} + +%{__rm} -f $RPM_BUILD_ROOT%{mozappdir}/%{name}-config + +# Copy pc files (for compatibility with 1.9.1) +%{__cp} $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul.pc \ + $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul-unstable.pc +%{__cp} $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul-embedding.pc \ + $RPM_BUILD_ROOT/%{_libdir}/pkgconfig/libxul-embedding-unstable.pc + +# Fix multilib devel conflicts... +function install_file() { +genheader=$* +mv ${genheader}.h ${genheader}%{__isa_bits}.h +cat > ${genheader}.h << EOF +/* This file exists to fix multilib conflicts */ +#if defined(__x86_64__) || defined(__ia64__) || defined(__s390x__) || defined(__powerpc64__) || (defined(__sparc__) && defined(__arch64__)) +#include "${genheader}64.h" +#else +#include "${genheader}32.h" +#endif +EOF +} + +INTERNAL_APP_NAME=%{name}-%{gecko_dir_ver} + +pushd $RPM_BUILD_ROOT/%{_includedir}/${INTERNAL_APP_NAME} +install_file "mozilla-config" +install_file "js-config" +popd + +# Link libraries in sdk directory instead of copying them: +pushd $RPM_BUILD_ROOT%{_libdir}/%{name}-devel-%{gecko_dir_ver}/sdk/lib +for i in *.so; do + rm $i + ln -s %{mozappdir}/$i $i +done +popd + +# Library path +LD_SO_CONF_D=%{_sysconfdir}/ld.so.conf.d +LD_CONF_FILE=xulrunner-%{__isa_bits}.conf + +%{__mkdir_p} ${RPM_BUILD_ROOT}${LD_SO_CONF_D} +%{__cat} > ${RPM_BUILD_ROOT}${LD_SO_CONF_D}/${LD_CONF_FILE} << EOF +%{mozappdir} +EOF + +# Copy over the LICENSE +%{__install} -p -c -m 644 LICENSE $RPM_BUILD_ROOT%{mozappdir} + +# Install xpcshell +%{__cp} objdir/dist/bin/xpcshell $RPM_BUILD_ROOT/%{mozappdir} + +# Fix libxpcom.so rights +chmod 755 $RPM_BUILD_ROOT/%{mozappdir}/libxpcom.so + +# Install run-mozilla.sh +%{__cp} objdir/dist/bin/run-mozilla.sh $RPM_BUILD_ROOT/%{mozappdir} + +# Use the system hunspell dictionaries +%{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries +ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries + +# Remove tmp files +find $RPM_BUILD_ROOT/%{mozappdir} -name '.mkdir.done' -exec rm -rf {} \; + +# ghost files +%{__mkdir_p} $RPM_BUILD_ROOT%{mozappdir}/components +touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat +touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat + +# Add debuginfo for crash-stats.mozilla.com +%if %{enable_mozilla_crashreporter} +%{__mkdir_p} $RPM_BUILD_ROOT/%{moz_debug_dir} +%{__cp} objdir/dist/%{symbols_file_name} $RPM_BUILD_ROOT/%{moz_debug_dir} +%endif + +#--------------------------------------------------------------------- + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%preun +# is it a final removal? +if [ $1 -eq 0 ]; then + %{__rm} -rf %{mozappdir}/components +fi + +%files +%defattr(-,root,root,-) +%{_bindir}/xulrunner +%dir %{mozappdir} +%doc %attr(644, root, root) %{mozappdir}/LICENSE +%doc %attr(644, root, root) %{mozappdir}/README.xulrunner +%{mozappdir}/chrome +%{mozappdir}/chrome.manifest +%{mozappdir}/dictionaries +%dir %{mozappdir}/components +%ghost %{mozappdir}/components/compreg.dat +%ghost %{mozappdir}/components/xpti.dat +%{mozappdir}/components/*.so +%{mozappdir}/components/*.manifest +%{mozappdir}/omni.ja +%{mozappdir}/plugins +%{mozappdir}/*.so +%{mozappdir}/mozilla-xremote-client +%{mozappdir}/run-mozilla.sh +%{mozappdir}/xulrunner +%{mozappdir}/xulrunner-stub +%{mozappdir}/platform.ini +%{mozappdir}/dependentlibs.list +%{_sysconfdir}/ld.so.conf.d/xulrunner*.conf +%{mozappdir}/plugin-container +%if !%{?system_nss} +%{mozappdir}/*.chk +%endif +%if %{enable_mozilla_crashreporter} +%{mozappdir}/crashreporter +%{mozappdir}/crashreporter.ini +%{mozappdir}/Throbber-small.gif +%endif + +%files devel +%defattr(-,root,root,-) +%dir %{_libdir}/%{name}-devel-* +%{_datadir}/idl/%{name}*%{gecko_dir_ver} +%{_includedir}/%{name}*%{gecko_dir_ver} +%{_libdir}/%{name}-devel-*/* +%{_libdir}/pkgconfig/*.pc +%{mozappdir}/xpcshell + +#--------------------------------------------------------------------- + +%changelog +* Mon Mar 11 2013 Martin Stransky - 19.0.2-2 +- Update to 19.0.2 + +* Wed Feb 20 2013 Martin Stransky - 19.0-2 +- Added fix for rhbz#911314 (ppc only) + +* Mon Feb 18 2013 Martin Stransky - 19.0-1 +- Update to 19.0 +- Added fix for mozbz#239254 + +* Wed Feb 6 2013 Jan Horak - 18.0.2-1 +- Update to 18.0.2 + +* Fri Jan 25 2013 Jan Horak - 18.0.1-1 +- Update to 18.0.1 + +* Tue Jan 15 2013 Martin Stransky - 18.0-8 +- Added fix for NM regression (mozbz#791626) + +* Thu Jan 10 2013 Martin Stransky - 18.0-7 +- Fixed Makefile generator (rhbz#304121) + +* Wed Jan 9 2013 Martin Stransky - 18.0-6 +- Fixed missing libxpcom.so provides + +* Wed Jan 9 2013 Martin Stransky - 18.0-5 +- Added fix for langpacks + +* Wed Jan 9 2013 Martin Stransky - 18.0-4 +- Fixed source files +- Disabled WebRTC due to rhbz#304121 + +* Wed Jan 9 2013 Martin Stransky - 18.0-2 +- Disabled system sqlite on Fedora 18 + +* Mon Jan 7 2013 Martin Stransky - 18.0-1 +- Update to 18.0 + +* Thu Dec 13 2012 Peter Robinson 17.0.1-3 +- Disable webrtc on ARM as it currently tries to build SSE on ARM (fix FTBFS) +- Enable methodjit/tracejit on ARMv7 for more speed :) Fixes RHBZ 870548 + +* Fri Dec 7 2012 Jan Horak - 17.0.1-2 +- Fixed rhbz#879595 + +* Thu Nov 29 2012 Jan Horak - 17.0.1-1 +- Update to 17.0.1 + +* Tue Nov 27 2012 Jan Horak - 17.0-4 +- Rebuild agains older NSS + +* Mon Nov 19 2012 Martin Stransky - 17.0-3 +- Updated second arch patches + +* Mon Nov 19 2012 Dan Horák - 17.0-2 +- webrtc is available only on selected arches + +* Mon Nov 19 2012 Martin Stransky - 17.0-1 +- Update to 17.0 + +* Wed Nov 14 2012 Martin Stransky - 17.0-0.2b6 +- Update to 17.0 Beta 6 + +* Tue Nov 13 2012 Martin Stransky - 17.0-0.1b5 +- Update to 17.0 Beta 5 + +* Tue Nov 6 2012 Martin Stransky - 16.0.2-2 +- Added fix for rhbz#872752 + +* Wed Oct 31 2012 Martin Stransky - 16.0.2-1 +- Updated mozilla-746112.patch for second arches +- Removed unused one (rhbz#855919) + +* Fri Oct 26 2012 Jan Horak - 16.0.2-1 +- Update to 16.0.2 + +* Tue Oct 16 2012 Jan Horak - 16.0.1-2 +- Fixed required nss and nspr version + +* Thu Oct 11 2012 Martin Stransky - 16.0.1-1 +- Update to 16.0.1 + +* Mon Oct 10 2012 Martin Stransky - 16.0-2 +- Fixed xulrunner launch script + +* Mon Oct 8 2012 Martin Stransky - 16.0-1 +- Update to 16.0 + +* Mon Sep 17 2012 Martin Stransky - 15.0.1-3 +- Added fix for rhbz#855919 - Firefox freezes on Fedora 18 for PPC64 + +* Fri Sep 14 2012 Martin Stransky - 15.0.1-2 +- Added build flags for second arches + +* Tue Sep 11 2012 Jan Horak - 15.0.1-1 +- Update to 15.0.1 + +* Wed Aug 22 2012 Martin Stransky - 15.0-2 +- Update to 15.0 + +* Thu Aug 9 2012 Jan Horak - 14.0.1-6 +- Added fix for mozbz#709732 + +* Wed Jul 25 2012 Dan Horák - 14.0.1-5 +- Added fix for secondary arches - mozbz#750620 + +* Sun Jul 22 2012 Fedora Release Engineering - 14.0.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 16 2012 Martin Stransky - 14.0.1-3 +- Update to 14.0.1 + +* Sat Jun 16 2012 Jan Horak - 13.0.1-1 +- Update to 13.0.1 + +* Wed Jun 5 2012 Martin Stransky - 13.0-2 +- src.rpm should include all patches + +* Mon Jun 4 2012 Martin Stransky - 13.0-1 +- Update to 13.0 + +* Mon May 28 2012 Martin Stransky - 12.0-7 +- More ppc(64) fixes - mozbz#746112 + +* Mon May 28 2012 Martin Stransky - 12.0-6 +- Added workaround for ppc(64) - mozbz#746112 + +* Mon May 7 2012 Dan Horák - 12.0-5 +- Used backported upstream patch from mozb#734335 for fixing the sps profiler build +- Fixed build of jemalloc on ppc (patch by Gustavo Luiz Duarte/IBM) + +* Fri May 4 2012 Dan Horák - 12.0-4 +- Added new patch for 691898 - backport from trunk +- Added build fix for secondary arches + +* Fri May 4 2012 Martin Stransky - 12.0-3 +- Added requires for nss-static (rhbz#717247) + +* Mon Apr 30 2012 Martin Stransky - 12.0-2 +- Enable ppc(64) paralell builds (rhbz#816612) + +* Tue Apr 24 2012 Martin Stransky - 12.0-1 +- Update to 12.0 + +* Tue Mar 13 2012 Martin Stransky - 11.0-3 +- Update to 11.0 +- Fixed libvpx-devel dependency + +* Fri Mar 9 2012 Martin Stransky - 11.0-1 +- Update to 11.0 Beta 7 + +* Fri Mar 09 2012 Dan Horák - 10.0.1-5 +- Add fix for secondary arches from mozb#691898 + +* Mon Feb 27 2012 Martin Stransky - 10.0.1-4 +- Added fix from rhbz#796929 - xulrunner doesn't compile on ARM + +* Tue Feb 16 2012 Martin Stransky - 10.0.1-3 +- Added fix for mozbz#727401 + +* Tue Feb 14 2012 Martin Stransky - 10.0.1-2 +- Allow network manager to handle the offline status + +* Thu Feb 9 2012 Jan Horak - 10.0.1-1 +- Update to 10.0.1 + +* Tue Jan 31 2012 Jan Horak - 10.0-1 +- Update to 10.0 + +* Mon Jan 30 2012 Tom Callaway 10.0-3 +- fix issues causing ftbfs in rawhide + +* Mon Jan 30 2012 Tom Callaway 10.0-2 +- rebuild against libvpx 1.0.0 (and BR 1.0.0 or greater) + +* Mon Jan 23 2012 Martin Stransky 10.0-1 +- Update to 10.0 Beta 6 + +* Thu Jan 19 2012 Dennis Gilmore - 9.0.1-4 +- add missing v from armv7hl and armv7hnl config options + +* Wed Jan 04 2012 Dan Horák - 9.0.1-3 +- fix build on secondary arches (cherry-picked from 13afcd4c097c) + +* Fri Dec 23 2011 Peter Robinson - 9.0.1-2 +- Add compile options for ARM hfp/sfp - RHBZ #738509 + +* Fri Dec 23 2011 Jan Horak - 9.0.1-1 +- Update to 9.0.1 + +* Tue Dec 20 2011 Jan Horak - 9.0-2 +- Update to 9.0 + +* Fri Dec 9 2011 Martin Stransky 9.0-1.beta5 +- Updated to 9.0 Beta 5 + +* Wed Dec 7 2011 Jan Horak - 8.0-5 +- Gnome 3 proxy settings are now honoured (mozbz#682832) + +* Tue Dec 6 2011 Tom Callaway 8.0-4 +- fix bug in npapi.h causing compile failures + +* Fri Nov 25 2011 Martin Stransky 8.0-3 +- s390 build fixes + +* Mon Nov 7 2011 Martin Stransky 8.0-1 +- Updated to 8.0 + +* Tue Oct 18 2011 Ville Skyttä - 7.0.1-5 +- Avoid %%post/un shell invocations + and dependencies (rhbz#736830). + +* Tue Oct 18 2011 Martin Stransky 7.0.1-4 +- Updated cairo dependency (rhbz#742853) + +* Tue Oct 11 2011 Dan Horák 7.0.1-3 +- fix build on secondary arches + +* Mon Oct 10 2011 Martin Stransky 7.0.1-2 +- Removed GRE stuff +- Removed xulrunner rpath (mozbz#686434) + +* Fri Sep 30 2011 Jan Horak - 7.0.1-1 +- Update to 7.0.1 + +* Tue Sep 27 2011 Jan Horak - 7.0-1 +- Update to 7.0 + +* Tue Sep 6 2011 Jan Horak - 6.0.2-1 +- Update to 6.0.2 + +* Wed Aug 31 2011 Jan Horak - 6.0-3 +- Distrust a specific Certificate Authority + +* Tue Aug 16 2011 Martin Stransky 6.0-2 +- Updated gtkmozembed patch + +* Tue Aug 16 2011 Martin Stransky 6.0-1 +- 6.0 + +* Thu Jun 30 2011 Martin Stransky 5.0-5 +- Fixed build on powerpc(64) + +* Tue Jun 28 2011 Dan Horák - 5.0-4 +- fix build on secondary arches with IPC enabled + +* Tue Jun 24 2011 Martin Stransky 5.0-3 +- libCurl build fix + +* Wed Jun 22 2011 Martin Stransky 5.0-2 +- Reverted mozbz#648156 - Remove gtkmozembed + +* Tue Jun 21 2011 Martin Stransky 5.0-1 +- 5.0 + +* Thu May 26 2011 Martin Stransky 2.0.1-2 +- Rebuild for new hunspell (rhbz#707760) + +* Thu Apr 28 2011 Christopher Aillon - 2.0.1-1 +- 2.0.1 + +* Thu Apr 21 2011 Christopher Aillon - 2.0-4 +- Split out mozilla crashreporter symbols to its own debuginfo package + +* Sun Apr 10 2011 Christopher Aillon - 2.0-3 +- Fix offline status issue on version upgrades +- Fix a hang with 20+ extensions + +* Mon Apr 4 2011 Christopher Aillon - 2.0-2 +- Fix SIGABRT in X_CloseDevice: XI_BadDevice +- Updates for NetworkManager 0.9 +- Updates for GNOME 3 + +* Tue Mar 22 2011 Christopher Aillon - 2.0-1 +- 2.0 + +* Fri Mar 18 2011 Christopher Aillon - 2.0-0.28 +- Update to 2.0 RC2 + +* Thu Mar 17 2011 Jan Horak - 2.0-0.27 +- Disabled gnomevfs +- Enabled gio +- Build with system libvpx + +* Wed Mar 9 2011 Christopher Aillon - 2.0-0.26 +- Update to 2.0 RC 1 + +* Sun Feb 27 2011 Christopher Aillon - 2.0-0.25 +- Make Firefox's User-Agent string match upstream's + +* Sat Feb 26 2011 Christopher Aillon - 2.0-0.24 +- Switch to using the omni chrome file format + +* Fri Feb 25 2011 Christopher Aillon - 2.0-0.23 +- Update to 2.0 Beta 12 + +* Sun Feb 13 2011 Dennis Gilmore 2.0-0.22 +- disable nanojit on sparc64 its not supported and doesnt get automatically switched off + +* Thu Feb 10 2011 Christopher Aillon - 2.0-0.21 +- Also provide arch-agnostic versions of gecko virtual provides + +* Thu Feb 10 2011 Christopher Aillon - 2.0-0.20 +- Introduce better versioning for our gecko virtual provides +- Now, the gecko-libs and gecko-devel virtual provides will be pinned + to an individual Gecko release, so packages can do things like + Requires: gecko-libs = 2.0-beta11 + BuildRequires: gecko-libs = 2.0-beta11 +- Final releases will be pinned to e.g. 2.0-1 regardless of %%{release} +- Also, make sure those virtual provides are arch-specific + +* Tue Feb 8 2011 Christopher Aillon - 2.0-0.19 +- Update to 2.0 Beta 11 + +* Wed Jan 26 2011 Christopher Aillon - 2.0-0.18 +- Fix issue with popup windows showing in the wrong place + +* Tue Jan 25 2011 Christopher Aillon - 2.0-0.17 +- Update to 2.0 Beta 10 + +* Fri Jan 21 2011 Dan Horák - 2.0-0.16.b9 +- updated the 64bit-big-endian patch (bmo#627664) +- added fix for build with --disable-methodjit (bmo#623277) + +* Fri Jan 14 2011 Christopher Aillon 2.0-0.15.b9 +- Update to 2.0 Beta 9 + +* Thu Jan 11 2011 Tom Callaway 2.0-0.14.b8 +- enable system sqlite (see https://fedorahosted.org/fpc/ticket/34) + +* Thu Dec 23 2010 Martin Stransky 2.0-0.13.b8 +- reverted fix for rhbz#658471 + +* Wed Dec 22 2010 Dan Horák - 2.0-0.11.b8 +- updated the 64bit-big-endian patch + +* Tue Dec 21 2010 Martin Stransky 2.0-0.11.b8 +- enable url-classifier and jar format for chrome files + +* Tue Dec 21 2010 Martin Stransky 2.0-0.10.b8 +- Update to 2.0b8 + +* Mon Dec 20 2010 Martin Stransky 2.0-0.9.b8 +- removed unused library path (rhbz#658471) + +* Fri Dec 17 2010 Dan Horák - 2.0-0.8.b7 +- disable the crash reporter on non-x86 arches +- add sparc64 as 64-bit arch + +* Tue Dec 14 2010 Jan Horak - 2.0-0.7.b7 +- Enable mozilla crash reporter + +* Thu Nov 11 2010 Dan Horák - 2.0-0.6.b7 +- The s390 patch is not needed anymore + +* Thu Nov 11 2010 Jan Horak - 2.0-0.5.b7 +- Update to 2.0b7 + +* Thu Nov 4 2010 Christopher Aillon 2.0-0.4.b6 +- Ensure that WM_CLASS matches the desktop file + +* Wed Nov 3 2010 Martin Stransky 2.0-0.3.b6 +- Libnotify rebuild (rhbz#649071) + +* Wed Sep 29 2010 jkeating - 2.0-0.2b6 +- Rebuilt for gcc bug 634757 + +* Tue Sep 21 2010 Martin Stransky 2.0-0.1.b6 +- Update to 2.0b6 + +* Tue Sep 7 2010 Tom "spot" Callaway 1.9.3.0-0.2.b4 +- spec file cleanup + +* Fri Aug 27 2010 Martin Stransky 1.9.3.0-0.1.b4 +- Update to 1.9.3.1 beta 4 + +* Mon Aug 16 2010 Martin Stransky 1.9.3.0-0.b3 +- Update to 1.9.3.1 beta 3 + +* Tue Jul 20 2010 Jan Horak - 1.9.2.7-1 +- Update to 1.9.2.7 + +* Wed Jul 1 2010 Martin Stransky 1.9.2.6-2 +- Disabled oopp on unsupported arches (rhbz#614363) + +* Wed Jun 30 2010 Jan Horak - 1.9.2.6-1 +- Update to 1.9.2.6 + +* Tue Jun 22 2010 Jan Horak - 1.9.2.4-1 +- Update to 1.9.2.4 + +* Tue Jun 15 2010 Dan Horák 1.9.2.3-2 +- Fixed build on s390 + +* Fri Apr 2 2010 Martin Stransky 1.9.2.3-1 +- Update to 1.9.2.3 + +* Tue Mar 23 2010 Jan Horak - 1.9.2.2-1 +- Update to 1.9.2.2 + +* Mon Mar 15 2010 Colin Walters - 1.9.2.1-4 +- Enable startup notification, closes #445543 + +* Thu Feb 18 2010 Jan Horak - 1.9.2.1-3 +- Added fix for mozbz#462919 - Override NSS database path + for xulrunner application + +* Wed Feb 17 2010 Martin Stransky 1.9.2.1-2 +- Added fix for #564184 - xulrunner-devel multilib conflict + +* Fri Jan 22 2010 Martin Stransky 1.9.2.1-1 +- Update to 1.9.2.1 + +* Wed Jan 18 2010 Martin Stransky 1.9.2.1-0.10.rc1 +- Update to 1.9.2.1 RC2 + +* Wed Jan 13 2010 Martin Stransky 1.9.2.1-0.9.rc1 +- Update to 1.9.2.1 RC1 + +* Mon Dec 21 2009 Martin Stransky 1.9.2.1-0.8.b5 +- Update to 1.9.2.1 Beta 5 + +* Thu Dec 17 2009 Martin Stransky 1.9.2.1-0.7.b4 +- Added fix for mozbz#543585 - jemalloc alignment assertion + and abort on Linux + +* Thu Dec 3 2009 Martin Stransky 1.9.2.1-0.6.b4 +- Added fix for #543585 - mozilla-plugin.pc contains incorrect CFLAGS + +* Fri Nov 27 2009 Martin Stransky 1.9.2.1-0.5.b4 +- Update to 1.9.2.1 Beta 4 + +* Mon Nov 23 2009 Martin Stransky 1.9.2.1-0.4.b3 +- added -unstable.pc files for compatibility with 1.9.1 + +* Fri Nov 20 2009 Martin Stransky 1.9.2.1-0.3.b3 +- Necko wifi monitor disabled +- fixed a dependency (#539261) +- added source URL (#521704) + +* Wed Nov 18 2009 Martin Stransky 1.9.2.1-0.2.b3 +- Rebase to 1.9.2.1 Beta 3 + +* Fri Nov 13 2009 Martin Stransky 1.9.2.1-0.1.beta2 +- Rebase to 1.9.2.1 Beta 2 +- fix the sqlite runtime requires again (#480989), add a check + that the sqlite requires is sane (by Stepan Kasal) + +* Thu Nov 5 2009 Jan Horak - 1.9.1.5-1 +- Update to 1.9.1.5 + +* Mon Oct 26 2009 Jan Horak - 1.9.1.4-1 +- Update to 1.9.1.4 + +* Mon Sep 7 2009 Jan Horak - 1.9.1.3-1 +- Update to 1.9.1.3 + +* Fri Aug 21 2009 Jan Horak - 1.9.1.2-4 +- Added libnotify support + +* Wed Aug 12 2009 Martin Stransky 1.9.1.2-3 +- Added fix from #516118 - Headers not C89 + +* Mon Aug 6 2009 Martin Stransky 1.9.1.2-2 +- Rebuilt + +* Mon Aug 3 2009 Martin Stransky 1.9.1.2-1 +- Update to 1.9.1.2 + +* Mon Jul 27 2009 Fedora Release Engineering - 1.9.1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jul 17 2009 Christopher Aillon - 1.9.1.1-1 +- Update to 1.9.1.1 + +* Mon Jul 13 2009 Jan Horak - 1.9.1-3 +- Fixed wrong version of Firefox when loading 'about:' as location +- Added patch to compile against latest GTK + +* Tue Jun 30 2009 Yanko Kaneti - 1.9.1-2 +- Build using system hunspell + +* Tue Jun 30 2009 Christopher Aillon 1.9.1-1 +- Update to 1.9.1 final release + +* Wed Jun 24 2009 Martin Stransky 1.9.1-0.23 +- Rebuilt because of gcc update (#506952) + +* Thu Jun 18 2009 Martin Stransky 1.9.1-0.22 +- Backed out last change, it does not work inside mock (koji) + +* Tue Jun 16 2009 Stepan Kasal 1.9.1-0.21 +- require sqlite of version >= what was used at buildtime (#480989) +- in devel subpackage, drop version from sqlite-devel require; that's + handled indirectly through the versioned require in main package + +* Mon Apr 27 2009 Christopher Aillon 1.9.1-0.20 +- 1.9.1 beta 4 + +* Fri Mar 27 2009 Christopher Aillon 1.9.1-0.11 +- Add patches for MFSA-2009-12, MFSA-2009-13 + +* Fri Mar 13 2009 Christopher Aillon 1.9.1-0.10 +- 1.9.1 beta 3 + +* Fri Feb 27 2009 Martin Stransky 1.9.1-0.9 +- Build fix for pango 1.23 +- Misc. build fixes + +* Thu Feb 26 2009 Fedora Release Engineering - 1.9.1-0.8.beta2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Jan 28 2009 Christopher Aillon 1.9.1-0.7 +- Re-enable NM by default + +* Wed Jan 7 2009 Martin Stransky 1.9.1-0.6 +- Copied mozilla-config.h to stable include dir (#478445) + +* Mon Dec 22 2008 Christopher Aillon 1.9.1-0.5 +- Typo fix + +* Sat Dec 20 2008 Christopher Aillon 1.9.1-0.4 +- 1.9.1 beta 2 + +* Tue Dec 9 2008 Christopher Aillon 1.9.1-0.3 +- Mark this as a pre-release + +* Tue Dec 9 2008 Christopher Aillon 1.9.1-0.2 +- Add needed -devel requires to the -devel package + +* Thu Dec 4 2008 Christopher Aillon 1.9.1-0.1 +- 1.9.1 beta 1 + +* Wed Nov 12 2008 Christopher Aillon 1.9.0.4-1 +- Update to 1.9.0.4 + +* Mon Oct 27 2008 Christopher Aillon 1.9.0.2-5 +- Password manager fixes from upstream + +* Tue Oct 7 2008 Marco Pesenti Gritti 1.9.0.2-4 +- Add missing dependency on python-devel + +* Sun Oct 5 2008 Christopher Aillon 1.9.0.2-3 +- Enable PyXPCOM + +* Thu Sep 25 2008 Martin Stransky 1.9.0.2-2 +- Build with system cairo (#463341) + +* Tue Sep 23 2008 Christopher Aillon 1.9.0.2-1 +- Update to 1.9.0.2 + +* Wed Jul 23 2008 Christopher Aillon 1.9.0.1-2 +- Disable system hunspell for now as it's causing some crashes (447444) + +* Wed Jul 16 2008 Christopher Aillon 1.9.0.1-1 +- Update to 1.9.0.1 + +* Tue Jun 17 2008 Christopher Aillon 1.9-1 +- Update to 1.9 final + +* Thu May 29 2008 Christopher Aillon 1.9-0.63 +- Simplify PS/PDF operators + +* Thu May 22 2008 Christopher Aillon 1.9-0.62 +- Upstream patch to fsync() less + +* Thu May 08 2008 Colin Walters 1.9-0.61 +- Ensure we enable startup notification; add BR and modify config + (bug #445543) + +* Wed Apr 30 2008 Christopher Aillon 1.9-0.60 +- Some files moved to mozilla-filesystem; kill them and add the Req + +* Mon Apr 28 2008 Christopher Aillon 1.9-0.59 +- Clean up the %%files list and get rid of the executable bit on some files + +* Sat Apr 26 2008 Christopher Aillon 1.9-0.58 +- Fix font scaling + +* Fri Apr 25 2008 Martin Stransky 1.9-0.57 +- Enabled phishing protection (#443403) + +* Wed Apr 23 2008 Martin Stransky 1.9-0.56 +- Changed "__ppc64__" to "__powerpc64__", + "__ppc64__" doesn't work anymore +- Added fix for #443725 - Critical hanging bug with fix + available upstream (mozbz#429903) + +* Fri Apr 18 2008 Martin Stransky 1.9-0.55 +- Fixed multilib issues, added starting script instead of a symlink + to binary (#436393) + +* Sat Apr 12 2008 Christopher Aillon 1.9-0.54 +- Add upstream patches for dpi, toolbar buttons, and invalid keys +- Re-enable system cairo + +* Mon Apr 7 2008 Christopher Aillon 1.9-0.53 +- Spec cleanups + +* Wed Apr 2 2008 Christopher Aillon 1.9-0.52 +- Beta 5 + +* Mon Mar 31 2008 Christopher Aillon 1.9-0.51 +- Beta 5 RC2 + +* Thu Mar 27 2008 Christopher Aillon 1.9-0.50 +- Update to latest trunk (2008-03-27) + +* Wed Mar 26 2008 Christopher Aillon 1.9-0.49 +- Update to latest trunk (2008-03-26) + +* Tue Mar 25 2008 Christopher Aillon 1.9-0.48 +- Update to latest trunk (2008-03-25) + +* Mon Mar 24 2008 Christopher Aillon 1.9-0.47 +- Update to latest trunk (2008-03-24) + +* Thu Mar 20 2008 Christopher Aillon 1.9-0.46 +- Update to latest trunk (2008-03-20) + +* Mon Mar 17 2008 Christopher Aillon 1.9-0.45 +- Update to latest trunk (2008-03-17) + +* Mon Mar 17 2008 Christopher Aillon 1.9-0.44 +- Revert to trunk from the 15th to fix crashes on HTTPS sites + +* Sun Mar 16 2008 Christopher Aillon 1.9-0.43 +- Update to latest trunk (2008-03-16) +- Add patch to negate a11y slowdown on some pages (#431162) + +* Sat Mar 15 2008 Christopher Aillon 1.9-0.42 +- Update to latest trunk (2008-03-15) + +* Sat Mar 15 2008 Christopher Aillon 1.9-0.41 +- Avoid conflicts between gecko debuginfo packages + +* Wed Mar 12 2008 Christopher Aillon 1.9-0.40 +- Update to latest trunk (2008-03-12) + +* Tue Mar 11 2008 Christopher Aillon 1.9-0.39 +- Update to latest trunk (2008-03-11) + +* Mon Mar 10 2008 Christopher Aillon 1.9-0.38 +- Update to latest trunk (2008-03-10) + +* Sun Mar 9 2008 Christopher Aillon 1.9-0.37 +- Update to latest trunk (2008-03-09) + +* Fri Mar 7 2008 Christopher Aillon 1.9-0.beta4.36 +- Update to latest trunk (2008-03-07) + +* Thu Mar 6 2008 Christopher Aillon 1.9-0.beta4.35 +- Update to latest trunk (2008-03-06) + +* Tue Mar 4 2008 Christopher Aillon 1.9-0.beta4.34 +- Update to latest trunk (2008-03-04) + +* Sun Mar 2 2008 Christopher Aillon 1.9-0.beta3.33 +- Update to latest trunk (2008-03-02) + +* Sat Mar 1 2008 Christopher Aillon 1.9-0.beta3.32 +- Update to latest trunk (2008-03-01) + +* Fri Feb 29 2008 Christopher Aillon 1.9-0.beta3.31 +- Update to latest trunk (2008-02-29) + +* Thu Feb 28 2008 Christopher Aillon 1.9-0.beta3.30 +- Update to latest trunk (2008-02-28) + +* Wed Feb 27 2008 Christopher Aillon 1.9-0.beta3.29 +- Update to latest trunk (2008-02-27) + +* Tue Feb 26 2008 Christopher Aillon 1.9-0.beta3.28 +- Update to latest trunk (2008-02-26) + +* Sat Feb 23 2008 Christopher Aillon 1.9-0.beta3.27 +- Update to latest trunk (2008-02-23) + +* Fri Feb 22 2008 Christopher Aillon 1.9-0.beta3.26 +- Update to latest trunk (2008-02-22) + +* Thu Feb 21 2008 Christopher Aillon 1.9-0.beta3.25 +- Update to latest trunk (2008-02-21) + +* Wed Feb 20 2008 Christopher Aillon 1.9-0.beta3.24 +- Update to latest trunk (2008-02-20) + +* Sun Feb 17 2008 Christopher Aillon 1.9-0.beta3.23 +- Update to latest trunk (2008-02-17) + +* Fri Feb 15 2008 Christopher Aillon 1.9-0.beta3.22 +- Update to latest trunk (2008-02-15) + +* Thu Feb 14 2008 Christopher Aillon 1.9-0.beta3.21 +- Update to latest trunk (2008-02-14) +- Use system hunspell + +* Mon Feb 11 2008 Christopher Aillon 1.9-0.beta2.19 +- Update to latest trunk (2008-02-11) + +* Mon Feb 11 2008 Adam Jackson 1.9-0.beta2.19 +- STRIP="/bin/true" on the %%make line so xulrunner-debuginfo contains, + you know, debuginfo. + +* Sun Feb 10 2008 Christopher Aillon 1.9-0.beta2.18 +- Update to latest trunk (2008-02-10) + +* Sat Feb 9 2008 Christopher Aillon 1.9-0.beta2.17 +- Update to latest trunk (2008-02-09) + +* Wed Feb 6 2008 Christopher Aillon 1.9-0.beta2.16 +- Update to latest trunk (2008-02-06) + +* Tue Jan 29 2008 Christopher Aillon 1.9-0.beta2.15 +- Update to latest trunk (2008-01-30) + +* Wed Jan 25 2008 Martin Stransky 1.9-0.beta2.14 +- rebuild agains new nss +- enabled gnome vfs + +* Wed Jan 23 2008 Martin Stransky 1.9-0.beta2.13 +- fixed stable pkg-config files (#429654) +- removed sqlite patch + +* Mon Jan 21 2008 Christopher Aillon 1.9-0.beta2.12 +- Update to latest trunk (2008-01-21) + +* Tue Jan 15 2008 Christopher Aillon 1.9-0.beta2.11 +- Update to latest trunk (2008-01-15) +- Now with system extensions directory support + +* Sat Jan 13 2008 Christopher Aillon 1.9-0.beta2.10 +- Update to latest trunk (2008-01-13) +- Use CFLAGS instead of configure arguments +- Random cleanups: BuildRequires, scriptlets, prefs, etc. + +* Sat Jan 12 2008 Christopher Aillon 1.9-0.beta2.9 +- Provide gecko-devel-unstable as well + +* Wed Jan 9 2008 Martin Stransky 1.9-0.beta2.8 +- divided devel package to devel and devel-unstable + +* Mon Jan 7 2008 Martin Stransky 1.9-0.beta2.7 +- removed fedora specific pkg-config files +- updated to the latest trunk (2008-01-07) +- removed unnecessary patches +- fixed idl dir (#427965) + +* Thu Jan 3 2008 Christopher Aillon 1.9-0.beta2.6 +- Re-enable camellia256 support now that NSS supports it + +* Thu Jan 3 2008 Martin Stransky 1.9-0.beta2.5 +- updated to the latest trunk (2008-01-03) + +* Mon Dec 24 2007 Christopher Aillon 1.9-0.beta2.4 +- Don't Provide webclient (xulrunner is not itself a webclient) +- Don't Obsolete old firefox, only firefox-devel +- Kill legacy obsoletes (phoenix, etc) that were never in rawhide + +* Thu Dec 21 2007 Martin Stransky 1.9-0.beta2.3 +- added java and plugin subdirs to plugin includes + +* Thu Dec 20 2007 Martin Stransky 1.9-0.beta2.2 +- dependency fixes, obsoletes firefox < 3 and firefox-devel now + +* Wed Dec 12 2007 Martin Stransky 1.9-0.beta2.1 +- updated to Beta 2. +- moved SDK to xulrunner-sdk + +* Thu Dec 06 2007 Martin Stransky 1.9-0.beta1.4 +- fixed mozilla-plugin.pc (#412971) + +* Tue Nov 27 2007 Martin Stransky 1.9-0.beta1.3 +- export /etc/gre.d/gre.conf (it's used by python gecko applications) + +* Mon Nov 26 2007 Martin Stransky 1.9-0.beta1.2 +- added xulrunner/js include dir to xulrunner-js + +* Tue Nov 20 2007 Martin Stransky 1.9-0.beta1.1 +- update to beta 1 + +* Mon Nov 19 2007 Martin Stransky 1.9-0.alpha9.6 +- packed all gecko libraries (#389391) + +* Thu Nov 15 2007 Martin Stransky 1.9-0.alpha9.5 +- registered xulrunner libs system-wide +- added xulrunner-gtkmozembed.pc + +* Wed Nov 14 2007 Martin Stransky 1.9-0.alpha9.4 +- added proper nss/nspr dependencies + +* Wed Nov 14 2007 Martin Stransky 1.9-0.alpha9.3 +- more build fixes, use system nss libraries + +* Tue Nov 6 2007 Martin Stransky 1.9-0.alpha9.2 +- build fixes + +* Tue Oct 30 2007 Martin Stransky 1.9-0.alpha9.1 +- updated to the latest trunk + +* Thu Sep 20 2007 David Woodhouse 1.9-0.alpha7.4 +- build fixes for ppc/ppc64 + +* Tue Sep 20 2007 Martin Stransky 1.9-0.alpha7.3 +- removed conflicts with the current gecko-based apps +- added updated ppc64 patch + +* Tue Sep 18 2007 Martin Stransky 1.9-0.alpha7.2 +- build fixes + +* Wed Sep 5 2007 Christopher Aillon 1.9-0.alpha7.1 +- Initial cut at XULRunner 1.9 Alpha 7 +- Temporarily revert camellia 256 support since our nss doesn't support it yet