diff --git a/.gitignore b/.gitignore index 3470aab..d5bb8b3 100644 --- a/.gitignore +++ b/.gitignore @@ -96,86 +96,72 @@ thunderbird-langpacks-3.1.2-20100803.tar.bz2 /thunderbird-31.0.source.tar.bz2 /thunderbird-langpacks-31.0-20140729.tar.xz /thunderbird-31.1.0.source.tar.bz2 -/thunderbird-langpacks-31.1.0-20140901.tar.xz +/thunderbird-langpacks-31.1.0-20140901.tar.bz2 /thunderbird-31.1.1.source.tar.bz2 -/thunderbird-langpacks-31.1.1-20140911.tar.xz -/thunderbird-langpacks-31.2.0-20141014.tar.xz +/thunderbird-langpacks-31.1.1-20140912.tar.bz2 /thunderbird-31.2.0.source.tar.bz2 +/thunderbird-langpacks-31.2.0-20141030.tar.bz2 /thunderbird-31.3.0.source.tar.bz2 -/thunderbird-langpacks-31.3.0-20141201.tar.xz +/thunderbird-langpacks-31.3.0-20141128.tar.bz2 /thunderbird-31.4.0.source.tar.bz2 -/thunderbird-langpacks-31.4.0-20150114.tar.xz +/thunderbird-langpacks-31.4.0-20150110.tar.bz2 /thunderbird-31.5.0.source.tar.bz2 -/thunderbird-langpacks-31.5.0-20150224.tar.xz -/thunderbird-31.6.0.source.tar.bz2 -/thunderbird-langpacks-31.6.0-20150331.tar.xz +/thunderbird-langpacks-31.5.0-20150223.tar.bz2 /thunderbird-31.7.0.source.tar.bz2 -/thunderbird-langpacks-31.7.0-20150512.tar.xz -/thunderbird-38.0.1.source.tar.bz2 -/thunderbird-langpacks-38.0.1-20150609.tar.xz +/thunderbird-langpacks-31.7.0-20150510.tar.bz2 +/l10n-lightning-38.1.0.tar.bz2 /thunderbird-38.1.0.source.tar.bz2 /thunderbird-langpacks-38.1.0-20150709.tar.xz -/l10n-lightning-38.1.0.tar.xz +/l10n-lightning-38.2.0.tar.bz2 /thunderbird-38.2.0.source.tar.bz2 -/thunderbird-langpacks-38.2.0-20150819.tar.xz -/l10n-lightning-38.2.0.tar.xz +/thunderbird-langpacks-38.2.0-20150814.tar.bz2 /thunderbird-38.3.0.source.tar.bz2 -/thunderbird-langpacks-38.3.0-20150929.tar.xz -/l10n-lightning-38.3.0.tar.xz -/thunderbird-38.4.0.source.tar.bz2 -/thunderbird-langpacks-38.4.0-20151130.tar.xz -/l10n-lightning-38.4.0.tar.xz -/thunderbird-38.5.0.source.tar.bz2 -/thunderbird-langpacks-38.5.0-20160104.tar.xz -/l10n-lightning-38.5.0.tar.xz -/thunderbird-38.6.0.source.tar.bz2 -/thunderbird-langpacks-38.6.0-20160216.tar.xz -/l10n-lightning-38.6.0.tar.xz -/thunderbird-langpacks-38.7.1-20160324.tar.xz -/thunderbird-38.7.1.source.tar.bz2 -/l10n-lightning-38.7.1.tar.xz +/thunderbird-langpacks-38.3.0-20150929.tar.bz2 +/l10n-lightning-38.3.0.tar.bz2 /thunderbird-langpacks-45.0-20160412.tar.xz /thunderbird-45.0.source.tar.xz +/yasm-1.2.0-3.el5.src.rpm +/Python-2.7.8.tgz /l10n-lightning-45.0.tar.xz -/thunderbird-langpacks-45.1.0-20160517.tar.xz +/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm +/gcc48-4.8.2-16.el5.src.rpm /thunderbird-45.1.0.source.tar.xz +/thunderbird-langpacks-45.1.0-20160517.tar.xz +/l10n-lightning-45.1.0.tar.bz2 /l10n-lightning-45.1.0.tar.xz /thunderbird-45.1.1.source.tar.xz /thunderbird-langpacks-45.1.1-20160606.tar.xz /l10n-lightning-45.1.1.tar.xz -/thunderbird-45.2.0.source.tar.xz -/thunderbird-langpacks-45.2.0-20160711.tar.xz -/l10n-lightning-45.2.0.tar.xz +/thunderbird-45.2.source.tar.xz +/thunderbird-langpacks-45.2-20160629.tar.xz +/l10n-lightning-45.2.tar.xz /thunderbird-45.3.0.source.tar.xz -/thunderbird-langpacks-45.3.0-20160901.tar.xz /l10n-lightning-45.3.0.tar.xz +/thunderbird-langpacks-45.3.0-20160826.tar.xz /thunderbird-45.4.0.source.tar.xz -/thunderbird-langpacks-45.4.0-20161006.tar.xz /l10n-lightning-45.4.0.tar.xz +/thunderbird-langpacks-45.4.0-20160929.tar.xz /thunderbird-45.5.0.source.tar.xz -/thunderbird-langpacks-45.5.0-20161128.tar.xz +/thunderbird-langpacks-45.5.0-20161118.tar.xz /l10n-lightning-45.5.0.tar.xz /thunderbird-45.5.1.source.tar.xz /thunderbird-langpacks-45.5.1-20161201.tar.xz /l10n-lightning-45.5.1.tar.xz +/l10n-lightning-45.6.0.tar.xz /thunderbird-45.6.0.source.tar.xz /thunderbird-langpacks-45.6.0-20161216.tar.xz -/l10n-lightning-45.6.0.tar.xz /thunderbird-45.7.0.source.tar.xz -/thunderbird-langpacks-45.7.0-20170131.tar.xz +/thunderbird-langpacks-45.7.0-20170126.tar.xz /l10n-lightning-45.7.0.tar.xz /thunderbird-45.8.0.source.tar.xz -/thunderbird-langpacks-45.8.0-20170308.tar.xz +/thunderbird-langpacks-45.8.0-20170307.tar.xz /l10n-lightning-45.8.0.tar.xz -/thunderbird-52.0.source.tar.xz -/thunderbird-langpacks-52.0-20170404.tar.xz -/l10n-lightning-52.0.tar.xz +/thunderbird-52.0.1.source.tar.xz +/thunderbird-langpacks-52.0.1-20170413.tar.xz +/l10n-lightning-52.0.1.tar.xz /thunderbird-52.1.0.source.tar.xz /thunderbird-langpacks-52.1.0-20170502.tar.xz /l10n-lightning-52.1.0.tar.xz -/thunderbird-langpacks-52.1.1-20170602.tar.xz -/thunderbird-52.1.1.source.tar.xz -/l10n-lightning-52.1.1.tar.xz /thunderbird-52.2.0.source.tar.xz /thunderbird-langpacks-52.2.0-20170615.tar.xz /l10n-lightning-52.2.0.tar.xz @@ -190,95 +176,34 @@ thunderbird-langpacks-3.1.2-20100803.tar.bz2 /l10n-lightning-52.4.0.tar.xz /thunderbird-langpacks-52.4.0-20171004.tar.xz /thunderbird-52.5.0.source.tar.xz -/thunderbird-langpacks-52.5.0-20171128.tar.xz +/thunderbird-langpacks-52.5.0-20171127.tar.xz /l10n-lightning-52.5.0.tar.xz /thunderbird-52.5.2.source.tar.xz /thunderbird-langpacks-52.5.2-20180102.tar.xz /l10n-lightning-52.5.2.tar.xz /thunderbird-52.6.0.source.tar.xz -/thunderbird-langpacks-52.6.0-20180129.tar.xz +/thunderbird-langpacks-52.6.0-20180126.tar.xz /l10n-lightning-52.6.0.tar.xz /thunderbird-52.7.0.source.tar.xz -/thunderbird-langpacks-52.7.0-20180327.tar.xz +/thunderbird-langpacks-52.7.0-20180326.tar.xz /l10n-lightning-52.7.0.tar.xz -/thunderbird-52.8.0.source.tar.xz -/thunderbird-langpacks-52.8.0-20180522.tar.xz -/l10n-lightning-52.8.0.tar.xz -/thunderbird-52.9.1.source.tar.xz -/thunderbird-langpacks-52.9.1-20180710.tar.xz -/l10n-lightning-52.9.1.tar.xz -/thunderbird-60.0.source.tar.xz -/thunderbird-langpacks-60.0-20180815.tar.xz -/l10n-lightning-60.0.tar.xz -/thunderbird-60.2.1.source.tar.xz -/thunderbird-langpacks-60.2.1-20181003.tar.xz -/l10n-lightning-60.2.1.tar.xz -/lightning-langpacks-60.2.1.tar.xz -/thunderbird-60.3.0.source.tar.xz -/thunderbird-langpacks-60.3.0-20181030.tar.xz -/lightning-langpacks-60.3.0.tar.xz -/thunderbird-60.3.1.source.tar.xz -/thunderbird-langpacks-60.3.1-20181122.tar.xz -/lightning-langpacks-60.3.1.tar.xz -/thunderbird-60.3.3.source.tar.xz -/thunderbird-langpacks-60.3.3-20181205.tar.xz -/lightning-langpacks-60.3.3.tar.xz -/thunderbird-60.4.0.source.tar.xz -/thunderbird-langpacks-60.4.0-20190102.tar.xz -/lightning-langpacks-60.4.0.tar.xz -/thunderbird-60.5.0.source.tar.xz -/lightning-langpacks-60.5.0.tar.xz -/thunderbird-langpacks-60.5.0-20190129.tar.xz -/thunderbird-60.5.1.source.tar.xz -/thunderbird-langpacks-60.5.1-20190218.tar.xz -/lightning-langpacks-60.5.1.tar.xz -/thunderbird-60.5.3.source.tar.xz -/lightning-langpacks-60.5.3.tar.xz -/thunderbird-langpacks-60.5.3-20190306.tar.xz -/thunderbird-langpacks-60.6.0-20190318.tar.xz -/thunderbird-60.6.0.source.tar.xz -/lightning-langpacks-60.6.0.tar.xz -/thunderbird-60.6.1.source.tar.xz -/lightning-langpacks-60.6.1.tar.xz -/thunderbird-langpacks-60.6.1-20190325.tar.xz -/thunderbird-60.7.0.source.tar.xz -/thunderbird-langpacks-60.7.0-20190520.tar.xz -/lightning-langpacks-60.7.0.tar.xz -/thunderbird-60.7.1.source.tar.xz -/thunderbird-langpacks-60.7.1-20190618.tar.xz -/lightning-langpacks-60.7.1.tar.xz -/thunderbird-60.7.2.source.tar.xz -/thunderbird-langpacks-60.7.2-20190620.tar.xz -/lightning-langpacks-60.7.2.tar.xz -/thunderbird-langpacks-60.7.2-20190621.tar.xz -/thunderbird-60.8.0.source.tar.xz -/thunderbird-langpacks-60.8.0-20190704.tar.xz -/lightning-langpacks-60.8.0.tar.xz -/thunderbird-68.0.source.tar.xz -/thunderbird-langpacks-68.0-20190829.tar.xz -/lightning-langpacks-68.0.tar.xz -/cbindgen-vendor.tar.xz -/thunderbird-68.1.0.source.tar.xz -/thunderbird-langpacks-68.1.0-20190912.tar.xz -/lightning-langpacks-68.1.0.tar.xz /thunderbird-68.1.1.source.tar.xz -/thunderbird-langpacks-68.1.1-20190927.tar.xz +/thunderbird-langpacks-68.1.1-20191003.tar.xz +/libffi-3.0.13-18.el7_3.src.rpm +/Python-2.7.13.tar.xz +/gtk3-private-3.22.26-1.el6.src.rpm +/cbindgen-vendor.tar.xz /lightning-langpacks-68.1.1.tar.xz +/Python-3.6.8.tar.xz +/nodejs-8.11.4-1.fc27.src.rpm +/nodejs-8.11.4-1.3.fc27.src.rpm +/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm /thunderbird-68.2.0.source.tar.xz -/thunderbird-langpacks-68.2.0-20191029.tar.xz +/thunderbird-langpacks-68.2.0-20191022.tar.xz /lightning-langpacks-68.2.0.tar.xz -/thunderbird-68.2.1.source.tar.xz -/thunderbird-langpacks-68.2.1-20191101.tar.xz -/lightning-langpacks-68.2.1.tar.xz -/thunderbird-68.2.2.source.tar.xz -/thunderbird-langpacks-68.2.2-20191105.tar.xz -/lightning-langpacks-68.2.2.tar.xz /thunderbird-68.3.0.source.tar.xz -/thunderbird-langpacks-68.3.0-20191203.tar.xz +/thunderbird-langpacks-68.3.0-20191202.tar.xz /lightning-langpacks-68.3.0.tar.xz -/thunderbird-68.3.1.source.tar.xz -/thunderbird-langpacks-68.3.1-20191217.tar.xz -/lightning-langpacks-68.3.1.tar.xz /thunderbird-68.4.1.source.tar.xz /thunderbird-langpacks-68.4.1-20200113.tar.xz /lightning-langpacks-68.4.1.tar.xz @@ -289,23 +214,39 @@ thunderbird-langpacks-3.1.2-20100803.tar.bz2 /thunderbird-langpacks-68.6.0-20200313.tar.xz /lightning-langpacks-68.6.0.tar.xz /thunderbird-68.7.0.source.tar.xz -/thunderbird-langpacks-68.7.0-20200409.tar.xz +/thunderbird-langpacks-68.7.0-20200414.tar.xz /lightning-langpacks-68.7.0.tar.xz /thunderbird-68.8.0.source.tar.xz -/thunderbird-langpacks-68.8.0-20200514.tar.xz +/thunderbird-langpacks-68.8.0-20200505.tar.xz /lightning-langpacks-68.8.0.tar.xz /thunderbird-68.9.0.source.tar.xz -/thunderbird-langpacks-68.9.0-20200608.tar.xz +/thunderbird-langpacks-68.9.0-20200605.tar.xz /lightning-langpacks-68.9.0.tar.xz /thunderbird-68.10.0.source.tar.xz -/thunderbird-langpacks-68.10.0-20200709.tar.xz +/thunderbird-langpacks-68.10.0-20200708.tar.xz /lightning-langpacks-68.10.0.tar.xz /thunderbird-68.11.0.source.tar.xz -/thunderbird-langpacks-68.11.0-20200806.tar.xz +/thunderbird-langpacks-68.11.0-20200804.tar.xz /lightning-langpacks-68.11.0.tar.xz /thunderbird-68.12.0.source.tar.xz -/thunderbird-langpacks-68.12.0-20200908.tar.xz +/thunderbird-langpacks-68.12.0-20200902.tar.xz /lightning-langpacks-68.12.0.tar.xz -/thunderbird-78.3.1.source.tar.xz -/thunderbird-langpacks-78.3.1-20200930.tar.xz +/thunderbird-78.2.1.source.tar.xz +/thunderbird-langpacks-78.2.1-20200908.tar.xz +/nodejs-10.21.0-4.fc32.src.rpm +/nss-3.53.1-3.fc32.src.rpm +/nspr-4.25.0-1.el8_0.src.rpm /cbindgen-vendor-0.14.3.tar.xz +/thunderbird-78.3.0.source.tar.xz +/thunderbird-langpacks-78.3.0-20200919.tar.xz +/thunderbird-78.4.3.source.tar.xz +/thunderbird-langpacks-78.4.3-20201112.tar.xz +/thunderbird-78.5.0.source.tar.xz +/thunderbird-langpacks-78.5.0-20201118.tar.xz +/thunderbird-78.5.1.source.tar.xz +/thunderbird-langpacks-78.5.1-20201204.tar.xz +/nodejs-10.21.0-5.fc32.src.rpm +/thunderbird-78.6.0.source.tar.xz +/thunderbird-langpacks-78.6.0-20201215.tar.xz +/thunderbird-78.6.1.source.tar.xz +/thunderbird-langpacks-78.6.1-20210112.tar.xz diff --git a/Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch b/Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch deleted file mode 100644 index 0663ffe..0000000 --- a/Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up thunderbird-60.5.0/mfbt/LinuxSignal.h.mozilla-1238661 thunderbird-60.5.0/mfbt/LinuxSignal.h ---- thunderbird-60.5.0/mfbt/LinuxSignal.h.mozilla-1238661 2019-01-30 11:33:21.447003175 +0100 -+++ thunderbird-60.5.0/mfbt/LinuxSignal.h 2019-01-30 11:35:13.848537051 +0100 -@@ -22,7 +22,7 @@ __attribute__((naked)) void SignalTrampo - void* aContext) { - asm volatile("nop; nop; nop; nop" : : : "memory"); - -- asm volatile("b %0" : : "X"(H) : "memory"); -+ asm volatile("bx %0" : : "r"(H), "l"(aSignal), "l"(aInfo), "l"(aContext) : "memory"); - } - - #define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline) diff --git a/bindgen-d0dfc52706f23db9dc9d74642eeebd89d73cb8d0.patch b/bindgen-d0dfc52706f23db9dc9d74642eeebd89d73cb8d0.patch deleted file mode 100644 index 0968827..0000000 --- a/bindgen-d0dfc52706f23db9dc9d74642eeebd89d73cb8d0.patch +++ /dev/null @@ -1,171 +0,0 @@ -diff -up thunderbird-68.3.0/third_party/rust/bindgen/.cargo-checksum.json.bindgen thunderbird-68.3.0/third_party/rust/bindgen/.cargo-checksum.json ---- thunderbird-68.3.0/third_party/rust/bindgen/.cargo-checksum.json.bindgen 2019-12-01 15:29:26.000000000 +0100 -+++ thunderbird-68.3.0/third_party/rust/bindgen/.cargo-checksum.json 2019-12-04 11:38:42.878975886 +0100 -@@ -1 +1 @@ --{"files":{"Cargo.toml":"9af635e7bad9021a49742a312faf6178b757dbd48aabc998931d6f491f14c179","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"5a1f556c6a57c0a6ccc65e19c27718e0f4b32381a8efcc80f6601b33c58c5d59","build.rs":"a9f6915c54d75f357ce32f96327bf4df53dc81a505b70831978f9dac6f43841d","src/callbacks.rs":"b24d7982332c6a35928f134184ddf4072fe4545a45546b97b9b0e0c1fbb77c08","src/clang.rs":"e9203eb5a1b432efebafcd011896e35e8c9145037bf99e7bb3709dc1b8e8e783","src/codegen/bitfield_unit.rs":"88b0604322dc449fc9284850eadc1f5d14b42fa747d4258bae0b6b9535f52dfd","src/codegen/bitfield_unit_tests.rs":"2073ac6a36e0bc9afaef5b1207966817c8fb7a1a9f6368c3b1b8f79822efbfba","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"fbd23e68dd51ccaddeb9761394d5df2db49baded0e2dccf6bbc52a2d6de502eb","src/codegen/impl_debug.rs":"f82969461d522fb758eca552ceaf189122a404cbb47fcc16008bfe52fc62aefa","src/codegen/impl_partialeq.rs":"d40d9ee2849c4d3d557b033c4d3af5e6de4a44347f67c0f016198086338811af","src/codegen/mod.rs":"238d989e13b7556e5d120a2bfe85b43332fba56cbe8df886d4c32e650fff1247","src/codegen/struct_layout.rs":"3fa5524aff82365ce292b0cc85080514c85a6dbd31bce90f001773b995dda28e","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"c5fd7149f4a3b41fd4f89ade08505170942f4bc791bcb6a34fdddd3ae61856f8","src/ir/analysis/derive.rs":"325d4c1c1e6194e743f42a2316f1501b0ef852fe309f2e9cac3434825ad235f0","src/ir/analysis/has_destructor.rs":"63644f479738df35e531d3324ff892614083c3656e0747aa34d9f20dada878ec","src/ir/analysis/has_float.rs":"76162a309e4285a806755a08c687a3e7bc894a100a63da4e88584035e215b11d","src/ir/analysis/has_type_param_in_array.rs":"fdbc0af28a144c88ea2de83e6e6da5e1ffb40e3dd63fd7a708095d085bb06f94","src/ir/analysis/has_vtable.rs":"5788372d27bdbaaf0454bc17be31a5480918bc41a8a1c4832e8c61185c07f9cd","src/ir/analysis/mod.rs":"1f218e15c19f6666512908abc853fa7ff9ca5d0fafd94f026d9e4b0ce287ec3c","src/ir/analysis/sizedness.rs":"8dc10043d872e68e660ef96edca4d9733f95be45cdad4893462fa929b335014f","src/ir/analysis/template_params.rs":"6312c008bbc80f50e72a766756c8daddea0b6eeb31ec924b83a231df931e170e","src/ir/annotations.rs":"39a5ab19f4d5dfa617577e4a0d0d2b67b5369d480c7cca4b14d172458c9843f0","src/ir/comment.rs":"c48abe01c5af0f09f583a89f1394bc6c161b40f6c8f0f600bbfe3c907b47969b","src/ir/comp.rs":"ca439407faefbe3a198246f0a1dbdf4e40307e45eaaad317e85d1aab37bb31fc","src/ir/context.rs":"599226eb04d337a1b1b13af91af91bdb02dbd5f26f274cbc0ebc4489eb144fc0","src/ir/derive.rs":"34f9aa76b6c9c05136bb69dcd6455397faef571a567254d2c541d50a962994db","src/ir/dot.rs":"95ed2968fc3239d87892e9f1edf1ed6dd18630d949564961765967ea1d16960c","src/ir/enum_ty.rs":"9cc242d6b3c1866665594e8b306860ee39c0ea42d22198d46b7fded473fe3e84","src/ir/function.rs":"2d41d9df19f42b0c383f338be4c026c005853a8d1caf5f3e5a2f3a8dad202232","src/ir/int.rs":"07e0c7dbd2dd977177fae3acd2a14adf271c6cf9ff4b57cddc11d50734fd4801","src/ir/item.rs":"3bcdb69b793350e5744aec3577cdbb1e5068ece5220c38763cecd82dfb5e8f03","src/ir/item_kind.rs":"dbeae8c4fd0e5c9485d325aea040e056a1f2cd6d43fc927dee8fe1c0c59a7197","src/ir/layout.rs":"d49582081f5f86f7595afbe4845f38fb3b969a840b568f4a49b265e7d790bb5b","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"758aa955a0c5d6ad82606c88a1f4cd1d93e666b71e82d43b18b1aaae96cf888a","src/ir/template.rs":"c0f8570b927dfd6a421fc4ce3094ec837a3ed936445225dbfac961e8e0842ae5","src/ir/traversal.rs":"ea751379a5aec02f93f8d2c61e18232776b1f000dbeae64b9a7195ba21a19dd6","src/ir/ty.rs":"952fb04cd6a71a2bca5c509aecacb42a1de0cae75824941541a38dc589f0993a","src/ir/var.rs":"8bdafb6d02f2c55ae11c28d88b19fb7a65ba8466da12ff039ae4c16c790b291e","src/lib.rs":"d5c8b404c515d30fc2d78b28eb84cff6b256f1f1e2dbd6aca280529bb2af6879","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"e519053bcdde6bc88f60f955246a02d53b3db1cc5ccd1612e6675b790b7460b0","src/options.rs":"041d635c8f6712ca32676a68f06d0245faed5577d9513786e058540ea2a69a7f","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"5cb72fc3714c0d79e9e942d003349c0775fafd7cd0c9603c65f5261883bbf9cf","src/time.rs":"3b763e6fee51d0eb01228dfe28bc28a9f692aff73b2a7b90a030902e0238fca6"},"package":"6bd7710ac8399ae1ebe1e3aac7c9047c4f39f2c94b33c997f482f49e96991f7c"} -\ No newline at end of file -+{"files":{"Cargo.toml":"9af635e7bad9021a49742a312faf6178b757dbd48aabc998931d6f491f14c179","LICENSE":"c23953d9deb0a3312dbeaf6c128a657f3591acee45067612fa68405eaa4525db","README.md":"5a1f556c6a57c0a6ccc65e19c27718e0f4b32381a8efcc80f6601b33c58c5d59","build.rs":"a9f6915c54d75f357ce32f96327bf4df53dc81a505b70831978f9dac6f43841d","src/callbacks.rs":"b24d7982332c6a35928f134184ddf4072fe4545a45546b97b9b0e0c1fbb77c08","src/clang.rs":"e9203eb5a1b432efebafcd011896e35e8c9145037bf99e7bb3709dc1b8e8e783","src/codegen/bitfield_unit.rs":"88b0604322dc449fc9284850eadc1f5d14b42fa747d4258bae0b6b9535f52dfd","src/codegen/bitfield_unit_tests.rs":"2073ac6a36e0bc9afaef5b1207966817c8fb7a1a9f6368c3b1b8f79822efbfba","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"fbd23e68dd51ccaddeb9761394d5df2db49baded0e2dccf6bbc52a2d6de502eb","src/codegen/impl_debug.rs":"f82969461d522fb758eca552ceaf189122a404cbb47fcc16008bfe52fc62aefa","src/codegen/impl_partialeq.rs":"d40d9ee2849c4d3d557b033c4d3af5e6de4a44347f67c0f016198086338811af","src/codegen/mod.rs":"238d989e13b7556e5d120a2bfe85b43332fba56cbe8df886d4c32e650fff1247","src/codegen/struct_layout.rs":"3fa5524aff82365ce292b0cc85080514c85a6dbd31bce90f001773b995dda28e","src/extra_assertions.rs":"494534bd4f18b80d89b180c8a93733e6617edcf7deac413e9a73fd6e7bc9ced7","src/features.rs":"c5fd7149f4a3b41fd4f89ade08505170942f4bc791bcb6a34fdddd3ae61856f8","src/ir/analysis/derive.rs":"325d4c1c1e6194e743f42a2316f1501b0ef852fe309f2e9cac3434825ad235f0","src/ir/analysis/has_destructor.rs":"63644f479738df35e531d3324ff892614083c3656e0747aa34d9f20dada878ec","src/ir/analysis/has_float.rs":"76162a309e4285a806755a08c687a3e7bc894a100a63da4e88584035e215b11d","src/ir/analysis/has_type_param_in_array.rs":"fdbc0af28a144c88ea2de83e6e6da5e1ffb40e3dd63fd7a708095d085bb06f94","src/ir/analysis/has_vtable.rs":"8c92a52c0f859c7bec7bfbc36b9d18f904baab0c8c9dc1b3e7af34de1a0b0da4","src/ir/analysis/mod.rs":"1f218e15c19f6666512908abc853fa7ff9ca5d0fafd94f026d9e4b0ce287ec3c","src/ir/analysis/sizedness.rs":"71f1a37f75b971ea5b0d8457473cc410947dbf706cb6d2c0338916910b78a675","src/ir/analysis/template_params.rs":"6312c008bbc80f50e72a766756c8daddea0b6eeb31ec924b83a231df931e170e","src/ir/annotations.rs":"39a5ab19f4d5dfa617577e4a0d0d2b67b5369d480c7cca4b14d172458c9843f0","src/ir/comment.rs":"c48abe01c5af0f09f583a89f1394bc6c161b40f6c8f0f600bbfe3c907b47969b","src/ir/comp.rs":"ca439407faefbe3a198246f0a1dbdf4e40307e45eaaad317e85d1aab37bb31fc","src/ir/context.rs":"599226eb04d337a1b1b13af91af91bdb02dbd5f26f274cbc0ebc4489eb144fc0","src/ir/derive.rs":"e5581852eec87918901a129284b4965aefc8a19394187a8095779a084f28fabe","src/ir/dot.rs":"95ed2968fc3239d87892e9f1edf1ed6dd18630d949564961765967ea1d16960c","src/ir/enum_ty.rs":"9cc242d6b3c1866665594e8b306860ee39c0ea42d22198d46b7fded473fe3e84","src/ir/function.rs":"2d41d9df19f42b0c383f338be4c026c005853a8d1caf5f3e5a2f3a8dad202232","src/ir/int.rs":"07e0c7dbd2dd977177fae3acd2a14adf271c6cf9ff4b57cddc11d50734fd4801","src/ir/item.rs":"3bcdb69b793350e5744aec3577cdbb1e5068ece5220c38763cecd82dfb5e8f03","src/ir/item_kind.rs":"dbeae8c4fd0e5c9485d325aea040e056a1f2cd6d43fc927dee8fe1c0c59a7197","src/ir/layout.rs":"d49582081f5f86f7595afbe4845f38fb3b969a840b568f4a49b265e7d790bb5b","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"758aa955a0c5d6ad82606c88a1f4cd1d93e666b71e82d43b18b1aaae96cf888a","src/ir/template.rs":"c0f8570b927dfd6a421fc4ce3094ec837a3ed936445225dbfac961e8e0842ae5","src/ir/traversal.rs":"ea751379a5aec02f93f8d2c61e18232776b1f000dbeae64b9a7195ba21a19dd6","src/ir/ty.rs":"952fb04cd6a71a2bca5c509aecacb42a1de0cae75824941541a38dc589f0993a","src/ir/var.rs":"8bdafb6d02f2c55ae11c28d88b19fb7a65ba8466da12ff039ae4c16c790b291e","src/lib.rs":"d5c8b404c515d30fc2d78b28eb84cff6b256f1f1e2dbd6aca280529bb2af6879","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"e519053bcdde6bc88f60f955246a02d53b3db1cc5ccd1612e6675b790b7460b0","src/options.rs":"041d635c8f6712ca32676a68f06d0245faed5577d9513786e058540ea2a69a7f","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"5cb72fc3714c0d79e9e942d003349c0775fafd7cd0c9603c65f5261883bbf9cf","src/time.rs":"3b763e6fee51d0eb01228dfe28bc28a9f692aff73b2a7b90a030902e0238fca6"},"package":"6bd7710ac8399ae1ebe1e3aac7c9047c4f39f2c94b33c997f482f49e96991f7c"} -diff -up thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/has_vtable.rs.bindgen thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/has_vtable.rs ---- thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/has_vtable.rs.bindgen 2019-12-01 15:29:26.000000000 +0100 -+++ thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/has_vtable.rs 2019-12-04 11:33:09.631921359 +0100 -@@ -9,17 +9,17 @@ use std::ops; - use {HashMap, Entry}; - - /// The result of the `HasVtableAnalysis` for an individual item. --#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord)] -+#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - pub enum HasVtableResult { -- /// The item has a vtable, but the actual vtable pointer is in a base -- /// member. -- BaseHasVtable, -+ /// The item does not have a vtable pointer. -+ No, - - /// The item has a vtable and the actual vtable pointer is within this item. - SelfHasVtable, - -- /// The item does not have a vtable pointer. -- No -+ /// The item has a vtable, but the actual vtable pointer is in a base -+ /// member. -+ BaseHasVtable, - } - - impl Default for HasVtableResult { -@@ -28,21 +28,6 @@ impl Default for HasVtableResult { - } - } - --impl cmp::PartialOrd for HasVtableResult { -- fn partial_cmp(&self, rhs: &Self) -> Option { -- use self::HasVtableResult::*; -- -- match (*self, *rhs) { -- (x, y) if x == y => Some(cmp::Ordering::Equal), -- (BaseHasVtable, _) => Some(cmp::Ordering::Greater), -- (_, BaseHasVtable) => Some(cmp::Ordering::Less), -- (SelfHasVtable, _) => Some(cmp::Ordering::Greater), -- (_, SelfHasVtable) => Some(cmp::Ordering::Less), -- _ => unreachable!(), -- } -- } --} -- - impl HasVtableResult { - /// Take the least upper bound of `self` and `rhs`. - pub fn join(self, rhs: Self) -> Self { -diff -up thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/sizedness.rs.bindgen thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/sizedness.rs ---- thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/sizedness.rs.bindgen 2019-12-01 15:29:26.000000000 +0100 -+++ thunderbird-68.3.0/third_party/rust/bindgen/src/ir/analysis/sizedness.rs 2019-12-04 11:33:09.632921362 +0100 -@@ -22,13 +22,14 @@ use {HashMap, Entry}; - /// - /// We initially assume that all types are `ZeroSized` and then update our - /// understanding as we learn more about each type. --#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord)] -+#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - pub enum SizednessResult { -- /// Has some size that is known to be greater than zero. That doesn't mean -- /// it has a static size, but it is not zero sized for sure. In other words, -- /// it might contain an incomplete array or some other dynamically sized -- /// type. -- NonZeroSized, -+ /// The type is zero-sized. -+ /// -+ /// This means that if it is a C++ type, and is not being used as a base -+ /// member, then we must add an `_address` byte to enforce the -+ /// unique-address-per-distinct-object-instance rule. -+ ZeroSized, - - /// Whether this type is zero-sized or not depends on whether a type - /// parameter is zero-sized or not. -@@ -52,12 +53,11 @@ pub enum SizednessResult { - /// https://github.com/rust-lang-nursery/rust-bindgen/issues/586 - DependsOnTypeParam, - -- /// The type is zero-sized. -- /// -- /// This means that if it is a C++ type, and is not being used as a base -- /// member, then we must add an `_address` byte to enforce the -- /// unique-address-per-distinct-object-instance rule. -- ZeroSized, -+ /// Has some size that is known to be greater than zero. That doesn't mean -+ /// it has a static size, but it is not zero sized for sure. In other words, -+ /// it might contain an incomplete array or some other dynamically sized -+ /// type. -+ NonZeroSized, - } - - impl Default for SizednessResult { -@@ -66,21 +66,6 @@ impl Default for SizednessResult { - } - } - --impl cmp::PartialOrd for SizednessResult { -- fn partial_cmp(&self, rhs: &Self) -> Option { -- use self::SizednessResult::*; -- -- match (*self, *rhs) { -- (x, y) if x == y => Some(cmp::Ordering::Equal), -- (NonZeroSized, _) => Some(cmp::Ordering::Greater), -- (_, NonZeroSized) => Some(cmp::Ordering::Less), -- (DependsOnTypeParam, _) => Some(cmp::Ordering::Greater), -- (_, DependsOnTypeParam) => Some(cmp::Ordering::Less), -- _ => unreachable!(), -- } -- } --} -- - impl SizednessResult { - /// Take the least upper bound of `self` and `rhs`. - pub fn join(self, rhs: Self) -> Self { -diff -up thunderbird-68.3.0/third_party/rust/bindgen/src/ir/derive.rs.bindgen thunderbird-68.3.0/third_party/rust/bindgen/src/ir/derive.rs ---- thunderbird-68.3.0/third_party/rust/bindgen/src/ir/derive.rs.bindgen 2019-12-01 15:29:26.000000000 +0100 -+++ thunderbird-68.3.0/third_party/rust/bindgen/src/ir/derive.rs 2019-12-04 11:33:09.632921362 +0100 -@@ -92,10 +92,10 @@ pub trait CanDeriveOrd { - /// - /// Initially we assume that we can derive trait for all types and then - /// update our understanding as we learn more about each type. --#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord)] -+#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] - pub enum CanDerive { -- /// No, we cannot. -- No, -+ /// Yes, we can derive automatically. -+ Yes, - - /// The only thing that stops us from automatically deriving is that - /// array with more than maximum number of elements is used. -@@ -103,8 +103,8 @@ pub enum CanDerive { - /// This means we probably can "manually" implement such trait. - Manually, - -- /// Yes, we can derive automatically. -- Yes, -+ /// No, we cannot. -+ No, - } - - impl Default for CanDerive { -@@ -113,22 +113,6 @@ impl Default for CanDerive { - } - } - --impl cmp::PartialOrd for CanDerive { -- fn partial_cmp(&self, rhs: &Self) -> Option { -- use self::CanDerive::*; -- -- let ordering = match (*self, *rhs) { -- (x, y) if x == y => cmp::Ordering::Equal, -- (No, _) => cmp::Ordering::Greater, -- (_, No) => cmp::Ordering::Less, -- (Manually, _) => cmp::Ordering::Greater, -- (_, Manually) => cmp::Ordering::Less, -- _ => unreachable!() -- }; -- Some(ordering) -- } --} -- - impl CanDerive { - /// Take the least upper bound of `self` and `rhs`. - pub fn join(self, rhs: Self) -> Self { diff --git a/build-aarch64-user_vfp.patch b/build-aarch64-user_vfp.patch deleted file mode 100644 index 85e72c7..0000000 --- a/build-aarch64-user_vfp.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up thunderbird-68.0/js/src/wasm/WasmSignalHandlers.cpp.aarch64-user_vfp thunderbird-68.0/js/src/wasm/WasmSignalHandlers.cpp ---- thunderbird-68.0/js/src/wasm/WasmSignalHandlers.cpp.aarch64-user_vfp 2019-09-05 08:57:46.443137916 +0200 -+++ thunderbird-68.0/js/src/wasm/WasmSignalHandlers.cpp 2019-09-05 08:58:07.776196823 +0200 -@@ -244,7 +244,7 @@ using mozilla::DebugOnly; - // emulation here. - - #if defined(__linux__) && defined(__arm__) --# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS -+//# define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS - #endif - - #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS diff --git a/build-disable-elfhack.patch b/build-disable-elfhack.patch deleted file mode 100644 index 0856e5c..0000000 --- a/build-disable-elfhack.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up thunderbird-68.0/toolkit/moz.configure.elfhack thunderbird-68.0/toolkit/moz.configure ---- thunderbird-68.0/toolkit/moz.configure.elfhack 2019-08-29 16:33:28.491708653 +0200 -+++ thunderbird-68.0/toolkit/moz.configure 2019-08-29 16:33:58.019805525 +0200 -@@ -1130,7 +1130,7 @@ with only_when('--enable-compile-environ - help='{Enable|Disable} elf hacks') - - set_config('USE_ELF_HACK', -- depends_if('--enable-elf-hack')(lambda _: True)) -+ depends_if('--enable-elf-hack')(lambda _: False)) - - - @depends(check_build_environment) diff --git a/build-icu-make.patch b/build-icu-make.patch new file mode 100644 index 0000000..6a04091 --- /dev/null +++ b/build-icu-make.patch @@ -0,0 +1,13 @@ +diff -up firefox-68.8.0/intl/icu_sources_data.py.icu-makefile firefox-68.8.0/intl/icu_sources_data.py +--- firefox-68.8.0/intl/icu_sources_data.py.icu-makefile 2020-05-11 17:00:03.642605718 +0200 ++++ firefox-68.8.0/intl/icu_sources_data.py 2020-05-11 17:00:37.774642749 +0200 +@@ -246,8 +246,7 @@ def update_data_file(topsrcdir): + if not try_run( + 'icu-make', + ['make', +- '--jobs=%d' % multiprocessing.cpu_count(), +- '--output-sync'], ++ '--jobs=1'], + cwd=objdir): + return False + print('Copying ICU data file...') diff --git a/build-mozconfig-fix.patch b/build-mozconfig-fix.patch new file mode 100644 index 0000000..91dffb1 --- /dev/null +++ b/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/build-nss-version.patch b/build-nss-version.patch new file mode 100644 index 0000000..7847090 --- /dev/null +++ b/build-nss-version.patch @@ -0,0 +1,12 @@ +diff -up firefox-68.3.0/old-configure.in.nss-version firefox-68.3.0/old-configure.in +--- firefox-68.3.0/old-configure.in.nss-version 2019-11-27 19:48:01.045677621 +0100 ++++ firefox-68.3.0/old-configure.in 2019-11-27 19:59:52.856894047 +0100 +@@ -1537,7 +1537,7 @@ MOZ_ARG_WITH_BOOL(system-nss, + _USE_SYSTEM_NSS=1 ) + + if test -n "$_USE_SYSTEM_NSS"; then +- AM_PATH_NSS(3.44.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) ++ AM_PATH_NSS(3.44.0, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) + fi + + NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss" diff --git a/build-ppc64le-inline.patch b/build-ppc64le-inline.patch new file mode 100644 index 0000000..de0f6d9 --- /dev/null +++ b/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/disable-openpgp-in-thunderbird.patch b/disable-openpgp-in-thunderbird.patch new file mode 100644 index 0000000..820f2e4 --- /dev/null +++ b/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/fedora-shebang-build.patch b/fedora-shebang-build.patch new file mode 100644 index 0000000..9ade86c --- /dev/null +++ b/fedora-shebang-build.patch @@ -0,0 +1,9 @@ +diff -up firefox-73.0/build/unix/run-mozilla.sh.old firefox-73.0/build/unix/run-mozilla.sh +--- firefox-73.0/build/unix/run-mozilla.sh.old 2020-02-12 09:58:00.150895904 +0100 ++++ firefox-73.0/build/unix/run-mozilla.sh 2020-02-12 09:58:06.505860696 +0100 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/usr/bin/sh + # + # This Source Code Form is subject to the terms of the Mozilla Public + # License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/firefox-SIOCGSTAMP.patch b/firefox-SIOCGSTAMP.patch deleted file mode 100644 index 673cb07..0000000 --- a/firefox-SIOCGSTAMP.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -up firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium -diff -up firefox-68.0/media/webrtc/trunk/Makefile.old firefox-68.0/media/webrtc/trunk/Makefile -diff -up firefox-68.0/media/webrtc/trunk/webrtc/rtc_base/physicalsocketserver.cc.old firefox-68.0/media/webrtc/trunk/webrtc/rtc_base/physicalsocketserver.cc ---- firefox-68.0/media/webrtc/trunk/webrtc/rtc_base/physicalsocketserver.cc.old 2019-07-10 20:10:04.420328534 +0200 -+++ firefox-68.0/media/webrtc/trunk/webrtc/rtc_base/physicalsocketserver.cc 2019-07-10 20:13:48.766658793 +0200 -@@ -62,6 +62,10 @@ typedef void* SockOptArg; - - #if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__) - -+#ifndef SIOCGSTAMP -+#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ -+#endif -+ - int64_t GetSocketRecvTimestamp(int socket) { - struct timeval tv_ioctl; - int ret = ioctl(socket, SIOCGSTAMP, &tv_ioctl); diff --git a/firefox-debugedits-error.patch b/firefox-debugedits-error.patch new file mode 100644 index 0000000..a4b005f --- /dev/null +++ b/firefox-debugedits-error.patch @@ -0,0 +1,50 @@ +diff -up firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium +diff -up firefox-68.0/media/webrtc/trunk/Makefile.old firefox-68.0/media/webrtc/trunk/Makefile +diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc.old firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc +--- firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc.old 2019-06-12 08:17:02.673268442 +0200 ++++ firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc 2019-06-12 08:17:13.582328073 +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-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.old firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc +--- firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.old 2019-06-12 08:17:36.671454285 +0200 ++++ firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc 2019-06-12 08:17:46.989510679 +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 -up firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c.old firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c +--- firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c.old 2019-06-12 08:16:15.673011534 +0200 ++++ firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c 2019-06-12 08:16:22.602049410 +0200 +@@ -17,7 +17,7 @@ + #include "aom_dsp/blend.h" + #include "aom/aom_integer.h" + #include "aom_dsp/x86/synonyms.h" +-#include "aom_dsp/x86//masked_sad_intrin_ssse3.h" ++#include "aom_dsp/x86/masked_sad_intrin_ssse3.h" + + static INLINE unsigned int masked_sad32xh_avx2( + const uint8_t *src_ptr, int src_stride, const uint8_t *a_ptr, int a_stride, +diff -up firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c.old firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c +--- firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c.old 2019-06-12 08:16:35.404119384 +0200 ++++ firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c 2019-06-12 08:16:43.415163174 +0200 +@@ -19,7 +19,7 @@ + #include "aom/aom_integer.h" + #include "aom_dsp/x86/synonyms.h" + +-#include "aom_dsp/x86//masked_sad_intrin_ssse3.h" ++#include "aom_dsp/x86/masked_sad_intrin_ssse3.h" + + // For width a multiple of 16 + static INLINE unsigned int masked_sad_ssse3(const uint8_t *src_ptr, diff --git a/firefox-enable-addons.patch b/firefox-enable-addons.patch new file mode 100644 index 0000000..15d0707 --- /dev/null +++ b/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/firefox-pipewire-0-3.patch b/firefox-pipewire-0-3.patch new file mode 100644 index 0000000..0844209 --- /dev/null +++ b/firefox-pipewire-0-3.patch @@ -0,0 +1,846 @@ +diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild +index 2081d0c683a4..641133bf1ea4 100644 +--- a/config/system-headers.mozbuild ++++ b/config/system-headers.mozbuild +@@ -314,6 +314,7 @@ system_headers = [ + 'Gestalt.h', + 'getopt.h', + 'gio/gio.h', ++ 'gio/gunixfdlist.h', + 'glibconfig.h', + 'glib.h', + 'glib-object.h', +@@ -607,6 +608,7 @@ system_headers = [ + 'Pgenerr.h', + 'PGenErr.h', + 'Ph.h', ++ 'pipewire/pipewire.h', + 'pixman.h', + 'pk11func.h', + 'pk11pqg.h', +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn +index ba885217b3ba..201d3b755221 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn +@@ -158,7 +158,7 @@ if (rtc_include_tests) { + if (is_linux) { + if (rtc_use_pipewire) { + pkg_config("pipewire") { +- packages = [ "libpipewire-0.2" ] ++ packages = [ "libpipewire-0.3" ] + + defines = [ "WEBRTC_USE_PIPEWIRE" ] + } +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build +index 90b40431c7e4..d844aa79d591 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build +@@ -194,6 +194,30 @@ if CONFIG["OS_TARGET"] == "Linux": + "/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc" + ] + ++# PipeWire specific files ++if CONFIG["OS_TARGET"] == "Linux": ++ ++ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1" ++ ++ OS_LIBS += [ ++ "rt", ++ "pipewire-0.3", ++ "glib-2.0", ++ "gio-2.0", ++ "gobject-2.0" ++ ] ++ ++ CXXFLAGS += CONFIG['TK_CFLAGS'] ++ CXXFLAGS += [ "-I/usr/include/pipewire-0.3" ] ++ CXXFLAGS += [ "-I/usr/include/spa-0.2" ] ++ ++ UNIFIED_SOURCES += [ ++ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc", ++ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc", ++ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc" ++ ] ++ ++ + if CONFIG["OS_TARGET"] == "NetBSD": + + DEFINES["USE_X11"] = "1" +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h +index 1eb8ead26efa..316468eed1fc 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h +@@ -141,7 +141,7 @@ class DesktopCaptureOptions { + bool disable_effects_ = true; + bool detect_updated_region_ = false; + #if defined(WEBRTC_USE_PIPEWIRE) +- bool allow_pipewire_ = false; ++ bool allow_pipewire_ = true; + #endif + }; + +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc +index 379341c833de..76349f1fbd4d 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc +@@ -15,8 +15,11 @@ + + #include + #include +-#include +-#include ++ ++#include ++#include ++#include ++#include + + #include + #include +@@ -36,31 +39,36 @@ const char kSessionInterfaceName[] = "org.freedesktop.portal.Session"; + const char kRequestInterfaceName[] = "org.freedesktop.portal.Request"; + const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast"; + +-// static +-void BaseCapturerPipeWire::OnStateChanged(void* data, +- pw_remote_state old_state, +- pw_remote_state state, +- const char* error_message) { +- BaseCapturerPipeWire* that = static_cast(data); +- RTC_DCHECK(that); + +- switch (state) { +- case PW_REMOTE_STATE_ERROR: +- RTC_LOG(LS_ERROR) << "PipeWire remote state error: " << error_message; +- break; +- case PW_REMOTE_STATE_CONNECTED: +- RTC_LOG(LS_INFO) << "PipeWire remote state: connected."; +- that->CreateReceivingStream(); +- break; +- case PW_REMOTE_STATE_CONNECTING: +- RTC_LOG(LS_INFO) << "PipeWire remote state: connecting."; ++// static ++void BaseCapturerPipeWire::SyncDmaBuf(int fd, uint64_t start_or_end) { ++ struct dma_buf_sync sync = { 0 }; ++ ++ sync.flags = start_or_end | DMA_BUF_SYNC_READ; ++ ++ while(true) { ++ int ret; ++ ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync); ++ if (ret == -1 && errno == EINTR) { ++ continue; ++ } else if (ret == -1) { ++ RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno); + break; +- case PW_REMOTE_STATE_UNCONNECTED: +- RTC_LOG(LS_INFO) << "PipeWire remote state: unconnected."; ++ } else { + break; ++ } + } + } + ++// static ++void BaseCapturerPipeWire::OnCoreError(void *data, ++ uint32_t id, ++ int seq, ++ int res, ++ const char *message) { ++ RTC_LOG(LS_ERROR) << "core error: " << message; ++} ++ + // static + void BaseCapturerPipeWire::OnStreamStateChanged(void* data, + pw_stream_state old_state, +@@ -73,76 +81,54 @@ void BaseCapturerPipeWire::OnStreamStateChanged(void* data, + case PW_STREAM_STATE_ERROR: + RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message; + break; +- case PW_STREAM_STATE_CONFIGURE: +- pw_stream_set_active(that->pw_stream_, true); +- break; +- case PW_STREAM_STATE_UNCONNECTED: +- case PW_STREAM_STATE_CONNECTING: +- case PW_STREAM_STATE_READY: + case PW_STREAM_STATE_PAUSED: + case PW_STREAM_STATE_STREAMING: ++ case PW_STREAM_STATE_UNCONNECTED: ++ case PW_STREAM_STATE_CONNECTING: + break; + } + } + + // static +-void BaseCapturerPipeWire::OnStreamFormatChanged(void* data, +- const struct spa_pod* format) { ++void BaseCapturerPipeWire::OnStreamParamChanged(void *data, uint32_t id, ++ const struct spa_pod *format) { + BaseCapturerPipeWire* that = static_cast(data); + RTC_DCHECK(that); + +- RTC_LOG(LS_INFO) << "PipeWire stream format changed."; ++ RTC_LOG(LS_INFO) << "PipeWire stream param changed."; + +- if (!format) { +- pw_stream_finish_format(that->pw_stream_, /*res=*/0, /*params=*/nullptr, +- /*n_params=*/0); ++ if (!format || id != SPA_PARAM_Format) { + return; + } + +- that->spa_video_format_ = new spa_video_info_raw(); +- spa_format_video_raw_parse(format, that->spa_video_format_, +- &that->pw_type_->format_video); ++ spa_format_video_raw_parse(format, &that->spa_video_format_); + +- auto width = that->spa_video_format_->size.width; +- auto height = that->spa_video_format_->size.height; ++ auto width = that->spa_video_format_.size.width; ++ auto height = that->spa_video_format_.size.height; + auto stride = SPA_ROUND_UP_N(width * kBytesPerPixel, 4); + auto size = height * stride; + ++ that->desktop_size_ = DesktopSize(width, height); ++ + uint8_t buffer[1024] = {}; + auto builder = spa_pod_builder{buffer, sizeof(buffer)}; + + // Setup buffers and meta header for new format. +- const struct spa_pod* params[2]; +- params[0] = reinterpret_cast(spa_pod_builder_object( +- &builder, +- // id to enumerate buffer requirements +- that->pw_core_type_->param.idBuffers, +- that->pw_core_type_->param_buffers.Buffers, +- // Size: specified as integer (i) and set to specified size +- ":", that->pw_core_type_->param_buffers.size, "i", size, +- // Stride: specified as integer (i) and set to specified stride +- ":", that->pw_core_type_->param_buffers.stride, "i", stride, +- // Buffers: specifies how many buffers we want to deal with, set as +- // integer (i) where preferred number is 8, then allowed number is defined +- // as range (r) from min and max values and it is undecided (u) to allow +- // negotiation +- ":", that->pw_core_type_->param_buffers.buffers, "iru", 8, +- SPA_POD_PROP_MIN_MAX(1, 32), +- // Align: memory alignment of the buffer, set as integer (i) to specified +- // value +- ":", that->pw_core_type_->param_buffers.align, "i", 16)); +- params[1] = reinterpret_cast(spa_pod_builder_object( +- &builder, +- // id to enumerate supported metadata +- that->pw_core_type_->param.idMeta, that->pw_core_type_->param_meta.Meta, +- // Type: specified as id or enum (I) +- ":", that->pw_core_type_->param_meta.type, "I", +- that->pw_core_type_->meta.Header, +- // Size: size of the metadata, specified as integer (i) +- ":", that->pw_core_type_->param_meta.size, "i", +- sizeof(struct spa_meta_header))); +- +- pw_stream_finish_format(that->pw_stream_, /*res=*/0, params, /*n_params=*/2); ++ const struct spa_pod* params[3]; ++ params[0] = reinterpret_cast(spa_pod_builder_add_object(&builder, ++ SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, ++ SPA_PARAM_BUFFERS_size, SPA_POD_Int(size), ++ SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride), ++ SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32))); ++ params[1] = reinterpret_cast(spa_pod_builder_add_object(&builder, ++ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, ++ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header), ++ SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header)))); ++ params[2] = reinterpret_cast(spa_pod_builder_add_object(&builder, ++ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, ++ SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop), ++ SPA_PARAM_META_size, SPA_POD_Int (sizeof(struct spa_meta_region)))); ++ pw_stream_update_params(that->pw_stream_, params, 3); + } + + // static +@@ -150,15 +136,25 @@ void BaseCapturerPipeWire::OnStreamProcess(void* data) { + BaseCapturerPipeWire* that = static_cast(data); + RTC_DCHECK(that); + +- pw_buffer* buf = nullptr; ++ struct pw_buffer *next_buffer; ++ struct pw_buffer *buffer = nullptr; ++ ++ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_); ++ while (next_buffer) { ++ buffer = next_buffer; ++ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_); + +- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) { ++ if (next_buffer) ++ pw_stream_queue_buffer (that->pw_stream_, buffer); ++ } ++ ++ if (!buffer) { + return; + } + +- that->HandleBuffer(buf); ++ that->HandleBuffer(buffer); + +- pw_stream_queue_buffer(that->pw_stream_, buf); ++ pw_stream_queue_buffer(that->pw_stream_, buffer); + } + + BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type) +@@ -169,38 +165,22 @@ BaseCapturerPipeWire::~BaseCapturerPipeWire() { + pw_thread_loop_stop(pw_main_loop_); + } + +- if (pw_type_) { +- delete pw_type_; +- } +- +- if (spa_video_format_) { +- delete spa_video_format_; +- } +- + if (pw_stream_) { + pw_stream_destroy(pw_stream_); + } + +- if (pw_remote_) { +- pw_remote_destroy(pw_remote_); ++ if (pw_core_) { ++ pw_core_disconnect(pw_core_); + } + +- if (pw_core_) { +- pw_core_destroy(pw_core_); ++ if (pw_context_) { ++ pw_context_destroy(pw_context_); + } + + if (pw_main_loop_) { + pw_thread_loop_destroy(pw_main_loop_); + } + +- if (pw_loop_) { +- pw_loop_destroy(pw_loop_); +- } +- +- if (current_frame_) { +- free(current_frame_); +- } +- + if (start_request_signal_id_) { + g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_); + } +@@ -250,27 +230,35 @@ void BaseCapturerPipeWire::InitPortal() { + void BaseCapturerPipeWire::InitPipeWire() { + pw_init(/*argc=*/nullptr, /*argc=*/nullptr); + +- pw_loop_ = pw_loop_new(/*properties=*/nullptr); +- pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop"); +- +- pw_core_ = pw_core_new(pw_loop_, /*properties=*/nullptr); +- pw_core_type_ = pw_core_get_type(pw_core_); +- pw_remote_ = pw_remote_new(pw_core_, nullptr, /*user_data_size=*/0); ++ pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr); ++ pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0); ++ if (!pw_context_) { ++ RTC_LOG(LS_ERROR) << "Failed to create PipeWire context"; ++ return; ++ } + +- InitPipeWireTypes(); ++ pw_core_ = pw_context_connect(pw_context_, nullptr, 0); ++ if (!pw_core_) { ++ RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context"; ++ return; ++ } + + // Initialize event handlers, remote end and stream-related. +- pw_remote_events_.version = PW_VERSION_REMOTE_EVENTS; +- pw_remote_events_.state_changed = &OnStateChanged; ++ pw_core_events_.version = PW_VERSION_CORE_EVENTS; ++ pw_core_events_.error = &OnCoreError; + + pw_stream_events_.version = PW_VERSION_STREAM_EVENTS; + pw_stream_events_.state_changed = &OnStreamStateChanged; +- pw_stream_events_.format_changed = &OnStreamFormatChanged; ++ pw_stream_events_.param_changed = &OnStreamParamChanged; + pw_stream_events_.process = &OnStreamProcess; + +- pw_remote_add_listener(pw_remote_, &spa_remote_listener_, &pw_remote_events_, +- this); +- pw_remote_connect_fd(pw_remote_, pw_fd_); ++ pw_core_add_listener(pw_core_, &spa_core_listener_, &pw_core_events_, this); ++ ++ pw_stream_ = CreateReceivingStream(); ++ if (!pw_stream_) { ++ RTC_LOG(LS_ERROR) << "Failed to create PipeWire stream"; ++ return; ++ } + + if (pw_thread_loop_start(pw_main_loop_) < 0) { + RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop"; +@@ -278,81 +266,132 @@ void BaseCapturerPipeWire::InitPipeWire() { + } + } + +-void BaseCapturerPipeWire::InitPipeWireTypes() { +- spa_type_map* map = pw_core_type_->map; +- pw_type_ = new PipeWireType(); +- +- spa_type_media_type_map(map, &pw_type_->media_type); +- spa_type_media_subtype_map(map, &pw_type_->media_subtype); +- spa_type_format_video_map(map, &pw_type_->format_video); +- spa_type_video_format_map(map, &pw_type_->video_format); +-} +- +-void BaseCapturerPipeWire::CreateReceivingStream() { ++pw_stream* BaseCapturerPipeWire::CreateReceivingStream() { + spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1}; +- spa_rectangle pwScreenBounds = +- spa_rectangle{static_cast(desktop_size_.width()), +- static_cast(desktop_size_.height())}; ++ spa_rectangle pwMaxScreenBounds = spa_rectangle{INT32_MAX, INT32_MAX}; + +- spa_fraction pwFrameRateMin = spa_fraction{0, 1}; +- spa_fraction pwFrameRateMax = spa_fraction{60, 1}; ++ auto stream = pw_stream_new(pw_core_, "webrtc-pipewire-stream", nullptr); + +- pw_properties* reuseProps = pw_properties_new("pipewire.client.reuse", "1", +- /*end of varargs*/ nullptr); +- pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps); ++ if (!stream) { ++ RTC_LOG(LS_ERROR) << "Could not create receiving stream."; ++ return nullptr; ++ } + + uint8_t buffer[1024] = {}; +- const spa_pod* params[1]; +- spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)}; +- params[0] = reinterpret_cast(spa_pod_builder_object( +- &builder, +- // id to enumerate formats +- pw_core_type_->param.idEnumFormat, pw_core_type_->spa_format, "I", +- pw_type_->media_type.video, "I", pw_type_->media_subtype.raw, +- // Video format: specified as id or enum (I), preferred format is BGRx, +- // then allowed formats are enumerated (e) and the format is undecided (u) +- // to allow negotiation +- ":", pw_type_->format_video.format, "Ieu", pw_type_->video_format.BGRx, +- SPA_POD_PROP_ENUM(2, pw_type_->video_format.RGBx, +- pw_type_->video_format.BGRx), +- // Video size: specified as rectangle (R), preferred size is specified as +- // first parameter, then allowed size is defined as range (r) from min and +- // max values and the format is undecided (u) to allow negotiation +- ":", pw_type_->format_video.size, "Rru", &pwScreenBounds, 2, +- &pwMinScreenBounds, &pwScreenBounds, +- // Frame rate: specified as fraction (F) and set to minimum frame rate +- // value +- ":", pw_type_->format_video.framerate, "F", &pwFrameRateMin, +- // Max frame rate: specified as fraction (F), preferred frame rate is set +- // to maximum value, then allowed frame rate is defined as range (r) from +- // min and max values and it is undecided (u) to allow negotiation +- ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2, +- &pwFrameRateMin, &pwFrameRateMax)); +- +- pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_, +- this); ++ const spa_pod* params[2]; ++ spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer)); ++ ++ params[0] = reinterpret_cast(spa_pod_builder_add_object(&builder, ++ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, ++ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video), ++ SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), ++ SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(5, SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA, ++ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA), ++ SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMinScreenBounds, ++ &pwMinScreenBounds, ++ &pwMaxScreenBounds), ++ 0)); ++ pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_, this); ++ + pw_stream_flags flags = static_cast( +- PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE | +- PW_STREAM_FLAG_MAP_BUFFERS); +- if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, /*port_path=*/nullptr, +- flags, params, +- /*n_params=*/1) != 0) { ++ PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE); ++ ++ if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pw_stream_node_id_, PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) { + RTC_LOG(LS_ERROR) << "Could not connect receiving stream."; + portal_init_failed_ = true; +- return; + } ++ ++ return stream; + } + + void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) { ++ struct spa_meta_region* video_crop; + spa_buffer* spaBuffer = buffer->buffer; +- void* src = nullptr; ++ uint8_t *map = nullptr; ++ uint8_t* src = nullptr; ++ uint8_t* dst = nullptr; ++ ++ if (spaBuffer->datas[0].chunk->size == 0) { ++ map = nullptr; ++ src = nullptr; ++ } else if (spaBuffer->datas[0].type == SPA_DATA_MemFd) { ++ map = static_cast(mmap( ++ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset, ++ PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0)); ++ ++ if (map == MAP_FAILED) { ++ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno); ++ return; ++ } ++ ++ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t); ++ } else if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) { ++ int fd; ++ fd = spaBuffer->datas[0].fd; + +- if (!(src = spaBuffer->datas[0].data)) { ++ map = static_cast(mmap( ++ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset, ++ PROT_READ, MAP_PRIVATE, fd, 0)); ++ ++ if (map == MAP_FAILED) { ++ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno); ++ return; ++ } ++ ++ SyncDmaBuf(fd, DMA_BUF_SYNC_START); ++ ++ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t); ++ } else if (spaBuffer->datas[0].type == SPA_DATA_MemPtr) { ++ map = nullptr; ++ src = static_cast(spaBuffer->datas[0].data); ++ } else { + return; + } + +- uint32_t maxSize = spaBuffer->datas[0].maxsize; +- int32_t srcStride = spaBuffer->datas[0].chunk->stride; ++ if (!src) { ++ return; ++ } ++ ++ DesktopSize prev_crop_size = DesktopSize(0, 0); ++ if (video_crop_size_initialized_) { ++ prev_crop_size = video_crop_size_; ++ } ++ ++ if ((video_crop = static_cast( ++ spa_buffer_find_meta_data(spaBuffer, SPA_META_VideoCrop, sizeof(*video_crop))))) { ++ RTC_DCHECK(video_crop->region.size.width <= desktop_size_.width() && ++ video_crop->region.size.height <= desktop_size_.height()); ++ if ((video_crop->region.size.width != desktop_size_.width() || ++ video_crop->region.size.height != desktop_size_.height()) && video_crop->region.size.width && video_crop->region.size.height) { ++ video_crop_size_ = DesktopSize(video_crop->region.size.width, video_crop->region.size.height); ++ video_crop_size_initialized_ = true; ++ } else { ++ video_crop_size_initialized_ = false; ++ } ++ } else { ++ video_crop_size_initialized_ = false; ++ } ++ ++ size_t frame_size; ++ if (video_crop_size_initialized_) { ++ frame_size = ++ video_crop_size_.width() * video_crop_size_.height() * kBytesPerPixel; ++ } else { ++ frame_size = ++ desktop_size_.width() * desktop_size_.height() * kBytesPerPixel; ++ } ++ ++ if (!current_frame_ || ++ (video_crop_size_initialized_ && !video_crop_size_.equals(prev_crop_size))) { ++ current_frame_ = std::make_unique(frame_size); ++ } ++ RTC_DCHECK(current_frame_ != nullptr); ++ ++ const int32_t dstStride = video_crop_size_initialized_ ++ ? video_crop_size_.width() * kBytesPerPixel ++ : desktop_size_.width() * kBytesPerPixel; ++ const int32_t srcStride = spaBuffer->datas[0].chunk->stride; ++ + if (srcStride != (desktop_size_.width() * kBytesPerPixel)) { + RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: " + << srcStride +@@ -361,21 +400,40 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) { + return; + } + +- if (!current_frame_) { +- current_frame_ = static_cast(malloc(maxSize)); ++ dst = current_frame_.get(); ++ ++ // Adjust source content based on crop video position ++ if (video_crop_size_initialized_ && ++ (video_crop->region.position.y + video_crop_size_.height() <= desktop_size_.height())) { ++ for (int i = 0; i < video_crop->region.position.y; ++i) { ++ src += srcStride; ++ } ++ } ++ const int xOffset = ++ video_crop_size_initialized_ && (video_crop->region.position.x + video_crop_size_.width() <= ++ desktop_size_.width()) ++ ? video_crop->region.position.x * kBytesPerPixel ++ : 0; ++ const int height = video_crop_size_initialized_ ? video_crop_size_.height() : desktop_size_.height(); ++ for (int i = 0; i < height; ++i) { ++ // Adjust source content based on crop video position if needed ++ src += xOffset; ++ std::memcpy(dst, src, dstStride); ++ // If both sides decided to go with the RGBx format we need to convert it to ++ // BGRx to match color format expected by WebRTC. ++ if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx || ++ spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) { ++ ConvertRGBxToBGRx(dst, dstStride); ++ } ++ src += srcStride - xOffset; ++ dst += dstStride; + } +- RTC_DCHECK(current_frame_ != nullptr); + +- // If both sides decided to go with the RGBx format we need to convert it to +- // BGRx to match color format expected by WebRTC. +- if (spa_video_format_->format == pw_type_->video_format.RGBx) { +- uint8_t* tempFrame = static_cast(malloc(maxSize)); +- std::memcpy(tempFrame, src, maxSize); +- ConvertRGBxToBGRx(tempFrame, maxSize); +- std::memcpy(current_frame_, tempFrame, maxSize); +- free(tempFrame); +- } else { +- std::memcpy(current_frame_, src, maxSize); ++ if (map) { ++ if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) { ++ SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_END); ++ } ++ munmap(map, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset); + } + } + +@@ -725,10 +783,7 @@ void BaseCapturerPipeWire::OnStartRequestResponseSignal( + g_variant_get(variant, "(u@a{sv})", &stream_id, &options); + RTC_DCHECK(options != nullptr); + +- g_variant_lookup(options, "size", "(ii)", &width, &height); +- +- that->desktop_size_.set(width, height); +- ++ that->pw_stream_node_id_ = stream_id; + g_variant_unref(options); + g_variant_unref(variant); + } +@@ -813,10 +868,15 @@ void BaseCapturerPipeWire::CaptureFrame() { + return; + } + +- std::unique_ptr result(new BasicDesktopFrame(desktop_size_)); ++ DesktopSize frame_size = desktop_size_; ++ if (video_crop_size_initialized_) { ++ frame_size = video_crop_size_; ++ } ++ ++ std::unique_ptr result(new BasicDesktopFrame(frame_size)); + result->CopyPixelsFrom( +- current_frame_, (desktop_size_.width() * kBytesPerPixel), +- DesktopRect::MakeWH(desktop_size_.width(), desktop_size_.height())); ++ current_frame_.get(), (frame_size.width() * kBytesPerPixel), ++ DesktopRect::MakeWH(frame_size.width(), frame_size.height())); + if (!result) { + callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr); + return; +@@ -837,4 +897,22 @@ bool BaseCapturerPipeWire::SelectSource(SourceId id) { + return true; + } + ++// static ++std::unique_ptr ++BaseCapturerPipeWire::CreateRawScreenCapturer( ++ const DesktopCaptureOptions& options) { ++ std::unique_ptr capturer = ++ std::make_unique(BaseCapturerPipeWire::CaptureSourceType::kAny); ++ return std::move(capturer);} ++ ++// static ++std::unique_ptr ++BaseCapturerPipeWire::CreateRawWindowCapturer( ++ const DesktopCaptureOptions& options) { ++ ++ std::unique_ptr capturer = ++ std::make_unique(BaseCapturerPipeWire::CaptureSourceType::kAny); ++ return std::move(capturer); ++} ++ + } // namespace webrtc +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h +index 56b101acbaa6..de54157d1a2a 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h +@@ -22,17 +22,13 @@ + + namespace webrtc { + +-class PipeWireType { +- public: +- spa_type_media_type media_type; +- spa_type_media_subtype media_subtype; +- spa_type_format_video format_video; +- spa_type_video_format video_format; +-}; +- + class BaseCapturerPipeWire : public DesktopCapturer { + public: +- enum CaptureSourceType { Screen = 1, Window }; ++ enum CaptureSourceType : uint32_t { ++ kScreen = 0b01, ++ kWindow = 0b10, ++ kAny = 0b11 ++ }; + + explicit BaseCapturerPipeWire(CaptureSourceType source_type); + ~BaseCapturerPipeWire() override; +@@ -43,28 +39,32 @@ class BaseCapturerPipeWire : public DesktopCapturer { + bool GetSourceList(SourceList* sources) override; + bool SelectSource(SourceId id) override; + ++ static std::unique_ptr CreateRawScreenCapturer( ++ const DesktopCaptureOptions& options); ++ ++ static std::unique_ptr CreateRawWindowCapturer( ++ const DesktopCaptureOptions& options); ++ + private: + // PipeWire types --> ++ pw_context* pw_context_ = nullptr; + pw_core* pw_core_ = nullptr; +- pw_type* pw_core_type_ = nullptr; + pw_stream* pw_stream_ = nullptr; +- pw_remote* pw_remote_ = nullptr; +- pw_loop* pw_loop_ = nullptr; + pw_thread_loop* pw_main_loop_ = nullptr; +- PipeWireType* pw_type_ = nullptr; + ++ spa_hook spa_core_listener_ = {}; + spa_hook spa_stream_listener_ = {}; +- spa_hook spa_remote_listener_ = {}; + ++ pw_core_events pw_core_events_ = {}; + pw_stream_events pw_stream_events_ = {}; +- pw_remote_events pw_remote_events_ = {}; + +- spa_video_info_raw* spa_video_format_ = nullptr; ++ struct spa_video_info_raw spa_video_format_; + ++ guint32 pw_stream_node_id_ = 0; + gint32 pw_fd_ = -1; + + CaptureSourceType capture_source_type_ = +- BaseCapturerPipeWire::CaptureSourceType::Screen; ++ BaseCapturerPipeWire::CaptureSourceType::kAny; + + // <-- end of PipeWire types + +@@ -78,33 +78,37 @@ class BaseCapturerPipeWire : public DesktopCapturer { + guint sources_request_signal_id_ = 0; + guint start_request_signal_id_ = 0; + ++ bool video_crop_size_initialized_ = false; ++ DesktopSize video_crop_size_;; + DesktopSize desktop_size_ = {}; + DesktopCaptureOptions options_ = {}; + +- uint8_t* current_frame_ = nullptr; ++ std::unique_ptr current_frame_; + Callback* callback_ = nullptr; + + bool portal_init_failed_ = false; + + void InitPortal(); + void InitPipeWire(); +- void InitPipeWireTypes(); + +- void CreateReceivingStream(); ++ pw_stream* CreateReceivingStream(); + void HandleBuffer(pw_buffer* buffer); + + void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size); + +- static void OnStateChanged(void* data, +- pw_remote_state old_state, +- pw_remote_state state, +- const char* error); ++ static void SyncDmaBuf(int fd, uint64_t start_or_end); ++ static void OnCoreError(void *data, ++ uint32_t id, ++ int seq, ++ int res, ++ const char *message); ++ static void OnStreamParamChanged(void *data, ++ uint32_t id, ++ const struct spa_pod *format); + static void OnStreamStateChanged(void* data, + pw_stream_state old_state, + pw_stream_state state, + const char* error_message); +- +- static void OnStreamFormatChanged(void* data, const struct spa_pod* format); + static void OnStreamProcess(void* data); + static void OnNewBuffer(void* data, uint32_t id); + +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc +index 26956fc67dc8..3813d697bb38 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc +@@ -15,7 +15,7 @@ + namespace webrtc { + + ScreenCapturerPipeWire::ScreenCapturerPipeWire() +- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Screen) {} ++ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kScreen) {} + ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {} + + // static +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc +index 35436475cb4d..c43a1f1a0c4e 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc +@@ -15,7 +15,7 @@ + namespace webrtc { + + WindowCapturerPipeWire::WindowCapturerPipeWire() +- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Window) {} ++ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kWindow) {} + WindowCapturerPipeWire::~WindowCapturerPipeWire() {} + + // static +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc +index cf8a9dd0e0db..d27fab8d28d9 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc +@@ -26,7 +26,7 @@ std::unique_ptr DesktopCapturer::CreateRawScreenCapturer( + const DesktopCaptureOptions& options) { + #if defined(WEBRTC_USE_PIPEWIRE) + if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) { +- return ScreenCapturerPipeWire::CreateRawScreenCapturer(options); ++ return BaseCapturerPipeWire::CreateRawScreenCapturer(options); + } + #endif // defined(WEBRTC_USE_PIPEWIRE) + +diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc +index 82359e50c2db..bb9724cf7cc2 100644 +--- a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc ++++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc +@@ -26,7 +26,7 @@ std::unique_ptr DesktopCapturer::CreateRawWindowCapturer( + const DesktopCaptureOptions& options) { + #if defined(WEBRTC_USE_PIPEWIRE) + if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) { +- return WindowCapturerPipeWire::CreateRawWindowCapturer(options); ++ return BaseCapturerPipeWire::CreateRawWindowCapturer(options); + } + #endif // defined(WEBRTC_USE_PIPEWIRE) + diff --git a/firefox-pipewire.patch b/firefox-pipewire.patch new file mode 100644 index 0000000..7233a73 --- /dev/null +++ b/firefox-pipewire.patch @@ -0,0 +1,63 @@ +diff -up firefox-68.0/config/system-headers.mozbuild.firefox-pipewire firefox-68.0/config/system-headers.mozbuild +--- firefox-68.0/config/system-headers.mozbuild.firefox-pipewire 2019-07-01 22:30:26.000000000 +0200 ++++ firefox-68.0/config/system-headers.mozbuild 2019-07-08 15:26:15.397161627 +0200 +@@ -314,6 +314,7 @@ system_headers = [ + 'Gestalt.h', + 'getopt.h', + 'gio/gio.h', ++ 'gio/gunixfdlist.h', + 'glibconfig.h', + 'glib.h', + 'glib-object.h', +@@ -607,6 +608,7 @@ system_headers = [ + 'Pgenerr.h', + 'PGenErr.h', + 'Ph.h', ++ 'pipewire/pipewire.h', + 'pixman.h', + 'pk11func.h', + 'pk11pqg.h', +diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build.firefox-pipewire firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build +--- firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build.firefox-pipewire 2019-07-01 22:30:33.000000000 +0200 ++++ firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build 2019-07-08 15:26:15.397161627 +0200 +@@ -194,6 +194,28 @@ if CONFIG["OS_TARGET"] == "Linux": + "/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc" + ] + ++# PipeWire specific files ++if CONFIG["OS_TARGET"] == "Linux": ++ ++ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1" ++ ++ OS_LIBS += [ ++ "rt", ++ "pipewire-0.2", ++ "glib-2.0", ++ "gio-2.0", ++ "gobject-2.0" ++ ] ++ ++ CXXFLAGS += CONFIG['TK_CFLAGS'] ++ ++ UNIFIED_SOURCES += [ ++ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc", ++ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc", ++ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc" ++ ] ++ ++ + if CONFIG["OS_TARGET"] == "NetBSD": + + DEFINES["USE_X11"] = "1" +diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h.firefox-pipewire firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h +--- firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h.firefox-pipewire 2019-07-08 16:42:13.936254926 +0200 ++++ firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h 2019-07-08 16:42:17.509264974 +0200 +@@ -141,7 +141,7 @@ class DesktopCaptureOptions { + bool disable_effects_ = true; + bool detect_updated_region_ = false; + #if defined(WEBRTC_USE_PIPEWIRE) +- bool allow_pipewire_ = false; ++ bool allow_pipewire_ = true; + #endif + }; + diff --git a/firefox-rhel6-hugepage.patch b/firefox-rhel6-hugepage.patch new file mode 100644 index 0000000..4855721 --- /dev/null +++ b/firefox-rhel6-hugepage.patch @@ -0,0 +1,13 @@ +diff -up firefox-68.1.0/xpcom/threads/nsThread.cpp.old firefox-68.1.0/xpcom/threads/nsThread.cpp +--- firefox-68.1.0/xpcom/threads/nsThread.cpp.old 2019-09-20 12:17:35.481661390 +0200 ++++ firefox-68.1.0/xpcom/threads/nsThread.cpp 2019-09-20 12:19:14.269180516 +0200 +@@ -556,7 +556,8 @@ void nsThread::InitCommon() { + // kernel report them as separate regions, even when they are adjacent to + // heap memory. This allows us to accurately track the actual memory + // consumption of our allocated stacks. +- madvise(mStackBase, stackSize, MADV_NOHUGEPAGE); ++ // not supported on RHEL6 ++ // madvise(mStackBase, stackSize, MADV_NOHUGEPAGE); + + pthread_attr_destroy(&attr); + #elif defined(XP_WIN) diff --git a/firefox-rhel6-nss-tls1.3.patch b/firefox-rhel6-nss-tls1.3.patch new file mode 100644 index 0000000..2b6e8f7 --- /dev/null +++ b/firefox-rhel6-nss-tls1.3.patch @@ -0,0 +1,13 @@ +diff -up firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp.old firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp +--- firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp.old 2019-10-24 14:20:21.227037984 +0200 ++++ firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp 2019-10-24 14:45:52.769506967 +0200 +@@ -996,6 +996,9 @@ void nsNSSComponent::FillTLSVersionRange + return; + } + ++ // Enable TLS 1.3 as our NSS supports it. ++ supported.max = 0x304; ++ + // Clip the defaults by what NSS actually supports to enable + // working with a system NSS with different ranges. + rangeOut.min = std::max(rangeOut.min, supported.min); diff --git a/gen_cbindgen-vendor.sh b/gen_cbindgen-vendor.sh deleted file mode 100755 index 01ecc5d..0000000 --- a/gen_cbindgen-vendor.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -set -x - -# Dummy Cargo.toml file with cbindgen dependency -cat > Cargo.toml </pref ++ rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, ++ getter_AddRefs(jsFile)); ++ NS_ENSURE_SUCCESS(rv, rv); ++ ++ rv = jsFile->AppendNative(NS_LITERAL_CSTRING("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-78.0/modules/libpref/Preferences.cpp.1170092 firefox-78.0/modules/libpref/Preferences.cpp +--- firefox-78.0/modules/libpref/Preferences.cpp.1170092 2020-06-25 13:45:28.818999498 +0200 ++++ firefox-78.0/modules/libpref/Preferences.cpp 2020-06-25 13:48:45.996708102 +0200 +@@ -4499,6 +4499,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-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-78.0/toolkit/xre/nsXREDirProvider.cpp +--- firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2020-06-17 04:20:11.000000000 +0200 ++++ firefox-78.0/toolkit/xre/nsXREDirProvider.cpp 2020-06-25 13:48:28.613645633 +0200 +@@ -60,6 +60,7 @@ + #endif + #ifdef XP_UNIX + # include ++# include "nsIXULAppInfo.h" + #endif + #ifdef XP_IOS + # include "UIKitDirProvider.h" +@@ -533,6 +534,21 @@ nsXREDirProvider::GetFile(const char* aP + } + } + } ++ ++#if defined(XP_UNIX) ++ if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { ++ nsCString sysConfigDir = NS_LITERAL_CSTRING("/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) { +@@ -845,6 +861,17 @@ nsresult nsXREDirProvider::GetFilesInter + + LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories); + ++ // 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(NS_LITERAL_CSTRING("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)) { + // NS_APP_CHROME_DIR_LIST is only used to get default (native) icons +diff -up firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2020-06-17 04:20:17.000000000 +0200 ++++ firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h 2020-06-25 13:45:28.819999502 +0200 +@@ -60,6 +60,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/mozilla-1196777.patch b/mozilla-1196777.patch new file mode 100644 index 0000000..7fa1595 --- /dev/null +++ b/mozilla-1196777.patch @@ -0,0 +1,13 @@ +diff -up firefox-68.0/widget/gtk/nsWindow.cpp.1196777 firefox-68.0/widget/gtk/nsWindow.cpp +--- firefox-68.0/widget/gtk/nsWindow.cpp.1196777 2019-05-21 11:29:55.833376744 +0200 ++++ firefox-68.0/widget/gtk/nsWindow.cpp 2019-05-21 12:15:35.446089316 +0200 +@@ -156,7 +156,8 @@ const gint kEvents = + #if GTK_CHECK_VERSION(3, 4, 0) + GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | + #endif +- GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK; ++ GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK | ++ GDK_FOCUS_CHANGE_MASK; + + #if !GTK_CHECK_VERSION(3, 22, 0) + typedef enum { diff --git a/mozilla-1245783.patch b/mozilla-1245783.patch deleted file mode 100644 index 3452616..0000000 --- a/mozilla-1245783.patch +++ /dev/null @@ -1,17 +0,0 @@ -# Remove when mozbz#1269319 lands - ---- firefox-45.0.1-orig/js/src/Makefile.in 2016-05-17 14:53:58.753178403 +0200 -+++ firefox-45.0.1/js/src/Makefile.in 2016-05-17 14:53:28.432817862 +0200 -@@ -144,6 +144,11 @@ distclean:: - - CFLAGS += $(MOZ_ZLIB_CFLAGS) - -+# Avoid GNU gcc bug #70526 -+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70526#c14 -+CFLAGS += -fno-schedule-insns2 -+CXXFLAGS += -fno-schedule-insns2 -+ - # Silence warnings on AIX/HP-UX from non-GNU compilers - ifndef GNU_CC - ifeq ($(OS_ARCH),AIX) - diff --git a/mozilla-1512162.patch b/mozilla-1512162.patch deleted file mode 100644 index 0ee0ed5..0000000 --- a/mozilla-1512162.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up thunderbird-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp.mozbz-1512162 thunderbird-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp ---- thunderbird-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp.mozbz-1512162 2019-09-10 01:43:33.000000000 +0200 -+++ thunderbird-68.1.0/js/xpconnect/src/XPCWrappedNative.cpp 2019-09-12 16:16:52.644123766 +0200 -@@ -1092,7 +1092,7 @@ class MOZ_STACK_CLASS CallMethodHelper f - MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, - MutableHandleValue srcp) const; - -- MOZ_ALWAYS_INLINE bool GatherAndConvertResults(); -+ bool GatherAndConvertResults(); - - MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); - -@@ -1139,7 +1139,7 @@ class MOZ_STACK_CLASS CallMethodHelper f - - ~CallMethodHelper(); - -- MOZ_ALWAYS_INLINE bool Call(); -+ bool Call(); - - // Trace implementation so we can put our CallMethodHelper in a Rooted. - void trace(JSTracer* aTrc); diff --git a/mozilla-526293.patch b/mozilla-526293.patch deleted file mode 100644 index a03796a..0000000 --- a/mozilla-526293.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up firefox-60.6.0/widget/gtk/nsFilePicker.cpp.old firefox-60.6.0/widget/gtk/nsFilePicker.cpp ---- firefox-60.6.0/widget/gtk/nsFilePicker.cpp.old 2019-03-27 10:29:47.918560620 +0100 -+++ firefox-60.6.0/widget/gtk/nsFilePicker.cpp 2019-03-27 10:30:08.384491717 +0100 -@@ -366,9 +366,7 @@ nsFilePicker::Open(nsIFilePickerShownCal - // If we have --enable-proxy-bypass-protection, then don't allow - // remote URLs to be used. - #ifndef MOZ_PROXY_BYPASS_PROTECTION -- if (mAllowURLs) { -- gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(file_chooser), FALSE); -- } -+ gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(file_chooser), FALSE); - #endif - - if (action == GTK_FILE_CHOOSER_ACTION_OPEN || diff --git a/mozilla-bmo1005535.patch b/mozilla-bmo1005535.patch new file mode 100644 index 0000000..cab0134 --- /dev/null +++ b/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/mozilla-bmo1504834-part1.patch b/mozilla-bmo1504834-part1.patch new file mode 100644 index 0000000..01da145 --- /dev/null +++ b/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/mozilla-bmo1504834-part2.patch b/mozilla-bmo1504834-part2.patch new file mode 100644 index 0000000..e6e6aa5 --- /dev/null +++ b/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/mozilla-bmo1504834-part3.patch b/mozilla-bmo1504834-part3.patch new file mode 100644 index 0000000..1a498f8 --- /dev/null +++ b/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/mozilla-bmo1504834-part4.patch b/mozilla-bmo1504834-part4.patch new file mode 100644 index 0000000..9d2ffc4 --- /dev/null +++ b/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/mozilla-bmo1554971.patch b/mozilla-bmo1554971.patch new file mode 100644 index 0000000..ab25c2d --- /dev/null +++ b/mozilla-bmo1554971.patch @@ -0,0 +1,22 @@ +# HG changeset patch +# Parent a25cebecb02d5460b8ad757fe9cb4a9c8d1d7658 +Eliminate startup error message: +JavaScript error: , line 0: Error: Type error for platformInfo value (Error processing arch: Invalid enumeration value "s390x") for runtime.getPlatformInfo. + +Reported here: https://bugzilla.mozilla.org/show_bug.cgi?id=1554971 + +Uncertain if this is causing real problems or not. Also uncertain if the fix actually fixes anything. +No response from upstream yet. + +diff -r a25cebecb02d -r 378b81b00e73 toolkit/components/extensions/schemas/runtime.json +--- a/toolkit/components/extensions/schemas/runtime.json Fri Jul 05 12:42:44 2019 +0200 ++++ b/toolkit/components/extensions/schemas/runtime.json Fri Jul 19 13:19:30 2019 +0200 +@@ -64,7 +64,7 @@ + { + "id": "PlatformArch", + "type": "string", +- "enum": ["arm", "x86-32", "x86-64"], ++ "enum": ["arm", "x86-32", "x86-64", "s390x", "aarch64", "ppc64le"], + "allowedContexts": ["content", "devtools"], + "description": "The machine's processor architecture." + }, diff --git a/mozilla-bmo1602730.patch b/mozilla-bmo1602730.patch new file mode 100644 index 0000000..c11f958 --- /dev/null +++ b/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/mozilla-bmo1626236.patch b/mozilla-bmo1626236.patch new file mode 100644 index 0000000..32e3742 --- /dev/null +++ b/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/mozilla-bmo849632.patch b/mozilla-bmo849632.patch new file mode 100644 index 0000000..177fdc3 --- /dev/null +++ b/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/mozilla-bmo998749.patch b/mozilla-bmo998749.patch new file mode 100644 index 0000000..4ddde4c --- /dev/null +++ b/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/mozilla-build-arm.patch b/mozilla-build-arm.patch deleted file mode 100644 index f98cbe3..0000000 --- a/mozilla-build-arm.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-29.0/mozilla-release/gfx/ycbcr/moz.build.arm firefox-29.0/mozilla-release/gfx/ycbcr/moz.build ---- firefox-29.0/mozilla-release/gfx/ycbcr/moz.build.arm 2014-04-22 07:27:47.000000000 +0200 -+++ firefox-29.0/mozilla-release/gfx/ycbcr/moz.build 2014-04-22 16:40:34.862849368 +0200 -@@ -61,7 +61,7 @@ else: - 'yuv_row_other.cpp', - ] - --if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']: -+if CONFIG['HAVE_ARM_NEON']: - SOURCES += [ - 'yuv_row_arm.s', - ] diff --git a/mozilla-s390-context.patch b/mozilla-s390-context.patch new file mode 100644 index 0000000..55bd7a8 --- /dev/null +++ b/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/mozilla-s390x-skia-gradient.patch b/mozilla-s390x-skia-gradient.patch new file mode 100644 index 0000000..8c0e3bd --- /dev/null +++ b/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/node-stdout-nonblocking-wrapper b/node-stdout-nonblocking-wrapper index b2814b8..e36d134 100755 --- a/node-stdout-nonblocking-wrapper +++ b/node-stdout-nonblocking-wrapper @@ -1,2 +1,3 @@ #!/bin/sh -exec /usr/bin/node "$@" 2>&1 | cat - +#exec /usr/bin/node "$@" 2>&1 | cat - +exec $MOZ_NODEJS "$@" 2>&1 | cat - diff --git a/python-2.7-gcc8-fix.patch b/python-2.7-gcc8-fix.patch new file mode 100644 index 0000000..d4da520 --- /dev/null +++ b/python-2.7-gcc8-fix.patch @@ -0,0 +1,57 @@ +commit 0b91f8a668201fc58fa732b8acc496caedfdbae0 +Author: Florian Weimer +Date: Sun Apr 29 12:18:33 2018 -0700 + + Indicate that _PyGC_Head is only 8-byte aligned. (closes bpo-33374) + + By spec, the "long double" in _PyGC_Head requires the union to always be 16-byte + aligned. However, obmalloc only yields 8-byte alignment. Compilers including GCC + 8 are starting to use alignment information to do store-merging. So, the "long + double" needs to be changed to a simple "double" as was long ago done in Python + 3 by e348c8d154cf6342c79d627ebfe89dfe9de23817. For 2.7, we need to add some + dummy padding to make sure _PyGC_Head stays the same size. + +diff --git a/Include/objimpl.h b/Include/objimpl.h +index 5f28683329..cbf6bc3f87 100644 +--- Python-2.7.13/Include/objimpl.h ++++ Python-2.7.13/Include/objimpl.h +@@ -248,6 +248,20 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); + /* for source compatibility with 2.2 */ + #define _PyObject_GC_Del PyObject_GC_Del + ++/* ++ * Former over-aligned definition of PyGC_Head, used to compute the size of the ++ * padding for the new version below. ++ */ ++union _gc_head; ++union _gc_head_old { ++ struct { ++ union _gc_head_old *gc_next; ++ union _gc_head_old *gc_prev; ++ Py_ssize_t gc_refs; ++ } gc; ++ long double dummy; ++}; ++ + /* GC information is stored BEFORE the object structure. */ + typedef union _gc_head { + struct { +@@ -255,7 +269,8 @@ typedef union _gc_head { + union _gc_head *gc_prev; + Py_ssize_t gc_refs; + } gc; +- long double dummy; /* force worst-case alignment */ ++ double dummy; /* Force at least 8-byte alignment. */ ++ char dummy_padding[sizeof(union _gc_head_old)]; + } PyGC_Head; + + extern PyGC_Head *_PyGC_generation0; +diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst +new file mode 100644 +index 0000000000..9ec1a605c8 +--- /dev/null ++++ Python-2.7.13/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst +@@ -0,0 +1,3 @@ ++Tweak the definition of PyGC_Head, so compilers do not believe it is always ++16-byte aligned on x86. This prevents crashes with more aggressive ++optimizations present in GCC 8. diff --git a/python-2.7.patch b/python-2.7.patch new file mode 100644 index 0000000..cad1c67 --- /dev/null +++ b/python-2.7.patch @@ -0,0 +1,17 @@ +diff -up Python-2.7.13/configure.build Python-2.7.13/configure +--- Python-2.7.13/configure.build 2019-06-04 13:32:12.772134075 +0200 ++++ Python-2.7.13/configure 2019-06-04 13:32:26.140144601 +0200 +@@ -6018,11 +6018,11 @@ then + # debug builds. + OPT="-g -O0 -Wall $STRICT_PROTO" + else +- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO" ++ OPT="-g $WRAP -O2 -Wall $STRICT_PROTO" + fi + ;; + *) +- OPT="-O3 -Wall $STRICT_PROTO" ++ OPT="-O2 -Wall $STRICT_PROTO" + ;; + esac + case $ac_sys_system in diff --git a/python-encode.patch b/python-encode.patch new file mode 100644 index 0000000..2f3bad9 --- /dev/null +++ b/python-encode.patch @@ -0,0 +1,12 @@ +diff -up firefox-68.0/python/mozbuild/mozbuild/controller/building.py.old firefox-68.0/python/mozbuild/mozbuild/controller/building.py +--- firefox-68.0/python/mozbuild/mozbuild/controller/building.py.old 2019-05-29 10:46:55.403262995 +0200 ++++ firefox-68.0/python/mozbuild/mozbuild/controller/building.py 2019-05-29 10:47:42.691176970 +0200 +@@ -571,7 +571,7 @@ class TerminalLoggingHandler(logging.Han + if self.footer: + self.footer.clear() + +- self.fh.write(msg) ++ self.fh.write(msg.encode("utf-8")) + self.fh.write('\n') + + if self.footer: diff --git a/python-missing-utimensat.patch b/python-missing-utimensat.patch new file mode 100644 index 0000000..d19ecab --- /dev/null +++ b/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/rhbz-1173156.patch b/rhbz-1173156.patch new file mode 100644 index 0000000..c35d901 --- /dev/null +++ b/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/rhbz-1219542-s390-build.patch b/rhbz-1219542-s390-build.patch deleted file mode 100644 index f94e43a..0000000 --- a/rhbz-1219542-s390-build.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in ---- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200 -+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200 -@@ -541,7 +541,7 @@ case "$host" in - - *-linux*|*-kfreebsd*-gnu|*-gnu*) - HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX" -- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}" -+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}" - ;; - - *) -@@ -617,8 +617,8 @@ case "$target" in - - *-*linux*) - if test "$GNU_CC" -o "$GNU_CXX"; then -- MOZ_PGO_OPTIMIZE_FLAGS="-O3" -- MOZ_OPTIMIZE_FLAGS="-O3" -+ MOZ_PGO_OPTIMIZE_FLAGS="-O1" -+ MOZ_OPTIMIZE_FLAGS="-O1" - if test -z "$CLANG_CC"; then - MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS" - fi diff --git a/rhbz-1354671.patch b/rhbz-1354671.patch deleted file mode 100644 index 7660f14..0000000 --- a/rhbz-1354671.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-60.5.0/layout/base/nsIPresShell.h.1354671 firefox-60.5.0/layout/base/nsIPresShell.h ---- firefox-60.5.0/layout/base/nsIPresShell.h.1354671 2019-01-22 16:08:40.796539950 +0100 -+++ firefox-60.5.0/layout/base/nsIPresShell.h 2019-01-22 16:10:25.106069228 +0100 -@@ -204,7 +204,7 @@ class nsIPresShell : public nsStubDocume - * to the same aSize value. AllocateFrame is infallible and will abort - * on out-of-memory. - */ -- void* AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize) { -+ void* __attribute__((optimize("no-lifetime-dse"))) AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize) { - void* result = mFrameArena.AllocateByFrameID(aID, aSize); - RecordAlloc(result); - return result; diff --git a/rhbz-1821418.patch b/rhbz-1821418.patch new file mode 100644 index 0000000..8b02dfb --- /dev/null +++ b/rhbz-1821418.patch @@ -0,0 +1,36 @@ +diff -up firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp +--- firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 2020-06-17 04:20:44.000000000 +0200 ++++ firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp 2020-06-25 14:50:46.369798294 +0200 +@@ -157,8 +157,12 @@ bool nsAvailableMemoryWatcher::IsVirtual + + /* static */ + bool nsAvailableMemoryWatcher::IsCommitSpaceLow(const MEMORYSTATUSEX& aStat) { +- if ((kLowCommitSpaceThreshold != 0) && +- (aStat.ullAvailPageFile < kLowCommitSpaceThreshold)) { ++ const char* threshold = getenv("MOZ_GC_THRESHOLD"); ++ if (threshold) { ++ kLowCommitSpaceThreshold = atoi(threshold); ++ } ++ ++ if ((kLowCommitSpaceThreshold == 0) || (aStat.ullAvailPageFile < kLowCommitSpaceThreshold)) { + sNumLowCommitSpaceEvents++; + CrashReporter::AnnotateCrashReport( + CrashReporter::Annotation::LowCommitSpaceEvents, +@@ -210,12 +214,15 @@ void nsAvailableMemoryWatcher::AdjustPol + // polling interval accordingly. + NS_IMETHODIMP + nsAvailableMemoryWatcher::Notify(nsITimer* aTimer) { ++ const char* threshold = getenv("MOZ_GC_THRESHOLD"); ++ bool forceLowMem = (threshold && atoi(threshold) == 0); ++ + MEMORYSTATUSEX stat; + stat.dwLength = sizeof(stat); + bool success = GlobalMemoryStatusEx(&stat); + +- if (success) { +- bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat); ++ if (success || forceLowMemory) { ++ bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat || forceLowMem); + + if (lowMemory) { + SendMemoryPressureEvent(); diff --git a/sources b/sources index 7662177..f8dd33a 100644 --- a/sources +++ b/sources @@ -1,3 +1,12 @@ -SHA512 (thunderbird-78.3.1.source.tar.xz) = 16b05e51776ba16503bc5fba02a6d0b5050a206e264a4707544354ad76af61902fd2dcf5d97b82b432dc69362ccd18543a0acccd80e06648e6c6f470886da450 -SHA512 (thunderbird-langpacks-78.3.1-20200930.tar.xz) = 649ed59bdf7b988ca482b3bdb1dd2ea31741daeacc17c783f54e3fc65ac4ac17569d2cc54f357752bd0835914db5f59d638a781634d89a10acd3eee2acb9eb94 +SHA512 (libffi-3.0.13-18.el7_3.src.rpm) = da8ff110c59468f1ef9c861d93afcfa2fcc37409390664859d57113c7e81e54ca0a1a8925c18bb92097bb9710c737361ca36a81bf50fc137b31c2611e4c8a4e4 +SHA512 (Python-2.7.13.tar.xz) = f37c9a28ce129d01e63c84d7db627a06402854578f62d17927334ea21ede318e04bbf66e890e3f47c85333e6b19f6e5581fb3f3e27efd24be27017d1b6529c4b +SHA512 (yasm-1.2.0-3.el5.src.rpm) = bc8ea63ec9e8191fbbf914708b4c89c471ee7cf8ca2e940eedcc8aa0475feade67dd8993cdfbc8949c236b3b36e96fb0748ef8b62e772524340df925533b9bf7 +SHA512 (gtk3-private-3.22.26-1.el6.src.rpm) = ab1307af3305db38d462015647a5effc24bedbcf1174a2799faf41ae9c33052ec46a0c3d229eb2d472ebe3047ce86e293003ec42d8954342112746430980dc09 +SHA512 (Python-3.6.8.tar.xz) = b17867e451ebe662f50df83ed112d3656c089e7d750651ea640052b01b713b58e66aac9e082f71fd16f5b5510bc9b797f5ccd30f5399581e9aa406197f02938a +SHA512 (openssl-1.0.2k-19.6.bundle.el7_7.src.rpm) = fc00965c1aa7cc8f03a7e739633452fc51925de0dda8da5f21f8805c2b4764033a5211f376182dbab4c42f1f23d3195275f32616c384b54a83df4363ae711c75 +SHA512 (nspr-4.25.0-1.el8_0.src.rpm) = 7e39e4484b0d504e1b7f1253d7dc1f9f0d45705fbbc3946272acc4c5998b5279004b227485b003e18b48eaee3a2871c98d5c7f94e5dd89b255284599889c8df6 SHA512 (cbindgen-vendor-0.14.3.tar.xz) = 33c8d28547674121f690eea0d3ebac33926a39caacac787bf8ed8b346478822e74da5a4a1f57ab4df4105fa8376739a2ece888845a85bc5712aaed20e4a508bc +SHA512 (nss-3.53.1-3.fc32.src.rpm) = 368849487aa8f9d602c9e5d9d7c88ebd03318aece12470283ff31744ef9eed27ef1e32031378a5a673bb06a9ebbcf5542afa13f3ad465409449c218922189acb +SHA512 (nodejs-10.21.0-5.fc32.src.rpm) = 4d0c212a2609dc10e242a96f63baa8babb91e8aa6696f66f627c562c1ba30cb3632ed01991c98f48b5942fc7fd89ee34b350f41de901339b49a2c19e979593a7 +SHA512 (thunderbird-78.6.1.source.tar.xz) = 672f9ce2716114e83d3feaa7f322a405946731d540b5a9781249eba951cbf865af73ce67654e1c47e93828b0d792c1ff6a36d7ce26aee7af7bfc8cd715a8f977 +SHA512 (thunderbird-langpacks-78.6.1-20210112.tar.xz) = dfd18ce90afdc916bde06e86036e7d6560e2ff3224c4cbd667610d1cddea93f35086a585f12c7afdb78f076bbea74030a8050ea02545902d22cf1e7b5d63553c diff --git a/thunderbird-mozconfig b/thunderbird-mozconfig index 15ae03d..27091df 100644 --- a/thunderbird-mozconfig +++ b/thunderbird-mozconfig @@ -1,26 +1,28 @@ -mk_add_options MOZ_CO_PROJECT=mail ac_add_options --enable-application=comm/mail -mk_add_options AUTOCONF=autoconf-2.13 -ac_add_options --enable-default-toolkit=cairo-gtk3-wayland +ac_add_options --enable-default-toolkit=cairo-gtk3 ac_add_options --prefix="$PREFIX" ac_add_options --libdir="$LIBDIR" -ac_add_options --with-system-jpeg ac_add_options --with-system-zlib -ac_add_options --with-system-libvpx -ac_add_options --disable-tests ac_add_options --disable-strip -# temporary disable system cairo, because compilation fails -ac_add_options --disable-necko-wifi +ac_add_options --disable-tests +#ac_add_options --enable-libnotify +ac_add_options --enable-necko-wifi ac_add_options --disable-updater -ac_add_options --with-system-icu - -# lightning related ac_add_options --enable-calendar +ac_add_options --enable-chrome-format=omni +ac_add_options --enable-pulseaudio +ac_add_options --with-system-icu +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-av1 +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/thunderbird-redhat-default-prefs.js b/thunderbird-redhat-default-prefs.js deleted file mode 100644 index bca1328..0000000 --- a/thunderbird-redhat-default-prefs.js +++ /dev/null @@ -1,33 +0,0 @@ -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", "Fedora"); -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.autoDisableScope", 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", ""); - diff --git a/thunderbird-symbolic.svg b/thunderbird-symbolic.svg deleted file mode 100644 index 9387527..0000000 --- a/thunderbird-symbolic.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/thunderbird-wayland.desktop b/thunderbird-wayland.desktop deleted file mode 100644 index e65deaf..0000000 --- a/thunderbird-wayland.desktop +++ /dev/null @@ -1,30 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=Thunderbird on Wayland -GenericName=Email -Comment=Send and Receive Email -Exec=thunderbird-wayland %u -TryExec=thunderbird-wayland -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/thunderbird-wayland.sh.in b/thunderbird-wayland.sh.in deleted file mode 100644 index 028bb50..0000000 --- a/thunderbird-wayland.sh.in +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# -# Run Thunderbird under Wayland -# - -## -## Enable Wayland backend? -## -if [ "$XDG_CURRENT_DESKTOP" == "GNOME" ]; then - export MOZ_ENABLE_WAYLAND=1 -fi -exec __PREFIX__/bin/thunderbird "$@" diff --git a/thunderbird.sh.in b/thunderbird.sh.in index a4173d6..e61b41d 100644 --- a/thunderbird.sh.in +++ b/thunderbird.sh.in @@ -10,12 +10,12 @@ 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="/usr/lib64" + SECONDARY_LIB_DIR="/usr/lib" ;; * ) - MOZ_LIB_DIR="__PREFIX__/lib" - SECONDARY_LIB_DIR="__PREFIX__/lib64" + MOZ_LIB_DIR="/usr/lib" + SECONDARY_LIB_DIR="/usr/lib64" ;; esac @@ -34,7 +34,6 @@ 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}" -MOZ_LAUNCHER="$MOZ_DIST_BIN/thunderbird" ## ## Set MOZ_ENABLE_PANGO is no longer used because Pango is enabled by default @@ -46,7 +45,7 @@ MOZ_LAUNCHER="$MOZ_DIST_BIN/thunderbird" ## ## Set MOZ_APP_LAUNCHER for gnome-session ## -export MOZ_APP_LAUNCHER="__PREFIX__/bin/thunderbird" +export MOZ_APP_LAUNCHER="/usr/bin/thunderbird" ## ## Disable the GNOME crash dialog, Moz has it's own @@ -59,12 +58,6 @@ export GNOME_DISABLE_CRASH_DIALOG ## export G_SLICE=always-malloc -## -## Allow downgrade because during distro upgrade the build time can be -## older in newer version than the previous one. -## -export MOZ_ALLOW_DOWNGRADE=1 - ## ## To disable the use of Firefox localization, set MOZ_DISABLE_LANGPACKS=1 ## in your environment before launching Firefox. @@ -74,13 +67,6 @@ export MOZ_ALLOW_DOWNGRADE=1 # export MOZ_DISABLE_LANGPACKS # -## -## Use D-Bus remote exclusively when there's Wayland display. -## -if [ "$WAYLAND_DISPLAY" ]; then - export MOZ_DBUS_REMOTE=1 -fi - ## ## Automatically installed langpacks are tracked by .fedora-langpack-install ## config file. @@ -137,36 +123,23 @@ fi NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1} export NSS_SSL_CBC_RANDOM_IV -# Prepare command line arguments -script_args="" -pass_arg_count=0 -while [ $# -gt $pass_arg_count ] -do - case "$1" in - -g | --debug) - script_args="$script_args -g" - debugging=1 - shift - ;; - -d | --debugger) - if [ $# -gt 1 ]; then - script_args="$script_args -d $2" - shift 2 - else - shift - fi - ;; - *) - # Move the unrecognized argument to the end of the list. - arg="$1" - shift - set -- "$@" "$arg" - pass_arg_count=`expr $pass_arg_count + 1` - ;; - esac -done +# Linux version specific environment variables +%RHEL_ENV_VARS% -# Don't throw "old profile" dialog box. -export MOZ_ALLOW_DOWNGRADE=1 +# 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/thunderbird.spec b/thunderbird.spec index ecf7ec1..83ef323 100644 --- a/thunderbird.spec +++ b/thunderbird.spec @@ -1,285 +1,594 @@ -# Disabled arm due to rhbz#1658940 -ExcludeArch: armv7hl +# Set for local builds only +%global disable_toolsets 0 -# Use system nspr/nss? -%define system_nss 1 - -# Build as a debug package? -%define debug_build 0 - -# Hardened build? -%define hardened_build 1 - -%define system_ffi 1 - -%define build_langpacks 1 -%global build_with_clang 0 -%global use_bundled_cbindgen 1 - -%global disable_elfhack 0 -%if 0%{?fedora} > 28 -%global disable_elfhack 1 +%ifarch i686 +# no debug package for the i686 because oom on i686 with debuginfos +%global debug_package %{nil} %endif -%if %{?system_nss} -%global nspr_version 4.26.0 -%global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536) -%global nss_version 3.55.0 -%global nss_build_version %(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536) +%global rhel_minor_version -1 +%if 0%{?flatpak:1} +%global rhel_minor_version 4 +%endif +%if "%{?dist}" == ".el8" +%global rhel_minor_version 4 +%endif +%if "%{?dist}" == ".el8_3" +%global rhel_minor_version 3 +%endif +%if "%{?dist}" == ".el8_2" +%global rhel_minor_version 2 +%endif +%if "%{?dist}" == ".el8_1" +%global rhel_minor_version 1 +%endif +%if "%{?dist}" == ".el8_0" +%global rhel_minor_version 0 +%endif +%if "%{?dist}" == ".el9" +%global rhel_minor_version 4 %endif -%define freetype_version 2.1.9 +%global system_nss 1 +%global bundle_nss 0 -%define libnotify_version 0.4 -%define _default_patch_fuzz 2 +%if 0%{?rhel} >= 8 + %if 0%{?rhel_minor_version} < 2 +%global bundle_nss 1 + %endif +%endif -# libvpx is too new for Firefox 65 -%if 0%{?fedora} < 30 -%global system_libvpx 1 +%if 0%{?rhel} == 6 +%global system_nss 0 +%endif + +%define use_bundled_ffi 0 + +%define use_bundled_python_2 1 +%define use_bundled_python_3 1 + +%if 0%{?rhel} >= 8 +%define use_bundled_python_2 1 +%define use_bundled_python_3 0 +%endif + +%if 0%{?rhel} == 7 +%define use_bundled_python_2 0 +%define use_bundled_python_3 0 +%endif + +%if 0%{?flatpak:1} +%define use_bundled_python_2 1 +%endif + +# we need python2 because of icu data gen +%define use_bundled_python_2 0 +# Don't use system hunspell for now +%global system_hunspell 0 +%if 0%{?rhel} >= 8 +%global use_llvmts 0 %else +%global use_llvmts 1 +%endif + +%global system_ffi 1 +%if 0%{?rhel} < 8 +%global use_dts 1 +%endif + +%global use_rustts 1 +%global dts_version 8 +%global rust_version 1.41 +%global rust_toolset_version 1.41 +%global llvm_version 7.0 +%if 0%{?rhel} >= 8 +%global llvm_version 6.0 +%endif + +%if 0%{?disable_toolsets} +%global use_rustts 0 +%global use_dts 0 +%global use_llvmts 0 +%endif + +# Use system cairo? +%global system_cairo 0 + +# Use system libvpx? %global system_libvpx 0 -%endif -%define system_jpeg 1 - -# Use system libicu? - libicu even on rawhide too old -%if 0%{?fedora} >= 27 -%define system_libicu 0 -%else -%define system_libicu 0 -%endif +# Use system libicu? +%global system_libicu 0 # 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 -%define big_endian 1 +%global big_endian 1 %endif +# Hardened build? +%global hardened_build 1 + +%global system_jpeg 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 +%global cairo_version 1.13.1 +%global freetype_version 2.1.9 %if %{?system_libvpx} %global libvpx_version 1.4.0 %endif -%define thunderbird_app_id \{3550f703-e582-4d05-9a08-453d09bdfdc6\} +%if 0%{?system_nss} +%global nspr_version 4.25 +# 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 + + +%define bundled_python_version_2 2.7.13 +%define bundled_python_version_3 3.6.8 +%define use_bundled_openssl 0 +%define use_bundled_nodejs 0 +%define use_bundled_yasm 0 + +%if 0%{?rhel} >= 8 + %if 0%{?rhel_minor_version} <= 2 +%define use_bundled_nodejs 1 + %endif +%endif + +%if 0%{?rhel} == 7 +%define use_bundled_nodejs 1 +%define use_bundled_yasm 1 +%endif + +%define avoid_bundled_rebuild 0 + +%define gtk3_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}/distribution/extensions +%global tarballdir %{name}-%{version} +#global pre_tag alpha -# The tarball is pretty inconsistent with directory structure. -# Sometimes there is a top level directory. That goes here. -# -# IMPORTANT: If there is no top level directory, this should be -# set to the cwd, ie: '.' -%define objdir objdir -%define mozappdir %{_libdir}/%{name} - -%define official_branding 1 - -%define enable_mozilla_crashreporter 0 -# enable crash reporter only for iX86 -%ifarch %{ix86} x86_64 -%if 0%{?fedora} < 27 && 0%{?rhel} <= 7 -%define enable_mozilla_crashreporter 1 -%endif -%endif - +%global official_branding 1 +%global build_langpacks 1 Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 78.3.1 -Release: 2%{?dist} +Version: 78.6.1 +Release: 1%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ -Source0: ftp://ftp.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz -%if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}-20200930.tar.xz +Group: Applications/Internet + +%if 0%{?rhel} == 7 +ExcludeArch: s390 ppc %endif + +# From ftp://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?ext_version}/source +Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz +%if %{build_langpacks} +Source1: thunderbird-langpacks-%{version}%{?ext_version}-20210112.tar.xz +# Locales for lightning +%endif +Source2: cbindgen-vendor-0.14.3.tar.xz Source3: get-calendar-langpacks.sh -Source4: cbindgen-vendor-0.14.3.tar.xz Source10: thunderbird-mozconfig -Source11: thunderbird-mozconfig-branded -Source12: thunderbird-redhat-default-prefs.js Source20: thunderbird.desktop Source21: thunderbird.sh.in -Source25: thunderbird-symbolic.svg -Source28: thunderbird-wayland.sh.in -Source29: thunderbird-wayland.desktop -Source32: node-stdout-nonblocking-wrapper +Source24: mozilla-api-key +Source27: google-api-key +Source28: node-stdout-nonblocking-wrapper +Source200: gtk3-private-%{gtk3_nvr}.el6.src.rpm +Source201: gtk3-private-%{gtk3_nvr}-post.inc +Source202: gtk3-private-%{gtk3_nvr}-postun.inc +Source203: gtk3-private-%{gtk3_nvr}-posttrans.inc +Source204: gtk3-private-%{gtk3_nvr}-files.inc +Source205: gtk3-private-%{gtk3_nvr}-setup-flags-env.inc +Source206: gtk3-private-%{gtk3_nvr}-requires-provides-filter.inc +Source301: yasm-1.2.0-3.el5.src.rpm +Source303: libffi-3.0.13-18.el7_3.src.rpm +Source304: nodejs-10.21.0-5.fc32.src.rpm +Source305: openssl-1.0.2k-19.6.bundle.el7_7.src.rpm +Source601: thunderbird-redhat-default-prefs.js.rhel6 +Source701: thunderbird-redhat-default-prefs.js.rhel7 +## Firefox patches + +Source403: nss-3.53.1-3.fc32.src.rpm +Source401: nss-setup-flags-env.inc +Source402: nspr-4.25.0-1.el8_0.src.rpm +#Python +%if 0%{?use_bundled_python_2} +Source100: https://www.python.org/ftp/python/%{bundled_python_version_2}/Python-%{bundled_python_version_2}.tar.xz +%endif +%if 0%{?use_bundled_python_3} +Source101: https://www.python.org/ftp/python/%{bundled_python_version_3}/Python-%{bundled_python_version_3}.tar.xz +%endif # Build patches -Patch9: mozilla-build-arm.patch -Patch226: rhbz-1354671.patch -Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch -Patch416: firefox-SIOCGSTAMP.patch -Patch417: build-aarch64-user_vfp.patch -Patch418: mozilla-1512162.patch -Patch419: bindgen-d0dfc52706f23db9dc9d74642eeebd89d73cb8d0.patch -Patch103: rhbz-1219542-s390-build.patch +Patch1000: python-2.7.patch +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 +Patch1001: build-ppc64le-inline.patch +Patch1002: python-2.7-gcc8-fix.patch +Patch1003: python-missing-utimensat.patch +Patch1004: build-icu-make.patch +# workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 +Patch4: build-mozconfig-fix.patch +Patch6: build-nss-version.patch +Patch7: firefox-debugedits-error.patch -# PPC fix -Patch304: mozilla-1245783.patch -Patch307: build-disable-elfhack.patch - -# Fedora specific patches +# Fedora/RHEL specific patches +Patch215: firefox-enable-addons.patch +Patch219: rhbz-1173156.patch +Patch224: mozilla-1170092.patch +#ARM run-time patch +Patch231: firefox-pipewire.patch +Patch232: firefox-rhel6-hugepage.patch +Patch233: firefox-rhel6-nss-tls1.3.patch +Patch234: rhbz-1821418.patch +Patch235: firefox-pipewire-0-3.patch +Patch236: fedora-shebang-build.patch +Patch237: disable-openpgp-in-thunderbird.patch # Upstream patches -Patch402: mozilla-526293.patch +Patch402: mozilla-1196777.patch -%if %{official_branding} -# Required by Mozilla Corporation +Patch501: python-encode.patch +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: D87019-thin-vec-big-endian.diff -%else -# Not yet approved by Mozillla Corporation +# CentOS patches +%if 0%{?centos} +Patch10000: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch +Patch10001: Bug-1526653---fix_user_vfp_armv7.patch %endif -BuildRequires: gcc-c++ + %if %{?system_nss} +%if !0%{?bundle_nss} +BuildRequires: pkgconfig(nspr) >= %{nspr_version} +BuildRequires: pkgconfig(nss) >= %{nss_version} BuildRequires: nss-static >= %{nss_version} -BuildRequires: nspr-devel >= %{nspr_version} -BuildRequires: nss-devel >= %{nss_version} -Requires: nspr >= %{nspr_build_version} -Requires: nss >= %{nss_build_version} %endif -BuildRequires: libnotify-devel >= %{libnotify_version} -BuildRequires: libpng-devel +%endif +%if %{?system_cairo} +BuildRequires: pkgconfig(cairo) >= %{cairo_version} +%endif +BuildRequires: pkgconfig(libpng) +BuildRequires: xz +BuildRequires: libXt-devel +BuildRequires: mesa-libGL-devel +Requires: liberation-fonts-common +Requires: liberation-sans-fonts +%if %{?system_jpeg} BuildRequires: libjpeg-devel +%endif BuildRequires: zip BuildRequires: bzip2-devel -BuildRequires: zlib-devel -BuildRequires: libIDL-devel -BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(zlib) +BuildRequires: pkgconfig(libIDL-2.0) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: krb5-devel -BuildRequires: pango-devel -BuildRequires: freetype-devel >= %{freetype_version} -BuildRequires: libXt-devel -BuildRequires: libXrender-devel +BuildRequires: pkgconfig(pango) +BuildRequires: pkgconfig(freetype2) >= %{freetype_version} +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(xrender) +%if %{?system_hunspell} BuildRequires: hunspell-devel -BuildRequires: llvm -BuildRequires: llvm-devel -BuildRequires: clang -BuildRequires: clang-libs -%if 0%{?build_with_clang} -BuildRequires: lld %endif -%if %{?system_ffi} -BuildRequires: libffi-devel -%endif -BuildRequires: startup-notification-devel -BuildRequires: alsa-lib-devel -BuildRequires: autoconf213 -BuildRequires: desktop-file-utils -BuildRequires: libcurl-devel -BuildRequires: mesa-libGL-devel +BuildRequires: pkgconfig(libstartup-notification-1.0) +BuildRequires: pkgconfig(libnotify) +BuildRequires: pkgconfig(dri) +BuildRequires: pkgconfig(libcurl) +BuildRequires: dbus-glib-devel %if %{?system_libvpx} BuildRequires: libvpx-devel >= %{libvpx_version} %endif -BuildRequires: pulseaudio-libs-devel -BuildRequires: libicu-devel -BuildRequires: perl-interpreter -Requires: mozilla-filesystem -BuildRequires: yasm -BuildRequires: dbus-glib-devel -Obsoletes: thunderbird-lightning -Provides: thunderbird-lightning -Obsoletes: thunderbird-lightning-gdata <= 1:3.3.0.14 -BuildRequires: rust -BuildRequires: cargo -BuildRequires: clang-devel -BuildRequires: python2-devel -%if !0%{?use_bundled_cbindgen} -BuildRequires: cbindgen +BuildRequires: autoconf213 +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(gconf-2.0) + +%if 0%{?use_dts} +BuildRequires: devtoolset-%{dts_version}-gcc-c++ +BuildRequires: devtoolset-%{dts_version}-gcc +BuildRequires: devtoolset-%{dts_version}-binutils +BuildRequires: devtoolset-%{dts_version}-libatomic-devel +%if 0%{?use_llvmts} +BuildRequires: llvm-toolset-%{llvm_version} +BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel %endif -BuildRequires: nodejs -BuildRequires: nasm >= 1.13 +%endif + +BuildRequires: scl-utils +BuildRequires: findutils -Suggests: u2f-hidraw-policy +%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} +BuildRequires: python3 +BuildRequires: nodejs >= 10.21 +%else +%if 0%{?use_rustts} +BuildRequires: rust-toolset-%{rust_toolset_version} +%endif +%if 0%{?rhel} == 7 +#BuildRequires: rh-nodejs12 +%endif +%if 0%{?use_llvmts} +BuildRequires: llvm-toolset-%{llvm_version} +BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel +%endif +%endif + +%if ! 0%{?use_bundled_yasm} +BuildRequires: yasm +%endif + + +%if 0%{?use_bundled_python_2} +# Needed for Python in RHEL6 +BuildRequires: openssl-devel +%endif + +%if 0%{?rhel} >= 8 + %if 0%{?rhel_minor_version} >= 3 +BuildRequires: pkgconfig(libpipewire-0.3) + %else +BuildRequires: pipewire-devel + %endif +%endif + +BuildRequires: gtk3-devel +BuildRequires: glib2-devel + +# Bundled nss/nspr requirement +%if 0%{?bundle_nss} +BuildRequires: nss-softokn +BuildRequires: sqlite-devel +BuildRequires: zlib-devel +BuildRequires: pkgconfig +BuildRequires: gawk +BuildRequires: psmisc +BuildRequires: perl-interpreter +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 +#for the python2 +BuildRequires: pkgconfig(sqlite3) + + +%if %{?run_tests} +BuildRequires: xorg-x11-server-Xvfb +%endif + +%if %{?system_ffi} + %if !%{use_bundled_ffi}0 +BuildRequires: pkgconfig(libffi) + %endif +%endif + +%if %{?use_bundled_nodejs} +%if !0%{?use_bundled_python_3} +BuildRequires: python3-devel +%endif +BuildRequires: zlib-devel +#BuildRequires: brotli-devel +#BuildRequires: gcc >= 4.9.4 +#BuildRequires: gcc-c++ >= 4.9.4 +BuildRequires: chrpath +BuildRequires: libatomic +BuildRequires: openssl-devel +%endif + +%if 0%{?big_endian} +BuildRequires: icu +%endif + +Obsoletes: thunderbird-lightning +# ================================================================================== %description Mozilla Thunderbird is a standalone mail and newsgroup client. -%package wayland -Summary: Thunderbird Wayland launcher. -Requires: %{name} -%description wayland -The thunderbird-wayland package contains launcher and desktop file -to run Thunderbird natively on Wayland. -%files wayland -%{_bindir}/thunderbird-wayland -%attr(644,root,root) %{_datadir}/applications/mozilla-thunderbird-wayland.desktop - -%if %{enable_mozilla_crashreporter} -%global moz_debug_prefix %{_prefix}/lib/debug -%global moz_debug_dir %{moz_debug_prefix}%{mozappdir} -%global uname_m %(uname -m) -%global symbols_file_name %{name}-%{version}.en-US.%{_os}-%{uname_m}.crashreporter-symbols.zip -%global symbols_file_path %{moz_debug_dir}/%{symbols_file_name} -%global _find_debuginfo_opts -p %{symbols_file_path} -o debugcrashreporter.list -%global crashreporter_pkg_name mozilla-crashreporter-%{name}-debuginfo -%package -n %{crashreporter_pkg_name} -Summary: Debugging symbols used by Mozilla's crash reporter servers -%description -n %{crashreporter_pkg_name} -This package provides debug information for XULRunner, for use by -Mozilla's crash reporter servers. If you are trying to locally -debug %{name}, you want to install %{name}-debuginfo instead. -%files -n %{crashreporter_pkg_name} -f debugcrashreporter.list -%defattr(-,root,root) -%endif %prep -%setup -q +echo "Build environment" +echo "dist %{?dist}" +echo "RHEL 8 minor version: %{?rhel_minor_version}" +echo "use_bundled_ffi %{?use_bundled_ffi}" +echo "use_bundled_python_2 %{?use_bundled_python_2}" +echo "use_bundled_python_3 %{?use_bundled_python_3}" +echo "bundle_nss %{?bundle_nss}" +echo "system_nss %{?system_nss}" +echo "use_rustts %{?use_rustts}" +echo "use_bundled_nodejs %{?use_bundled_nodejs}" +echo "use_bundled_openssl %{?use_bundled_openssl}" +echo "use_bundled_yasm %{?use_bundled_yasm}" -# Build patches -%patch9 -p2 -b .arm -%ifarch s390 -%patch103 -p1 -b .rhbz-1219542-s390-build + +%if 0%{?use_bundled_python_2} +%setup -q -T -c -n python2 -a 100 +%patch1000 -p0 -b .build +%patch1002 -p0 -b .gcc8 +%endif +%if 0%{?use_bundled_python_3} +%setup -q -T -c -n python3 -a 101 +%endif +%setup -q -n %{tarballdir} + +# Firefox patches +%patch7 -p1 -b .debugedits-error +%ifarch %{ix86} %{arm} ppc +# binary check fails OOM on 32bit arches %endif -%patch304 -p1 -b .1245783 +%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 +%if 0%{?rhel} >= 8 + %if 0%{?rhel_minor_version} >= 3 +%patch235 -p1 -b .pipewire-0-3 + %else +%patch231 -p1 -b .pipewire + %endif +%endif + +%patch236 -p1 -b .fedora-shebang-build +%patch237 -p1 -b .disable-openpgp-in-thunderbird + +%patch234 -p1 -b .rhbz-1821418 + +%patch402 -p1 -b .1196777 + # Patch for big endian platforms only -#%if 0%{?big_endian} -#%endif - -#ARM run-time patch -%ifarch aarch64 -#%patch226 -p1 -b .1354671 +%if 0%{?big_endian} %endif -%ifarch %{arm} -%patch415 -p1 -b .mozilla-1238661 -%endif -%patch416 -p1 -b .SIOCGSTAMP -%patch417 -p1 -b .aarch64-user_vfp -%patch418 -p1 -b .mozbz-1512162 -# most likely fixed -#%patch419 -p1 -b .bindgen -%if 0%{?disable_elfhack} -%patch307 -p1 -b .elfhack -%endif -#cd .. +# Thunderbird patches +%patch501 -p1 -b .python-encode +%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 .D87019-thin-vec-big-endian.diff -%patch402 -p1 -b .526293 -%if %{official_branding} -# Required by Mozilla Corporation - -%else -# Not yet approved by Mozilla Corporation +%patch1001 -p1 -b .ppc64le-inline +%patch1004 -p1 -b .icu-make +# CentOS patches +%if 0%{?centos} +%patch10000 -p1 -b .mozilla-1238661 +%patch10001 -p1 -b .mozilla-1526653 %endif %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig +function add_to_mozconfig() { + mozconfig_entry=$1 + echo "ac_add_options --$1" >> .mozconfig +} + +# Modify mozconfig file %if %{official_branding} -%{__cat} %{SOURCE11} >> .mozconfig + add_to_mozconfig "enable-official-branding" %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 + add_to_mozconfig "with-system-nspr" + add_to_mozconfig "with-system-nss" %else -echo "ac_add_options --without-system-nspr" >> .mozconfig -echo "ac_add_options --without-system-nss" >> .mozconfig + add_to_mozconfig "without-system-nspr" + add_to_mozconfig "without-system-nss" +%endif + +%if 0%{?use_bundled_ffi} + add_to_mozconfig "with-system-ffi" +%endif + +%if 0%{?system_ffi} + add_to_mozconfig "with-system-ffi" +%endif +%ifarch %{arm} %{ix86} x86_64 + add_to_mozconfig "disable-elf-hack" +%endif + +%if %{?system_hunspell} +echo "ac_add_options --enable-system-hunspell" >> .mozconfig +%else +# not available? +#echo "ac_add_options --disable-system-hunspell" >> .mozconfig +%endif + +%if %{?debug_build} + add_to_mozconfig "enable-debug" + add_to_mozconfig "disable-optimize" +%else +%global optimize_flags "-g -O2" +%ifarch s390 s390x +%global optimize_flags "-g -O1" +%endif +%ifarch armv7hl +# ARMv7 need that (rhbz#1426850) +%global optimize_flags "-g -O2 -fno-schedule-insns" +%endif +%ifarch ppc64le aarch64 +%global optimize_flags "-g -O2" +%endif +%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 @@ -287,58 +596,10 @@ echo "ac_add_options --without-system-nss" >> .mozconfig echo "ac_add_options --disable-jemalloc" >> .mozconfig %endif - -%if %{?system_ffi} -echo "ac_add_options --enable-system-ffi" >> .mozconfig -%endif - -%if %{?debug_build} - echo "ac_add_options --enable-debug" >> .mozconfig - echo "ac_add_options --disable-optimize" >> .mozconfig -%else - %global optimize_flags "none" - %ifarch ppc64le aarch64 - %global optimize_flags "-g -O2" - %endif - %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 - -%ifarch aarch64 -echo "ac_add_options --disable-jit" >> .mozconfig -%endif - %ifnarch %{ix86} x86_64 echo "ac_add_options --disable-webrtc" >> .mozconfig %endif -%ifarch armv7hl -echo "ac_add_options --with-arch=armv7-a" >> .mozconfig -echo "ac_add_options --with-float-abi=hard" >> .mozconfig -echo "ac_add_options --with-fpu=vfpv3-d16" >> .mozconfig -%endif -%ifarch armv7hnl -echo "ac_add_options --with-arch=armv7-a" >> .mozconfig -echo "ac_add_options --with-float-abi=hard" >> .mozconfig -echo "ac_add_options --with-fpu=neon" >> .mozconfig -echo "ac_add_options --disable-yarr-jit" >> .mozconfig -%endif -%ifarch armv5tel -echo "ac_add_options --with-arch=armv5te" >> .mozconfig -echo "ac_add_options --with-float-abi=soft" >> .mozconfig -echo "ac_add_options --disable-yarr-jit" >> .mozconfig -%endif - -%if %{?system_libicu} -echo "ac_add_options --with-system-icu" >> .mozconfig -%else -echo "ac_add_options --without-system-icu" >> .mozconfig -%endif - %if !%{?system_jpeg} echo "ac_add_options --without-system-jpeg" >> .mozconfig %else @@ -351,10 +612,19 @@ echo "ac_add_options --with-system-libvpx" >> .mozconfig echo "ac_add_options --without-system-libvpx" >> .mozconfig %endif -%if %{enable_mozilla_crashreporter} -echo "ac_add_options --enable-crashreporter" >> .mozconfig +%if %{?system_libicu} +echo "ac_add_options --with-system-icu" >> .mozconfig %else -echo "ac_add_options --disable-crashreporter" >> .mozconfig +echo "ac_add_options --without-system-icu" >> .mozconfig +%endif +%ifarch s390 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 echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig @@ -365,18 +635,237 @@ 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 -#=============================================================================== +# install lightning langpacks %build -# Disable LTO to work around rhbz#1883904 -%define _lto_cflags %{nil} +ulimit -a +free +#set -e -%if 0%{?use_bundled_cbindgen} +#GTK3 >> +%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 i386 i686 + 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 i386 i686 + 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 +} + +# Build and install local yasm if needed +# ====================================== +%if 0%{?use_bundled_yasm} + build_bundled_package 'yasm-1*.rpm' 'yasm-*.rpm' '%{SOURCE301}' +%endif + +%if 0%{?bundle_nss} + rpm -ivh %{SOURCE402} + #rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' --without=tests -ba %{_specdir}/nspr.spec + rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -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@%{gtk3_install_path}@%{_buildrootdir}%{gtk3_install_path}@g' %{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig/nspr*.pc + + export LDFLAGS="-L%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS" + export LDFLAGS="-Wl,-rpath,%{gtk3_install_path}/%{_lib} $LDFLAGS" + export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS" + export PKG_CONFIG_PATH=%{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig + export PATH="{_buildrootdir}%{gtk3_install_path}/bin:$PATH" + + export PATH=%{_buildrootdir}/%{gtk3_install_path}/bin:$PATH + echo $PKG_CONFIG_PATH + + rpm -ivh %{SOURCE403} + rpmbuild --nodeps --define '_prefix %{gtk3_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-%{gtk3_nvr}*.rpm + #install_rpms_to_current_dir nss-devel-%{gtk3_nvr}*.rpm + 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 %{gtk3_install_path}/%{_lib} + %filter_requires_in %{gtk3_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 +%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 %{gtk3_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 + +# If needed build the bundled python 2.7 and 3.6 and put it in the PATH +%if 0%{?use_bundled_python_3} + pushd %{_builddir}/python3/Python-%{bundled_python_version_3} + ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" || cat config.log + make %{?_smp_mflags} install V=1 -j1 + cp Tools/scripts/pathfix.py %{_buildrootdir}/bin + popd +%endif +%if 0%{?use_bundled_python_2} + pushd %{_builddir}/python2/Python-%{bundled_python_version_2} + ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" || cat config.log + make %{?_smp_mflags} install V=1 + popd +%endif + +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 +} + +# Build and install local openssl if needed +# ========================================= +%if 0%{?use_bundled_openssl} + rpm -ivh %{SOURCE305} + rpmbuild --nodeps -ba %{_specdir}/openssl.spec + pushd %{_buildrootdir} + install_rpms_to_current_dir openssl-1.0.2k*.rpm + install_rpms_to_current_dir openssl-libs-1.0.2k*.rpm + install_rpms_to_current_dir openssl-devel-1.0.2k*.rpm + install_rpms_to_current_dir openssl-static-1.0.2k*.rpm + # openssl is installed to %{_buildrootdir}/usr/lib(64)/... + export PKG_CONFIG_PATH=%{_buildrootdir}/%{_libdir}/pkgconfig/:$PKG_CONFIG_PATH + replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/libcrypto.pc prefix=%{_buildrootdir}/usr + replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/libssl.pc prefix=%{_buildrootdir}/usr + replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/openssl.pc prefix=%{_buildrootdir}/usr + cat %{_buildrootdir}/%{_libdir}/pkgconfig/libcrypto.pc + cat %{_buildrootdir}/%{_libdir}/pkgconfig/libssl.pc + cat %{_buildrootdir}/%{_libdir}/pkgconfig/openssl.pc + pushd %{_rpmdir} + rm -f openssl-*.rpm + popd + popd +%endif + +# GTK3 << +# 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_toolset_version} +%endif + +env +which gcc +which c++ +which g++ +which ld +# Build and install local node if needed +# ====================================== +%if %{use_bundled_nodejs} + build_bundled_package 'nodejs-10*.rpm' 'nodejs-*.rpm npm-*.rpm' %{SOURCE304} "--with bootstrap" + export MOZ_NODEJS=$PACKAGE_DIR/usr/bin/node +%else + export MOZ_NODEJS=/usr/bin/node +%endif mkdir -p my_rust_vendor cd my_rust_vendor -%{__tar} xf %{SOURCE4} +%{__tar} xf %{SOURCE2} cd - mkdir -p .cargo cat > .cargo/config < 23 +# Disable null pointer gcc6 optimization in gcc6 (rhbz#1328045) MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fno-delete-null-pointer-checks" +%endif # Use hardened build? %if %{?hardened_build} MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" @@ -436,147 +932,205 @@ MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') export MOZ_DEBUG_FLAGS=" " %endif -%ifarch %{arm} %{ix86} -MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/') -export MOZ_DEBUG_FLAGS=" " -%endif - -%if !0%{?build_with_clang} -%ifarch s390 ppc aarch64 %{ix86} -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" -%endif -%ifarch %{arm} -MOZ_LINK_FLAGS="-Wl,--no-keep-memory" -echo "ac_add_options --enable-linker=gold" >> .mozconfig -%endif -%endif - -# We don't want thunderbird to use CK_GCM_PARAMS_V3 in nss +# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT" +%ifarch s390 %{arm} ppc aarch64 i686 x86_64 s390x +MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" +%endif +%ifarch %{arm} i686 +MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug" +echo "ac_add_options --enable-linker=gold" >> .mozconfig +%endif -export CFLAGS=`echo $MOZ_OPT_FLAGS |sed -e 's/-fpermissive//g'` +%ifarch %{arm} i686 +export RUSTFLAGS="-Cdebuginfo=0" +%endif +export CFLAGS=$MOZ_OPT_FLAGS export CXXFLAGS=$MOZ_OPT_FLAGS export LDFLAGS=$MOZ_LINK_FLAGS export PREFIX='%{_prefix}' export LIBDIR='%{_libdir}' - -%ifarch %{arm} %{ix86} -export RUSTFLAGS="-Cdebuginfo=0" -%endif - -%if 0%{?build_with_clang} -export LLVM_PROFDATA="llvm-profdata" -export AR="llvm-ar" -export NM="llvm-nm" -export RANLIB="llvm-ranlib" -echo "ac_add_options --enable-linker=lld" >> .mozconfig -%else export CC=gcc export CXX=g++ -export AR="gcc-ar" -export NM="gcc-nm" -export RANLIB="gcc-ranlib" -%endif - -%if 0%{?build_with_pgo} -echo "ac_add_options MOZ_PGO=1" >> .mozconfig -echo "ac_add_options --enable-lto" >> .mozconfig -%endif MOZ_SMP_FLAGS=-j1 -# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel, -# however builds tend to fail on other arches when building in parallel. -%ifarch %{ix86} x86_64 ppc %{power64} aarch64 +# 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 -[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4 -[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8 +%else +%ifarch %{ix86} x86_64 ppc 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") +MOZ_SMP_FLAGS=-j16 + +%if 0%{?bundle_nss} +echo "Setting nss flags" +# nss-setup-flags-env.inc +%include_file %{SOURCE401} +export PATH=%{_buildrootdir}/%{gtk3_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 i686 i386 export STRIP=/bin/true -./mach build +%endif +which node +echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' +env +ls %{_buildrootdir} -# create debuginfo for crash-stats.mozilla.com -%if %{enable_mozilla_crashreporter} -make -C %{objdir} buildsymbols + +%if 0%{?use_llvmts} +scl enable llvm-toolset-%{llvm_version} './mach build -v' +%else +./mach build -v %endif -#=============================================================================== +#--------------------------------------------------------------------- %install -cd %{objdir} -DESTDIR=$RPM_BUILD_ROOT make install +function install_rpms_to_current_dir() { + PACKAGE_RPM=$(eval echo $1) + PACKAGE_DIR=%{_rpmdir} -cd .. + if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then + # Hack for tps tests + ARCH_STR=%{_arch} + %ifarch i386 i686 + ARCH_STR="i?86" + %endif + PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" + fi -# install icons -for s in 16 22 24 32 48 64 128 256; do - %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps - %{__cp} -p comm/mail/branding/%{name}/default${s}.png \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/thunderbird.png -done + for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM) + do + echo "$package" + rpm2cpio "$package" | cpio -idu + done +} -# Install hight contrast icon -%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps -%{__cp} -p %{SOURCE25} \ - %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps +%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}/%{gtk3_install_path}/bin + #rm -rf %{_buildrootdir}/%{gtk3_install_path}/include + rm -rf %{buildroot}/%{gtk3_install_path}/lib/dracut + rm -rf %{buildroot}/%{gtk3_install_path}/%{_lib}/nss + #rm -rf %{_buildrootdir}/%{gtk3_install_path}/%{_lib}/pkgconfig + rm -rf %{buildroot}/%{gtk3_install_path}/%{_lib}/share + rm -rf %{buildroot}/%{gtk3_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 -desktop-file-install --vendor mozilla \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ - %{SOURCE20} -desktop-file-install --vendor mozilla \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ - %{SOURCE29} +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 -f $RPM_BUILD_ROOT/%{_bindir}/thunderbird -%{__cat} %{SOURCE21} | %{__sed} -e 's,__PREFIX__,%{_prefix},g' > \ - $RPM_BUILD_ROOT%{_bindir}/thunderbird -%{__chmod} 755 $RPM_BUILD_ROOT/%{_bindir}/thunderbird -%{__cat} %{SOURCE28} | %{__sed} -e 's,__PREFIX__,%{_prefix},g' > \ - %{buildroot}%{_bindir}/thunderbird-wayland -%{__chmod} 755 %{buildroot}%{_bindir}/thunderbird-wayland +rm -rf %{buildroot}%{_bindir}/thunderbird +%{__rm} -rf %{buildroot}%{_bindir}/thunderbird +%{__cat} %{SOURCE21} > %{buildroot}%{_bindir}/thunderbird +sed -i -e 's|%RHEL_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird +%{__chmod} 755 %{buildroot}%{_bindir}/thunderbird -# set up our default preferences -%{__cat} %{SOURCE12} | %{__sed} -e 's,THUNDERBIRD_RPM_VR,%{version}-%{release},g' > \ - $RPM_BUILD_ROOT/rh-default-prefs -%{__install} -D $RPM_BUILD_ROOT/rh-default-prefs $RPM_BUILD_ROOT/%{mozappdir}/greprefs/all-redhat.js -%{__install} -D $RPM_BUILD_ROOT/rh-default-prefs $RPM_BUILD_ROOT/%{mozappdir}/defaults/pref/all-redhat.js -%{__rm} $RPM_BUILD_ROOT/rh-default-prefs +# Setup preferences, depends on RHEL version +THUNDERBIRD_PREF_SOURCE=%{SOURCE701} +%if 0%{?rhel} == 6 + THUNDERBIRD_PREF_SOURCE=%{SOURCE601} +%endif -%{__rm} -f $RPM_BUILD_ROOT%{_bindir}/thunderbird-config +# Fill in THUNDERBIRD_RPM_VR into our rh-default-prefs +%{__cat} $THUNDERBIRD_PREF_SOURCE | %{__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} $RPM_BUILD_ROOT%{_libdir}/mozilla/plugins +%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/plugins # own extension directories -%{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/mozilla/extensions/%{thunderbird_app_id} -%{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/mozilla/extensions/%{thunderbird_app_id} +%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{thunderbird_app_id} +%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{thunderbird_app_id} # Install langpacks -%{__rm} -f %{name}.lang # Delete for --short-circuit option -touch %{name}.lang - +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 + unzip $langpack -d $extensionID find $extensionID -type f | xargs chmod 644 cd $extensionID - zip -qq -r9mX ../${extensionID}.xpi * + zip -r9mX ../${extensionID}.xpi * cd - %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir} @@ -584,87 +1138,66 @@ for langpack in `ls thunderbird-langpacks/*.xpi`; do echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang done %{__rm} -rf thunderbird-langpacks -%endif +echo "Adding following langpacks:" +cat %{name}.lang +%endif # Get rid of devel package and its debugsymbols -%{__rm} -rf $RPM_BUILD_ROOT%{_libdir}/%{name}-devel-%{version} +%{__rm} -rf %{buildroot}%{_libdir}/%{name}-devel-%{version} # Copy over the LICENSE -install -c -m 644 LICENSE $RPM_BUILD_ROOT%{mozappdir} +%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir} # Use the system hunspell dictionaries -%{__rm} -rf $RPM_BUILD_ROOT/%{mozappdir}/dictionaries -ln -s $(pkg-config --variable prefix hunspell)/share/myspell $RPM_BUILD_ROOT%{mozappdir}/dictionaries +%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries +ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries # ghost files -%{__mkdir_p} $RPM_BUILD_ROOT%{mozappdir}/components -touch $RPM_BUILD_ROOT%{mozappdir}/components/compreg.dat -touch $RPM_BUILD_ROOT%{mozappdir}/components/xpti.dat +%{__mkdir_p} %{buildroot}%{mozappdir}/components +touch %{buildroot}%{mozappdir}/components/compreg.dat +touch %{buildroot}%{mozappdir}/components/xpti.dat -# Add debuginfo for crash-stats.mozilla.com -%if %{enable_mozilla_crashreporter} -%{__mkdir_p} $RPM_BUILD_ROOT/%{moz_debug_dir} -%{__cp} %{objdir}/dist/%{symbols_file_name} $RPM_BUILD_ROOT/%{moz_debug_dir} -%endif +# Clean thunderbird-devel debuginfo +rm -rf %{_prefix}/lib/debug/lib/%{name}-devel-* +rm -rf %{_prefix}/lib/debug/lib64/%{name}-devel-* -# Register as an application to be visible in the software center -# -# NOTE: It would be *awesome* if this file was maintained by the upstream -# project, translated and installed into the right place during `make install`. -# -# See http://www.freedesktop.org/software/appstream/docs/ for more details. -# -mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata -cat > $RPM_BUILD_ROOT%{_datadir}/appdata/mozilla-thunderbird.appdata.xml < - - - - mozilla-thunderbird.desktop - CC0-1.0 - -

