diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d47ffc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +SOURCES/cbindgen-vendor.tar.xz +SOURCES/nspr-4.32.0-1.el8_1.src.rpm +SOURCES/nss-3.67.0-7.el8_1.src.rpm +SOURCES/thunderbird-91.8.0.processed-source.tar.xz +SOURCES/thunderbird-langpacks-91.8.0-20220405.tar.xz diff --git a/.thunderbird.metadata b/.thunderbird.metadata new file mode 100644 index 0000000..a40c082 --- /dev/null +++ b/.thunderbird.metadata @@ -0,0 +1,5 @@ +c822547dbc12e2baebdfdfb38b665e23f0c2513a SOURCES/cbindgen-vendor.tar.xz +b5fd1332d8e0d37339ae170c7bebcb63a40b22e0 SOURCES/nspr-4.32.0-1.el8_1.src.rpm +8fff814901e03c2518ede2f8992d898f5ba61ed9 SOURCES/nss-3.67.0-7.el8_1.src.rpm +7f97946153fe61dd7da01fdb3e2e367c7f24bcf5 SOURCES/thunderbird-91.8.0.processed-source.tar.xz +23d8ffc635a34725c989f591cc074f329b8e35db SOURCES/thunderbird-langpacks-91.8.0-20220405.tar.xz diff --git a/SOURCES/build-debuginfo-fix.patch b/SOURCES/build-debuginfo-fix.patch new file mode 100644 index 0000000..03fc300 --- /dev/null +++ b/SOURCES/build-debuginfo-fix.patch @@ -0,0 +1,24 @@ +diff -up firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc.debuginfo-fix firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc +--- firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc.debuginfo-fix 2021-09-01 11:11:46.738285751 +0200 ++++ firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc 2021-09-01 11:11:56.127319530 +0200 +@@ -21,7 +21,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include "modules/audio_processing//utility/ooura_fft.h" ++#include "modules/audio_processing/utility/ooura_fft.h" + + #include + +diff -up firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.debuginfo-fix firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc +--- firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.debuginfo-fix 2021-09-01 11:12:26.513428847 +0200 ++++ firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc 2021-09-01 11:12:32.117449009 +0200 +@@ -8,7 +8,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include "modules/audio_processing//utility/ooura_fft.h" ++#include "modules/audio_processing/utility/ooura_fft.h" + + #include + diff --git a/SOURCES/build-mozconfig-fix.patch b/SOURCES/build-mozconfig-fix.patch new file mode 100644 index 0000000..91dffb1 --- /dev/null +++ b/SOURCES/build-mozconfig-fix.patch @@ -0,0 +1,12 @@ +diff -up mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py.mozconfig-fix mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py +--- mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py.mozconfig-fix 2018-03-13 17:22:19.018466884 +0100 ++++ mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py 2018-03-13 17:23:57.379559640 +0100 +@@ -446,7 +446,7 @@ class MozconfigLoader(object): + value = value[1:] + + # Lines with a quote not ending in a quote are multi-line. +- if has_quote and not value.endswith("'"): ++ if has_quote and not value.endswith(("'", ";")): + in_variable = name + current.append(value) + continue diff --git a/SOURCES/build-nss-version.patch b/SOURCES/build-nss-version.patch new file mode 100644 index 0000000..25d34f6 --- /dev/null +++ b/SOURCES/build-nss-version.patch @@ -0,0 +1,24 @@ +diff -up firefox-91.0.1/build/moz.configure/nspr.configure.nss-nspr-downgrade firefox-91.0.1/build/moz.configure/nspr.configure +--- firefox-91.0.1/build/moz.configure/nspr.configure.nss-nspr-downgrade 2021-08-25 13:17:26.265307060 +0200 ++++ firefox-91.0.1/build/moz.configure/nspr.configure 2021-08-25 13:17:28.161313632 +0200 +@@ -50,7 +50,7 @@ set_define("JS_WITHOUT_NSPR", True, when + def nspr_minver(js_standalone): + if js_standalone: + return "nspr >= 4.10" +- return "nspr >= 4.32" ++ return "nspr >= 4.31" + + + nspr_pkg = pkg_check_modules("NSPR", nspr_minver, when="--with-system-nspr") +diff -up firefox-91.0.1/build/moz.configure/nss.configure.nss-nspr-downgrade firefox-91.0.1/build/moz.configure/nss.configure +--- firefox-91.0.1/build/moz.configure/nss.configure.nss-nspr-downgrade 2021-08-25 13:17:45.049372175 +0200 ++++ firefox-91.0.1/build/moz.configure/nss.configure 2021-08-25 13:17:37.763346918 +0200 +@@ -9,7 +9,7 @@ option("--with-system-nss", help="Use sy + imply_option("--with-system-nspr", True, when="--with-system-nss") + + nss_pkg = pkg_check_modules( +- "NSS", "nss >= 3.68", when="--with-system-nss", config=False ++ "NSS", "nss >= 3.67", when="--with-system-nss", config=False + ) + + set_config("MOZ_SYSTEM_NSS", True, when="--with-system-nss") diff --git a/SOURCES/build-ppc64le-inline.patch b/SOURCES/build-ppc64le-inline.patch new file mode 100644 index 0000000..de0f6d9 --- /dev/null +++ b/SOURCES/build-ppc64le-inline.patch @@ -0,0 +1,27 @@ +diff -up firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp.ppc64le-inline firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp +--- firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp.ppc64le-inline 2019-08-26 18:52:28.000000000 +0200 ++++ firefox-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp 2019-08-29 08:49:57.695687874 +0200 +@@ -1092,7 +1092,11 @@ class MOZ_STACK_CLASS CallMethodHelper f + MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, + MutableHandleValue srcp) const; + ++#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) ++ bool GatherAndConvertResults(); ++#else + MOZ_ALWAYS_INLINE bool GatherAndConvertResults(); ++#endif + + MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); + +@@ -1139,7 +1143,11 @@ class MOZ_STACK_CLASS CallMethodHelper f + + ~CallMethodHelper(); + ++#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) ++ bool Call(); ++#else + MOZ_ALWAYS_INLINE bool Call(); ++#endif + + // Trace implementation so we can put our CallMethodHelper in a Rooted. + void trace(JSTracer* aTrc); diff --git a/SOURCES/build-rhel7-nasm-dwarf.patch b/SOURCES/build-rhel7-nasm-dwarf.patch new file mode 100644 index 0000000..5e2ba4a --- /dev/null +++ b/SOURCES/build-rhel7-nasm-dwarf.patch @@ -0,0 +1,12 @@ +diff -up firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py +--- firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm 2021-08-31 08:02:10.814740774 +0200 ++++ firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py 2021-08-31 08:04:03.967146994 +0200 +@@ -420,7 +420,7 @@ class AsmFlags(BaseCompileFlags): + if self._context.config.substs.get("OS_ARCH") == "WINNT": + debug_flags += ["-F", "cv8"] + elif self._context.config.substs.get("OS_ARCH") != "Darwin": +- debug_flags += ["-F", "dwarf"] ++ debug_flags += ["-f", "elf32"] + elif ( + self._context.config.substs.get("OS_ARCH") == "WINNT" + and self._context.config.substs.get("CPU_ARCH") == "aarch64" diff --git a/SOURCES/disable-openpgp-in-thunderbird.patch b/SOURCES/disable-openpgp-in-thunderbird.patch new file mode 100644 index 0000000..820f2e4 --- /dev/null +++ b/SOURCES/disable-openpgp-in-thunderbird.patch @@ -0,0 +1,28 @@ +diff --git a/comm/mail/extensions/openpgp/content/BondOpenPGP.jsm b/comm/mail/extensions/openpgp/content/BondOpenPGP.jsm +--- a/comm/mail/extensions/openpgp/content/BondOpenPGP.jsm ++++ b/comm/mail/extensions/openpgp/content/BondOpenPGP.jsm +@@ -53,20 +53,23 @@ var BondOpenPGP = { + + // if null, we haven't yet read the pref + // if true, pref was enabled and we already triggered init + _isEnabled: null, + + _alreadyTriedInit: false, // if already true, we will not try again + + setIsEnabledFromPref() { +- this._isEnabled = Services.prefs.getBoolPref("mail.openpgp.enable"); ++ return false; ++ //this._isEnabled = Services.prefs.getBoolPref("mail.openpgp.enable"); + }, + + async init() { ++ return; ++ + if (!MailConstants.MOZ_OPENPGP) { + return; + } + + // We never shut off after pref change, disabling requires restart. + // If null, it means we're here for the first time, read the pref. + // If false, it could mean the pref was now turned on at runtime. + // In both scenarios, null and false, we reread the pref to check diff --git a/SOURCES/expat-CVE-2022-25235.patch b/SOURCES/expat-CVE-2022-25235.patch new file mode 100644 index 0000000..ac495b1 --- /dev/null +++ b/SOURCES/expat-CVE-2022-25235.patch @@ -0,0 +1,49 @@ +diff -up thunderbird-91.7.0/parser/expat/lib/xmltok.c.expat-CVE-2022-25235 thunderbird-91.7.0/parser/expat/lib/xmltok.c +--- thunderbird-91.7.0/parser/expat/lib/xmltok.c.expat-CVE-2022-25235 2022-03-02 17:57:38.364361168 +0100 ++++ thunderbird-91.7.0/parser/expat/lib/xmltok.c 2022-03-02 17:58:22.235512399 +0100 +@@ -65,13 +65,6 @@ + + ((((byte)[2]) >> 5) & 1)] \ + & (1u << (((byte)[2]) & 0x1F))) + +-#define UTF8_GET_NAMING(pages, p, n) \ +- ((n) == 2 \ +- ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ +- : ((n) == 3 \ +- ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ +- : 0)) +- + /* Detection of invalid UTF-8 sequences is based on Table 3.1B + of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ + with the additional restriction of not allowing the Unicode +diff -up thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c.expat-CVE-2022-25235 thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c +--- thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c.expat-CVE-2022-25235 2022-03-02 17:57:38.365361172 +0100 ++++ thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c 2022-03-02 18:04:51.240853247 +0100 +@@ -34,7 +34,7 @@ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ +- if (!IS_NAME_CHAR(enc, ptr, n)) { \ ++ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NAME_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ +@@ -62,7 +62,7 @@ + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ +- if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ ++ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NMSTRT_CHAR(enc, ptr, n)) { \ + *nextTokPtr = ptr; \ + return XML_TOK_INVALID; \ + } \ +@@ -1090,6 +1090,10 @@ PREFIX(prologTok)(const ENCODING *enc, c + case BT_LEAD ## n: \ + if (end - ptr < n) \ + return XML_TOK_PARTIAL_CHAR; \ ++ if (IS_INVALID_CHAR(enc, ptr, n)) { \ ++ *nextTokPtr = ptr; \ ++ return XML_TOK_INVALID; \ ++ } \ + if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ + ptr += n; \ + tok = XML_TOK_NAME; \ diff --git a/SOURCES/expat-CVE-2022-25236.patch b/SOURCES/expat-CVE-2022-25236.patch new file mode 100644 index 0000000..84cafd2 --- /dev/null +++ b/SOURCES/expat-CVE-2022-25236.patch @@ -0,0 +1,40 @@ +diff -up thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25236 thunderbird-91.7.0/parser/expat/lib/xmlparse.c +--- thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25236 2022-03-02 18:08:40.085642028 +0100 ++++ thunderbird-91.7.0/parser/expat/lib/xmlparse.c 2022-03-02 18:13:31.838667958 +0100 +@@ -700,8 +700,7 @@ XML_ParserCreate(const XML_Char *encodin + XML_Parser XMLCALL + XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) + { +- XML_Char tmp[2]; +- *tmp = nsSep; ++ XML_Char tmp[2] = {nsSep, 0}; + return XML_ParserCreate_MM(encodingName, NULL, tmp); + } + #endif +@@ -1276,8 +1275,7 @@ XML_ExternalEntityParserCreate(XML_Parse + would be otherwise. + */ + if (ns) { +- XML_Char tmp[2]; +- *tmp = namespaceSeparator; ++ XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); + } + else { +@@ -3667,6 +3665,16 @@ addBinding(XML_Parser parser, PREFIX *pr + if (!mustBeXML && isXMLNS + && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) + isXMLNS = XML_FALSE; ++ // NOTE: While Expat does not validate namespace URIs against RFC 3986, ++ // we have to at least make sure that the XML processor on top of ++ // Expat (that is splitting tag names by namespace separator into ++ // 2- or 3-tuples (uri-local or uri-local-prefix)) cannot be confused ++ // by an attacker putting additional namespace separator characters ++ // into namespace declarations. That would be ambiguous and not to ++ // be expected. ++ if (parser->m_ns && (uri[len] == parser->m_namespaceSeparator)) { ++ return XML_ERROR_SYNTAX; ++ } + } + isXML = isXML && len == xmlLen; + isXMLNS = isXMLNS && len == xmlnsLen; diff --git a/SOURCES/expat-CVE-2022-25315.patch b/SOURCES/expat-CVE-2022-25315.patch new file mode 100644 index 0000000..4d4efb7 --- /dev/null +++ b/SOURCES/expat-CVE-2022-25315.patch @@ -0,0 +1,24 @@ +diff -up thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25315 thunderbird-91.7.0/parser/expat/lib/xmlparse.c +--- thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25315 2022-03-02 18:17:50.966583254 +0100 ++++ thunderbird-91.7.0/parser/expat/lib/xmlparse.c 2022-03-02 18:19:27.636924735 +0100 +@@ -2479,6 +2479,7 @@ storeRawNames(XML_Parser parser) + while (tag) { + int bufSize; + int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); ++ size_t rawNameLen; + char *rawNameBuf = tag->buf + nameLen; + /* Stop if already stored. Since tagStack is a stack, we can stop + at the first entry that has already been copied; everything +@@ -2490,7 +2491,11 @@ storeRawNames(XML_Parser parser) + /* For re-use purposes we need to ensure that the + size of tag->buf is a multiple of sizeof(XML_Char). + */ +- bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); ++ rawNameLen = ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); ++ /* Detect and prevent integer overflow. */ ++ if (rawNameLen > (size_t)INT_MAX - nameLen) ++ return XML_FALSE; ++ bufSize = nameLen + (int)rawNameLen; + if (bufSize > tag->bufEnd - tag->buf) { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) diff --git a/SOURCES/firefox-enable-addons.patch b/SOURCES/firefox-enable-addons.patch new file mode 100644 index 0000000..15d0707 --- /dev/null +++ b/SOURCES/firefox-enable-addons.patch @@ -0,0 +1,13 @@ +diff -up firefox-55.0/browser/app/profile/firefox.js.addons firefox-55.0/browser/app/profile/firefox.js +--- firefox-55.0/browser/app/profile/firefox.js.addons 2017-08-02 10:58:30.566363833 +0200 ++++ firefox-55.0/browser/app/profile/firefox.js 2017-08-02 10:59:15.377216959 +0200 +@@ -65,7 +65,8 @@ pref("extensions.systemAddon.update.url" + + // Disable add-ons that are not installed by the user in all scopes by default. + // See the SCOPE constants in AddonManager.jsm for values to use here. +-pref("extensions.autoDisableScopes", 15); ++pref("extensions.autoDisableScopes", 0); ++pref("extensions.showMismatchUI", false); + // Scopes to scan for changes at startup. + pref("extensions.startupScanScopes", 0); + diff --git a/SOURCES/get-calendar-langpacks.sh b/SOURCES/get-calendar-langpacks.sh new file mode 100755 index 0000000..854cae2 --- /dev/null +++ b/SOURCES/get-calendar-langpacks.sh @@ -0,0 +1,126 @@ +#!/bin/bash +#set -x +set -e +usage() +{ +cat << EOF +usage: $0 options + +This script downloads calendar langpacks for Thunderbird. + +OPTIONS: + -h Show this message + -v Version string (7.0.1) + -b Build number (1, 2, 3) + -r Reuse downloaded files (when you don't want to redownload) +EOF +} + +VER= +BUILDNUM= +LANG_DATE=`date "+%Y%m%d"` +while getopts “hv:b:r” OPTION +do + case $OPTION in + h) + usage + exit 1 + ;; + v) + VER=$OPTARG + ;; + b) + BUILDNUM=$OPTARG + ;; + ?) + usage + exit + ;; + esac +done + +if [ -z "$VER" -o -z "$BUILDNUM" ] +then + echo "Missing version or build number." + usage + exit 1 +fi + +WHITE='\033[1;33m' +NC='\033[0m' # No Color + +LOCALES=`curl -f https://archive.mozilla.org/pub/thunderbird/candidates/$VER-candidates/build$BUILDNUM/linux-i686/ | grep "a href"|sed -e "s|.*/\([^/]*\)/\".*|\1|"|tail -n+2 |grep -v xpi` +#echo $LOCALES +rm -rf lightning-langpacks +mkdir -p lightning-langpacks +cd lightning-langpacks +LOCALE_COUNT=`echo $LOCALES| tr ' ' '\n' | wc -l` +LOCALE_NUM=0 +for lang in $LOCALES; do + LOCALE_NUM=$((LOCALE_NUM+1)) + echo -e "${WHITE}Processing calendar locale: $lang ($LOCALE_NUM/$LOCALE_COUNT)${NC}" + mkdir -p extracted_lightning + mkdir -p calendar-locales + #echo Downloading TB binary for locale: $lang + wget --quiet https://archive.mozilla.org/pub/thunderbird/candidates/$VER-candidates/build$BUILDNUM/linux-i686/$lang/thunderbird-$VER.tar.bz2 + + cd extracted_lightning + tar -xf ../thunderbird-$VER.tar.bz2 thunderbird/distribution/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}.xpi + set +e + unzip -qq thunderbird/distribution/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}.xpi + set -e + LIGHTNING_VERSION=`cat app.ini |grep "^Version="|sed -e 's/Version=//'` + BUILD_ID=`cat app.ini |grep "^BuildID="|sed -e 's/BuildID=//'` + MAX_VERSION=`cat app.ini |grep MaxVersion|sed -e s/MaxVersion=//` + MIN_VERSION=`cat app.ini |grep MinVersion|sed -e s/MinVersion=//` + rm -rf thunderbird + mkdir -p ../calendar-locales/chrome + cp -r chrome/calendar-$lang ../calendar-locales/chrome + cp -r chrome/lightning-$lang ../calendar-locales/chrome + cd - + + cd calendar-locales + # create manifest + cat > manifest.json </pref ++ rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, ++ getter_AddRefs(jsFile)); ++ NS_ENSURE_SUCCESS(rv, rv); ++ ++ rv = jsFile->AppendNative(nsLiteralCString("pref")); ++ NS_ENSURE_SUCCESS(rv, rv); ++ rv = jsFile->AppendNative(nsDependentCString(aFileName)); ++ NS_ENSURE_SUCCESS(rv, rv); + ++ rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); ++ NS_ENSURE_SUCCESS(rv, rv); ++ } + } else { + nsAutoCString location("resource://gre/defaults/autoconfig/"); + location += aFileName; +diff -up firefox-91.0/modules/libpref/Preferences.cpp.1170092 firefox-91.0/modules/libpref/Preferences.cpp +--- firefox-91.0/modules/libpref/Preferences.cpp.1170092 2021-07-27 23:30:34.000000000 +0200 ++++ firefox-91.0/modules/libpref/Preferences.cpp 2021-07-29 16:20:44.166514005 +0200 +@@ -4553,6 +4553,8 @@ nsresult Preferences::InitInitialObjects + // + // Thus, in the omni.jar case, we always load app-specific default + // preferences from omni.jar, whether or not `$app == $gre`. ++ // At very end load configuration from system config location: ++ // - /etc/firefox/pref/*.js + + nsresult rv = NS_ERROR_FAILURE; + UniquePtr find; +diff -up firefox-91.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-91.0/toolkit/xre/nsXREDirProvider.cpp +--- firefox-91.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2021-07-27 23:30:56.000000000 +0200 ++++ firefox-91.0/toolkit/xre/nsXREDirProvider.cpp 2021-07-29 16:26:20.071628932 +0200 +@@ -71,6 +71,7 @@ + #endif + #ifdef XP_UNIX + # include ++# include "nsIXULAppInfo.h" + #endif + #ifdef XP_IOS + # include "UIKitDirProvider.h" +@@ -550,6 +551,21 @@ nsXREDirProvider::GetFile(const char* aP + } + } + } ++ ++#if defined(XP_UNIX) ++ if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { ++ nsCString sysConfigDir = nsLiteralCString("/etc/"); ++ nsCOMPtr appInfo = do_GetService("@mozilla.org/xre/app-info;1"); ++ if (!appInfo) ++ return NS_ERROR_NOT_AVAILABLE; ++ nsCString appName; ++ appInfo->GetName(appName); ++ ToLowerCase(appName); ++ sysConfigDir.Append(appName); ++ return NS_NewNativeLocalFile(sysConfigDir, false, aFile); ++ } ++#endif ++ + if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE; + + if (ensureFilePermissions) { +@@ -827,6 +843,16 @@ nsresult nsXREDirProvider::GetFilesInter + LoadDirIntoArray(mXULAppDir, kAppendBackgroundTasksPrefDir, directories); + } + #endif ++ // Add /etc//pref/ directory if it exists ++ nsCOMPtr systemPrefDir; ++ rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, ++ getter_AddRefs(systemPrefDir)); ++ if (NS_SUCCEEDED(rv)) { ++ rv = systemPrefDir->AppendNative(nsLiteralCString("pref")); ++ if (NS_SUCCEEDED(rv)) { ++ directories.AppendObject(systemPrefDir); ++ } ++ } + + rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile)); + } else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) { +diff -up firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2021-07-27 23:31:38.000000000 +0200 ++++ firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h 2021-07-29 16:20:44.168514012 +0200 +@@ -59,6 +59,7 @@ + #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" + #define NS_APP_PREFS_OVERRIDE_DIR \ + "PrefDOverride" // Directory for per-profile defaults ++#define NS_APP_PREFS_SYSTEM_CONFIG_DIR "PrefSysConf" // Directory with system-wide configuration + + #define NS_APP_USER_PROFILE_50_DIR "ProfD" + #define NS_APP_USER_PROFILE_LOCAL_50_DIR "ProfLD" diff --git a/SOURCES/mozilla-api-key b/SOURCES/mozilla-api-key new file mode 100644 index 0000000..81877bc --- /dev/null +++ b/SOURCES/mozilla-api-key @@ -0,0 +1 @@ +9008bb7e-1e22-4038-94fe-047dd48ccc0b diff --git a/SOURCES/mozilla-bmo1005535.patch b/SOURCES/mozilla-bmo1005535.patch new file mode 100644 index 0000000..cab0134 --- /dev/null +++ b/SOURCES/mozilla-bmo1005535.patch @@ -0,0 +1,12 @@ +diff -up firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h.mozilla.bmo1005535 firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h +--- firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h.mozilla.bmo1005535 2020-06-25 16:16:34.459083304 +0200 ++++ firefox-78.0/gfx/skia/skia/src/gpu/GrColor.h 2020-06-25 16:17:00.968174743 +0200 +@@ -64,7 +64,7 @@ static inline GrColor GrColorPackRGBA(un + * Since premultiplied means that alpha >= color, we construct a color with + * each component==255 and alpha == 0 to be "illegal" + */ +-#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A)) ++#define GrColor_ILLEGAL ((uint32_t)(~(0xFF << GrColor_SHIFT_A))) + + /** Normalizes and coverts an uint8_t to a float. [0, 255] -> [0.0, 1.0] */ + static inline float GrNormalizeByteToFloat(uint8_t value) { diff --git a/SOURCES/mozilla-bmo1504834-part1.patch b/SOURCES/mozilla-bmo1504834-part1.patch new file mode 100644 index 0000000..01da145 --- /dev/null +++ b/SOURCES/mozilla-bmo1504834-part1.patch @@ -0,0 +1,77 @@ +diff -up firefox-78.0/gfx/2d/DrawTargetSkia.cpp.mozilla-bmo1504834-part1 firefox-78.0/gfx/2d/DrawTargetSkia.cpp +--- firefox-78.0/gfx/2d/DrawTargetSkia.cpp.mozilla-bmo1504834-part1 2020-06-17 04:18:58.000000000 +0200 ++++ firefox-78.0/gfx/2d/DrawTargetSkia.cpp 2020-06-25 16:52:29.824532769 +0200 +@@ -135,8 +135,7 @@ static IntRect CalculateSurfaceBounds(co + return surfaceBounds.Intersect(bounds); + } + +-static const int kARGBAlphaOffset = +- SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; ++static const int kARGBAlphaOffset = 0; // Skia is always BGRA SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0; + + static bool VerifyRGBXFormat(uint8_t* aData, const IntSize& aSize, + const int32_t aStride, SurfaceFormat aFormat) { +diff -up firefox-78.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 firefox-78.0/gfx/2d/Types.h +--- firefox-78.0/gfx/2d/Types.h.mozilla-bmo1504834-part1 2020-06-25 16:52:29.826532776 +0200 ++++ firefox-78.0/gfx/2d/Types.h 2020-06-25 16:55:02.942063616 +0200 +@@ -90,15 +90,8 @@ enum class SurfaceFormat : int8_t { + // The following values are endian-independent synonyms. The _UINT32 suffix + // indicates that the name reflects the layout when viewed as a uint32_t + // value. +-#if MOZ_LITTLE_ENDIAN() + A8R8G8B8_UINT32 = B8G8R8A8, // 0xAARRGGBB + X8R8G8B8_UINT32 = B8G8R8X8, // 0x00RRGGBB +-#elif MOZ_BIG_ENDIAN() +- A8R8G8B8_UINT32 = A8R8G8B8, // 0xAARRGGBB +- X8R8G8B8_UINT32 = X8R8G8B8, // 0x00RRGGBB +-#else +-# error "bad endianness" +-#endif + + // The following values are OS and endian-independent synonyms. + // +diff -up firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc.mozilla-bmo1504834-part1 firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc +--- firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc.mozilla-bmo1504834-part1 2020-06-17 04:18:58.000000000 +0200 ++++ firefox-78.0/gfx/skia/skia/third_party/skcms/skcms.cc 2020-06-25 16:54:02.993855444 +0200 +@@ -30,6 +30,8 @@ + #include + #include + #endif ++#else ++ #define SKCMS_PORTABLE + #endif + + // sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. +@@ -280,20 +282,28 @@ enum { + static uint16_t read_big_u16(const uint8_t* ptr) { + uint16_t be; + memcpy(&be, ptr, sizeof(be)); +-#if defined(_MSC_VER) +- return _byteswap_ushort(be); ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++ return be; + #else ++ #if defined(_MSC_VER) ++ return _byteswap_ushort(be); ++ #else + return __builtin_bswap16(be); ++ #endif + #endif + } + + static uint32_t read_big_u32(const uint8_t* ptr) { + uint32_t be; + memcpy(&be, ptr, sizeof(be)); +-#if defined(_MSC_VER) +- return _byteswap_ulong(be); ++#if __BYTE_ORDER == __ORDER_BIG_ENDIAN__ ++ return be; + #else ++ #if defined(_MSC_VER) ++ return _byteswap_ulong(be); ++ #else + return __builtin_bswap32(be); ++ #endif + #endif + } + diff --git a/SOURCES/mozilla-bmo1504834-part2.patch b/SOURCES/mozilla-bmo1504834-part2.patch new file mode 100644 index 0000000..e6e6aa5 --- /dev/null +++ b/SOURCES/mozilla-bmo1504834-part2.patch @@ -0,0 +1,88 @@ +# HG changeset patch +# Parent 36563351309ddbc6c29559ba50a41d005f925abb +Skia does not support big endian. The places to fix are too numerous and upstream (skia, not Mozilla) +has no interest in maintaining big endian. +So here we try to swizzle the input for skia, so that skia always works on LE, and when it comes +out again, we transform back to BE. + +diff -r 36563351309d gfx/2d/ConvolutionFilter.cpp +--- a/gfx/2d/ConvolutionFilter.cpp Mon Sep 09 17:59:28 2019 +0200 ++++ b/gfx/2d/ConvolutionFilter.cpp Tue Sep 10 08:25:13 2019 +0200 +@@ -35,9 +35,38 @@ + return true; + } + ++static void ByteSwapArray(uint8_t *u8Array, int32_t size) { ++ uint32_t *array = reinterpret_cast(u8Array); ++ for (int pxl = 0; pxl < size; ++pxl) { ++ // Use an endian swap to move the bytes, i.e. BGRA -> ARGB. ++ uint32_t rgba = array[pxl]; ++ array[pxl] = NativeEndian::swapToLittleEndian(rgba); ++ } ++} ++ + void ConvolutionFilter::ConvolveHorizontally(const uint8_t* aSrc, uint8_t* aDst, + bool aHasAlpha) { ++#if MOZ_BIG_ENDIAN ++ int outputSize = mFilter->numValues(); ++ ++ // Input size isn't handed in, so we have to calculate it quickly ++ int inputSize = 0; ++ for (int xx = 0; xx < outputSize; ++xx) { ++ // Get the filter that determines the current output pixel. ++ int filterOffset, filterLength; ++ mFilter->FilterForValue(xx, &filterOffset, &filterLength); ++ inputSize = std::max(inputSize, filterOffset + filterLength); ++ } ++ ++ ByteSwapArray((uint8_t*)aSrc, inputSize); ++#endif ++ + SkOpts::convolve_horizontally(aSrc, *mFilter, aDst, aHasAlpha); ++ ++#if MOZ_BIG_ENDIAN ++ ByteSwapArray((uint8_t*)aSrc, inputSize); ++ ByteSwapArray(aDst, outputSize); ++#endif + } + + void ConvolutionFilter::ConvolveVertically(uint8_t* const* aSrc, uint8_t* aDst, +@@ -49,8 +78,26 @@ + int32_t filterLength; + auto filterValues = + mFilter->FilterForValue(aRowIndex, &filterOffset, &filterLength); ++ ++#if MOZ_BIG_ENDIAN ++ for (int filterY = 0; filterY < filterLength; filterY++) { ++ // Skia only knows LE, so we have to swizzle the input ++ ByteSwapArray(aSrc[filterY], aRowSize); ++ } ++#endif ++ + SkOpts::convolve_vertically(filterValues, filterLength, aSrc, aRowSize, aDst, + aHasAlpha); ++ ++#if MOZ_BIG_ENDIAN ++ // After skia is finished, we swizzle back to BE, in case ++ // the input is used again somewhere else ++ for (int filterY = 0; filterY < filterLength; filterY++) { ++ ByteSwapArray(aSrc[filterY], aRowSize); ++ } ++ // The destination array as well ++ ByteSwapArray(aDst, aRowSize); ++#endif + } + + /* ConvolutionFilter::ComputeResizeFactor is derived from Skia's +diff -r 36563351309d gfx/skia/skia/include/core/SkPreConfig.h +--- a/gfx/skia/skia/include/core/SkPreConfig.h Mon Sep 09 17:59:28 2019 +0200 ++++ b/gfx/skia/skia/include/core/SkPreConfig.h Tue Sep 10 08:25:13 2019 +0200 +@@ -73,7 +73,7 @@ + defined(__ppc__) || defined(__hppa) || \ + defined(__PPC__) || defined(__PPC64__) || \ + defined(_MIPSEB) || defined(__ARMEB__) || \ +- defined(__s390__) || \ ++ defined(__s390__) || defined(__s390x__) || \ + (defined(__sh__) && defined(__BIG_ENDIAN__)) || \ + (defined(__ia64) && defined(__BIG_ENDIAN__)) + #define SK_CPU_BENDIAN diff --git a/SOURCES/mozilla-bmo1504834-part3.patch b/SOURCES/mozilla-bmo1504834-part3.patch new file mode 100644 index 0000000..1a498f8 --- /dev/null +++ b/SOURCES/mozilla-bmo1504834-part3.patch @@ -0,0 +1,44 @@ +# HG changeset patch +# Parent aecb4600e5da17443b224c79eee178c1d8e155e3 +For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the +right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). + +diff -r aecb4600e5da gfx/skia/skia/include/private/SkNx.h +--- a/gfx/skia/skia/include/private/SkNx.h Tue Aug 20 09:46:55 2019 +0200 ++++ b/gfx/skia/skia/include/private/SkNx.h Mon Sep 09 10:04:06 2019 +0200 +@@ -238,7 +238,18 @@ + AI SkNx operator*(const SkNx& y) const { return fVal * y.fVal; } + AI SkNx operator/(const SkNx& y) const { return fVal / y.fVal; } + ++ // On Big endian the commented out variant doesn't work, ++ // and honestly, I have no idea why it exists in the first place. ++ // The reason its broken is, I think, that it defaults to the double-variant of ToBits() ++ // which gets a 64-bit integer, and FromBits returns 32-bit, ++ // cutting off the wrong half again. ++ // Overall, I see no reason to have ToBits and FromBits at all (even for floats/doubles). ++ // Still we are only "fixing" this for big endian and leave little endian alone (never touch a running system) ++#ifdef SK_CPU_BENDIAN ++ AI SkNx operator&(const SkNx& y) const { return fVal & y.fVal; } ++#else + AI SkNx operator&(const SkNx& y) const { return FromBits(ToBits(fVal) & ToBits(y.fVal)); } ++#endif + AI SkNx operator|(const SkNx& y) const { return FromBits(ToBits(fVal) | ToBits(y.fVal)); } + AI SkNx operator^(const SkNx& y) const { return FromBits(ToBits(fVal) ^ ToBits(y.fVal)); } + +diff -r aecb4600e5da gfx/skia/skia/src/opts/SkBlitMask_opts.h +--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h Tue Aug 20 09:46:55 2019 +0200 ++++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h Mon Sep 09 10:04:06 2019 +0200 +@@ -203,7 +203,13 @@ + // ~~~> + // a = 1*aa + d(1-1*aa) = aa + d(1-aa) + // c = 0*aa + d(1-1*aa) = d(1-aa) ++ ++ // For big endian we have to swap the alpha-mask from 0,0,0,255 to 255,0,0,0 ++#ifdef SK_CPU_BENDIAN ++ return Sk4px(Sk16b(aa) & Sk16b(255,0,0,0, 255,0,0,0, 255,0,0,0, 255,0,0,0)) ++#else + return Sk4px(Sk16b(aa) & Sk16b(0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255)) ++#endif + + d.approxMulDiv255(aa.inv()); + }; + while (h --> 0) { diff --git a/SOURCES/mozilla-bmo1504834-part4.patch b/SOURCES/mozilla-bmo1504834-part4.patch new file mode 100644 index 0000000..9d2ffc4 --- /dev/null +++ b/SOURCES/mozilla-bmo1504834-part4.patch @@ -0,0 +1,30 @@ +# HG changeset patch +# Parent 46ea866ca3acb8bb5e1709ceb799b9c94f591dec +Problem description: Tab-titles that are too long to fit into a tab get faded out. + On big endian this is broken and instead of fading out, the + tab gets white and the font transparent, leading to an unreadable + tab-title +Solution: This is not a real solution, but a hack. The real solution would have been + to byte-swap the correct buffer, but I could not find it. + So the next best thing is to deactivate the fading-effect. Now all tab-titles + are readable, albeit not as pretty to look at as they could be. +Side-effects: I have not yet found an unwanted side-effect. + +diff -r 46ea866ca3ac -r 6ef20eee3f8f gfx/2d/DrawTargetSkia.cpp +--- a/gfx/2d/DrawTargetSkia.cpp Tue Oct 22 12:27:22 2019 +0200 ++++ b/gfx/2d/DrawTargetSkia.cpp Thu Oct 31 09:11:56 2019 +0100 +@@ -1861,6 +1861,14 @@ + SkCanvas::kPreserveLCDText_SaveLayerFlag | + (aCopyBackground ? SkCanvas::kInitWithPrevious_SaveLayerFlag : 0)); + ++#if MOZ_BIG_ENDIAN ++ // Pushing a layer where an aMask is defined produces wrong output. ++ // We _should_ endian swap the data, but I couldn't find a workable way to do so ++ // Therefore I deactivate those layers in the meantime. ++ // The result is: Tab-titles that are longer than the available space should be faded out. ++ // The fading doesn't work, so we deactivate the fading-effect here. ++ if (!aMask) ++#endif + mCanvas->saveLayer(saveRec); + + SetPermitSubpixelAA(aOpaque); diff --git a/SOURCES/mozilla-bmo1554971.patch b/SOURCES/mozilla-bmo1554971.patch new file mode 100644 index 0000000..9958150 --- /dev/null +++ b/SOURCES/mozilla-bmo1554971.patch @@ -0,0 +1,12 @@ +diff -up firefox-91.0/toolkit/components/extensions/schemas/runtime.json.mozilla-bmo1554971 firefox-91.0/toolkit/components/extensions/schemas/runtime.json +--- firefox-91.0/toolkit/components/extensions/schemas/runtime.json.mozilla-bmo1554971 2021-07-29 17:20:08.523253193 +0200 ++++ firefox-91.0/toolkit/components/extensions/schemas/runtime.json 2021-07-29 17:21:23.517498581 +0200 +@@ -64,7 +64,7 @@ + { + "id": "PlatformArch", + "type": "string", +- "enum": ["aarch64", "arm", "ppc64", "s390x", "sparc64", "x86-32", "x86-64"], ++ "enum": ["aarch64", "arm", "ppc64", "ppc64le", "s390x", "sparc64", "x86-32", "x86-64"], + "allowedContexts": ["content", "devtools"], + "description": "The machine's processor architecture." + }, diff --git a/SOURCES/mozilla-bmo1602730.patch b/SOURCES/mozilla-bmo1602730.patch new file mode 100644 index 0000000..c11f958 --- /dev/null +++ b/SOURCES/mozilla-bmo1602730.patch @@ -0,0 +1,28 @@ +diff -r 6ef20eee3f8f gfx/layers/basic/BasicCompositor.cpp +--- a/gfx/layers/basic/BasicCompositor.cpp Thu Oct 31 09:11:56 2019 +0100 ++++ b/gfx/layers/basic/BasicCompositor.cpp Wed Dec 11 16:16:09 2019 +0100 +@@ -693,9 +693,13 @@ + + RefPtr sourceMask; + Matrix maskTransform; ++ // Setting an alpha-mask here breaks the URL-bar on big endian (s390x) ++ // if the typed URL is too long for the textbox (automatic scrolling needed) ++#if MOZ_LITTLE_ENDIAN + if (aTransform.Is2D()) { + SetupMask(aEffectChain, dest, offset, sourceMask, maskTransform); + } ++#endif + + CompositionOp blendMode = CompositionOp::OP_OVER; + if (Effect* effect = +diff -r 6ef20eee3f8f gfx/layers/composite/CompositableHost.cpp +--- a/gfx/layers/composite/CompositableHost.cpp Thu Oct 31 09:11:56 2019 +0100 ++++ b/gfx/layers/composite/CompositableHost.cpp Wed Dec 11 16:16:09 2019 +0100 +@@ -91,6 +91,7 @@ + } + MOZ_ASSERT(source); + ++ // Alternatively: Comment out these lines where the alpha-mask is set + RefPtr effect = + new EffectMask(source, source->GetSize(), aTransform); + aEffects.mSecondaryEffects[EffectTypes::MASK] = effect; diff --git a/SOURCES/mozilla-bmo1626236.patch b/SOURCES/mozilla-bmo1626236.patch new file mode 100644 index 0000000..32e3742 --- /dev/null +++ b/SOURCES/mozilla-bmo1626236.patch @@ -0,0 +1,86 @@ +# HG changeset patch +# User msirringhaus@suse.de +# Date 1582805876 -3600 +# Thu Feb 27 13:17:56 2020 +0100 +# Node ID cc3d09abea31068e57f1ab918782f9f86fc6a158 +# Parent 9cd90914846f667f18babc491a74c164ae5d6e9f +imported patch decoder_workaround.patch + +diff -r 9cd90914846f image/decoders/nsGIFDecoder2.cpp +--- a/image/decoders/nsGIFDecoder2.cpp Thu Feb 27 12:57:14 2020 +0100 ++++ b/image/decoders/nsGIFDecoder2.cpp Fri Mar 27 13:06:18 2020 +0100 +@@ -422,6 +422,9 @@ + MOZ_ASSERT(mSwizzleFn); + uint8_t* data = reinterpret_cast(aColormap); + mSwizzleFn(data, data, aColors); ++#if MOZ_BIG_ENDIAN() ++ SwizzleRow(SurfaceFormat::A8R8G8B8, SurfaceFormat::B8G8R8A8)(data, data, aColors); ++#endif + } + + LexerResult nsGIFDecoder2::DoDecode(SourceBufferIterator& aIterator, +diff -r 9cd90914846f image/decoders/nsJPEGDecoder.cpp +--- a/image/decoders/nsJPEGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100 ++++ b/image/decoders/nsJPEGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100 +@@ -263,6 +263,9 @@ + case JCS_YCbCr: + // By default, we will output directly to BGRA. If we need to apply + // special color transforms, this may change. ++#if MOZ_BIG_ENDIAN() ++ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB; ++#else + switch (SurfaceFormat::OS_RGBX) { + case SurfaceFormat::B8G8R8X8: + mInfo.out_color_space = JCS_EXT_BGRX; +@@ -277,6 +280,7 @@ + mState = JPEG_ERROR; + return Transition::TerminateFailure(); + } ++#endif + break; + case JCS_CMYK: + case JCS_YCCK: +diff -r 9cd90914846f image/decoders/nsPNGDecoder.cpp +--- a/image/decoders/nsPNGDecoder.cpp Thu Feb 27 12:57:14 2020 +0100 ++++ b/image/decoders/nsPNGDecoder.cpp Fri Mar 27 13:06:18 2020 +0100 +@@ -361,7 +361,7 @@ + IResumable* aOnResume) { + MOZ_ASSERT(!HasError(), "Shouldn't call DoDecode after error!"); + +- return mLexer.Lex(aIterator, aOnResume, ++ LexerResult res = mLexer.Lex(aIterator, aOnResume, + [=](State aState, const char* aData, size_t aLength) { + switch (aState) { + case State::PNG_DATA: +@@ -371,6 +371,14 @@ + } + MOZ_CRASH("Unknown State"); + }); ++ ++#if MOZ_BIG_ENDIAN() ++ if(res.is() && res.as() == TerminalState::SUCCESS) { ++ NativeEndian::swapToLittleEndianInPlace((uint32_t*)(mImageData), mImageDataLength / 4); ++ } ++#endif ++ ++ return res; + } + + LexerTransition nsPNGDecoder::ReadPNGData( +diff -r 9cd90914846f image/decoders/nsWebPDecoder.cpp +--- a/image/decoders/nsWebPDecoder.cpp Thu Feb 27 12:57:14 2020 +0100 ++++ b/image/decoders/nsWebPDecoder.cpp Fri Mar 27 13:06:18 2020 +0100 +@@ -237,7 +237,12 @@ + // WebP doesn't guarantee that the alpha generated matches the hint in the + // header, so we always need to claim the input is BGRA. If the output is + // BGRX, swizzling will mask off the alpha channel. ++#if MOZ_BIG_ENDIAN() ++ mBuffer.colorspace = MODE_ARGB; ++ SurfaceFormat inFormat = mFormat; ++#else + SurfaceFormat inFormat = SurfaceFormat::OS_RGBA; ++#endif + + SurfacePipeFlags pipeFlags = SurfacePipeFlags(); + if (mFormat == SurfaceFormat::OS_RGBA && + diff --git a/SOURCES/mozilla-bmo849632.patch b/SOURCES/mozilla-bmo849632.patch new file mode 100644 index 0000000..177fdc3 --- /dev/null +++ b/SOURCES/mozilla-bmo849632.patch @@ -0,0 +1,23 @@ +Problem: webGL sites are displayed in the wrong color (usually blue-ish) +Solution: Problem is with skia once again. Output of webgl seems endian-correct, but skia only + knows how to deal with little endian. + So we swizzle the output of webgl after reading it from readpixels() +Note: This does not fix all webGL sites, but is a step in the right direction +diff -r 6b017d3e9733 gfx/gl/GLContext.h +--- a/gfx/gl/GLContext.h Mon Sep 09 10:04:05 2019 +0200 ++++ b/gfx/gl/GLContext.h Wed Nov 13 17:13:04 2019 +0100 +@@ -1551,6 +1551,13 @@ + BEFORE_GL_CALL; + mSymbols.fReadPixels(x, y, width, height, format, type, pixels); + OnSyncCall(); ++#if MOZ_BIG_ENDIAN ++ uint8_t* itr = (uint8_t*)pixels; ++ for (GLsizei i = 0; i < width * height; i++) { ++ NativeEndian::swapToLittleEndianInPlace((uint32_t*)itr, 1); ++ itr += 4; ++ } ++#endif + AFTER_GL_CALL; + mHeavyGLCallsSinceLastFlush = true; + } + diff --git a/SOURCES/mozilla-bmo998749.patch b/SOURCES/mozilla-bmo998749.patch new file mode 100644 index 0000000..4ddde4c --- /dev/null +++ b/SOURCES/mozilla-bmo998749.patch @@ -0,0 +1,30 @@ +# HG changeset patch +# User msirringhaus@suse.de +# Date 1583738770 -3600 +# Mon Mar 09 08:26:10 2020 +0100 +# Node ID 34676feac1a542e409e22acf5b98735f8313b1ce +# Parent 506857dace0a08d1c9685e3ac264646590b3e27f +[mq]: mozilla-bmo998749.patch + +diff -r 506857dace0a -r 34676feac1a5 gfx/2d/FilterProcessing.h +--- a/gfx/2d/FilterProcessing.h Fri Feb 28 12:31:51 2020 +0100 ++++ b/gfx/2d/FilterProcessing.h Mon Mar 09 08:26:10 2020 +0100 +@@ -13,10 +13,17 @@ + namespace mozilla { + namespace gfx { + ++#if MOZ_BIG_ENDIAN() ++const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 3; ++const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 2; ++const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 1; ++const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 0; ++#else + const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_B = 0; + const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_G = 1; + const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_R = 2; + const ptrdiff_t B8G8R8A8_COMPONENT_BYTEOFFSET_A = 3; ++#endif + + class FilterProcessing { + public: + diff --git a/SOURCES/mozilla-s390-context.patch b/SOURCES/mozilla-s390-context.patch new file mode 100644 index 0000000..55bd7a8 --- /dev/null +++ b/SOURCES/mozilla-s390-context.patch @@ -0,0 +1,36 @@ +# HG changeset patch +# User msirringhaus@suse.de +# Date 1558452408 -7200 +# Tue May 21 17:26:48 2019 +0200 +# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4 +# Parent a3cc550d25e3a04d906f516928cbcbe50efd585e +[mq]: mozilla-s390-context.patch + +diff -r a3cc550d25e3 -r 602e92722e76 js/src/wasm/WasmSignalHandlers.cpp +--- a/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:22:06 2019 +0200 ++++ b/js/src/wasm/WasmSignalHandlers.cpp Tue May 21 17:26:48 2019 +0200 +@@ -154,6 +154,10 @@ + # define R01_sig(p) ((p)->uc_mcontext.gp_regs[1]) + # define R32_sig(p) ((p)->uc_mcontext.gp_regs[32]) + # endif ++# if defined(__linux__) && defined(__s390x__) ++# define GR_sig(p,x) ((p)->uc_mcontext.gregs[x]) ++# define PSWa_sig(p) ((p)->uc_mcontext.psw.addr) ++# endif + #elif defined(__NetBSD__) + # define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP]) + # define EBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EBP]) +@@ -385,8 +389,13 @@ + # define PC_sig(p) R32_sig(p) + # define SP_sig(p) R01_sig(p) + # define FP_sig(p) R01_sig(p) ++#elif defined(__s390x__) ++# define PC_sig(p) PSWa_sig(p) ++# define SP_sig(p) GR_sig(p, 15) ++# define FP_sig(p) GR_sig(p, 11) + #endif + ++ + static void SetContextPC(CONTEXT* context, uint8_t* pc) { + #ifdef PC_sig + *reinterpret_cast(&PC_sig(context)) = pc; diff --git a/SOURCES/mozilla-s390x-skia-gradient.patch b/SOURCES/mozilla-s390x-skia-gradient.patch new file mode 100644 index 0000000..8c0e3bd --- /dev/null +++ b/SOURCES/mozilla-s390x-skia-gradient.patch @@ -0,0 +1,52 @@ +# HG changeset patch +# Parent acf59ea86dd1d878b43920832093f082dcfc61c0 + +diff -r acf59ea86dd1 gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp +--- a/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Mon Mar 09 08:26:10 2020 +0100 ++++ b/gfx/skia/skia/src/shaders/gradients/Sk4fLinearGradient.cpp Fri Mar 27 13:30:28 2020 +0100 +@@ -7,7 +7,7 @@ + + #include "include/core/SkPaint.h" + #include "src/shaders/gradients/Sk4fLinearGradient.h" +- ++#include "src/core/SkEndian.h" + #include + #include + +@@ -28,6 +28,9 @@ + + while (n >= 4) { + DstTraits::store4x(c0, c1, c2, c3, dst, bias0, bias1); ++#ifdef SK_CPU_BENDIAN ++ SkEndianSwap32s(dst, 4); ++#endif + dst += 4; + + c0 = c0 + dc4; +@@ -37,12 +40,23 @@ + n -= 4; + } + if (n & 2) { +- DstTraits::store(c0, dst++, bias0); +- DstTraits::store(c1, dst++, bias1); ++ DstTraits::store(c0, dst, bias0); ++#ifdef SK_CPU_BENDIAN ++ *dst = SkEndianSwap32(*dst); ++#endif ++ ++dst; ++ DstTraits::store(c1, dst, bias1); ++#ifdef SK_CPU_BENDIAN ++ *dst = SkEndianSwap32(*dst); ++#endif ++ ++dst; + c0 = c0 + dc2; + } + if (n & 1) { + DstTraits::store(c0, dst, bias0); ++#ifdef SK_CPU_BENDIAN ++ *dst = SkEndianSwap32(*dst); ++#endif + } + } + + diff --git a/SOURCES/node-stdout-nonblocking-wrapper b/SOURCES/node-stdout-nonblocking-wrapper new file mode 100755 index 0000000..e36d134 --- /dev/null +++ b/SOURCES/node-stdout-nonblocking-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh +#exec /usr/bin/node "$@" 2>&1 | cat - +exec $MOZ_NODEJS "$@" 2>&1 | cat - diff --git a/SOURCES/nss-setup-flags-env.inc b/SOURCES/nss-setup-flags-env.inc new file mode 100644 index 0000000..45f6e79 --- /dev/null +++ b/SOURCES/nss-setup-flags-env.inc @@ -0,0 +1,7 @@ +sed -i 's@%{bundled_install_path}@%{_buildrootdir}%{bundled_install_path}@g' %{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig/nss*.pc + +export LDFLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" +export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS" +export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" +export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig +export PATH="{_buildrootdir}%{bundled_install_path}/bin:$PATH" diff --git a/SOURCES/process-official-tarball b/SOURCES/process-official-tarball new file mode 100755 index 0000000..449e7bb --- /dev/null +++ b/SOURCES/process-official-tarball @@ -0,0 +1,23 @@ +#!/bin/sh + +rm -rf ./process-tarball-dir +mkdir ./process-tarball-dir +tar -xJf $1 --directory process-tarball-dir + +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0030-isvalid.html +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0008-isvalid.html +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfalite/0030-isvalid.html +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/css/css-ui/support/cursors/woolly-64.svg +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/css/css-ui/support/cursors/woolly.svg +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0230-novalid.html +rm -vf ./process-tarball-dir/*/testing/web-platform/tests/conformance-checkers/html-rdfa/0231-isvalid.html +rm -vf ./process-tarball-dir/*/layout/inspector/tests/chrome/test_fontVariationsAPI.css + +processed_tarball=${1/source/processed-source} + +cd ./process-tarball-dir +tar -cf - ./* | xz -9 -T 0 -f > $processed_tarball +mv $processed_tarball .. +cd .. + +rm -rf ./process-tarball-dir diff --git a/SOURCES/python-missing-utimensat.patch b/SOURCES/python-missing-utimensat.patch new file mode 100644 index 0000000..d19ecab --- /dev/null +++ b/SOURCES/python-missing-utimensat.patch @@ -0,0 +1,12 @@ +diff -up python3/Python-3.6.8/configure.old python3/Python-3.6.8/configure +--- Python-3.6.8/configure.old 2019-10-01 12:56:35.074551835 +0200 ++++ Python-3.6.8/configure 2019-10-01 12:56:44.240517798 +0200 +@@ -11438,7 +11438,7 @@ for ac_func in alarm accept4 setitimer g + sigaction sigaltstack siginterrupt sigpending sigrelse \ + sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \ + sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \ +- truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \ ++ truncate uname unlinkat unsetenv utimes waitid waitpid wait3 wait4 \ + wcscoll wcsftime wcsxfrm wmemcmp writev _getpty + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` diff --git a/SOURCES/rhbz-1173156.patch b/SOURCES/rhbz-1173156.patch new file mode 100644 index 0000000..c35d901 --- /dev/null +++ b/SOURCES/rhbz-1173156.patch @@ -0,0 +1,12 @@ +diff -up firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp +--- firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2019-01-22 10:36:09.284069020 +0100 ++++ firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp 2019-01-22 10:37:12.669757744 +0100 +@@ -161,7 +161,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH + const char* username = PR_GetEnv("USER"); + if (!username) return NS_ERROR_FAILURE; + +- const char* const args[] = {"ntlm_auth", ++ const char* const args[] = {"/usr/bin/ntlm_auth", + "--helper-protocol", + "ntlmssp-client-1", + "--use-cached-creds", diff --git a/SOURCES/thunderbird-mozconfig b/SOURCES/thunderbird-mozconfig new file mode 100644 index 0000000..4500696 --- /dev/null +++ b/SOURCES/thunderbird-mozconfig @@ -0,0 +1,31 @@ +ac_add_options --enable-application=comm/mail + +ac_add_options --prefix="$PREFIX" +ac_add_options --libdir="$LIBDIR" +ac_add_options --with-system-zlib +ac_add_options --disable-strip +ac_add_options --disable-tests +#ac_add_options --enable-libnotify +ac_add_options --enable-necko-wifi +ac_add_options --disable-updater +ac_add_options --enable-chrome-format=omni +ac_add_options --enable-pulseaudio +ac_add_options --without-system-icu +ac_add_options --enable-release +ac_add_options --update-channel=release +ac_add_options --allow-addon-sideload +ac_add_options --with-system-jpeg +ac_add_options --enable-js-shell +ac_add_options --with-unsigned-addon-scopes=app,system + +ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key +ac_add_options --with-google-location-service-api-keyfile=../google-api-key +ac_add_options --with-google-safebrowsing-api-keyfile=../google-api-key +ac_add_options --disable-crashreporter + +export BUILD_OFFICIAL=1 +export MOZILLA_OFFICIAL=1 +mk_add_options BUILD_OFFICIAL=1 +mk_add_options MOZ_CO_PROJECT=mail +mk_add_options MOZILLA_OFFICIAL=1 +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 b/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 new file mode 100644 index 0000000..4d01b78 --- /dev/null +++ b/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 @@ -0,0 +1,36 @@ +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +/* Allow users to set custom colors*/ +/* pref("browser.display.use_system_colors", true);*/ +pref("general.useragent.vendor", "Red Hat"); +pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); +pref("intl.locale.matchOS", true); +pref("mail.shell.checkDefaultClient", false); +pref("toolkit.networkmanager.disable", false); +pref("offline.autoDetect", true); + +/* Disable global indexing by default*/ +pref("mailnews.database.global.indexer.enabled", false); + +/* Do not switch to Smart Folders after upgrade to 3.0b4 */ +pref("mail.folder.views.version", "1"); +pref("extensions.shownSelectionUI", true); +pref("extensions.autoDisableScopes", 0); + +/* For rhbz#1024232 */ +pref("ui.SpellCheckerUnderlineStyle", 1); + +/* Workaround for rhbz#1753011 */ +pref("spellchecker.dictionary_path", "/usr/share/myspell"); +/* Workaround for rhbz#1134876 */ +pref("javascript.options.baselinejit", false); +/* Workaround for rhbz#1110291 */ +pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); +/* Workaround for mozbz#1063315 */ +pref("security.use_mozillapkix_verification", false); +/* Use OS settings for UI language */ +pref("intl.locale.requested", ""); +/* Disable telemetry */ +pref("datareporting.healthreport.uploadEnabled", false); +pref("datareporting.policy.dataSubmissionEnabled", false); +pref("toolkit.telemetry.archive.enabled", false); diff --git a/SOURCES/thunderbird.desktop b/SOURCES/thunderbird.desktop new file mode 100644 index 0000000..1945d1e --- /dev/null +++ b/SOURCES/thunderbird.desktop @@ -0,0 +1,30 @@ +[Desktop Entry] +Version=1.0 +Name=Thunderbird +GenericName=Email +Comment=Send and Receive Email +Exec=thunderbird %u +TryExec=thunderbird +Icon=thunderbird +Terminal=false +Type=Application +MimeType=message/rfc822;x-scheme-handler/mailto; +StartupNotify=true +Categories=Network;Email; +Name[cs]=Poštovní klient Thunderbird +Name[ca]=Client de correu Thunderbird +Name[fi]=Thunderbird-sähköposti +Name[fr]=Messagerie Thunderbird +Name[pl]=Klient poczty Thunderbird +Name[pt_BR]=Cliente de E-mail Thunderbird +Name[sv]=E-postklienten Thunderbird +Comment[ca]=Llegiu i escriviu correu +Comment[cs]=Čtení a psaní pošty +Comment[de]=Emails lesen und verfassen +Comment[fi]=Lue ja kirjoita sähköposteja +Comment[fr]=Lire et écrire des courriels +Comment[it]=Leggere e scrivere email +Comment[ja]=メールの読み書き +Comment[pl]=Czytanie i wysyłanie e-maili +Comment[pt_BR]=Ler e escrever suas mensagens +Comment[sv]=Läs och skriv e-post diff --git a/SOURCES/thunderbird.sh.in b/SOURCES/thunderbird.sh.in new file mode 100644 index 0000000..6a9cb72 --- /dev/null +++ b/SOURCES/thunderbird.sh.in @@ -0,0 +1,145 @@ +#!/bin/bash +# +# Startup script for the fedora.us Thunderbird RPM +# (based on the Mozilla RPM launch script) +# + +## +## Variables +## +MOZ_ARCH=$(uname -m) +case $MOZ_ARCH in + x86_64 | s390x | sparc64 ) + MOZ_LIB_DIR="%PREFIX%/lib64" + SECONDARY_LIB_DIR="%PREFIX%/lib" + ;; + * ) + MOZ_LIB_DIR="%PREFIX%/lib" + SECONDARY_LIB_DIR="%PREFIX%/lib64" + ;; +esac + +if [ ! -x $MOZ_LIB_DIR/thunderbird/thunderbird ]; then + if [ ! -x $SECONDARY_LIB_DIR/thunderbird/thunderbird ]; then + echo "Error: $MOZ_LIB_DIR/thunderbird/thunderbird not found" + if [ -d $SECONDARY_LIB_DIR ]; then + echo " $SECONDARY_LIB_DIR/thunderbird/thunderbird not found" + fi + exit 1 + fi + MOZ_LIB_DIR="$SECONDARY_LIB_DIR" +fi + +MOZ_DIST_BIN="$MOZ_LIB_DIR/thunderbird" +MOZ_PROGRAM="$MOZ_DIST_BIN/thunderbird" +MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks" +MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{3550f703-e582-4d05-9a08-453d09bdfdc6}" + +## +## Set MOZ_ENABLE_PANGO is no longer used because Pango is enabled by default +## you may use MOZ_DISABLE_PANGO=1 to force disabling of pango +## +#MOZ_DISABLE_PANGO=1 +#export MOZ_DISABLE_PANGO + +## +## Set MOZ_APP_LAUNCHER for gnome-session +## +export MOZ_APP_LAUNCHER="%PREFIX%/bin/thunderbird" + +## +## Disable the GNOME crash dialog, Moz has it's own +## +GNOME_DISABLE_CRASH_DIALOG=1 +export GNOME_DISABLE_CRASH_DIALOG + +## +## Disable the SLICE allocator (rhbz#1014858) +## +export G_SLICE=always-malloc + +## +## To disable the use of Firefox localization, set MOZ_DISABLE_LANGPACKS=1 +## in your environment before launching Firefox. +## +# +# MOZ_DISABLE_LANGPACKS=1 +# export MOZ_DISABLE_LANGPACKS +# + +## +## Automatically installed langpacks are tracked by .fedora-langpack-install +## config file. +## +FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install" + +# MOZ_DISABLE_LANGPACKS disables language packs completelly +MOZILLA_DOWN=0 +if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then + pidof thunderbird > /dev/null 2>&1 + MOZILLA_DOWN=$? +fi + +# Modify language pack configuration only when thunderbird is not running +# and language packs are not disabled +if [ $MOZILLA_DOWN -ne 0 ]; then + + # Clear already installed langpacks + mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR + if [ -f $FEDORA_LANGPACK_CONFIG ]; then + rm `cat $FEDORA_LANGPACK_CONFIG` > /dev/null 2>&1 + rm $FEDORA_LANGPACK_CONFIG > /dev/null 2>&1 + # remove all empty langpacks dirs while they block installation of langpacks + rmdir $MOZ_EXTENSIONS_PROFILE_DIR/lang* > /dev/null 2>&1 + fi + + # Get locale from system + CURRENT_LOCALE=$LC_ALL + CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES} + CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG} + + # Try without a local variant first, then with a local variant + # So that pt-BR doesn't try to use pt for example + SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g"` + MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g"` + + function create_langpack_link() { + local language=$* + local langpack=langpack-${language}@thunderbird.mozilla.org.xpi + if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then + rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack + ln -s $MOZ_LANGPACKS_DIR/$langpack \ + $MOZ_EXTENSIONS_PROFILE_DIR/$langpack + echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $FEDORA_LANGPACK_CONFIG + return 0 + fi + return 1 + } + + create_langpack_link $SHORTMOZLOCALE || create_langpack_link $MOZLOCALE || true +fi + +# BEAST fix (rhbz#1005611) +NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1} +export NSS_SSL_CBC_RANDOM_IV + +# Linux version specific environment variables +%RHEL_ENV_VARS% + +# Make sure at-spi-bus is running +if ! dbus-send --session \ + --dest=org.freedesktop.DBus \ + --type=method_call \ + --print-reply \ + /org/freedesktop/DBus \ + org.freedesktop.DBus.ListNames \ + | grep org.a11y.Bus > /dev/null; then + if [ -f "$MOZ_LIB_DIR/firefox/bundled/libexec/at-spi-bus-launcher" ]; then + echo "Starting a11y dbus service..." + $MOZ_LIB_DIR/firefox/bundled/libexec/at-spi-bus-launcher & + else + echo "Running without a11y support!" + fi +fi + +exec $MOZ_PROGRAM "$@" diff --git a/SPECS/thunderbird.spec b/SPECS/thunderbird.spec new file mode 100644 index 0000000..6140f10 --- /dev/null +++ b/SPECS/thunderbird.spec @@ -0,0 +1,2406 @@ +# Set for local builds only +%global disable_toolsets 0 + +%ifarch %{ix86} + # no debug package for the i686 because oom on i686 with debuginfos + #FIXME revise if still necessary + %global debug_package %{nil} +%endif + +%{lua: +function dist_to_rhel_minor(str, start) + match = string.match(str, ".module%+el8.%d+") + if match then + return string.sub(match, 13) + end + match = string.match(str, ".el8_%d+") + if match then + return string.sub(match, 6) + end + match = string.match(str, ".el8") + if match then + return 6 + end +end} + +%global rhel_minor_version %{lua:print(dist_to_rhel_minor(rpm.expand("%dist")))} +%global build_with_clang 0 + +%global system_nss 1 +%global bundle_nss 0 + +%if 0%{?rhel} == 8 + %if %{rhel_minor_version} < 3 + %global bundle_nss 1 + %global system_nss 1 + %endif +%endif + +%define use_bundled_ffi 0 + +# Don't use system hunspell for now +%global system_hunspell 0 +%global use_llvmts 0 +%global use_nodejsts 0 +%if 0%{?rhel} < 8 +%global use_llvmts 1 +%global use_nodejsts 1 +%endif + +%global nodejs_rb nodejs +%global llvm_version 7.0 + +%if 0%{?rhel} == 8 +%global llvm_version 6.0 +%endif + +%if 0%{?rhel} == 7 + %global use_dts 1 + %global nodejs_rb rh-nodejs10-nodejs + %global llvm_version 11.0 +%endif + +%global use_rustts 1 +%if 0%{?rhel} >= 9 + %global use_rustts 0 +%endif + +%global dts_version 10 +%global rust_version 1.52 + +%if 0%{?disable_toolsets} +%global use_rustts 0 +%global use_dts 0 +%global use_llvmts 0 +%endif + +# Big endian platforms +%ifarch ppc64 s390x +# Javascript Intl API is not supported on big endian platforms right now: +# https://bugzilla.mozilla.org/show_bug.cgi?id=1322212 +%global big_endian 1 +%endif + +# Hardened build? +%global hardened_build 1 + +%ifarch %{ix86} x86_64 +%global run_tests 0 +%else +%global run_tests 0 +%endif + +# Build as a debug package? +%global debug_build 0 + +%define thunderbird_app_id \{3550f703-e582-4d05-9a08-453d09bdfdc6\} +# Minimal required versions + +%if 0%{?system_nss} +%global nspr_version 4.32 +# NSS/NSPR quite often ends in build override, so as requirement the version +# we're building against could bring us some broken dependencies from time to time. +#%global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536) +%global nspr_build_version %{nspr_version} +%global nss_version 3.53.1 +#%global nss_build_version %(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536) +%global nss_build_version %{nss_version} +%endif + +# GTK3 bundling +%define avoid_bundled_rebuild 0 + +%define bundled_install_path %{mozappdir}/bundled + +# We could use %%include, but in %%files, %%post and other sections, but in these +# sections it could lead to syntax errors about unclosed %%if. Work around it by +# using the following macro +%define include_file() %{expand:%(cat '%1')} + +%global mozappdir %{_libdir}/%{name} +%global mozappdirdev %{_libdir}/%{name}-devel-%{version} +%global langpackdir %{mozappdir}/extensions +%global tarballdir %{name}-%{version} +#global pre_tag alpha + +%global official_branding 1 +%global build_langpacks 1 +Summary: Mozilla Thunderbird mail/newsgroup client +Name: thunderbird +Version: 91.8.0 +Release: 1%{?dist} +URL: http://www.mozilla.org/projects/thunderbird/ +License: MPLv1.1 or GPLv2+ or LGPLv2+ +Group: Applications/Internet + +%if 0%{?rhel} == 9 +ExcludeArch: %{ix86} +%endif +%if 0%{?rhel} == 8 +ExcludeArch: %{ix86} +%endif +%if 0%{?rhel} == 7 +ExcludeArch: s390 ppc +%endif + +# We can't use the official tarball as it contains some test files that use +# licenses that are rejected by Red Hat Legal. +# The official tarball has to be always processed by the process-official-tarball +# script. +# Link to official tarball: https://archive.mozilla.org/pub/thunderbird/releases/%%{version}%%{?pre_version}/source/thunderbird-%%{version}%%{?pre_version}.source.tar.xz +Source0: thunderbird-%{version}%{?pre_version}.processed-source.tar.xz +%if %{build_langpacks} +Source1: thunderbird-langpacks-%{version}%{?ext_version}-20220405.tar.xz +%endif +Source2: cbindgen-vendor.tar.xz +Source3: get-calendar-langpacks.sh +Source4: process-official-tarball + +Source10: thunderbird-mozconfig +Source20: thunderbird.desktop +Source21: thunderbird.sh.in +Source24: mozilla-api-key +Source27: google-api-key +Source28: node-stdout-nonblocking-wrapper +Source701: thunderbird-redhat-default-prefs.js.rhel7 + +Source403: nss-3.67.0-7.el8_1.src.rpm +Source401: nss-setup-flags-env.inc +Source402: nspr-4.32.0-1.el8_1.src.rpm + +# Build patches +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 +Patch1001: build-ppc64le-inline.patch +Patch1003: python-missing-utimensat.patch +Patch1008: build-rhel7-nasm-dwarf.patch +Patch1009: build-debuginfo-fix.patch +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 +Patch4: build-mozconfig-fix.patch +Patch6: build-nss-version.patch + +# Fedora/RHEL specific patches +Patch215: firefox-enable-addons.patch +Patch219: rhbz-1173156.patch +Patch224: mozilla-1170092.patch +Patch237: disable-openpgp-in-thunderbird.patch + +# Upstream patches + +Patch503: mozilla-s390-context.patch +Patch505: mozilla-bmo1005535.patch +Patch506: mozilla-bmo1504834-part1.patch +Patch507: mozilla-bmo1504834-part2.patch +Patch508: mozilla-bmo1504834-part3.patch +Patch509: mozilla-bmo1504834-part4.patch +Patch510: mozilla-bmo1554971.patch +Patch511: mozilla-bmo1602730.patch +Patch512: mozilla-bmo849632.patch +Patch513: mozilla-bmo998749.patch +Patch514: mozilla-s390x-skia-gradient.patch +Patch515: mozilla-bmo1626236.patch +Patch516: expat-CVE-2022-25235.patch +Patch517: expat-CVE-2022-25236.patch +Patch518: expat-CVE-2022-25315.patch + +%if %{?system_nss} +%if !0%{?bundle_nss} +BuildRequires: pkgconfig(nspr) >= %{nspr_version} +BuildRequires: pkgconfig(nss) >= %{nss_version} +BuildRequires: nss-static >= %{nss_version} +%endif +%endif +BuildRequires: pkgconfig(libpng) +BuildRequires: xz +BuildRequires: libXt-devel +BuildRequires: mesa-libGL-devel +Requires: liberation-fonts-common +Requires: liberation-sans-fonts +BuildRequires: libjpeg-devel +BuildRequires: zip +BuildRequires: bzip2-devel +BuildRequires: pkgconfig(zlib) +BuildRequires: pkgconfig(gtk+-2.0) +BuildRequires: krb5-devel +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(freetype2) >= 2.1.9 +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(xrender) +%if %{?system_hunspell} +BuildRequires: hunspell-devel +%endif +BuildRequires: pkgconfig(libstartup-notification-1.0) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(dri) +BuildRequires: pkgconfig(libcurl) +BuildRequires: dbus-glib-devel +BuildRequires: m4 + +BuildRequires: pkgconfig(libpulse) + +%if 0%{?use_dts} +BuildRequires: devtoolset-%{dts_version}-gcc-c++ +BuildRequires: devtoolset-%{dts_version}-gcc +BuildRequires: devtoolset-%{dts_version}-libatomic-devel +%endif +%if 0%{?rhel} == 9 +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cargo +BuildRequires: rust +BuildRequires: clang clang-libs llvm +%endif + +BuildRequires: scl-utils +BuildRequires: findutils + +BuildRequires: %{nodejs_rb} >= 10.21 +BuildRequires: python3 + +%if 0%{?rhel} == 8 +BuildRequires: cargo +BuildRequires: rust >= %{rust_version} +BuildRequires: llvm >= %{llvm_version} +BuildRequires: llvm-devel >= %{llvm_version} +BuildRequires: clang >= %{llvm_version} +BuildRequires: clang-devel >= %{llvm_version} +BuildRequires: rustfmt >= %{rust_version} +%else +%if 0%{?use_rustts} +BuildRequires: rust-toolset-%{rust_version} +%endif +%if 0%{?use_llvmts} +BuildRequires: llvm-toolset-%{llvm_version} +BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel +BuildRequires: llvm-toolset-%{llvm_version}-clang +BuildRequires: llvm-toolset-%{llvm_version}-clang-devel +%endif +%endif + +BuildRequires: nasm +%if %{build_with_clang} +BuildRequires: lld +%endif + +%if 0%{?rhel} == 8 + %if %{rhel_minor_version} >= 3 +BuildRequires: pkgconfig(libpipewire-0.3) + %else +BuildRequires: pipewire-devel + %endif +%endif + +BuildRequires: gtk3-devel +BuildRequires: glib2-devel +BuildRequires: perl-interpreter + +# Bundled nss/nspr requirement +%if 0%{?bundle_nss} +BuildRequires: nss-softokn +BuildRequires: sqlite-devel +BuildRequires: zlib-devel +BuildRequires: pkgconfig +BuildRequires: gawk +BuildRequires: psmisc +BuildRequires: gcc-c++ +BuildRequires: xmlto +%endif + + +Requires: mozilla-filesystem +Requires: p11-kit-trust +%if %{?system_nss} +%if !0%{?bundle_nss} +Requires: nspr >= %{nspr_build_version} +Requires: nss >= %{nss_build_version} +%endif +%endif + +BuildRequires: desktop-file-utils +BuildRequires: system-bookmarks +Requires: redhat-indexhtml + +%if %{?run_tests} +BuildRequires: xorg-x11-server-Xvfb +%endif + +BuildRequires: pkgconfig(libffi) + +%if 0%{?big_endian} + %if 0%{?flatpak} +BuildRequires: icu + %endif +%endif + +Obsoletes: thunderbird-lightning +# ================================================================================== + +# Bundled libraries +Provides: bundled(angle) +Provides: bundled(cairo) +Provides: bundled(graphite2) +Provides: bundled(harfbuzz) +Provides: bundled(ots) +Provides: bundled(sfntly) +Provides: bundled(skia) +Provides: bundled(thebes) +Provides: bundled(WebRender) +Provides: bundled(audioipc-2) +Provides: bundled(ffvpx) +Provides: bundled(kissfft) +Provides: bundled(libaom) +Provides: bundled(libcubeb) +Provides: bundled(libdav1d) +Provides: bundled(libjpeg) +Provides: bundled(libmkv) +Provides: bundled(libnestegg) +Provides: bundled(libogg) +Provides: bundled(libopus) +Provides: bundled(libpng) +Provides: bundled(libsoundtouch) +Provides: bundled(libspeex_resampler) +Provides: bundled(libtheora) +Provides: bundled(libtremor) +Provides: bundled(libvorbis) +Provides: bundled(libvpx) +Provides: bundled(libwebp) +Provides: bundled(libyuv) +Provides: bundled(mp4parse-rust) +Provides: bundled(mtransport) +Provides: bundled(openmax_dl) +Provides: bundled(double-conversion) +Provides: bundled(brotli) +Provides: bundled(fdlibm) +Provides: bundled(freetype2) +Provides: bundled(libmar) +Provides: bundled(woff2) +Provides: bundled(xz-embedded) +Provides: bundled(zlib) +Provides: bundled(expat) +Provides: bundled(msgpack-c) +Provides: bundled(libprio) +Provides: bundled(rlbox_sandboxing_api) +Provides: bundled(sqlite3) + +#TB third party libs +Provides: bundled(libgcrypt) +Provides: bundled(libgpg-error) +Provides: bundled(libotr) + +# In case we enable MOZ_OPENPGP add following: +#Provides: bundled(botan) +#Provides: bundled(bzip2) +#Provides: bundled(json-c) +#Provides: bundled(rnp) + +%if 0%{?bundle_nss} +Provides: bundled(nss) = 3.67.0 +Provides: bundled(nspr) = 4.32.0 +%endif +%description +Mozilla Thunderbird is a standalone mail and newsgroup client. + + +%prep +echo "Build environment" +echo "dist %{?dist}" +echo "RHEL 8 minor version: %{rhel_minor_version}" +echo "use_bundled_ffi %{?use_bundled_ffi}" +echo "bundle_nss %{?bundle_nss}" +echo "system_nss %{?system_nss}" +echo "use_rustts %{?use_rustts}" + + +%setup -q -n %{tarballdir} +# Firefox patches + +%patch4 -p1 -b .build-mozconfig-fix +%patch6 -p1 -b .nss-version + +# Fedora patches +%patch215 -p1 -b .addons +%patch219 -p1 -b .rhbz-1173156 +%patch224 -p1 -b .1170092 + +# Patch for big endian platforms only +%if 0%{?big_endian} +%endif + +# Thunderbird patches +%patch503 -p1 -b .mozilla-s390-context +%patch505 -p1 -b .mozilla-bmo1005535 +%patch506 -p1 -b .mozilla-bmo1504834-part1 +%patch507 -p1 -b .mozilla-bmo1504834-part2 +%patch508 -p1 -b .mozilla-bmo1504834-part3 +%patch509 -p1 -b .mozilla-bmo1504834-part4 +%patch510 -p1 -b .mozilla-bmo1554971 +%patch511 -p1 -b .mozilla-bmo1602730 +%patch512 -p1 -b .mozilla-bmo849632 +%patch513 -p1 -b .mozilla-bmo998749 +%patch514 -p1 -b .mozilla-s390x-skia-gradient +%patch515 -p1 -b .mozilla-bmo1626236 +%patch516 -p1 -b .expat-CVE-2022-25235 +%patch517 -p1 -b .expat-CVE-2022-25236 +%patch518 -p1 -b .expat-CVE-2022-25315 +%patch237 -p1 -b .disable-openpgp-in-thunderbird + + +%patch1001 -p1 -b .ppc64le-inline +%if 0%{?rhel} == 7 +# fix the /usr/lib/rpm/debugedit: canonicalization unexpectedly shrank by one character +%patch1009 -p1 -b .build-debuginfo-fix + %ifarch %{ix86} +# -F dwarf not available in RHEL7's nasm +%patch1008 -p1 -b .build-rhel7-nasm-dwarf + %endif +%endif + +%{__rm} -f .mozconfig +%{__cp} %{SOURCE10} .mozconfig +# Modify mozconfig file +%if %{official_branding} +echo "ac_add_options --enable-official-branding" >> .mozconfig +%endif +%{__cp} %{SOURCE24} mozilla-api-key +%{__cp} %{SOURCE27} google-api-key + +%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 + +%ifarch %{ix86} x86_64 +echo "ac_add_options --disable-elf-hack" >> .mozconfig +%endif + +%if %{?system_hunspell} +echo "ac_add_options --enable-system-hunspell" >> .mozconfig +%endif + +%if %{?debug_build} +echo "ac_add_options --enable-debug" >> .mozconfig +echo "ac_add_options --disable-optimize" >> .mozconfig +%else +%global optimize_flags "-g -O2" +%if %{optimize_flags} != "none" +echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig +%else +echo 'ac_add_options --enable-optimize' >> .mozconfig +%endif +echo "ac_add_options --disable-debug" >> .mozconfig +%endif + +# Second arches fail to start with jemalloc enabled +%ifnarch %{ix86} x86_64 +echo "ac_add_options --disable-jemalloc" >> .mozconfig +%endif + +%ifnarch %{ix86} x86_64 +echo "ac_add_options --disable-webrtc" >> .mozconfig +%endif + +%ifarch s390x +echo "ac_add_options --disable-jit" >> .mozconfig +%endif + +%ifnarch %{ix86} +%if !0%{?debug_build} +echo "ac_add_options --disable-debug-symbols" >> .mozconfig +%endif +%endif + +# AV1 requires newer nasm that was rebased in 8.4 +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && 0%{rhel_minor_version} < 4) +echo "ac_add_options --disable-av1" >> .mozconfig +%endif + +echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig + +cat .mozconfig + +# Remove executable bit to make brp-mangle-shebangs happy. +chmod -x third_party/rust/itertools/src/lib.rs +chmod a-x third_party/rust/gfx-backend-vulkan/src/*.rs +chmod a-x third_party/rust/gfx-hal/src/*.rs +chmod a-x third_party/rust/ash/src/extensions/ext/*.rs +chmod a-x third_party/rust/ash/src/extensions/khr/*.rs +chmod a-x third_party/rust/ash/src/extensions/mvk/*.rs +chmod a-x third_party/rust/ash/src/extensions/nv/*.rs + +#--------------------------------------------------------------------- + +%build +# Disable LTO to work around rhbz#1883904 +%define _lto_cflags %{nil} +ulimit -a +free +#set -e +# Hack for missing shell when building in brew on RHEL6 + +%if ! 0%{?avoid_bundled_rebuild} + rm -rf %{_buildrootdir}/* +%endif +export PATH="%{_buildrootdir}/bin:$PATH" + +function install_rpms_to_current_dir() { + PACKAGE_RPM=$(eval echo $1) + PACKAGE_DIR=%{_rpmdir} + + if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then + # Hack for tps tests + ARCH_STR=%{_arch} + %ifarch %{ix86} + ARCH_STR="i?86" + %endif + PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" + fi + + for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM) + do + echo "$package" + rpm2cpio "$package" | cpio -idu + done +} + +function build_bundled_package() { + PACKAGE_RPM=$1 + PACKAGE_FILES=$2 + PACKAGE_SOURCE=$3 + PACKAGE_BUILD_OPTIONS=$4 + export PACKAGE_DIR="%{_topdir}/RPMS" + + PACKAGE_ALREADY_BUILD=0 + %if %{?avoid_bundled_rebuild} + if ls $PACKAGE_DIR/$PACKAGE_RPM; then + PACKAGE_ALREADY_BUILD=1 + fi + if ls $PACKAGE_DIR/%{_arch}/$PACKAGE_RPM; then + PACKAGE_ALREADY_BUILD=1 + fi + %endif + if [ $PACKAGE_ALREADY_BUILD == 0 ]; then + echo "Rebuilding $PACKAGE_RPM from $PACKAGE_SOURCE"; echo "===============================" + rpmbuild --nodeps $PACKAGE_BUILD_OPTIONS --rebuild $PACKAGE_SOURCE + cat /var/tmp/rpm-tmp* + fi + + find $PACKAGE_DIR + if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then + # Hack for tps tests + ARCH_STR=%{_arch} + %ifarch %{ix86} + ARCH_STR="i?86" + %endif + export PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" + fi + pushd $PACKAGE_DIR + + echo "Installing $PACKAGE_DIR/$PACKAGE_RPM"; echo "===============================" + pwd + PACKAGE_LIST=$(echo $PACKAGE_DIR/$PACKAGE_RPM | tr " " "\n") + for PACKAGE in $PACKAGE_LIST + do + rpm2cpio $PACKAGE | cpio -iduv + done + + PATH=$PACKAGE_DIR/usr/bin:$PATH + export PATH + LD_LIBRARY_PATH=$PACKAGE_DIR/usr/%{_lib}:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH + + # Clean rpms to avoid including them to package + %if ! 0%{?avoid_bundled_rebuild} + rm -f $PACKAGE_FILES + %endif + + popd +} + +%if 0%{?bundle_nss} + rpm -ivh %{SOURCE402} + #rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec + rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec + pushd %{_buildrootdir} + install_rpms_to_current_dir nspr-4*.rpm + install_rpms_to_current_dir nspr-devel*.rpm + popd + echo "Setting nspr flags" + # nss-setup-flags-env.inc + sed -i 's@%{bundled_install_path}@%{_buildrootdir}%{bundled_install_path}@g' %{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig/nspr*.pc + + export LDFLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" + export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS" + export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" + export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig + export PATH="{_buildrootdir}%{bundled_install_path}/bin:$PATH" + + export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH + echo $PKG_CONFIG_PATH + + rpm -ivh %{SOURCE403} + rpmbuild --nodeps --define '_prefix %{bundled_install_path}' -ba %{_specdir}/nss.spec + pushd %{_buildrootdir} + #cleanup + #rm -rf {_buildrootdir}/usr/lib/debug/* + #rm -rf {_buildrootdir}/usr/lib/.build-id + install_rpms_to_current_dir nss-3*.rpm + install_rpms_to_current_dir nss-devel*.rpm + install_rpms_to_current_dir nss-pkcs11-devel*.rpm + install_rpms_to_current_dir nss-softokn-3*.rpm + install_rpms_to_current_dir nss-softokn-devel*.rpm + install_rpms_to_current_dir nss-softokn-freebl-3*.rpm + install_rpms_to_current_dir nss-softokn-freebl-devel*.rpm + install_rpms_to_current_dir nss-util-3*.rpm + install_rpms_to_current_dir nss-util-devel*.rpm + popd + %filter_provides_in %{bundled_install_path}/%{_lib} + %filter_requires_in %{bundled_install_path}/%{_lib} + %filter_from_requires /libnss3.so.*/d + %filter_from_requires /libsmime3.so.*/d + %filter_from_requires /libssl3.so.*/d + %filter_from_requires /libnssutil3.so.*/d + %filter_from_requires /libnspr4.so.*/d + find %{_buildrootdir} +%endif + +%if 0%{use_bundled_ffi} + # Install libraries to the predefined location to later add them to the Firefox libraries + rpm -ivh %{SOURCE303} + rpmbuild --nodeps --define '_prefix %{bundled_install_path}' -ba %{_specdir}/libffi.spec + pushd %{_buildrootdir} + install_rpms_to_current_dir 'libffi*.rpm' + popd + %filter_from_requires /libffi.so.6/d +%endif +%filter_setup + +function replace_prefix() { + FILE_NAME=$1 + PKG_CONFIG_PREFIX=$2 + + cat $FILE_NAME | tail -n +2 > tmp.txt + echo "$PKG_CONFIG_PREFIX" > $FILE_NAME + cat tmp.txt >> $FILE_NAME + rm -rf tmp.txt +} + +# We need to disable exit on error temporarily for the following scripts: +set +e +%if 0%{?use_dts} +source scl_source enable devtoolset-%{dts_version} +%endif +%if 0%{?use_rustts} +source scl_source enable rust-toolset-%{rust_version} +%endif +%if 0%{?use_nodejsts} +source scl_source enable rh-nodejs10 +%endif + +env +which gcc +which c++ +which g++ +which ld +which nasm +# Build and install local node if needed +# ====================================== +export MOZ_NODEJS=`which node` + +mkdir -p my_rust_vendor +cd my_rust_vendor +%{__tar} xf %{SOURCE2} +cd - +mkdir -p .cargo +cat > .cargo/config <> .mozconfig + %endif +%endif + +%if 0%{?bundle_nss} + mkdir -p %{_buildrootdir}%{bundled_install_path}/%{_lib} + MOZ_LINK_FLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" + MOZ_LINK_FLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" + MOZ_LINK_FLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" +%endif + +%ifarch %{ix86} + export RUSTFLAGS="-Cdebuginfo=0" + echo 'export RUSTFLAGS="-Cdebuginfo=0"' >> .mozconfig +%endif + +export PREFIX='%{_prefix}' +export LIBDIR='%{_libdir}' +export CC=gcc +export CXX=g++ +echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig +echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig +echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig + +%if %{build_with_clang} + echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig + echo "export AR=\"llvm-ar\"" >> .mozconfig + echo "export NM=\"llvm-nm\"" >> .mozconfig + echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig + echo "ac_add_options --enable-linker=lld" >> .mozconfig +%else + echo "export CC=gcc" >> .mozconfig + echo "export CXX=g++" >> .mozconfig + echo "export AR=\"gcc-ar\"" >> .mozconfig + echo "export NM=\"gcc-nm\"" >> .mozconfig + echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig +%endif + +MOZ_SMP_FLAGS=-j1 +# More than two build tasks can lead to OOM gcc crash. +%if 0%{?rhel} < 8 + [ -z "$RPM_BUILD_NCPUS" ] && \ + RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" + [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 +%else + %ifarch %{ix86} x86_64 ppc64 ppc64le aarch64 + [ -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=-j3 + [ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j3 + %endif +%endif + +cat /proc/meminfo +# Free memory in kB + +# Free memory in kB +if grep -q MemAvailable /proc/meminfo; then + MEM_AVAILABLE=$(grep MemAvailable /proc/meminfo | awk '{ print $2 }') +else + MEM_AVAILABLE=$(grep MemFree /proc/meminfo | awk '{ print $2 }') +fi + +# Usually the compiler processes can take 2 GB of memory at peaks +TASK_SIZE=4000000 +MEM_CONSTRAINED_JOBS=$(( MEM_AVAILABLE / TASK_SIZE )) + +if [ $MEM_CONSTRAINED_JOBS -le 0 ]; then + MEM_CONSTRAINED_JOBS=1 +fi + +CPU_AVAILABLE=$(/usr/bin/getconf _NPROCESSORS_ONLN) +# Pick the minimum from available CPUs or memory constrained number of jobs +MOZ_SMP_FLAGS=-j$([ "$CPU_AVAILABLE" -le "$MEM_CONSTRAINED_JOBS" ] && echo "$CPU_AVAILABLE" || echo "$MEM_CONSTRAINED_JOBS") + +# override smp flags to the rpmbuild defaults ATM +%ifnarch ppc64le +MOZ_SMP_FLAGS=%{_smp_mflags} +%endif + +%ifarch s390x +MOZ_SMP_FLAGS=-j2 +%endif + +%if 0%{?bundle_nss} + echo "Setting nss flags" + # nss-setup-flags-env.inc + %include_file %{SOURCE401} + export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH + echo $PKG_CONFIG_PATH +%endif + +export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" +#export MOZ_SERVICES_SYNC="1" +# we need to strip the sources on i686 because to we don't use rpm to generate debugsymbols because of oom +%ifnarch %{ix86} + export STRIP=/bin/true +%endif +which node +echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' +env +ls %{_buildrootdir} + +export MACH_USE_SYSTEM_PYTHON=1 +%if 0%{?use_llvmts} + #scl enable llvm-toolset-%{llvm_version} './mach build -v' + ./mach build -v || exit 1 +%else + ./mach build -v || exit 1 +%endif +# Look for the reason we get: /usr/lib/rpm/debugedit: canonicalization unexpectedly shrank by one character +readelf -wl objdir/dist/bin/libxul.so | grep "/" + +#--------------------------------------------------------------------- + +%install +export MACH_USE_SYSTEM_PYTHON=1 +function install_rpms_to_current_dir() { + PACKAGE_RPM=$(eval echo $1) + PACKAGE_DIR=%{_rpmdir} + + if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then + # Hack for tps tests + ARCH_STR=%{_arch} + %ifarch %{ix86} + ARCH_STR="i?86" + %endif + PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" + fi + + for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM) + do + echo "$package" + rpm2cpio "$package" | cpio -idu + done +} + +%if 0%{?bundle_nss} + pushd %{buildroot} + #install_rpms_to_current_dir nss-*.rpm + install_rpms_to_current_dir nspr-4*.rpm + install_rpms_to_current_dir nss-3*.rpm + install_rpms_to_current_dir nss-softokn-3*.rpm + install_rpms_to_current_dir nss-softokn-freebl-3*.rpm + install_rpms_to_current_dir nss-util-3*.rpm + + # cleanup unecessary nss files + #rm -rf %{_buildrootdir}/%{bundled_install_path}/bin + #rm -rf %{_buildrootdir}/%{bundled_install_path}/include + rm -rf %{buildroot}/%{bundled_install_path}/lib/dracut + rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/nss + #rm -rf %{_buildrootdir}/%{bundled_install_path}/%{_lib}/pkgconfig + rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/share + rm -rf %{buildroot}/%{bundled_install_path}/share + rm -rf %{buildroot}/etc/pki + rm -rf %{buildroot}/usr/lib/.build-id + rm -rf %{buildroot}/etc/crypto-policies + popd +%endif + +# Install bundled libffi +%if %{use_bundled_ffi} + pushd %{buildroot} + install_rpms_to_current_dir libffi-3*.rpm + popd +%endif + +DESTDIR=%{buildroot} make -C objdir install + +%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications} + +desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} + +# set up the thunderbird start script +rm -rf %{buildroot}%{_bindir}/thunderbird +%{__rm} -rf %{buildroot}%{_bindir}/thunderbird +%{__cat} %{SOURCE21} > %{buildroot}%{_bindir}/thunderbird +sed -i -e 's|%PREFIX%|%{_prefix}|' %{buildroot}%{_bindir}/thunderbird +sed -i -e 's|%RHEL_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird +%{__chmod} 755 %{buildroot}%{_bindir}/thunderbird + +%{__cat} %{SOURCE701} | %{__sed} -e 's,THUNDERBIRD_RPM_VR,%{version}-%{release},g' > \ + %{buildroot}/rh-default-prefs +%{__install} -D %{buildroot}/rh-default-prefs %{buildroot}/%{mozappdir}/greprefs/all-redhat.js +%{__install} -D %{buildroot}/rh-default-prefs %{buildroot}/%{mozappdir}/defaults/pref/all-redhat.js +%{__rm} %{buildroot}/rh-default-prefs + +# install icons +for s in 16 22 24 32 48 256; do + %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps + %{__cp} -p comm/mail/branding/%{name}/default${s}.png \ + %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/thunderbird.png +done + +%{__rm} -f %{buildroot}%{_bindir}/thunderbird-config + +# own mozilla plugin dir (#135050) +%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/plugins + +# own extension directories +%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{thunderbird_app_id} +%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{thunderbird_app_id} + +# Install langpacks +echo > %{name}.lang +%if %{build_langpacks} +# Extract langpacks, make any mods needed, repack the langpack, and install it. +%{__mkdir_p} %{buildroot}%{langpackdir} +%{__tar} xf %{SOURCE1} +for langpack in `ls thunderbird-langpacks/*.xpi`; do + language=`basename $langpack .xpi` + extensionID=langpack-$language@thunderbird.mozilla.org + %{__mkdir_p} $extensionID + unzip -qq $langpack -d $extensionID + find $extensionID -type f | xargs chmod 644 + + cd $extensionID + zip -qq -r9mX ../${extensionID}.xpi * + cd - + + %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir} + language=`echo $language | sed -e 's/-/_/g'` + echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang +done +%{__rm} -rf thunderbird-langpacks + +echo "Adding following langpacks:" +cat %{name}.lang +%endif + +# Get rid of devel package and its debugsymbols +%{__rm} -rf %{buildroot}%{_libdir}/%{name}-devel-%{version} + +# Copy over the LICENSE +%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir} + +# Use the system hunspell dictionaries +%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries +ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries + +# ghost files +%{__mkdir_p} %{buildroot}%{mozappdir}/components +touch %{buildroot}%{mozappdir}/components/compreg.dat +touch %{buildroot}%{mozappdir}/components/xpti.dat + +# Clean thunderbird-devel debuginfo +rm -rf %{_prefix}/lib/debug/lib/%{name}-devel-* +rm -rf %{_prefix}/lib/debug/lib64/%{name}-devel-* + + +# Removing librnp.so - we cannot deliver that in RHELs +%{__rm} -rf %{buildroot}%{mozappdir}/librnp.so + +# Register as an application to be visible in the software center +mkdir -p $RPM_BUILD_ROOT%{_datadir}/metainfo +%{__cp} -p comm/mail/branding/%{name}/net.thunderbird.Thunderbird.appdata.xml $RPM_BUILD_ROOT%{_datadir}/metainfo/thunderbird.appdata.xml +sed -i -e 's|thunderbird|' "$RPM_BUILD_ROOT%{_datadir}/metainfo/thunderbird.appdata.xml" + +#=============================================================================== + +%post +update-desktop-database &> /dev/null || : +touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + +%postun +update-desktop-database &> /dev/null || : +if [ $1 -eq 0 ] ; then + touch --no-create %{_datadir}/icons/hicolor &>/dev/null + gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%posttrans +gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + +#=============================================================================== +%files -f %{name}.lang +%defattr(-,root,root,-) +%attr(755,root,root) %{_bindir}/thunderbird +%{_datadir}/metainfo/*.appdata.xml +%attr(644,root,root) %{_datadir}/applications/thunderbird.desktop +%dir %{_datadir}/mozilla/extensions/%{thunderbird_app_id} +%dir %{_libdir}/mozilla/extensions/%{thunderbird_app_id} +%dir %{mozappdir} +%doc %{mozappdir}/LICENSE +%{mozappdir}/chrome +%dir %{mozappdir}/components +%ghost %{mozappdir}/components/compreg.dat +%ghost %{mozappdir}/components/xpti.dat +%if %{build_langpacks} +%dir %{langpackdir} +%endif + +%{mozappdir}/omni.ja +%{mozappdir}/plugin-container +%{mozappdir}/defaults +%{mozappdir}/dictionaries +%{mozappdir}/greprefs +%{mozappdir}/isp +%{mozappdir}/thunderbird-bin +%{mozappdir}/thunderbird +%{mozappdir}/*.so +%{mozappdir}/platform.ini +%{mozappdir}/application.ini +%exclude %{mozappdir}/removed-files +%{_datadir}/icons/hicolor/16x16/apps/thunderbird.png +%{_datadir}/icons/hicolor/22x22/apps/thunderbird.png +%{_datadir}/icons/hicolor/24x24/apps/thunderbird.png +%{_datadir}/icons/hicolor/256x256/apps/thunderbird.png +%{_datadir}/icons/hicolor/32x32/apps/thunderbird.png +%{_datadir}/icons/hicolor/48x48/apps/thunderbird.png +%{mozappdir}/pingsender +%{mozappdir}/dependentlibs.list +%{mozappdir}/fonts/TwemojiMozilla.ttf + +%if !%{?system_nss} +%exclude %{mozappdir}/libnssckbi.so +%endif +%if 0%{use_bundled_ffi} +%{mozappdir}/bundled/%{_lib}/libffi.so* +%exclude %{_datadir}/doc/libffi* +%endif + +%if 0%{?bundle_nss} +%{mozappdir}/bundled/%{_lib}/libfreebl* +%{mozappdir}/bundled/%{_lib}/libnss3* +%{mozappdir}/bundled/%{_lib}/libnssdbm3* +%{mozappdir}/bundled/%{_lib}/libnssutil3* +%{mozappdir}/bundled/%{_lib}/libsmime3* +%{mozappdir}/bundled/%{_lib}/libsoftokn* +%{mozappdir}/bundled/%{_lib}/libssl3* +%{mozappdir}/bundled/%{_lib}/libnspr4.so +%{mozappdir}/bundled/%{_lib}/libplc4.so +%{mozappdir}/bundled/%{_lib}/libplds4.so +%endif + +#=============================================================================== + +%changelog +* Tue Apr 05 2022 Eike Rathke - 91.8.0-1 +- Update to 91.8.0 + +* Tue Mar 08 2022 Eike Rathke - 91.7.0-2 +- Update to 91.7.0 build2 + +* Thu Mar 03 2022 Eike Rathke - 91.7.0-1 +- Update to 91.7.0 build1 + +* Fri Feb 11 2022 Jan Horak - 91.6.0-2 +- Move appdata to metainfo and use stock icon instead of remote + +* Mon Feb 07 2022 Eike Rathke - 91.6.0-1 +- Update to 91.6.0 build1 + +* Tue Jan 18 2022 Jan Horak - 91.5.0-3 +- Using upstream appdata file + +* Fri Jan 14 2022 Jan Horak - 91.5.0-2 +- Enabled optimalization for s390x + +* Fri Jan 07 2022 Eike Rathke - 91.5.0-1 +- Update to 91.5.0 build1 + +* Mon Dec 06 2021 Eike Rathke - 91.4.0-2 +- Update to 91.4.0 build2 + +* Wed Dec 01 2021 Eike Rathke - 91.4.0-1 +- Update to 91.4.0 build1 + +* Tue Nov 02 2021 Eike Rathke - 91.3.0-2 +- Update to 91.3.0 build2 + +* Mon Nov 01 2021 Eike Rathke - 91.3.0-1 +- Update to 91.3.0 build1 + +* Fri Oct 08 2021 Eike Rathke - 91.2.0-1 +- Update to 91.2.0 + +* Tue Sep 07 2021 Eike Rathke - 78.14.0-1 +- Update to 78.14.0 + +* Thu Aug 19 2021 Carlos O'Donell - 78.13.0-2 +- Rebuilt for libffi 3.4.2 SONAME transition. + Related: rhbz#1891914 + +* Tue Aug 10 2021 Eike Rathke - 78.13.0-1 +- Update to 78.13.0 + +* Tue Aug 10 2021 Mohan Boddu - 78.12.0-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Fri Jul 30 2021 Tomas Popela - 78.12.0-3 +- Add script to process the official tarball to comply with PELC review +- Fix the build with newer glibc + +* Mon Jul 12 2021 Eike Rathke - 78.12.0-2 +- Update to 78.12.0 build2 + +* Thu Jul 08 2021 Eike Rathke - 78.12.0-1 +- Update to 78.12.0 build1 + +* Wed Jun 30 2021 Jan Horak - 78.11.0-2 +- Added bundled libraries, update to 78.11 + +* Tue Jun 22 2021 Mohan Boddu - 78.8.0-5 +- Rebuilt for RHEL 9 BETA for openssl 3.0 + Related: rhbz#1971065 + +* Fri Apr 16 2021 Mohan Boddu - 78.8.0-4 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 +- Fixing MOZ_SMP_FLAGS + +* Mon Mar 01 2021 Jan Horak - 78.8.0-2 +- Removed autoconf213 dependency + +* Mon Feb 22 2021 Jan Horak - 78.8.0-1 +- Update to 78.8.0 build1 + +* Tue Jan 12 2021 Eike Rathke - 78.6.1-1 +- Update to 78.6.1 + +* Tue Dec 15 2020 Eike Rathke - 78.6.0-1 +- Update to 78.6.0 + +* Fri Dec 04 2020 Jan Horak - 78.5.1-1 +- Update to 78.5.1 build1 + +* Wed Nov 18 2020 Eike Rathke - 78.5.0-1 +- Update to 78.5.0 build3 + +* Thu Nov 12 2020 Eike Rathke - 78.4.3-1 +- Update to 78.4.3 + +* Wed Oct 21 2020 Eike Rathke - 78.4.0-1 +- Update to 78.4.0 build1 +- Disabled telemetry + +* Tue Sep 29 2020 Jan Horak - 78.3.1-1 +- Update to 78.3.1 build1 + +* Sat Sep 19 2020 Jan Horak - 78.3.0-3 +- Update to 78.3.0 build1 +- Remove librdp.so as long as we cannot ship it in RHEL + +* Tue Sep 08 2020 Jan Horak - 78.2.1-1 +- Update to 78.2.1 build1 + +* Wed Sep 02 2020 Jan Horak - 68.12.0-1 +- Update to 68.12.0 build1 + +* Tue Aug 04 2020 Jan Horak - 68.11.0-1 +- Update to 68.11.0 build1 + +* Wed Jul 08 2020 Jan Horak - 68.10.0-1 +- Update to 68.10.0 build1 + +* Fri Jun 05 2020 Jan Horak - 68.9.0-1 +- Update to 68.9.0 build1 + +* Tue May 05 2020 Jan Horak - 68.8.0-1 +- Update to 68.8.0 build2 + +* Tue Apr 14 2020 Jan Horak - 68.7.0-1 +- Update to 68.7.0 build1 + +* Fri Mar 13 2020 Jan Horak - 68.6.0-1 +- Update to 68.6.0 build2 + +* Thu Feb 13 2020 Jan Horak - 68.5.0-1 +- Update to 68.5.0 build1 + +* Mon Jan 13 2020 Jan Horak - 68.4.1-2 +- Update to 68.4.1 build1 + +* Mon Dec 02 2019 Jan Horak - 68.3.0-2 +- Update to 68.3.0 build2 + +* Fri Oct 25 2019 Jan Horak - 68.2.0-2 +- Added patch for TLS 1.3 support. + +* Tue Oct 22 2019 Jan Horak - 68.2.0-1 +- Update to 68.2.0 + +* Thu Oct 3 2019 Jan Horak - 68.1.1-2 +- Update to 68.1.1 + +* Wed Sep 4 2019 Jan Horak - 60.9.0-2 +- Update to 60.9.0 + +* Thu Jul 4 2019 Martin Stransky - 60.8.0-1 +- Updated to 60.8.0 + +* Wed Jul 3 2019 Martin Stransky - 60.7.2-3 +- Rebuild to fix rhbz#1725919 - Thunderbird fails to authenticate + with gmail with ssl/tls and OAuth2. + +* Fri Jun 21 2019 Jan Horak - 60.7.2-2 +- Update to 60.7.2 build2 + +* Thu Jun 20 2019 Jan Horak - 60.7.2-1 +- Update to 60.7.2 + +* Tue Jun 18 2019 Jan Horak - 60.7.1-1 +- Update to 60.7.1 + +* Mon May 27 2019 Martin Stransky - 60.7.0-1 +- Update to 60.7.0 + +* Mon Mar 25 2019 Martin Stransky - 60.6.1-1 +- Update to 60.6.1 + +* Tue Mar 19 2019 Martin Stransky - 60.6.0-1 +- Update to 60.6.0 + +* Tue Jan 29 2019 Martin Stransky - 60.5.0-1 +- Update to 60.5.0 + +* Thu Jan 3 2019 Jan Horak - 60.4.0-1 +- Update to 60.4.0 + +* Wed Oct 31 2018 Jan Horak - 60.3.0-1 +- Update to 60.3.0 + +* Wed Oct 31 2018 Jan Horak - 60.2.1-6 +- Fixed missing calendar langpacks + +* Tue Oct 16 2018 Jan Horak - 60.2.1-5 +- Fixing minor issues + +* Wed Oct 10 2018 Jan Horak - 60.2.1-3 +- Reverting deleting of key3db + +* Wed Oct 3 2018 Jan Horak - 60.2.1-2 +- Update to 60.2.1 +- Added fix for rhbz#1546988 + +* Fri Sep 14 2018 Jan Horak - 60.0-1 +- Rebase to version 60 + +* Tue Jul 10 2018 Jan Horak - 52.9.1-1 +- Update to 52.9.1 + +* Thu May 17 2018 Jan Horak - 52.8.0-2 +- Update to 52.8.0 + +* Mon Mar 26 2018 Jan Horak - 52.7.0-1 +- Update to 52.7.0 + +* Fri Jan 26 2018 Jan Horak - 52.6.0-1 +- Update to 52.6.0 + +* Tue Jan 2 2018 Jan Horak - 52.5.2-1 +- Update to 52.5.2 + +* Mon Nov 27 2017 Jan Horak - 52.5.0-1 +- Update to 52.5.0 + +* Wed Oct 4 2017 Jan Horak - 52.4.0-2 +- Update to 52.4.0 (b2) + +* Mon Aug 21 2017 Jan Horak - 52.3.0-1 +- Update to 52.3.0 + +* Thu Jun 29 2017 Jan Horak - 52.2.1-1 +- Update to 52.2.1 + +* Thu Jun 15 2017 Jan Horak - 52.2.0-1 +- Update to 52.2.0 + +* Tue May 2 2017 Jan Horak - 52.1.0-1 +- Update to 52.1.0 + +* Thu Apr 13 2017 Jan Horak - 52.0.1-1 +- Update to 52.0.1 + +* Tue Mar 7 2017 Jan Horak - 45.8.0-1 +- Update to 45.8.0 + +* Thu Jan 26 2017 Jan Horak - 45.7.0-1 +- Update to 45.7.0 + +* Fri Dec 16 2016 Martin Stransky - 45.6.0-1 +- Update to the latest upstream (45.6.0) + +* Thu Dec 1 2016 Jan Horak - 45.5.1-1 +- Update to 45.5.1 + +* Fri Nov 18 2016 Jan Horak - 45.5.0-1 +- Update to 45.5.0 + +* Thu Sep 29 2016 Jan Horak - 45.4.0-1 +- Update to 45.4.0 + +* Fri Aug 26 2016 Jan Horak - 45.3.0-1 +- Update to 45.3.0 + +* Wed Jun 29 2016 Jan Horak - 45.2-1 +- Update to 45.2 + +* Mon Jun 6 2016 Jan Horak - 45.1.1-1 +- Update to 45.1.1 + +* Mon Jun 06 2016 Jan Horak - 45.1.0-5 +- Do not add symlinks to some langpacks + +* Tue May 17 2016 Jan Horak - 45.1.0-4 +- Update to 45.1.0 + +* Tue Apr 26 2016 Jan Horak - 45.0-5 +- Update to 45.0 + +* Tue Sep 29 2015 Jan Horak - 38.3.0-1 +- Update to 38.3.0 + +* Fri Aug 14 2015 Jan Horak - 38.2.0-1 +- Update to 38.2.0 + +* Wed Jul 15 2015 Jan Horak - 38.1.0-2 +- Rebase to 38.1.0 + +* Wed Jul 15 2015 Jan Horak - 31.8.0-1 +- Update to 31.8.0 + +* Sun May 10 2015 Jan Horak - 31.7.0-1 +- Update to 31.7.0 + +* Tue Mar 31 2015 Jan Horak - 31.6.0-1 +- Update to 31.6.0 + +* Mon Feb 23 2015 Jan Horak - 31.5.0-2 +- Update to 31.5.0 + +* Sat Jan 10 2015 Jan Horak - 31.4.0-1 +- Update to 31.4.0 + +* Mon Dec 22 2014 Jan Horak - 31.3.0-2 +- Fixed problems with dictionaries (mozbz#1097550) + +* Fri Nov 28 2014 Jan Horak - 31.3.0-1 +- Update to 31.3.0 + +* Thu Oct 30 2014 Jan Horak - 31.2.0-2 +- Update to 31.2.0 + +* Wed Oct 1 2014 Martin Stransky - 31.1.1-5 +- Sync preferences with Firefox + +* Thu Sep 18 2014 Yaakov Selkowitz - 31.1.1-4 +- Fix dependency generation for internal libraries (#1140471) + +* Fri Sep 12 2014 Jan Horak - 31.1.1-3 +- Update to 31.1.1 + +* Tue Sep 9 2014 Jan Horak - 31.1.0-4 +- Use system libffi + +* Wed Sep 3 2014 Jan Horak - 31.1.0-2 +- Added fix for ppc64le + +* Mon Sep 1 2014 Jan Horak - 31.1.0-1 +- Update to 31.1.0 + +* Wed Jul 30 2014 Martin Stransky - 31.0-2 +- Added patch for mozbz#858919 + +* Tue Jul 29 2014 Martin Stransky - 31.0-1 +- Update to 31.0 + +* Tue Jul 22 2014 Jan Horak - 24.7.0-1 +- Update to 24.7.0 + +* Mon Jun 9 2014 Jan Horak - 24.6.0-1 +- Update to 24.6.0 + +* Sun Jun 08 2014 Fedora Release Engineering - 24.5.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Brent Baude - 24.5.0-5 +- Moving the ppc64 conditional up before the cd so it will +- apply cleanly + +* Fri May 23 2014 Martin Stransky - 24.5.0-4 +- Added a build fix for ppc64 - rhbz#1100495 + +* Mon May 5 2014 Jan Horak - 24.5.0-3 +- Fixed find requires + +* Mon Apr 28 2014 Jan Horak - 24.5.0-1 +- Update to 24.5.0 + +* Tue Apr 22 2014 Jan Horak - 24.4.0-2 +- Added support for ppc64le + +* Tue Mar 18 2014 Jan Horak - 24.4.0-1 +- Update to 24.4.0 + +* Mon Feb 3 2014 Jan Horak - 24.3.0-1 +- Update to 24.3.0 + +* Mon Dec 16 2013 Martin Stransky - 24.2.0-4 +- Fixed rhbz#1024232 - thunderbird: squiggly lines used + for spelling correction disappear randomly + +* Fri Dec 13 2013 Martin Stransky - 24.2.0-3 +- Build with -Werror=format-security (rhbz#1037353) + +* Wed Dec 11 2013 Martin Stransky - 24.2.0-2 +- rhbz#1001998 - added a workaround for system notifications + +* Mon Dec 9 2013 Jan Horak - 24.2.0-1 +- Update to 24.2.0 + +* Sat Nov 02 2013 Dennis Gilmore - 24.1.0-2 +- remove ExcludeArch: armv7hl + +* Wed Oct 30 2013 Jan Horak - 24.1.0-1 +- Update to 24.1.0 + +* Thu Oct 17 2013 Martin Stransky - 24.0-4 +- Fixed rhbz#1005611 - BEAST workaround not enabled in Firefox + +* Wed Sep 25 2013 Jan Horak - 24.0-3 +- Update to 24.0 + +* Mon Sep 23 2013 Jan Horak - 17.0.9-1 +- Update to 17.0.9 ESR + +* Mon Aug 5 2013 Jan Horak - 17.0.8-1 +- Update to 17.0.8 + +* Sun Aug 04 2013 Fedora Release Engineering - 17.0.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jun 25 2013 Jan Horak - 17.0.7-1 +- Update to 17.0.7 + +* Wed Jun 12 2013 Jan Horak - 17.0.6-2 +- Fixed rhbz#973371 - unable to install addons + +* Tue May 14 2013 Jan Horak - 17.0.6-1 +- Update to 17.0.6 + +* Tue Apr 2 2013 Jan Horak - 17.0.5-1 +- Update to 17.0.5 + +* Mon Mar 11 2013 Jan Horak - 17.0.4-1 +- Update to 17.0.4 + +* Tue Feb 19 2013 Jan Horak - 17.0.3-1 +- Update to 17.0.3 + +* Fri Feb 15 2013 Fedora Release Engineering - 17.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Jan 15 2013 Martin Stransky - 17.0.2-3 +- Added fix for NM regression (mozbz#791626) + +* Tue Jan 15 2013 Jan Horak - 17.0.2-2 +- Added mozilla-746112 patch to fix crash on ppc(64) + +* Thu Jan 10 2013 Jan Horak - 17.0.2-1 +- Update to 17.0.2 + +* Mon Nov 19 2012 Jan Horak - 17.0-1 +- Update to 17.0 + +* Mon Oct 29 2012 Jan Horak - 16.0.2-1 +- Update to 16.0.2 + +* Tue Oct 16 2012 Jan Horak - 16.0.1-2 +- Fixed nss and nspr versions + +* Thu Oct 11 2012 Jan Horak - 16.0.1-1 +- Update to 16.0.1 + +* Tue Oct 9 2012 Jan Horak - 16.0-1 +- Update to 16.0 + +* Tue Sep 18 2012 Dan Horák - 15.0.1-3 +- Added fix for rhbz#855923 - TB 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 + +* Fri Sep 7 2012 Jan Horak - 15.0-2 +- Added workaround fix for PPC (rbhz#852698) + +* Mon Aug 27 2012 Jan Horak - 15.0-1 +- Update to 15.0 + +* Wed Aug 1 2012 Martin Stransky - 14.0-4 +- Removed StartupWMClass (rhbz#844863) +- Fixed -g parameter +- Removed thunderbird-devel before packing to avoid debugsymbols duplicities (rhbz#823940) + +* Sat Jul 21 2012 Fedora Release Engineering - 14.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jul 17 2012 Jan Horak - 14.0-1 +- Update to 14.0 + +* Fri Jun 15 2012 Jan Horak - 13.0.1-1 +- Update to 13.0.1 + +* Tue Jun 5 2012 Jan Horak - 13.0-1 +- Update to 13.0 + +* Mon May 7 2012 Martin Stransky - 12.0.1-2 +- Fixed #717245 - adhere Static Library Packaging Guidelines + +* Mon Apr 30 2012 Jan Horak - 12.0.1-1 +- Update to 12.0.1 + +* Tue Apr 24 2012 Jan Horak - 12.0-1 +- Update to 12.0 + +* Mon Apr 16 2012 Peter Robinson - 11.0.1-2 +- Add upstream patch to fix FTBFS on ARM + +* Thu Mar 29 2012 Jan Horak - 11.0.1-1 +- Update to 11.0.1 + +* Thu Mar 22 2012 Jan Horak - 11.0-6 +- Added translations to thunderbird.desktop file + +* Fri Mar 16 2012 Martin Stransky - 11.0-5 +- gcc 4.7 build fixes + +* Wed Mar 14 2012 Peter Robinson - 11.0-4 +- Add ARM configuration options + +* Wed Mar 14 2012 Martin Stransky - 11.0-3 +- Build with system libvpx + +* Tue Mar 13 2012 Martin Stransky - 11.0-1 +- Update to 11.0 + +* Thu Feb 23 2012 Jan Horak - 10.0.1-3 +- Added fix for proxy settings mozbz#682832 + +* Thu Feb 16 2012 Martin Stransky - 10.0.1-2 +- Added fix for mozbz#727401 + +* Thu Feb 9 2012 Jan Horak - 10.0.1-1 +- Update to 10.0.1 + +* Mon Feb 6 2012 Martin Stransky - 10.0-2 +- gcc 4.7 build fixes + +* Tue Jan 31 2012 Jan Horak - 10.0-1 +- Update to 10.0 + +* Sat Jan 14 2012 Fedora Release Engineering - 9.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Jan 05 2012 Dan Horák - 9.0-6 +- disable jemalloc on s390(x) (taken from xulrunner) + +* Wed Jan 04 2012 Dan Horák - 9.0-5 +- fix build on secondary arches (cherry-picked from 13afcd4c097c) + +* Thu Dec 22 2011 Jan Horak - 9.0-4 +- Update to 9.0 + +* Fri Dec 9 2011 Martin Stransky - 8.0-4 +- enabled gio support (#760644) + +* Tue Nov 29 2011 Jan Horak - 8.0-3 +- Fixed s390x issues + +* Thu Nov 10 2011 Jan Horak - 8.0-2 +- Enable Mozilla's crash reporter again for all archs +- Temporary workaround for langpacks +- Disabled addon check UI (#753551) + +* Tue Nov 8 2011 Jan Horak - 8.0-1 +- Update to 8.0 + +* Tue Oct 18 2011 Martin Stransky - 7.0.1-3 +- Added NM patches (mozbz#627672, mozbz#639959) + +* Wed Oct 12 2011 Dan Horák - 7.0.1-2 +- fix build on secondary arches (copied from xulrunner) + +* 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 + +* Wed Aug 31 2011 Dan Horák - 6.0-2 +- add secondary-ipc patch from xulrunner + +* Tue Aug 16 2011 Jan Horak - 6.0-1 +- Update to 6.0 + +* Tue Aug 16 2011 Remi Collet 5.0-4 +- Don't unzip the langpacks + +* Mon Aug 15 2011 Jan Horak - 5.0-3 +- Rebuild due to rhbz#728707 + +* Wed Jul 20 2011 Dan Horák - 5.0-2 +- add xulrunner patches for secondary arches + +* Tue Jun 28 2011 Jan Horak - 5.0-1 +- Update to 5.0 + +* Tue Jun 21 2011 Jan Horak - 3.1.11-1 +- Update to 3.1.11 + +* Wed May 25 2011 Caolán McNamara - 3.1.10-2 +- rebuild for new hunspell + +* Thu Apr 28 2011 Jan Horak - 3.1.10-1 +- Update to 3.1.10 + +* Thu Apr 21 2011 Christopher Aillon - 3.1.9-7 +- Make gvfs-open launch a compose window (salimma) +- Spec file cleanups (salimma, caillon) +- Split out mozilla crashreporter symbols to its own debuginfo package (caillon) + +* Sat Apr 2 2011 Christopher Aillon - 3.1.9-6 +- Drop gio support: the code hooks don't exist yet for TB 3.1.x + +* Fri Apr 1 2011 Orion Poplawski - 3.1.9-5 +- Enable startup notification + +* Sun Mar 20 2011 Dan Horák - 3.1.9-4 +- updated the s390 build patch + +* Fri Mar 18 2011 Jan Horak - 3.1.9-3 +- Removed gnome-vfs2, libgnomeui and libgnome from build requires + +* Wed Mar 9 2011 Jan Horak - 3.1.9-2 +- Disabled gnomevfs, enabled gio + +* Mon Mar 7 2011 Jan Horak - 3.1.9-1 +- Update to 3.1.9 + +* Tue Mar 1 2011 Jan Horak - 3.1.8-3 +- Update to 3.1.8 + +* Wed Feb 9 2011 Christopher Aillon - 3.1.7-6 +- Drop the -lightning subpackage, it needs to be in its own SRPM + +* Mon Feb 7 2011 Christopher Aillon - 3.1.7-5 +- Bring back the default mailer check but fix up the directory + +* Wed Dec 15 2010 Jan Horak - 3.1.7-4 +- Mozilla crash reporter enabled + +* Thu Dec 9 2010 Jan Horak - 3.1.7-2 +- Fixed useragent + +* Thu Dec 9 2010 Jan Horak - 3.1.7-1 +- Update to 3.1.7 + +* Sat Nov 27 2010 Remi Collet - 3.1.6-8 +- fix cairo + nspr required version +- lightning: fix thunderbird version required +- lightning: fix release (b3pre) +- lightning: clean install + +* Mon Nov 22 2010 Jan Horak - 3.1.6-7 +- Added x-scheme-handler/mailto to thunderbird.desktop file + +* Mon Nov 8 2010 Jan Horak - 3.1.6-4 +- Added libnotify patch +- Removed dependency on static libraries + +* Fri Oct 29 2010 Jan Horak - 3.1.6-2 +- Move thunderbird-lightning extension from Sunbird package to Thunderbird + +* Wed Oct 27 2010 Jan Horak - 3.1.6-1 +- Update to 3.1.6 + +* Tue Oct 19 2010 Jan Horak - 3.1.5-1 +- Update to 3.1.5 + +* Thu Sep 16 2010 Dan Horák - 3.1.3-2 +- fix build on s390 + +* Tue Sep 7 2010 Jan Horak - 3.1.3-1 +- Update to 3.1.3 + +* Fri Aug 6 2010 Jan Horak - 3.1.2-1 +- Update to 3.1.2 +- Disable updater + +* Tue Jul 20 2010 Jan Horak - 3.1.1-1 +- Update to 3.1.1 + +* Thu Jun 24 2010 Jan Horak - 3.1-1 +- Thunderbird 3.1 + +* Fri Jun 11 2010 Jan Horak - 3.1-0.3.rc2 +- TryExec added to desktop file + +* Wed Jun 9 2010 Christopher Aillon 3.1-0.2.rc2 +- Thunderbird 3.1 RC2 + +* Tue May 25 2010 Christopher Aillon 3.1-0.1.rc1 +- Thunderbird 3.1 RC1 + +* Fri Apr 30 2010 Jan Horak - 3.0.4-3 +- Fix for mozbz#550455 + +* Tue Apr 13 2010 Martin Stransky - 3.0.4-2 +- Fixed langpacks (#580444) + +* Tue Mar 30 2010 Jan Horak - 3.0.4-1 +- Update to 3.0.4 + +* Sat Mar 06 2010 Kalev Lember - 3.0.3-2 +- Own extension directories (#532132) + +* Mon Mar 1 2010 Jan Horak - 3.0.3-1 +- Update to 3.0.3 + +* Thu Feb 25 2010 Jan Horak - 3.0.2-1 +- Update to 3.0.2 + +* Wed Jan 20 2010 Martin Stransky - 3.0.1-1 +- Update to 3.0.1 + +* Mon Jan 18 2010 Martin Stransky - 3.0-5 +- Added fix for #480603 - thunderbird takes + unacceptably long time to start + +* Wed Dec 9 2009 Jan Horak - 3.0-4 +- Update to 3.0 + +* Thu Dec 3 2009 Jan Horak - 3.0-3.13.rc2 +- Update to RC2 + +* Wed Nov 25 2009 Jan Horak - 3.0-3.12.rc1 +- Sync with Mozilla latest RC1 build + +* Thu Nov 19 2009 Jan Horak - 3.0-3.11.rc1 +- Update to RC1 + +* Thu Sep 17 2009 Christopher Aillon - 3.0-3.9.b4 +- Update to 3.0 b4 + +* Thu Aug 6 2009 Martin Stransky - 3.0-3.8.beta3 +- Added fix for #437596 +- Removed unused patches + +* Thu Aug 6 2009 Jan Horak - 3.0-3.7.beta3 +- Removed unused build requirements + +* Mon Aug 3 2009 Jan Horak - 3.0-3.6.beta3 +- Build with system hunspell + +* Sun Jul 26 2009 Fedora Release Engineering - 3.0-3.5.b3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Jul 24 2009 Jan Horak - 3.0-2.5.beta3 +- Use system hunspell + +* Tue Jul 21 2009 Jan Horak - 3.0-2.4.beta3 +- Update to 3.0 beta3 + +* Mon Mar 30 2009 Jan Horak - 3.0-2.2.beta2 +- Fixed open-browser.sh to use xdg-open instead of gnome-open + +* Mon Mar 23 2009 Christopher Aillon - 3.0-2.1.beta2 +- Disable the default app nag dialog + +* Tue Mar 17 2009 Jan Horak - 3.0-2.beta2 +- Fixed clicked link does not open in browser (#489120) +- Fixed missing help in thunderbird (#488885) + +* Mon Mar 2 2009 Jan Horak - 3.0-1.beta2 +- Update to 3.0 beta2 +- Added Patch2 to build correctly when building with --enable-shared option + +* Wed Feb 25 2009 Fedora Release Engineering - 2.0.0.18-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Jan 07 2009 Christopher Aillon - 2.0.0.18-2 +- Disable the crash dialog + +* Wed Nov 19 2008 Christopher Aillon 2.0.0.18-1 +- Update to 2.0.0.18 + +* Thu Oct 9 2008 Christopher Aillon 2.0.0.17-1 +- Update to 2.0.0.17 + +* Wed Jul 23 2008 Christopher Aillon 2.0.0.16-1 +- Update to 2.0.0.16 + +* Thu May 1 2008 Christopher Aillon 2.0.0.14-1 +- Update to 2.0.0.14 +- Use the system dictionaries + +* Fri Apr 18 2008 Christopher Aillon 2.0.0.12-6 +- Icon belongs in _datadir/pixmaps + +* Fri Apr 18 2008 Christopher Aillon 2.0.0.12-5 +- rebuilt + +* Mon Apr 7 2008 Christopher Aillon 2.0.0.12-4 +- Add %%lang attributes to langpacks + +* Sat Mar 15 2008 Christopher Aillon 2.0.0.12-3 +- Avoid conflict between gecko debuginfos + +* Mon Mar 03 2008 Martin Stransky 2.0.0.12-2 +- Updated starting script (#426331) + +* Tue Feb 26 2008 Christopher Aillon 2.0.0.12-1 +- Update to 2.0.0.12 +- Fix up icon location and some scriptlets + +* Sun Dec 9 2007 Christopher Aillon 2.0.0.9-2 +- Fix some rpmlint warnings +- Drop some old patches and obsoletes + +* Thu Nov 15 2007 Christopher Aillon 2.0.0.9-1 +- Update to 2.0.0.9 + +* Wed Sep 26 2007 Martin Stransky 2.0.0.6-6 +- Fixed #242657 - firefox -g doesn't work + +* Tue Sep 25 2007 Christopher Aillon 2.0.0.6-5 +- Removed hardcoded MAX_PATH, PATH_MAX and MAXPATHLEN macros + +* Tue Sep 11 2007 Christopher Aillon 2.0.0.6-4 +- Fix crashes when using GTK+ themes containing a gtkrc which specify + GtkOptionMenu::indicator_size and GtkOptionMenu::indicator_spacing + +* Mon Sep 10 2007 Martin Stransky 2.0.0.6-3 +- added fix for #246248 - firefox crashes when searching for word "do" + +* Mon Aug 13 2007 Christopher Aillon 2.0.0.6-2 +- Update the license tag + +* Wed Aug 8 2007 Christopher Aillon 2.0.0.6-1 +- Update to 2.0.0.6 +- Own the application directory (#244901) + +* Tue Jul 31 2007 Martin Stransky 2.0.0.0-3 +- added pango ligature fix + +* Thu Apr 19 2007 Christopher Aillon 2.0.0.0-1 +- Update to 2.0.0.0 Final + +* Fri Apr 13 2007 Christopher Aillon 2.0.0.0-0.5.rc1 +- Fix the desktop file +- Clean up the files list +- Remove the default client stuff from the pref window + +* Thu Apr 12 2007 Christopher Aillon 2.0.0.0-0.4.rc1 +- Rebuild into Fedora + +* Wed Apr 11 2007 Christopher Aillon 2.0.0.0-0.3.rc1 +- Update langpacks + +* Thu Apr 5 2007 Christopher Aillon 2.0.0.0-0.2.rc1 +- Build option tweaks +- Bring the install section to parity with Firefox's + +* Thu Apr 5 2007 Christopher Aillon 2.0.0.0-0.1.rc1 +- Update to 2.0.0.0 RC1 + +* Sun Mar 25 2007 Christopher Aillon 1.5.0.11-1 +- Update to 1.5.0.11 + +* Fri Mar 2 2007 Martin Stransky 1.5.0.10-1 +- Update to 1.5.0.10 + +* Mon Feb 12 2007 Martin Stransky 1.5.0.9-8 +- added fix for #227406: garbage characters on some websites + (when pango is disabled) + +* Tue Jan 30 2007 Christopher Aillon 1.5.0.9-7 +- Updated cursor position patch from tagoh to fix issue with "jumping" + cursor when in a textfield with tabs. + +* Tue Jan 30 2007 Christopher Aillon 1.5.0.9-6 +- Fix the DND implementation to not grab, so it works with new GTK+. + +* Thu Dec 21 2006 Behdad Esfahbod 1.5.0.9-5 +- Added firefox-1.5-pango-underline.patch + +* Wed Dec 20 2006 Behdad Esfahbod 1.5.0.9-4 +- Added firefox-1.5-pango-justified-range.patch + +* Tue Dec 19 2006 Behdad Esfahbod 1.5.0.9-3 +- Added firefox-1.5-pango-cursor-position-more.patch + +* Tue Dec 19 2006 Matthias Clasen 1.5.0.9-2 +- Add a Requires: launchmail (#219884) + +* Tue Dec 19 2006 Christopher Aillon 1.5.0.9-1 +- Update to 1.5.0.9 +- Take firefox's pango fixes +- Don't offer to import...nothing. + +* Tue Nov 7 2006 Christopher Aillon 1.5.0.8-1 +- Update to 1.5.0.8 +- Allow choosing of download directory +- Take the user to the correct directory from the Download Manager. +- Patch to add support for printing via pango from Behdad. + +* Sun Oct 8 2006 Christopher Aillon - 1.5.0.7-4 +- Default to use of system colors + +* Wed Oct 4 2006 Christopher Aillon - 1.5.0.7-3 +- Bring the invisible character to parity with GTK+ + +* Wed Sep 27 2006 Christopher Aillon - 1.5.0.7-2 +- Fix crash when changing gtk key theme +- Prevent UI freezes while changing GNOME theme +- Remove verbiage about pango; no longer required by upstream. + +* Wed Sep 13 2006 Christopher Aillon - 1.5.0.7-1 +- Update to 1.5.0.7 + +* Thu Sep 7 2006 Christopher Aillon - 1.5.0.5-8 +- Shuffle order of the install phase around + +* Thu Sep 7 2006 Christopher Aillon - 1.5.0.5-7 +- Let there be art for Alt+Tab again +- s/tbdir/mozappdir/g + +* Wed Sep 6 2006 Christopher Aillon - 1.5.0.5-6 +- Fix for cursor position in editor widgets by tagoh and behdad (#198759) + +* Tue Sep 5 2006 Christopher Aillon - 1.5.0.5-5 +- Update nopangoxft.patch +- Fix rendering of MathML thanks to Behdad Esfahbod. +- Update start page text to reflect the MathML fixes. +- Enable pango by default on all locales +- Build using -rpath +- Re-enable GCC visibility + +* Thu Aug 3 2006 Kai Engert - 1.5.0.5-4 +- Fix a build failure in mailnews mime code. + +* Tue Aug 1 2006 Matthias Clasen - 1.5.0.5-3 +- Rebuild + +* Thu Jul 27 2006 Christopher Aillon - 1.5.0.5-2 +- Update to 1.5.0.5 + +* Wed Jul 12 2006 Jesse Keating - 1.5.0.4-2.1 +- rebuild + +* Mon Jun 12 2006 Kai Engert - 1.5.0.4-2 +- Update to 1.5.0.4 +- Fix desktop-file-utils requires + +* Wed Apr 19 2006 Christopher Aillon - 1.5.0.2-2 +- Update to 1.5.0.2 + +* Thu Mar 16 2006 Christopher Aillon - 1.5-7 +- Bring the other arches back + +* Mon Mar 13 2006 Christopher Aillon - 1.5.6 +- Temporarily disable other arches that we don't ship FC5 with, for time + +* Mon Mar 13 2006 Christopher Aillon - 1.5-5 +- Add a notice to the mail start page denoting this is a pango enabled build. + +* Fri Feb 10 2006 Christopher Aillon - 1.5-3 +- Add dumpstack.patch +- Improve the langpack install stuff + +* Tue Feb 07 2006 Jesse Keating - 1.5-2.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Jan 27 2006 Christopher Aillon - 1.5-2 +- Add some langpacks back in +- Stop providing MozillaThunderbird + +* Thu Jan 12 2006 Christopher Aillon - 1.5-1 +- Official 1.5 release is out + +* Wed Jan 11 2006 Christopher Aillon - 1.5-0.5.6.rc1 +- Fix crash when deleting highlighted text while composing mail within + plaintext editor with spellcheck enabled. + +* Tue Jan 3 2006 Christopher Aillon - 1.5-0.5.5.rc1 +- Looks like we can build on ppc64 again. + +* Fri Dec 16 2005 Christopher Aillon - 1.5-0.5.4.rc1 +- Rebuild + +* Fri Dec 16 2005 Christopher Aillon - 1.5-0.5.3.rc1 +- Once again, disable ppc64 because of a new issue. + See https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=175944 + +- Use the system NSS libraries +- Build on ppc64 + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Nov 28 2005 Christopher Aillon - 1.5-0.5.1.rc1 +- Fix issue with popup dialogs and other actions causing lockups + +* Sat Nov 5 2005 Christopher Aillon 1.5-0.5.0.rc1 +- Update to 1.5 rc1 + +* Sat Oct 8 2005 Christopher Aillon 1.5-0.5.0.beta2 +- Update to 1.5 beta2 + +* Wed Sep 28 2005 Christopher Aillon 1.5-0.5.0.beta1 +- Update to 1.5 beta1 +- Bring the install phase of the spec file up to speed + +* Sun Aug 14 2005 Christopher Aillon 1.0.6-4 +- Rebuild + +* Sat Aug 6 2005 Christopher Aillon 1.0.6-3 +- Add patch to make file chooser dialog modal + +* Fri Jul 22 2005 Christopher Aillon 1.0.6-2 +- Update to 1.0.6 + +* Mon Jul 18 2005 Christopher Aillon 1.0.6-0.1.fc5 +- 1.0.6 Release Candidate + +* Fri Jul 15 2005 Christopher Aillon 1.0.2-8 +- Use system NSPR +- Fix crash on 64bit platforms (#160330) + +* Thu Jun 23 2005 Kristian Høgsberg 1.0.2-7 +- Add firefox-1.0-pango-cairo.patch to get rid of the last few Xft + references, fixing the "no fonts" problem. + +* Fri May 13 2005 Christopher Aillon 1.0.2-6 +- Change the Exec line in the desktop file to `thunderbird` + +* Fri May 13 2005 Christopher Aillon 1.0.2-5 +- Update pango patche, MOZ_DISABLE_PANGO now works as advertised. + +* Mon May 9 2005 Christopher Aillon 1.0.2-4 +- Add temporary workaround to not create files in the user's $HOME (#149664) + +* Wed May 4 2005 Christopher Aillon 1.0.2-3 +- Don't have downloads "disappear" when downloading to desktop (#139015) +- Fix for some more cursor issues in textareas (149991, 150002, 152089) +- Add upstream patch to fix bidi justification of pango +- Add patch to fix launching of helper applications +- Add patch to properly link against libgfxshared_s.a +- Fix multilib conflicts + +* Wed Apr 27 2005 Warren Togami +- correct confusing PANGO vars in startup script + +* Wed Mar 23 2005 Christopher Aillon 1.0.2-1 +- Thunderbird 1.0.2 + +* Tue Mar 8 2005 Christopher Aillon 1.0-5 +- Add patch to compile against new fortified glibc macros + +* Sat Mar 5 2005 Christopher Aillon 1.0-4 +- Rebuild against GCC 4.0 +- Add execshield patches +- Minor specfile cleanup + +* Mon Dec 20 2004 Christopher Aillon 1.0-3 +- Rebuild + +* Thu Dec 16 2004 Christopher Aillon 1.0-2 +- Add RPM version to useragent + +* Thu Dec 16 2004 Christopher Blizzard +- Port over pango patches from firefox + +* Wed Dec 8 2004 Christopher Aillon 1.0-1 +- Thunderbird 1.0 + +* Mon Dec 6 2004 Christopher Aillon 1.0-0.rc1.1 +- Fix advanced prefs + +* Fri Dec 3 2004 Christopher Aillon +- Make this run on s390(x) now for real + +* Wed Dec 1 2004 Christopher Aillon 1.0-0.rc1.0 +- Update to 1.0 rc1 + +* Fri Nov 19 2004 Christopher Aillon +- Add patches to build and run on s390(x) + +* Thu Nov 11 2004 Christopher Aillon 0.9.0-2 +- Rebuild to fix file chooser + +* Fri Nov 5 2004 Christopher Aillon 0.9.0-1 +- Update to 0.9 + +* Fri Oct 22 2004 Christopher Aillon 0.8.0-10 +- Prevent inlining of stack direction detection (#135255) + +* Tue Oct 19 2004 Christopher Aillon 0.8.0-9 +- More file chooser fixes (same as in firefox) +- Fix for upstream 28327. + +* Mon Oct 18 2004 Christopher Blizzard 0.8.0-8 +- Update the pango patch + +* Mon Oct 18 2004 Christopher Blizzard 0.8.0-8 +- Pull over patches from firefox build: + - disable default application dialog + - don't include software update since it doesn't work + - make external app support work + +* Thu Oct 14 2004 Christopher Blizzard 0.8.0-7 +- Use pango for rendering + +* Tue Oct 12 2004 Christopher Aillon 0.8.0-6 +- Fix for 64 bit crash at startup (b.m.o #256603) + +* Sat Oct 9 2004 Christopher Aillon 0.8.0-5 +- Add patches to fix xremote (#135036) + +* Fri Oct 8 2004 Christopher Aillon 0.8.0-4 +- Add patch to fix button focus issues (#133507) +- Add patch for fix IMAP race issues (bmo #246439) + +* Fri Oct 1 2004 Bill Nottingham 0.8.0-3 +- filter out library Provides: and internal Requires: + +* Tue Sep 28 2004 Christopher Aillon 0.8.0-2 +- Backport the GTK+ File Chooser. +- Add fix for JS math on x86_64 systems +- Add pkgconfig patch + +* Thu Sep 16 2004 Christopher Aillon 0.8.0-1 +- Update to 0.8.0 +- Remove enigmail +- Update BuildRequires +- Remove gcc34 and extension manager patches -- they are upstreamed. +- Fix for gnome-vfs2 error at component registration + +* Fri Sep 03 2004 Christopher Aillon 0.7.3-5 +- Build with --disable-xprint + +* Wed Sep 01 2004 David Hill 0.7.3-4 +- remove all Xvfb-related hacks + +* Wed Sep 01 2004 Warren Togami +- actually apply psfonts +- add mozilla gnome-uriloader patch to prevent build failure + +* Tue Aug 31 2004 Warren Togami 0.7.3-3 +- rawhide import +- apply NetBSD's freetype 2.1.8 patch +- apply psfonts patch +- remove BR on /usr/bin/ex, breaks beehive + +* Tue Aug 31 2004 David Hill 0.7.3-0.fdr.2 +- oops, fix %%install + +* Thu Aug 26 2004 David Hill 0.7.3-0.fdr.1 +- update to Thunderbird 0.7.3 and Enigmail 0.85.0 +- remove XUL.mfasl on startup, add Debian enigmail patches +- add Xvfb hack for -install-global-extension + +* Wed Jul 14 2004 David Hill 0.7.2-0.fdr.0 +- update to 0.7.2, just because it's there +- update gcc-3.4 patch (Kaj Niemi) +- add EM registration patch and remove instdir hack + +* Sun Jul 04 2004 David Hill 0.7.1-0.fdr.1 +- re-add Enigmime 1.0.7, omit Enigmail until the Mozilla EM problems are fixed + +* Wed Jun 30 2004 David Hill 0.7.1-0.fdr.0 +- update to 0.7.1 +- remove Enigmail + +* Mon Jun 28 2004 David Hill 0.7-0.fdr.1 +- re-enable Enigmail 0.84.1 +- add gcc-3.4 patch (Kaj Niemi) +- use official branding (with permission) + +* Fri Jun 18 2004 David Hill 0.7-0.fdr.0 +- update to 0.7 +- temporarily disable Enigmail 0.84.1, make ftp links work (#1634) +- specify libdir, change BR for apt (V. Skyttä, #1617) + +* Tue May 18 2004 Warren Togami 0.6-0.fdr.5 +- temporary workaround for enigmail skin "modern" bug + +* Mon May 10 2004 David Hill 0.6-0.fdr.4 +- update to Enigmail 0.84.0 +- update launch script + +* Mon May 10 2004 David Hill 0.6-0.fdr.3 +- installation directory now versioned +- allow root to run the program (for installing extensions) +- remove unnecessary %%pre and %%post +- remove separators, update mozconfig and launch script (M. Schwendt, #1460) + +* Wed May 05 2004 David Hill 0.6-0.fdr.2 +- include Enigmail, re-add release notes +- delete %%{_libdir}/thunderbird in %%pre + +* Mon May 03 2004 David Hill 0.6-0.fdr.1 +- update to Thunderbird 0.6 + +* Fri Apr 30 2004 David Hill 0.6-0.fdr.0.rc1 +- update to Thunderbird 0.6 RC1 +- add new icon, remove release notes + +* Thu Apr 15 2004 David Hill 0.6-0.fdr.0.20040415 +- update to latest CVS, update mozconfig and %%build accordingly +- update to Enigmail 0.83.6 +- remove x-remote and x86_64 patches +- build with -Os + +* Thu Apr 15 2004 David Hill 0.5-0.fdr.12 +- update x-remote patch +- more startup script fixes + +* Tue Apr 06 2004 David Hill 0:0.5-0.fdr.11 +- startup script fixes, and a minor cleanup + +* Sun Apr 04 2004 Warren Togami 0:0.5-0.fdr.10 +- Minor cleanups + +* Sun Apr 04 2004 David Hill 0:0.5-0.fdr.8 +- minor improvements to open-browser.sh and startup script +- update to latest version of Blizzard's x-remote patch + +* Thu Mar 25 2004 David Hill 0:0.5-0.fdr.7 +- update open-browser.sh, startup script, and BuildRequires + +* Sun Mar 14 2004 David Hill 0:0.5-0.fdr.6 +- update open-browser script, modify BuildRequires (Warren) +- add Blizzard's x-remote patch +- initial attempt at x-remote-enabled startup script + +* Sun Mar 07 2004 David Hill 0:0.5-0.fdr.5 +- refuse to run with excessive privileges + +* Fri Feb 27 2004 David Hill 0:0.5-0.fdr.4 +- add Mozilla x86_64 patch (Oliver Sontag) +- Enigmail source filenames now include the version +- modify BuildRoot + +* Thu Feb 26 2004 David Hill 0:0.5-0.fdr.3 +- use the updated official tarball + +* Wed Feb 18 2004 David Hill 0:0.5-0.fdr.2 +- fix %%prep script + +* Mon Feb 16 2004 David Hill 0:0.5-0.fdr.1 +- update Enigmail to 0.83.3 +- use official source tarball (after removing the CRLFs) +- package renamed to thunderbird + +* Mon Feb 09 2004 David Hill 0:0.5-0.fdr.0 +- update to 0.5 +- check for lockfile before launching + +* Fri Feb 06 2004 David Hill +- update to latest cvs +- update to Enigmail 0.83.2 + +* Thu Jan 29 2004 David Hill 0:0.4-0.fdr.5 +- update to Enigmail 0.83.1 +- removed Mozilla/Firebird script patching + +* Sat Jan 03 2004 David Hill 0:0.4-0.fdr.4 +- add startup notification to .desktop file + +* Thu Dec 25 2003 Warren Togami 0:0.4-0.fdr.3 +- open-browser.sh release 3 +- patch broken /usr/bin/mozilla script during install +- dir ownership +- XXX: Source fails build on x86_64... fix later + +* Tue Dec 23 2003 David Hill 0:0.4-0.fdr.2 +- update to Enigmail 0.82.5 +- add Warren's open-browser.sh (#1113) + +* Tue Dec 09 2003 David Hill 0:0.4-0.fdr.1 +- use Thunderbird's mozilla-xremote-client to launch browser + +* Sun Dec 07 2003 David Hill 0:0.4-0.fdr.0 +- update to 0.4 +- make hyperlinks work (with recent versions of Firebird/Mozilla) + +* Thu Dec 04 2003 David Hill +- update to 0.4rc2 + +* Wed Dec 03 2003 David Hill +- update to 0.4rc1 and Enigmail 0.82.4 + +* Thu Nov 27 2003 David Hill +- update to latest CVS and Enigmail 0.82.3 + +* Sun Nov 16 2003 David Hill +- update to latest CVS (0.4a) +- update Enigmail to 0.82.2 +- alter mozconfig for new build requirements +- add missing BuildReq (#987) + +* Thu Oct 16 2003 David Hill 0:0.3-0.fdr.0 +- update to 0.3 + +* Sun Oct 12 2003 David Hill 0:0.3rc3-0.fdr.0 +- update to 0.3rc3 +- update Enigmail to 0.81.7 + +* Thu Oct 02 2003 David Hill 0:0.3rc2-0.fdr.0 +- update to 0.3rc2 + +* Wed Sep 17 2003 David Hill 0:0.2-0.fdr.2 +- simplify startup script + +* Wed Sep 10 2003 David Hill 0:0.2-0.fdr.1 +- add GPG support (Enigmail 0.81.6) +- specfile fixes (#679) + +* Thu Sep 04 2003 David Hill 0:0.2-0.fdr.0 +- update to 0.2 + +* Mon Sep 01 2003 David Hill +- initial RPM + (based on the fedora MozillaFirebird-0.6.1 specfile)