- Thunderbird is an email client that allows you to read, write and organise all - of your email messages. It is compatible with most email accounts, including the - most popular webmail services. -

-

- Thunderbird is designed by Mozilla, a global community working together to make - the Internet better. Mozilla believe that the Internet should be open, public, - and accessible to everyone without any restrictions. -

-
    -
  • Easier than ever to set up a new e-mail account
  • -
  • Awesome search allows you to find your messages fast
  • -
  • Thousands of add-ons give you the freedom to make Thunderbird your own
  • -
-
- http://www.mozilla.org/thunderbird/ - - https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/mozilla-thunderbird/a.png - - -
-EOF +# Fixing python version +test -f "%{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode_gen_breaktests.py" && sed -i -e 's|/usr/bin/env python$|/usr/bin/env python2|' %{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode_gen_breaktests.py +test -f "%{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode.py" && sed -i -e 's|/usr/bin/env python$|/usr/bin/env python2|' %{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode.py +test -f "%{buildroot}%{mozappdir}/distribution/extensions/unicode-width/scripts/unicode.py" && sed -i -e 's|/usr/bin/env python$|/usr/bin/env python2|' %{buildroot}%{mozappdir}/distribution/extensions/unicode-width/scripts/unicode.py -#=============================================================================== +# Removing librnp.so - we cannot deliver that in RHELs +%{__rm} -rf %{buildroot}%{mozappdir}/librnp.so + +#--------------------------------------------------------------------- + +%clean +rm -rf %{_srcrpmdir}/gtk3-private-%{gtk3_nvr}*.src.rpm +find %{_rpmdir} -name "gtk3-private-*%{gtk3_nvr}*.rpm" -delete +rm -rf %{_srcrpmdir}/libffi*.src.rpm +find %{_rpmdir} -name "libffi*.rpm" -delete +rm -rf %{_srcrpmdir}/openssl*.src.rpm +find %{_rpmdir} -name "openssl*.rpm" -delete +rm -rf %{_srcrpmdir}/nss*.src.rpm +find %{_rpmdir} -name "nss*.rpm" -delete +rm -rf %{_srcrpmdir}/nspr*.src.rpm +find %{_rpmdir} -name "nspr*.rpm" -delete %post update-desktop-database &> /dev/null || : touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : +if [ -x %{_bindir}/gtk-update-icon-cache ]; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : +fi + %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 +update-desktop-database &> /dev/null || : %posttrans gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : @@ -673,8 +1206,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %files -f %{name}.lang %defattr(-,root,root,-) %attr(755,root,root) %{_bindir}/thunderbird -%{_datadir}/appdata/*.appdata.xml -%attr(644,root,root) %{_datadir}/applications/mozilla-thunderbird.desktop +%attr(644,root,root) %{_datadir}/applications/thunderbird.desktop %dir %{_datadir}/mozilla/extensions/%{thunderbird_app_id} %dir %{_libdir}/mozilla/extensions/%{thunderbird_app_id} %dir %{mozappdir} @@ -687,9 +1219,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/plugin-container %{mozappdir}/defaults %{mozappdir}/dictionaries -%if %{build_langpacks} -%dir %{langpackdir} -%endif %{mozappdir}/greprefs %{mozappdir}/isp %{mozappdir}/thunderbird-bin @@ -705,124 +1234,119 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_datadir}/icons/hicolor/256x256/apps/thunderbird.png %{_datadir}/icons/hicolor/32x32/apps/thunderbird.png %{_datadir}/icons/hicolor/48x48/apps/thunderbird.png -%{_datadir}/icons/hicolor/64x64/apps/thunderbird.png -%{_datadir}/icons/hicolor/128x128/apps/thunderbird.png -%{_datadir}/icons/hicolor/symbolic/apps/thunderbird-symbolic.svg -%if %{enable_mozilla_crashreporter} -%{mozappdir}/crashreporter -%{mozappdir}/crashreporter.ini -%{mozappdir}/Throbber-small.gif -%endif -%if !%{?system_nss} -%{mozappdir}/*.chk -%endif -%{mozappdir}/dependentlibs.list -%{mozappdir}/distribution -%{mozappdir}/fonts %{mozappdir}/pingsender %{mozappdir}/gtk2/libmozgtk.so +%{mozappdir}/dependentlibs.list +%dir %{mozappdir}/distribution +%{mozappdir}/fonts/TwemojiMozilla.ttf + +%if !%{?system_libicu} +#%{mozappdir}/icudt*.dat +%endif +%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 -* Wed Oct 07 2020 Jan Horak - 78.3.1-2 -- Reenable s390x +* Tue Jan 12 2021 Eike Rathke - 78.6.1-1 +- Update to 78.6.1 -* Wed Sep 30 2020 Jan Horak - 78.3.1-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 -* Tue Sep 08 2020 Jan Horak - 68.12.0-1 +* 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 -* Thu Aug 06 2020 Jan Horak - 68.11.0-1 +* Tue Aug 04 2020 Jan Horak - 68.11.0-1 - Update to 68.11.0 build1 -* Sat Aug 01 2020 Fedora Release Engineering - 68.10.0-3 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 68.10.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Thu Jul 09 2020 Jan Horak - 68.10.0-1 +* Wed Jul 08 2020 Jan Horak - 68.10.0-1 - Update to 68.10.0 build1 -* Mon Jun 08 2020 Jan Horak - 68.9.0-1 +* Fri Jun 05 2020 Jan Horak - 68.9.0-1 - Update to 68.9.0 build1 -* Fri May 15 2020 Martin Stransky - 68.8.0-2 -- Use D-Bus remote on Wayland (rhbz#1817330). - -* Thu May 14 2020 Jan Horak - 68.8.0-1 +* Tue May 05 2020 Jan Horak - 68.8.0-1 - Update to 68.8.0 build2 -* Wed Apr 15 2020 Jan Horak - 68.7.0-2 -- Removed gconf-2.0 build requirement, added perl-interpreter instead to fulfill - perl dependency - -* Thu Apr 09 2020 Jan Horak - 68.7.0-1 +* 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 -* Wed Mar 3 2020 David Auer - 68.5.0-2 -- Fix spellcheck (rhbz#1753011) - * Thu Feb 13 2020 Jan Horak - 68.5.0-1 - Update to 68.5.0 build1 -* Fri Jan 31 2020 Fedora Release Engineering - 68.4.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Mon Jan 13 2020 Jan Horak - 68.4.1-1 +* Mon Jan 13 2020 Jan Horak - 68.4.1-2 - Update to 68.4.1 build1 -* Tue Dec 17 2019 Jan Horak - 68.3.1-1 -- Update to 68.3.1 build1 - -* Mon Dec 9 2019 Martin Stransky - 68.3.0-2 -- Added fix for mzbz#1576268 - -* Tue Dec 03 2019 Jan Horak - 68.3.0-1 +* Mon Dec 02 2019 Jan Horak - 68.3.0-2 - Update to 68.3.0 build2 -* Tue Nov 05 2019 Jan Horak - 68.2.2-1 -- Update to 68.2.2 build1 +* Fri Oct 25 2019 Jan Horak - 68.2.0-2 +- Added patch for TLS 1.3 support. -* Fri Nov 01 2019 Jan Horak - 68.2.1-1 -- Update to 68.2.1 build1 - -* Tue Oct 29 2019 Jan Horak - 68.2.0-1 +* Tue Oct 22 2019 Jan Horak - 68.2.0-1 - Update to 68.2.0 -* Wed Oct 23 2019 Jan Horak - 68.1.1-4 -- Added symbolic icon - -* Thu Oct 3 2019 Jan Horak - 68.1.1-3 -- Allow downgrades of the profile because after distro upgrade there is a chance - that the the downgrade refusal dialog is shown. - -* Fri Sep 27 2019 Jan Horak - 68.1.1-1 +* Thu Oct 3 2019 Jan Horak - 68.1.1-2 - Update to 68.1.1 -* Thu Sep 26 2019 Martin Stransky - 68.1.0-2 -- Allow profile downgrade +* Wed Sep 4 2019 Jan Horak - 60.9.0-2 +- Update to 60.9.0 -* Thu Sep 12 2019 Jan Horak - 68.1.0-1 -- Update to 68.1.0 +* Thu Jul 4 2019 Martin Stransky - 60.8.0-1 +- Updated to 60.8.0 -* Thu Aug 29 2019 Jan Horak - 68.0-1 -- Update to 68.0 - -* Sat Jul 27 2019 Fedora Release Engineering - 60.8.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed Jul 10 2019 Martin Stransky - 60.8.0-1 -- Update 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 build 2 +- Update to 60.7.2 build2 * Thu Jun 20 2019 Jan Horak - 60.7.2-1 - Update to 60.7.2 @@ -830,333 +1354,163 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : * Tue Jun 18 2019 Jan Horak - 60.7.1-1 - Update to 60.7.1 -* Mon May 20 2019 Martin Stransky - 60.7.0-1 +* Mon May 27 2019 Martin Stransky - 60.7.0-1 - Update to 60.7.0 -* Wed May 15 2019 Martin Stransky - 60.6.1-5 -- Fixed startup crashes (rhbz#1709373, rhbz#1685276, rhbz#1708611) - -* Fri Apr 12 2019 Martin Stransky - 60.6.1-4 -- Addef fix for mozbz#1508378 - -* Wed Apr 3 2019 Martin Stransky - 60.6.1-3 -- Added fixes for mozbz#1526243, mozbz#1540145, mozbz#526293 - -* Tue Mar 26 2019 Martin Stransky - 60.6.1-2 -- Added rawhide build fix - * Mon Mar 25 2019 Martin Stransky - 60.6.1-1 - Update to 60.6.1 -* Mon Mar 18 2019 Martin Stransky - 60.6.0-1 +* Tue Mar 19 2019 Martin Stransky - 60.6.0-1 - Update to 60.6.0 -* Wed Mar 6 2019 Martin Stransky - 60.5.3-1 -- Update to 60.5.3 - -* Sat Mar 02 2019 Kalev Lember - 60.5.1-3 -- Fix hunspell dictionary symlink when built for flatpak - -* Thu Feb 21 2019 Kalev Lember - 60.5.1-2 -- Avoid hardcoding /usr in launcher scripts - -* Mon Feb 18 2019 Martin Stransky - 60.5.1-1 -- Update to 60.5.1 - -* Tue Feb 05 2019 Martin Stransky - 60.5.0-4 -- Use MOZ_ENABLE_WAYLAND for Wayland launcher. - -* Tue Feb 05 2019 Martin Stransky - 60.5.0-3 -- Updated Wayland patches - -* Sun Feb 03 2019 Fedora Release Engineering - 60.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Wed Jan 30 2019 Martin Stransky - 60.5.0-1 +* Tue Jan 29 2019 Martin Stransky - 60.5.0-1 - Update to 60.5.0 -* Wed Jan 2 2019 Jan Horak - 60.4.0-1 +* Thu Jan 3 2019 Jan Horak - 60.4.0-1 - Update to 60.4.0 -* Wed Dec 5 2018 Jan Horak - 60.3.3-1 -- Update to 60.3.3 - -* Thu Nov 22 2018 Jan Horak - 60.3.1-1 -- Update to 60.3.1 - -* Thu Nov 22 2018 Martin Stransky - 60.3.0-6 -- Enabled DBus remote. - -* Wed Nov 21 2018 Martin Stransky - 60.3.0-5 -- Backported Wayland related code from Firefox 63 -- Added fix for mozbz#1507475 - crash when display changes - -* Tue Nov 20 2018 Martin Stransky - 60.3.0-4 -- Build with Wayland support -- Enabled DBus remote for Wayland - -* Tue Nov 13 2018 Caolán McNamara - 60.3.0-3 -- rebuild for hunspell-1.7.0 - -* Tue Nov 6 2018 Martin Stransky - 60.3.0-2 -- Disabled DBus remote - -* Tue Oct 30 2018 Jan Horak - 60.3.0-1 +* 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 -* Wed Aug 15 2018 Jan Horak - 60.0-1 -- Update to 60.0 -- Removing gdata-provider extension because it's no longer provided by Thunderbird - -* Sat Jul 14 2018 Fedora Release Engineering - 52.9.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild +* 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 -* Tue May 22 2018 Jan Horak - 52.8.0-1 +* Thu May 17 2018 Jan Horak - 52.8.0-2 - Update to 52.8.0 -* Tue Mar 27 2018 Jan Horak - 52.7.0-1 +* Mon Mar 26 2018 Jan Horak - 52.7.0-1 - Update to 52.7.0 -* Fri Feb 09 2018 Fedora Release Engineering - 52.6.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 29 2018 Jan Horak - 52.6.0-1 +* 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 Dec 04 2017 Caolán McNamara - 52.5.0-2 -- rebuild for hunspell-1.6.2 - -* Tue Nov 28 2017 Jan Horak - 52.5.0-1 +* Mon Nov 27 2017 Jan Horak - 52.5.0-1 - Update to 52.5.0 -* Tue Oct 24 2017 Kai Engert - 52.4.0-3 -- Backport several upstream patches for NSS sql db compatibility, - see rhbz#1496565 - * 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 Aug 03 2017 Fedora Release Engineering - 52.2.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 52.2.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - * 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 Jun 13 2017 Jan Horak - 52.1.1-2 -- Enable aarch64 builds again - -* Fri Jun 2 2017 Jan Horak - 52.1.1-1 -- Update to 52.1.1 - -* Mon May 15 2017 Fedora Release Engineering - 52.1.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild - * Tue May 2 2017 Jan Horak - 52.1.0-1 - Update to 52.1.0 -- Added patch for rhbz#1442903 - crash when compacting folder -* Wed Apr 12 2017 Jan Horak - 52.0-2 -- Added fix for rhbz#1441601 - problems with TLS server certificates +* Thu Apr 13 2017 Jan Horak - 52.0.1-1 +- Update to 52.0.1 -* Tue Apr 4 2017 Jan Horak - 52.0-1 -- Update to 52.0 - -* Wed Mar 8 2017 Jan Horak - 45.8.0-1 +* Tue Mar 7 2017 Jan Horak - 45.8.0-1 - Update to 45.8.0 -* Tue Feb 21 2017 Jan Horak - 45.7.0-3 -- Added patch for gcc7 from icecat package - -* Sat Feb 11 2017 Fedora Release Engineering - 45.7.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Jan 31 2017 Jan Horak - 45.7.0-1 +* Thu Jan 26 2017 Jan Horak - 45.7.0-1 - Update to 45.7.0 -* Fri Jan 20 2017 Martin Stransky - 45.6.0-6 -- Rebuilt for new nss 3.28.1 (mozbz#1290037) - -* Fri Jan 6 2017 Jan Horak - 45.6.0-3 -- Fixed calendar locales: rhbz#1410740 - -* Mon Dec 19 2016 Jan Horak - 45.6.0-2 -- Bump gdata subpackage version - * Fri Dec 16 2016 Martin Stransky - 45.6.0-1 -- New upstream (45.6.0) - -* Tue Dec 13 2016 Caolán McNamara - 45.5.1-2 -- rebuild for hunspell-1.5.4 +- Update to the latest upstream (45.6.0) * Thu Dec 1 2016 Jan Horak - 45.5.1-1 - Update to 45.5.1 -* Mon Nov 28 2016 Jan Horak - 45.5.0-1 +* Fri Nov 18 2016 Jan Horak - 45.5.0-1 - Update to 45.5.0 -* Thu Oct 6 2016 Jan Horak - 45.4.0-1 +* Thu Sep 29 2016 Jan Horak - 45.4.0-1 - Update to 45.4.0 -* Thu Sep 22 2016 Jan Horak - 45.3.0-2 -- Removed dependency on cairo (bz#1377910) - -* Thu Sep 1 2016 Jan Horak - 45.3.0-1 +* Fri Aug 26 2016 Jan Horak - 45.3.0-1 - Update to 45.3.0 -* Fri Jul 22 2016 Tom Callaway - 45.2.0-2 -- rebuild for libvpx 1.6.0 +* Wed Jun 29 2016 Jan Horak - 45.2-1 +- Update to 45.2 -* Mon Jul 11 2016 Jan Horak - 45.2.0-1 -- Update to 45.2.0 - -* Mon Jun 6 2016 Jan Horak - 45.1.1-2 +* Mon Jun 6 2016 Jan Horak - 45.1.1-1 - Update to 45.1.1 -* Fri May 20 2016 Jan Horak - 45.1.0-4 -- Enabled JIT again +* 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-2 +* Tue May 17 2016 Jan Horak - 45.1.0-4 - Update to 45.1.0 -* Wed Apr 27 2016 Peter Robinson 45.0-4 -- Added fix for rhbz#1315225 - ppc64le/aarch64 build fixes - -* Mon Apr 18 2016 Caolán McNamara - 45.0-3 -- rebuild for hunspell 1.4.0 - -* Tue Apr 12 2016 Jan Horak - 45.0-2 +* Tue Apr 26 2016 Jan Horak - 45.0-5 - Update to 45.0 -* Thu Mar 24 2016 Jan Horak - 38.7.1-1 -- Update to 38.7.1 - -* Fri Feb 26 2016 Martin Stransky - 38.6.0-6 -- Disabled gcc6 NULL pointer optimization (rhbz#1311886) again - due to unfixed various TB parts - -* Thu Feb 25 2016 Martin Stransky - 38.6.0-5 -- Added upstream gcc6 fix (mozbz#1167145) - -* Thu Feb 25 2016 Martin Stransky - 38.6.0-4 -- Disabled gcc6 NULL pointer optimization (rhbz#1311886) - -* Tue Feb 23 2016 Martin Stransky - 38.6.0-3 -- Disabled system sqlite due to rhbz#1311032 - -* Mon Feb 22 2016 Martin Stransky - 38.6.0-2 -- Added workarounf for mozbz#1245783 - gcc6 JIT crashes - -* Tue Feb 16 2016 Jan Horak - 38.6.0-1 -- Update to 38.6.0 - -* Fri Feb 05 2016 Fedora Release Engineering - 38.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Mon Jan 4 2016 Jan Horak - 38.5.0-1 -- Update to 38.5.0 - -* Tue Dec 1 2015 Tom Callaway - 38.4.0-2 -- rebuild for libvpx 1.5.0 - -* Mon Nov 30 2015 Jan Horak - 38.4.0-1 -- Update to 38.4.0 - -* Fri Nov 27 2015 Martin Stransky - 31.3.0-3 -- Enabled hardened builds (rhbz#1283945) - -* Fri Oct 16 2015 Kalev Lember - 38.3.0-2 -- Fix accidentally commented out AppData screenshot - * Tue Sep 29 2015 Jan Horak - 38.3.0-1 - Update to 38.3.0 -* Thu Aug 20 2015 Jan Horak - 38.2.0-2 -- Thunderbird provides thunderbird-lightning now - -* Wed Aug 19 2015 Jan Horak - 38.2.0-1 +* Fri Aug 14 2015 Jan Horak - 38.2.0-1 - Update to 38.2.0 -* Thu Jul 9 2015 Jan Horak - 38.1.0-1 -- Update to 38.1.0 +* Wed Jul 15 2015 Jan Horak - 38.1.0-2 +- Rebase to 38.1.0 -* Thu Jun 18 2015 Jan Horak - 38.0.1-3 -- Bundling calendar extension +* Wed Jul 15 2015 Jan Horak - 31.8.0-1 +- Update to 31.8.0 -* Tue Jun 9 2015 Jan Horak - 38.0.1-1 -- Update to 38.0.1 - -* Tue May 12 2015 Martin Stransky - 31.7.0-1 +* Sun May 10 2015 Jan Horak - 31.7.0-1 - Update to 31.7.0 -* Mon Apr 6 2015 Tom Callaway - 31.6.0-2 -- rebuild for libvpx 1.4.0 -- stop using compat defines, they went away in libvpx 1.4.0 - * Tue Mar 31 2015 Jan Horak - 31.6.0-1 - Update to 31.6.0 -* Thu Mar 26 2015 Richard Hughes - 31.5.0-3 -- Add an AppData file for the software center - -* Thu Mar 19 2015 Jan Horak - 31.5.0-2 -- Fixed build flags for s390(x) - -* Tue Feb 24 2015 Jan Horak - 31.5.0-1 +* Mon Feb 23 2015 Jan Horak - 31.5.0-2 - Update to 31.5.0 -* Fri Feb 20 2015 Martin Stransky - 31.4.0-2 -- Fixed rhbz#1187746 - GLib allocation error - when starting thunderbird - -* Wed Jan 14 2015 Jan Horak - 31.4.0-1 +* Sat Jan 10 2015 Jan Horak - 31.4.0-1 - Update to 31.4.0 -* Mon Jan 5 2015 Jan Horak - 31.3.0-2 -- Exclude ppc64 arch for epel7 +* Mon Dec 22 2014 Jan Horak - 31.3.0-2 +- Fixed problems with dictionaries (mozbz#1097550) -* Mon Dec 1 2014 Jan Horak - 31.3.0-1 +* Fri Nov 28 2014 Jan Horak - 31.3.0-1 - Update to 31.3.0 -* Tue Oct 14 2014 Jan Horak - 31.2.0-1 +* Thu Oct 30 2014 Jan Horak - 31.2.0-2 - Update to 31.2.0 -* Wed Oct 1 2014 Martin Stransky - 31.1.1-2 -- Sync prefs with Firefox +* Wed Oct 1 2014 Martin Stransky - 31.1.1-5 +- Sync preferences with Firefox -* Thu Sep 11 2014 Jan Horak - 31.1.1-1 +* 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 -* Tue Aug 26 2014 Karsten Hopp 31.0-5 -- ppc64 patch 304 got removed and isn't required anymore (mozbz#973977) - -* Mon Aug 18 2014 Fedora Release Engineering - 31.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Mon Aug 4 2014 Peter Robinson 31.0-3 -- Build with system FFI as per firefox/xulrunner (fixes aarch64) - * Wed Jul 30 2014 Martin Stransky - 31.0-2 - Added patch for mozbz#858919