forked from pool/MozillaFirefox
- Add firefox-3781e3117706.patch to fix boo#1227856 aka bmo#1905018
where an incompatible pointer assignment is not accepted in C by GCC 14. If the request is OK, please forward it to Factory soon-ish so that we can switch the default compiler. Thanks!. OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=1164
This commit is contained in:
commit
41c367e33f
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
1
MozillaFirefox-rpmlintrc
Normal file
1
MozillaFirefox-rpmlintrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
addFilter("no-jar-manifest")
|
11119
MozillaFirefox.changes
Normal file
11119
MozillaFirefox.changes
Normal file
File diff suppressed because it is too large
Load Diff
282
MozillaFirefox.desktop
Normal file
282
MozillaFirefox.desktop
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Encoding=UTF-8
|
||||||
|
Name=%NAME
|
||||||
|
GenericName=Web Browser
|
||||||
|
GenericName[ca]=Navegador web
|
||||||
|
GenericName[cs]=Webový prohlížeč
|
||||||
|
GenericName[es]=Navegador web
|
||||||
|
GenericName[fa]=مرورگر اینترنتی
|
||||||
|
GenericName[fi]=WWW-selain
|
||||||
|
GenericName[fr]=Navigateur Web
|
||||||
|
GenericName[hu]=Webböngésző
|
||||||
|
GenericName[it]=Browser Web
|
||||||
|
GenericName[ja]=ウェブ・ブラウザ
|
||||||
|
GenericName[ko]=웹 브라우저
|
||||||
|
GenericName[nb]=Nettleser
|
||||||
|
GenericName[nl]=Webbrowser
|
||||||
|
GenericName[nn]=Nettlesar
|
||||||
|
GenericName[no]=Nettleser
|
||||||
|
GenericName[pl]=Przeglądarka WWW
|
||||||
|
GenericName[pt]=Navegador Web
|
||||||
|
GenericName[pt_BR]=Navegador Web
|
||||||
|
GenericName[ru]=Веб-браузер
|
||||||
|
GenericName[sk]=Internetový prehliadač
|
||||||
|
GenericName[sv]=Webbläsare
|
||||||
|
GenericName[uk]=Веб-браузер
|
||||||
|
Comment=Browse the Web
|
||||||
|
Comment[ca]=Navegueu per el web
|
||||||
|
Comment[cs]=Prohlížení stránek World Wide Webu
|
||||||
|
Comment[de]=Im Internet surfen
|
||||||
|
Comment[es]=Navegue por la web
|
||||||
|
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
|
||||||
|
Comment[fi]=Selaa Internetin WWW-sivuja
|
||||||
|
Comment[fr]=Navigue sur Internet
|
||||||
|
Comment[hu]=A világháló böngészése
|
||||||
|
Comment[it]=Esplora il web
|
||||||
|
Comment[ja]=ウェブを閲覧します
|
||||||
|
Comment[ko]=웹을 돌아 다닙니다
|
||||||
|
Comment[nb]=Surf på nettet
|
||||||
|
Comment[nl]=Verken het internet
|
||||||
|
Comment[nn]=Surf på nettet
|
||||||
|
Comment[no]=Surf på nettet
|
||||||
|
Comment[pl]=Przeglądanie stron WWW
|
||||||
|
Comment[pt]=Navegue na Internet
|
||||||
|
Comment[pt_BR]=Navegue na Internet
|
||||||
|
Comment[ru]=Просмотр веб-страниц
|
||||||
|
Comment[sk]=Prehliadanie internetu
|
||||||
|
Comment[sv]=Surfa på webben
|
||||||
|
Comment[uk]=Перегляд веб-сторінок
|
||||||
|
TryExec=%EXEC
|
||||||
|
Exec=%EXEC %u
|
||||||
|
Icon=%ICON
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
|
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;application/x-xpinstall;x-scheme-handler/http;x-scheme-handler/https;
|
||||||
|
Type=Application
|
||||||
|
|
||||||
|
Actions=new-window;PrivateBrowsing;ProfileManager
|
||||||
|
|
||||||
|
[Desktop Action new-window]
|
||||||
|
Name=New Window
|
||||||
|
Name[ach]=Dirica manyen
|
||||||
|
Name[af]=Nuwe venster
|
||||||
|
Name[an]=Nueva finestra
|
||||||
|
Name[ar]=نافذة جديدة
|
||||||
|
Name[as]=নতুন উইন্ডো
|
||||||
|
Name[ast]=Ventana nueva
|
||||||
|
Name[az]=Yeni Pəncərə
|
||||||
|
Name[be]=Новае акно
|
||||||
|
Name[bg]=Нов прозорец
|
||||||
|
Name[bn_BD]=নতুন উইন্ডো (N)
|
||||||
|
Name[bn_IN]=নতুন উইন্ডো
|
||||||
|
Name[br]=Prenestr nevez
|
||||||
|
Name[brx]=गोदान उइन्ड'(N)
|
||||||
|
Name[bs]=Novi prozor
|
||||||
|
Name[ca]=Finestra nova
|
||||||
|
Name[cak]=K'ak'a' tzuwäch
|
||||||
|
Name[cs]=Nové okno
|
||||||
|
Name[cy]=Ffenestr Newydd
|
||||||
|
Name[da]=Nyt vindue
|
||||||
|
Name[de]=Neues Fenster
|
||||||
|
Name[dsb]=Nowe wokno
|
||||||
|
Name[el]=Νέο παράθυρο
|
||||||
|
Name[en_GB]=New Window
|
||||||
|
Name[en_US]=New Window
|
||||||
|
Name[en_ZA]=New Window
|
||||||
|
Name[eo]=Nova fenestro
|
||||||
|
Name[es_AR]=Nueva ventana
|
||||||
|
Name[es_CL]=Nueva ventana
|
||||||
|
Name[es_ES]=Nueva ventana
|
||||||
|
Name[es_MX]=Nueva ventana
|
||||||
|
Name[et]=Uus aken
|
||||||
|
Name[eu]=Leiho berria
|
||||||
|
Name[fa]=پنجره جدید
|
||||||
|
Name[ff]=Henorde Hesere
|
||||||
|
Name[fi]=Uusi ikkuna
|
||||||
|
Name[fr]=Nouvelle fenêtre
|
||||||
|
Name[fy_NL]=Nij finster
|
||||||
|
Name[ga_IE]=Fuinneog Nua
|
||||||
|
Name[gd]=Uinneag ùr
|
||||||
|
Name[gl]=Nova xanela
|
||||||
|
Name[gn]=Ovetã pyahu
|
||||||
|
Name[gu_IN]=નવી વિન્ડો
|
||||||
|
Name[he]=חלון חדש
|
||||||
|
Name[hi_IN]=नया विंडो
|
||||||
|
Name[hr]=Novi prozor
|
||||||
|
Name[hsb]=Nowe wokno
|
||||||
|
Name[hu]=Új ablak
|
||||||
|
Name[hy_AM]=Նոր Պատուհան
|
||||||
|
Name[id]=Jendela Baru
|
||||||
|
Name[is]=Nýr gluggi
|
||||||
|
Name[it]=Nuova finestra
|
||||||
|
Name[ja]=新しいウィンドウ
|
||||||
|
Name[ja_JP-mac]=新規ウインドウ
|
||||||
|
Name[ka]=ახალი ფანჯარა
|
||||||
|
Name[kk]=Жаңа терезе
|
||||||
|
Name[km]=បង្អួចថ្មី
|
||||||
|
Name[kn]=ಹೊಸ ಕಿಟಕಿ
|
||||||
|
Name[ko]=새 창
|
||||||
|
Name[kok]=नवें जनेल
|
||||||
|
Name[ks]=نئئ وِنڈو
|
||||||
|
Name[lij]=Neuvo barcon
|
||||||
|
Name[lo]=ຫນ້າຕ່າງໃຫມ່
|
||||||
|
Name[lt]=Naujas langas
|
||||||
|
Name[ltg]=Jauns lūgs
|
||||||
|
Name[lv]=Jauns logs
|
||||||
|
Name[mai]=नव विंडो
|
||||||
|
Name[mk]=Нов прозорец
|
||||||
|
Name[ml]=പുതിയ ജാലകം
|
||||||
|
Name[mr]=नवीन पटल
|
||||||
|
Name[ms]=Tetingkap Baru
|
||||||
|
Name[my]=ဝင်းဒိုးအသစ်
|
||||||
|
Name[nb_NO]=Nytt vindu
|
||||||
|
Name[ne_NP]=नयाँ सञ्झ्याल
|
||||||
|
Name[nl]=Nieuw venster
|
||||||
|
Name[nn_NO]=Nytt vindauge
|
||||||
|
Name[or]=ନୂତନ ୱିଣ୍ଡୋ
|
||||||
|
Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
|
||||||
|
Name[pl]=Nowe okno
|
||||||
|
Name[pt_BR]=Nova janela
|
||||||
|
Name[pt_PT]=Nova janela
|
||||||
|
Name[rm]=Nova fanestra
|
||||||
|
Name[ro]=Fereastră nouă
|
||||||
|
Name[ru]=Новое окно
|
||||||
|
Name[sat]=नावा विंडो (N)
|
||||||
|
Name[si]=නව කවුළුවක්
|
||||||
|
Name[sk]=Nové okno
|
||||||
|
Name[sl]=Novo okno
|
||||||
|
Name[son]=Zanfun taaga
|
||||||
|
Name[sq]=Dritare e Re
|
||||||
|
Name[sr]=Нови прозор
|
||||||
|
Name[sv_SE]=Nytt fönster
|
||||||
|
Name[ta]=புதிய சாளரம்
|
||||||
|
Name[te]=కొత్త విండో
|
||||||
|
Name[th]=หน้าต่างใหม่
|
||||||
|
Name[tr]=Yeni pencere
|
||||||
|
Name[tsz]=Eraatarakua jimpani
|
||||||
|
Name[uk]=Нове вікно
|
||||||
|
Name[ur]=نیا دریچہ
|
||||||
|
Name[uz]=Yangi oyna
|
||||||
|
Name[vi]=Cửa sổ mới
|
||||||
|
Name[wo]=Palanteer bu bees
|
||||||
|
Name[xh]=Ifestile entsha
|
||||||
|
Name[zh_CN]=新建窗口
|
||||||
|
Name[zh_TW]=開新視窗
|
||||||
|
Exec=%EXEC --new-window %u
|
||||||
|
|
||||||
|
[Desktop Action PrivateBrowsing]
|
||||||
|
Name=New Private Browsing Window
|
||||||
|
Name[ach]=Dirica manyen me mung
|
||||||
|
Name[af]=Nuwe privaatvenster
|
||||||
|
Name[an]=Nueva finestra privada
|
||||||
|
Name[ar]=نافذة خاصة جديدة
|
||||||
|
Name[as]=নতুন ব্যক্তিগত উইন্ডো
|
||||||
|
Name[ast]=Ventana privada nueva
|
||||||
|
Name[az]=Yeni Məxfi Pəncərə
|
||||||
|
Name[be]=Новае акно адасаблення
|
||||||
|
Name[bg]=Нов прозорец за поверително сърфиране
|
||||||
|
Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
|
||||||
|
Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
|
||||||
|
Name[br]=Prenestr merdeiñ prevez nevez
|
||||||
|
Name[brx]=गोदान प्राइभेट उइन्ड'
|
||||||
|
Name[bs]=Novi privatni prozor
|
||||||
|
Name[ca]=Finestra privada nova
|
||||||
|
Name[cak]=K'ak'a' ichinan tzuwäch
|
||||||
|
Name[cs]=Nové anonymní okno
|
||||||
|
Name[cy]=Ffenestr Breifat Newydd
|
||||||
|
Name[da]=Nyt privat vindue
|
||||||
|
Name[de]=Neues privates Fenster
|
||||||
|
Name[dsb]=Nowe priwatne wokno
|
||||||
|
Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
|
||||||
|
Name[en_GB]=New Private Window
|
||||||
|
Name[en_US]=New Private Window
|
||||||
|
Name[en_ZA]=New Private Window
|
||||||
|
Name[eo]=Nova privata fenestro
|
||||||
|
Name[es_AR]=Nueva ventana privada
|
||||||
|
Name[es_CL]=Nueva ventana privada
|
||||||
|
Name[es_ES]=Nueva ventana privada
|
||||||
|
Name[es_MX]=Nueva ventana privada
|
||||||
|
Name[et]=Uus privaatne aken
|
||||||
|
Name[eu]=Leiho pribatu berria
|
||||||
|
Name[fa]=پنجره ناشناس جدید
|
||||||
|
Name[ff]=Henorde Suturo Hesere
|
||||||
|
Name[fi]=Uusi yksityinen ikkuna
|
||||||
|
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||||
|
Name[fy_NL]=Nij priveefinster
|
||||||
|
Name[ga_IE]=Fuinneog Nua Phríobháideach
|
||||||
|
Name[gd]=Uinneag phrìobhaideach ùr
|
||||||
|
Name[gl]=Nova xanela privada
|
||||||
|
Name[gn]=Ovetã ñemi pyahu
|
||||||
|
Name[gu_IN]=નવી ખાનગી વિન્ડો
|
||||||
|
Name[he]=חלון פרטי חדש
|
||||||
|
Name[hi_IN]=नयी निजी विंडो
|
||||||
|
Name[hr]=Novi privatni prozor
|
||||||
|
Name[hsb]=Nowe priwatne wokno
|
||||||
|
Name[hu]=Új privát ablak
|
||||||
|
Name[hy_AM]=Սկսել Գաղտնի դիտարկում
|
||||||
|
Name[id]=Jendela Mode Pribadi Baru
|
||||||
|
Name[is]=Nýr huliðsgluggi
|
||||||
|
Name[it]=Nuova finestra anonima
|
||||||
|
Name[ja]=新しいプライベートウィンドウ
|
||||||
|
Name[ja_JP-mac]=新規プライベートウインドウ
|
||||||
|
Name[ka]=ახალი პირადი ფანჯარა
|
||||||
|
Name[kk]=Жаңа жекелік терезе
|
||||||
|
Name[km]=បង្អួចឯកជនថ្មី
|
||||||
|
Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
|
||||||
|
Name[ko]=새 사생활 보호 모드
|
||||||
|
Name[kok]=नवो खाजगी विंडो
|
||||||
|
Name[ks]=نْو پرایوٹ وینڈو&
|
||||||
|
Name[lij]=Neuvo barcon privou
|
||||||
|
Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
|
||||||
|
Name[lt]=Naujas privataus naršymo langas
|
||||||
|
Name[ltg]=Jauns privatais lūgs
|
||||||
|
Name[lv]=Jauns privātais logs
|
||||||
|
Name[mai]=नया निज विंडो (W)
|
||||||
|
Name[mk]=Нов приватен прозорец
|
||||||
|
Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
|
||||||
|
Name[mr]=नवीन वैयक्तिक पटल
|
||||||
|
Name[ms]=Tetingkap Persendirian Baharu
|
||||||
|
Name[my]=New Private Window
|
||||||
|
Name[nb_NO]=Nytt privat vindu
|
||||||
|
Name[ne_NP]=नयाँ निजी सञ्झ्याल
|
||||||
|
Name[nl]=Nieuw privévenster
|
||||||
|
Name[nn_NO]=Nytt privat vindauge
|
||||||
|
Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
|
||||||
|
Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
|
||||||
|
Name[pl]=Nowe okno prywatne
|
||||||
|
Name[pt_BR]=Nova janela privativa
|
||||||
|
Name[pt_PT]=Nova janela privada
|
||||||
|
Name[rm]=Nova fanestra privata
|
||||||
|
Name[ro]=Fereastră privată nouă
|
||||||
|
Name[ru]=Новое приватное окно
|
||||||
|
Name[sat]=नावा निजेराक् विंडो (W )
|
||||||
|
Name[si]=නව පුද්ගලික කවුළුව (W)
|
||||||
|
Name[sk]=Nové okno v režime Súkromné prehliadanie
|
||||||
|
Name[sl]=Novo zasebno okno
|
||||||
|
Name[son]=Sutura zanfun taaga
|
||||||
|
Name[sq]=Dritare e Re Private
|
||||||
|
Name[sr]=Нови приватан прозор
|
||||||
|
Name[sv_SE]=Nytt privat fönster
|
||||||
|
Name[ta]=புதிய தனிப்பட்ட சாளரம்
|
||||||
|
Name[te]=కొత్త ఆంతరంగిక విండో
|
||||||
|
Name[th]=หน้าต่างส่วนตัวใหม่
|
||||||
|
Name[tr]=Yeni gizli pencere
|
||||||
|
Name[tsz]=Juchiiti eraatarakua jimpani
|
||||||
|
Name[uk]=Приватне вікно
|
||||||
|
Name[ur]=نیا نجی دریچہ
|
||||||
|
Name[uz]=Yangi maxfiy oyna
|
||||||
|
Name[vi]=Cửa sổ riêng tư mới
|
||||||
|
Name[wo]=Panlanteeru biir bu bees
|
||||||
|
Name[xh]=Ifestile yangasese entsha
|
||||||
|
Name[zh_CN]=新建隐私浏览窗口
|
||||||
|
Name[zh_TW]=新增隱私視窗
|
||||||
|
Exec=%EXEC --private-window %u
|
||||||
|
|
||||||
|
[Desktop Action ProfileManager]
|
||||||
|
Name=Profile Manager
|
||||||
|
Name[cs]=Správa profilů
|
||||||
|
Name[de]=Profilmanager
|
||||||
|
Name[fr]=Gestionnaire de profil
|
||||||
|
Name[ru]=Менеджер профилей
|
||||||
|
Name[uk]=Менеджер профілів
|
||||||
|
Exec=%EXEC --ProfileManager
|
788
MozillaFirefox.spec
Normal file
788
MozillaFirefox.spec
Normal file
@ -0,0 +1,788 @@
|
|||||||
|
#
|
||||||
|
# spec file
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 SUSE LLC
|
||||||
|
# Copyright (c) 2006-2024 Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%define _dwz_low_mem_die_limit 40000000
|
||||||
|
%define _dwz_max_die_limit 200000000
|
||||||
|
|
||||||
|
# changed with every update
|
||||||
|
# orig_version vs. mainver: To have beta-builds
|
||||||
|
# FF70beta3 would be released as FF69.99
|
||||||
|
# orig_version would be the upstream tar ball
|
||||||
|
# orig_version 70.0
|
||||||
|
# orig_suffix b3
|
||||||
|
# major 69
|
||||||
|
# mainver %%major.99
|
||||||
|
%define major 128
|
||||||
|
%define mainver %major.0
|
||||||
|
%define orig_version 128.0
|
||||||
|
%define orig_suffix %{nil}
|
||||||
|
%define update_channel release
|
||||||
|
%define branding 1
|
||||||
|
%define devpkg 1
|
||||||
|
|
||||||
|
# PGO builds do not work in TW currently (bmo#1680306)
|
||||||
|
%define do_profiling 0
|
||||||
|
|
||||||
|
# upstream default is clang (to use gcc for large parts set to 0)
|
||||||
|
%define clang_build 0
|
||||||
|
|
||||||
|
%bcond_with only_print_mozconfig
|
||||||
|
|
||||||
|
# define if ccache should be used or not
|
||||||
|
%define useccache 1
|
||||||
|
|
||||||
|
# SLE-12 doesn't have this macro
|
||||||
|
%{!?_rpmmacrodir: %global _rpmmacrodir %{_rpmconfigdir}/macros.d}
|
||||||
|
|
||||||
|
# No i586 on SLE-12, as the rpmlints are broken and can't handle the big rpms resulting from this build.
|
||||||
|
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000
|
||||||
|
ExclusiveArch: aarch64 ppc64le x86_64 s390x
|
||||||
|
%else
|
||||||
|
# Firefox only supports i686
|
||||||
|
%ifarch %ix86
|
||||||
|
ExclusiveArch: i586 i686
|
||||||
|
BuildArch: i686
|
||||||
|
%{expand:%%global optflags %(echo "%optflags"|sed -e s/i586/i686/) -march=i686 -mtune=generic -msse2}
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
%{expand:%%global optflags %(echo "%optflags"|sed -e s/-flto=auto//) }
|
||||||
|
|
||||||
|
# general build definitions
|
||||||
|
%define progname firefox
|
||||||
|
%define appname Firefox
|
||||||
|
%define pkgname MozillaFirefox
|
||||||
|
%define srcname firefox
|
||||||
|
%define progdir %{_prefix}/%_lib/%{progname}
|
||||||
|
%define gnome_dir %{_prefix}
|
||||||
|
%define desktop_file_name %{progname}
|
||||||
|
%define firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
|
||||||
|
%define __provides_exclude ^lib.*\\.so.*$
|
||||||
|
%define __requires_exclude ^(libmoz.*|liblgpllibs.*|libxul.*|libgk.*)$
|
||||||
|
%define localize 1
|
||||||
|
%ifarch %ix86 x86_64
|
||||||
|
%define crashreporter 1
|
||||||
|
%else
|
||||||
|
%define crashreporter 0
|
||||||
|
%endif
|
||||||
|
%define with_pipewire0_3 1
|
||||||
|
%define wayland_supported 1
|
||||||
|
%if 0%{?sle_version} > 0 && 0%{?sle_version} < 150200
|
||||||
|
# pipewire is too old on Leap <=15.1
|
||||||
|
%define with_pipewire0_3 0
|
||||||
|
# Wayland is too old on Leap <=15.1 as well
|
||||||
|
%define wayland_supported 0
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Name: %{pkgname}
|
||||||
|
BuildRequires: Mesa-devel
|
||||||
|
BuildRequires: alsa-devel
|
||||||
|
BuildRequires: autoconf213
|
||||||
|
BuildRequires: dbus-1-glib-devel
|
||||||
|
BuildRequires: dejavu-fonts
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: memory-constraints
|
||||||
|
%if 0%{?suse_version} < 1550 && 0%{?sle_version} <= 150600
|
||||||
|
BuildRequires: gcc13
|
||||||
|
BuildRequires: gcc13-c++
|
||||||
|
%else
|
||||||
|
BuildRequires: gcc-c++
|
||||||
|
%endif
|
||||||
|
BuildRequires: cargo1.78
|
||||||
|
BuildRequires: rust1.78
|
||||||
|
%if 0%{useccache} != 0
|
||||||
|
BuildRequires: ccache
|
||||||
|
%endif
|
||||||
|
BuildRequires: libXcomposite-devel
|
||||||
|
BuildRequires: libcurl-devel
|
||||||
|
BuildRequires: libiw-devel
|
||||||
|
BuildRequires: libproxy-devel
|
||||||
|
BuildRequires: makeinfo
|
||||||
|
BuildRequires: mozilla-nspr-devel >= 4.35
|
||||||
|
BuildRequires: mozilla-nss-devel >= 3.101.1
|
||||||
|
BuildRequires: nasm >= 2.14
|
||||||
|
BuildRequires: nodejs >= 12.22.12
|
||||||
|
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000
|
||||||
|
BuildRequires: libXtst-devel
|
||||||
|
BuildRequires: python-libxml2
|
||||||
|
BuildRequires: python39
|
||||||
|
BuildRequires: python39-curses
|
||||||
|
BuildRequires: python39-devel
|
||||||
|
%else
|
||||||
|
%if 0%{?sle_version} > 150000 && 0%{?sle_version} <= 150600
|
||||||
|
BuildRequires: nodejs12 >= 12.22.12
|
||||||
|
BuildRequires: python39
|
||||||
|
BuildRequires: python39-curses
|
||||||
|
BuildRequires: python39-devel
|
||||||
|
%else
|
||||||
|
# ALP
|
||||||
|
BuildRequires: nodejs >= 12.22.12
|
||||||
|
BuildRequires: python3 >= 3.7
|
||||||
|
BuildRequires: python3-curses
|
||||||
|
BuildRequires: python3-devel
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
BuildRequires: rust-cbindgen >= 0.26
|
||||||
|
BuildRequires: unzip
|
||||||
|
BuildRequires: update-desktop-files
|
||||||
|
BuildRequires: xorg-x11-libXt-devel
|
||||||
|
%if 0%{?do_profiling}
|
||||||
|
BuildRequires: xvfb-run
|
||||||
|
%endif
|
||||||
|
BuildRequires: yasm
|
||||||
|
BuildRequires: zip
|
||||||
|
%if 0%{?suse_version} < 1550
|
||||||
|
BuildRequires: pkgconfig(gconf-2.0) >= 1.2.1
|
||||||
|
%endif
|
||||||
|
BuildRequires: clang15-devel
|
||||||
|
BuildRequires: pkgconfig(glib-2.0) >= 2.22
|
||||||
|
BuildRequires: pkgconfig(gobject-2.0)
|
||||||
|
BuildRequires: pkgconfig(gtk+-3.0) >= 3.14.0
|
||||||
|
BuildRequires: pkgconfig(gtk+-unix-print-3.0)
|
||||||
|
BuildRequires: pkgconfig(libffi)
|
||||||
|
BuildRequires: pkgconfig(libpulse)
|
||||||
|
%if %{with_pipewire0_3}
|
||||||
|
BuildRequires: pkgconfig(libpipewire-0.3)
|
||||||
|
%endif
|
||||||
|
# libavcodec is required for H.264 support but the
|
||||||
|
# openSUSE version is currently not able to play H.264
|
||||||
|
# therefore the Packman version is required
|
||||||
|
# minimum version of libavcodec is 53
|
||||||
|
Recommends: libavcodec-full >= 0.10.16
|
||||||
|
Version: %{mainver}
|
||||||
|
Release: 0
|
||||||
|
%if "%{name}" == "MozillaFirefox"
|
||||||
|
Provides: firefox = %{mainver}
|
||||||
|
Provides: firefox = %{version}-%{release}
|
||||||
|
%endif
|
||||||
|
Provides: web_browser
|
||||||
|
Provides: appdata()
|
||||||
|
Provides: appdata(firefox.appdata.xml)
|
||||||
|
# this is needed to match this package with the kde4 helper package without the main package
|
||||||
|
# having a hard requirement on the kde4 package
|
||||||
|
%define kde_helper_version 6
|
||||||
|
Provides: mozilla-kde4-version = %{kde_helper_version}
|
||||||
|
Summary: Mozilla %{appname} Web Browser
|
||||||
|
License: MPL-2.0
|
||||||
|
Group: Productivity/Networking/Web/Browsers
|
||||||
|
URL: http://www.mozilla.org/
|
||||||
|
%if !%{with only_print_mozconfig}
|
||||||
|
Source: http://ftp.mozilla.org/pub/%{srcname}/releases/%{version}%{orig_suffix}/source/%{srcname}-%{orig_version}%{orig_suffix}.source.tar.xz
|
||||||
|
Source1: MozillaFirefox.desktop
|
||||||
|
Source2: MozillaFirefox-rpmlintrc
|
||||||
|
Source3: mozilla.sh.in
|
||||||
|
Source4: tar_stamps
|
||||||
|
%if %{localize}
|
||||||
|
Source7: l10n-%{orig_version}%{orig_suffix}.tar.xz
|
||||||
|
%endif
|
||||||
|
Source8: firefox-mimeinfo.xml
|
||||||
|
Source9: firefox.js
|
||||||
|
Source11: firefox.1
|
||||||
|
Source12: mozilla-get-app-id
|
||||||
|
Source13: spellcheck.js
|
||||||
|
Source14: https://github.com/openSUSE/firefox-scripts/raw/913fab1/create-tar.sh
|
||||||
|
Source15: firefox-appdata.xml
|
||||||
|
Source16: %{name}.changes
|
||||||
|
Source17: firefox-search-provider.ini
|
||||||
|
# Set up API keys, see http://www.chromium.org/developers/how-tos/api-keys
|
||||||
|
# Note: these are for the openSUSE Firefox builds ONLY. For your own distribution,
|
||||||
|
# please get your own set of keys.
|
||||||
|
Source18: mozilla-api-key
|
||||||
|
Source19: google-api-key
|
||||||
|
Source20: https://ftp.mozilla.org/pub/%{srcname}/releases/%{version}%{orig_suffix}/source/%{srcname}-%{orig_version}%{orig_suffix}.source.tar.xz.asc
|
||||||
|
Source21: https://ftp.mozilla.org/pub/%{srcname}/releases/%{version}%{orig_suffix}/KEY#/mozilla.keyring
|
||||||
|
# Gecko/Toolkit
|
||||||
|
Patch1: mozilla-nongnome-proxies.patch
|
||||||
|
Patch2: mozilla-kde.patch
|
||||||
|
Patch3: mozilla-ntlm-full-path.patch
|
||||||
|
Patch4: mozilla-aarch64-startup-crash.patch
|
||||||
|
Patch5: mozilla-fix-aarch64-libopus.patch
|
||||||
|
Patch6: mozilla-s390-context.patch
|
||||||
|
Patch7: mozilla-pgo.patch
|
||||||
|
Patch8: mozilla-reduce-rust-debuginfo.patch
|
||||||
|
Patch10: mozilla-bmo1504834-part1.patch
|
||||||
|
Patch11: mozilla-bmo1504834-part3.patch
|
||||||
|
Patch12: mozilla-bmo1512162.patch
|
||||||
|
Patch14: mozilla-bmo849632.patch
|
||||||
|
Patch15: mozilla-bmo998749.patch
|
||||||
|
Patch17: mozilla-libavcodec58_91.patch
|
||||||
|
Patch18: mozilla-silence-no-return-type.patch
|
||||||
|
Patch19: mozilla-bmo531915.patch
|
||||||
|
Patch20: one_swizzle_to_rule_them_all.patch
|
||||||
|
Patch21: svg-rendering.patch
|
||||||
|
Patch22: mozilla-partial-revert-1768632.patch
|
||||||
|
Patch23: mozilla-rust-disable-future-incompat.patch
|
||||||
|
Patch24: mozilla-bmo1822730.patch
|
||||||
|
Patch25: mozilla-bmo1898476.patch
|
||||||
|
Patch26: mozilla-bmo1907511.patch
|
||||||
|
# Firefox/browser
|
||||||
|
Patch101: firefox-kde.patch
|
||||||
|
Patch102: firefox-branded-icons.patch
|
||||||
|
# PATCH-FIX-UPSTREAM MozillaFirefox-3781e3117706.patch bsc#1227856
|
||||||
|
Patch103: firefox-3781e3117706.patch
|
||||||
|
%endif
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
Requires(post): coreutils shared-mime-info desktop-file-utils
|
||||||
|
Requires(postun):shared-mime-info desktop-file-utils
|
||||||
|
Requires: %{name}-branding >= 68
|
||||||
|
%requires_ge mozilla-nspr
|
||||||
|
%requires_ge mozilla-nss
|
||||||
|
%requires_ge libfreetype6
|
||||||
|
Recommends: libcanberra0
|
||||||
|
Recommends: libpulse0
|
||||||
|
# To make security-keys (e.g. Yubikey) work with FF, it needs the udev-rules installed.
|
||||||
|
# A clean package with the most common rules exists only in SP3 onwards. `u2f-hosts` could be used on older
|
||||||
|
# code streams, but it contains more than just the rules, so we're not recommending it here.
|
||||||
|
%if 0%{?suse_version} >= 1600 || 0%{?sle_version} >= 150300
|
||||||
|
Recommends: libfido2-udev
|
||||||
|
%endif
|
||||||
|
# addon leads to startup crash (bnc#908892)
|
||||||
|
Obsoletes: tracker-miner-firefox < 0.15
|
||||||
|
%if 0%{?devpkg} == 0
|
||||||
|
Obsoletes: %{name}-devel < %{version}
|
||||||
|
%endif
|
||||||
|
ExcludeArch: armv6l armv6hl ppc ppc64
|
||||||
|
|
||||||
|
%description
|
||||||
|
Mozilla Firefox is a standalone web browser, designed for standards
|
||||||
|
compliance and performance. Its functionality can be enhanced via a
|
||||||
|
plethora of extensions.
|
||||||
|
|
||||||
|
%if 0%{?devpkg}
|
||||||
|
%package devel
|
||||||
|
Summary: Devel package for %{appname}
|
||||||
|
Group: Development/Tools/Other
|
||||||
|
Provides: firefox-devel = %{version}-%{release}
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Requires: perl(Archive::Zip)
|
||||||
|
Requires: perl(XML::Simple)
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
Development files for %{appname} to make packaging of addons easier.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %localize
|
||||||
|
%package translations-common
|
||||||
|
Summary: Common translations for %{appname}
|
||||||
|
Group: System/Localization
|
||||||
|
Provides: locale(%{name}:ar;ca;cs;da;de;el;en_GB;es_AR;es_CL;es_ES;fi;fr;hu;it;ja;ko;nb_NO;nl;pl;pt_BR;pt_PT;ru;sv_SE;zh_CN;zh_TW)
|
||||||
|
# This is there for updates from Firefox before the translations-package was split up into 2 packages
|
||||||
|
Provides: %{name}-translations
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Obsoletes: %{name}-translations < %{version}-%{release}
|
||||||
|
|
||||||
|
%description translations-common
|
||||||
|
This package contains several common languages for the user interface
|
||||||
|
of %{appname}.
|
||||||
|
|
||||||
|
%package translations-other
|
||||||
|
Summary: Extra translations for %{appname}
|
||||||
|
Group: System/Localization
|
||||||
|
Provides: locale(%{name}:ach;af;an;ast;az;be;bg;bn;br;bs;cak;cy;dsb;en_CA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gn;gu_IN;he;hi_IN;hr;hsb;hy_AM;ia;id;is;ka;kab;kk;km;kn;lij;lt;lv;mk;mr;ms;my;ne_NP;nn_NO;oc;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;te;th;tr;uk;ur;uz;vi;xh)
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Obsoletes: %{name}-translations < %{version}-%{release}
|
||||||
|
|
||||||
|
%description translations-other
|
||||||
|
This package contains rarely used languages for the user interface
|
||||||
|
of %{appname}.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%package branding-upstream
|
||||||
|
Summary: Upstream branding for %{appname}
|
||||||
|
Group: Productivity/Networking/Web/Browsers
|
||||||
|
Provides: %{name}-branding = %{version}
|
||||||
|
Conflicts: otherproviders(%{name}-branding)
|
||||||
|
Supplements: packageand(%{name}:branding-upstream)
|
||||||
|
#BRAND: Provide three files -
|
||||||
|
#BRAND: /usr/lib/firefox/browserconfig.properties that contains the
|
||||||
|
#BRAND: default homepage and some other default configuration options
|
||||||
|
#BRAND: /usr/lib/firefox/defaults/profile/bookmarks.html that contains
|
||||||
|
#BRAND: the list of default bookmarks
|
||||||
|
#BRAND: It's also possible to create a file
|
||||||
|
#BRAND: /usr/lib/firefox/defaults/preferences/firefox-$vendor.js to set
|
||||||
|
#BRAND: custom preference overrides.
|
||||||
|
#BRAND: It's also possible to drop files in /usr/lib/firefox/distribution/searchplugins/common/
|
||||||
|
|
||||||
|
%description branding-upstream
|
||||||
|
This package provides upstream look and feel for %{appname}.
|
||||||
|
|
||||||
|
%if !%{with only_print_mozconfig}
|
||||||
|
%prep
|
||||||
|
%if %localize
|
||||||
|
|
||||||
|
# If generated incorrectly, the tarball will be ~270B in
|
||||||
|
# size, so 1MB seems like good enough limit to check.
|
||||||
|
MINSIZE=1048576
|
||||||
|
if (( $(stat -Lc%s "%{SOURCE7}") < MINSIZE)); then
|
||||||
|
echo "Translations tarball %{SOURCE7} not generated properly."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
%setup -q -n %{srcname}-%{orig_version} -b 7
|
||||||
|
%else
|
||||||
|
%setup -q -n %{srcname}-%{orig_version}
|
||||||
|
%endif
|
||||||
|
cd $RPM_BUILD_DIR/%{srcname}-%{orig_version}
|
||||||
|
%autopatch -p1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%build
|
||||||
|
%if !%{with only_print_mozconfig}
|
||||||
|
# no need to add build time to binaries
|
||||||
|
modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/%{pkgname}.changes")"
|
||||||
|
DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
|
||||||
|
TIME="\"$(date -d "${modified}" "+%%R")\""
|
||||||
|
find . -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
|
||||||
|
|
||||||
|
# SLE-12 provides python39, but that package does not provide a python3 binary
|
||||||
|
%if 0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000
|
||||||
|
#sed -i "s/python3/python3.9/g" configure.in
|
||||||
|
sed -i "s|/usr/bin/env python3|/usr/bin/env python3.9|" mach
|
||||||
|
sed -i "s|potential_python_binary = f\"python3.{i}\"|potential_python_binary = f\"python3.9.{i}\"|" mach
|
||||||
|
export PYTHON3=/usr/bin/python3.9
|
||||||
|
%endif
|
||||||
|
|
||||||
|
kdehelperversion=$(cat toolkit/xre/nsKDEUtils.cpp | grep '#define KMOZILLAHELPER_VERSION' | cut -d ' ' -f 3)
|
||||||
|
if test "$kdehelperversion" != %{kde_helper_version}; then
|
||||||
|
echo fix kde helper version in the .spec file
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# When doing only_print_mozconfig, this file isn't necessarily available, so skip it
|
||||||
|
cp %{SOURCE4} .obsenv.sh
|
||||||
|
%else
|
||||||
|
# We need to make sure its empty
|
||||||
|
echo "" > .obsenv.sh
|
||||||
|
%endif
|
||||||
|
|
||||||
|
cat >> .obsenv.sh <<EOF
|
||||||
|
export CARGO_HOME=${RPM_BUILD_DIR}/%{srcname}-%{orig_version}/.cargo
|
||||||
|
export MOZ_SOURCE_CHANGESET=\$RELEASE_TAG
|
||||||
|
export SOURCE_REPO=\$RELEASE_REPO
|
||||||
|
export source_repo=\$RELEASE_REPO
|
||||||
|
export MOZ_SOURCE_REPO=\$RELEASE_REPO
|
||||||
|
export MOZ_BUILD_DATE=\$RELEASE_TIMESTAMP
|
||||||
|
export MOZILLA_OFFICIAL=1
|
||||||
|
export BUILD_OFFICIAL=1
|
||||||
|
export MOZ_TELEMETRY_REPORTING=1
|
||||||
|
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
|
||||||
|
export CFLAGS="%{optflags}"
|
||||||
|
%if 0%{?suse_version} < 1550 && 0%{?sle_version} <= 150600
|
||||||
|
export CC=gcc-13
|
||||||
|
export CXX=g++-13
|
||||||
|
%else
|
||||||
|
%if 0%{?clang_build} == 0
|
||||||
|
export CC=gcc
|
||||||
|
export CXX=g++
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
%ifarch %arm %ix86
|
||||||
|
### NOTE: these sections are not required anymore. Alson --no-keep-memory + -Wl,-z,pack-relative-relocs causes
|
||||||
|
### ld to go OOM (https://sourceware.org/bugzilla/show_bug.cgi?id=30756)
|
||||||
|
# Limit RAM usage during link
|
||||||
|
# export LDFLAGS="\$LDFLAGS -Wl,--no-keep-memory -Wl,--reduce-memory-overheads -Wl,--no-map-whole-files -Wl,--hash-size=31"
|
||||||
|
#
|
||||||
|
# A lie to prevent -Wl,--gc-sections being set which requires more memory than 32bit can offer
|
||||||
|
#export GC_SECTIONS_BREAKS_DEBUG_RANGES=yes
|
||||||
|
%endif
|
||||||
|
export LDFLAGS="\$LDFLAGS -fPIC -Wl,-z,relro,-z,now"
|
||||||
|
%ifarch ppc64 ppc64le
|
||||||
|
%endif
|
||||||
|
%ifarch %ix86
|
||||||
|
# Not enough memory on 32-bit systems, reduce debug info.
|
||||||
|
export CFLAGS="\$CFLAGS -g1"
|
||||||
|
%endif
|
||||||
|
export CXXFLAGS="\$CFLAGS"
|
||||||
|
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
|
||||||
|
EOF
|
||||||
|
# Done with env-variables.
|
||||||
|
source ./.obsenv.sh
|
||||||
|
|
||||||
|
%ifarch aarch64 %arm ppc64 ppc64le riscv64
|
||||||
|
%limit_build -m 2500
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Generating mozconfig
|
||||||
|
cat << EOF > $MOZCONFIG
|
||||||
|
mk_add_options MOZILLA_OFFICIAL=1
|
||||||
|
mk_add_options BUILD_OFFICIAL=1
|
||||||
|
mk_add_options MOZ_MAKE_FLAGS=%{?jobs:-j%jobs}
|
||||||
|
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
|
||||||
|
. \$topsrcdir/browser/config/mozconfig
|
||||||
|
ac_add_options --disable-bootstrap
|
||||||
|
ac_add_options --prefix=%{_prefix}
|
||||||
|
ac_add_options --libdir=%{_libdir}
|
||||||
|
ac_add_options --includedir=%{_includedir}
|
||||||
|
ac_add_options --enable-release
|
||||||
|
%if 0%{wayland_supported}
|
||||||
|
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
|
||||||
|
%else
|
||||||
|
ac_add_options --enable-default-toolkit=cairo-gtk3
|
||||||
|
%endif
|
||||||
|
# bmo#1441155 - Disable the generation of Rust debug symbols on Linux32
|
||||||
|
%ifarch %ix86 %arm
|
||||||
|
ac_add_options --disable-debug-symbols
|
||||||
|
%else
|
||||||
|
ac_add_options --enable-debug-symbols=-g0
|
||||||
|
%endif
|
||||||
|
ac_add_options --disable-install-strip
|
||||||
|
%ifarch %ix86 %arm
|
||||||
|
# OOM on 32-bit when ld passed -Wl,-z,pack-relative-relocs
|
||||||
|
# ac_add_options --enable-elf-hack
|
||||||
|
%endif
|
||||||
|
ac_add_options --with-system-nspr
|
||||||
|
ac_add_options --with-system-nss
|
||||||
|
%if 0%{useccache} != 0
|
||||||
|
ac_add_options --with-ccache
|
||||||
|
%endif
|
||||||
|
%if %{localize}
|
||||||
|
ac_add_options --with-l10n-base=$RPM_BUILD_DIR/l10n
|
||||||
|
%endif
|
||||||
|
#ac_add_options --with-system-jpeg # libjpeg-turbo is used internally
|
||||||
|
#ac_add_options --with-system-png # doesn't work because of missing APNG support
|
||||||
|
ac_add_options --with-system-zlib
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
ac_add_options --enable-alsa
|
||||||
|
ac_add_options --disable-debug
|
||||||
|
ac_add_options --enable-update-channel=%{update_channel}
|
||||||
|
ac_add_options --with-mozilla-api-keyfile=%{SOURCE18}
|
||||||
|
# Google-service currently not available for free anymore
|
||||||
|
#ac_add_options --with-google-location-service-api-keyfile=%%{SOURCE19}
|
||||||
|
ac_add_options --with-google-safebrowsing-api-keyfile=%{SOURCE19}
|
||||||
|
ac_add_options --with-unsigned-addon-scopes=app
|
||||||
|
ac_add_options --allow-addon-sideload
|
||||||
|
# at least temporary until the "wasi-sysroot" issue is solved
|
||||||
|
ac_add_options --without-wasm-sandboxed-libraries
|
||||||
|
%ifarch x86_64 aarch64
|
||||||
|
ac_add_options --enable-rust-simd
|
||||||
|
%endif
|
||||||
|
%if %branding
|
||||||
|
ac_add_options --enable-official-branding
|
||||||
|
%endif
|
||||||
|
ac_add_options --enable-libproxy
|
||||||
|
%if ! %crashreporter
|
||||||
|
ac_add_options --disable-crashreporter
|
||||||
|
%endif
|
||||||
|
%ifarch %arm
|
||||||
|
ac_add_options --with-fpu=vfpv3-d16
|
||||||
|
ac_add_options --with-float-abi=hard
|
||||||
|
%ifarch armv6l armv6hl
|
||||||
|
ac_add_options --with-arch=armv6
|
||||||
|
%else
|
||||||
|
ac_add_options --with-arch=armv7-a
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
# mitigation/workaround for bmo#1512162
|
||||||
|
%ifarch s390x
|
||||||
|
ac_add_options --enable-optimize="-O1"
|
||||||
|
%endif
|
||||||
|
%ifarch x86_64
|
||||||
|
# LTO needs newer toolchain stack only (at least GCC 8.2.1 (r268506)
|
||||||
|
%if 0%{?suse_version} > 1500
|
||||||
|
ac_add_options --enable-lto
|
||||||
|
%if 0%{?do_profiling}
|
||||||
|
ac_add_options MOZ_PGO=1
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
EOF
|
||||||
|
|
||||||
|
%if %{with only_print_mozconfig}
|
||||||
|
cat ./.obsenv.sh
|
||||||
|
cat $MOZCONFIG
|
||||||
|
%else
|
||||||
|
|
||||||
|
%if 0%{useccache} != 0
|
||||||
|
ccache -s
|
||||||
|
%endif
|
||||||
|
%if 0%{?do_profiling}
|
||||||
|
xvfb-run --server-args="-screen 0 1920x1080x24" \
|
||||||
|
%endif
|
||||||
|
./mach build -v
|
||||||
|
|
||||||
|
# build additional locales
|
||||||
|
%if %localize
|
||||||
|
truncate -s 0 %{_tmppath}/translations.{common,other}
|
||||||
|
# langpack-build can not be done in parallel easily (see https://bugzilla.mozilla.org/show_bug.cgi?id=1660943)
|
||||||
|
# Therefore, we have to have a separate obj-dir for each language
|
||||||
|
# We do this, by creating a mozconfig-template with the necessary switches
|
||||||
|
# and a placeholder obj-dir, which gets copied and modified for each language
|
||||||
|
|
||||||
|
# Create mozconfig-template for langbuild
|
||||||
|
cat << EOF > ${MOZCONFIG}_LANG
|
||||||
|
mk_add_options MOZILLA_OFFICIAL=1
|
||||||
|
mk_add_options BUILD_OFFICIAL=1
|
||||||
|
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj_LANG
|
||||||
|
. \$topsrcdir/browser/config/mozconfig
|
||||||
|
ac_add_options --prefix=%{_prefix}
|
||||||
|
ac_add_options --with-l10n-base=$RPM_BUILD_DIR/l10n
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --without-wasm-sandboxed-libraries
|
||||||
|
%if %branding
|
||||||
|
ac_add_options --enable-official-branding
|
||||||
|
%endif
|
||||||
|
EOF
|
||||||
|
|
||||||
|
%define njobs 0%{?jobs:%jobs}
|
||||||
|
mkdir -p $RPM_BUILD_DIR/langpacks_artifacts/
|
||||||
|
sed -r '/^(ja-JP-mac|ga-IE|en-US|)$/d;s/ .*$//' $RPM_BUILD_DIR/%{srcname}-%{orig_version}/browser/locales/shipped-locales \
|
||||||
|
| xargs -n 1 %{?njobs:-P %njobs} -I {} /bin/sh -c '
|
||||||
|
locale=$1
|
||||||
|
cp ${MOZCONFIG}_LANG ${MOZCONFIG}_$locale
|
||||||
|
sed -i "s|obj_LANG|obj_$locale|" ${MOZCONFIG}_$locale
|
||||||
|
export MOZCONFIG=${MOZCONFIG}_$locale
|
||||||
|
# nsinstall is needed for langpack-build. It is already built by `./mach build`, but building it again is very fast
|
||||||
|
./mach build config/nsinstall langpack-$locale
|
||||||
|
cp -L ../obj_$locale/dist/linux-*/xpi/firefox-%{orig_version}.$locale.langpack.xpi \
|
||||||
|
$RPM_BUILD_DIR/langpacks_artifacts/langpack-$locale@firefox.mozilla.org.xpi
|
||||||
|
# check against the fixed common list and sort into the right filelist
|
||||||
|
_matched=0
|
||||||
|
for _match in ar ca cs da de el en-GB es-AR es-CL es-ES fi fr hu it ja ko nb-NO nl pl pt-BR pt-PT ru sv-SE zh-CN zh-TW; do
|
||||||
|
[ "$_match" = "$locale" ] && _matched=1
|
||||||
|
done
|
||||||
|
[ $_matched -eq 1 ] && _l10ntarget=common || _l10ntarget=other
|
||||||
|
echo %{progdir}/browser/extensions/langpack-$locale@firefox.mozilla.org.xpi \
|
||||||
|
>> %{_tmppath}/translations.$_l10ntarget
|
||||||
|
' -- {}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if 0%{useccache} != 0
|
||||||
|
ccache -s
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%install
|
||||||
|
cd $RPM_BUILD_DIR/obj
|
||||||
|
source %{SOURCE4}
|
||||||
|
export MOZ_SOURCE_STAMP=$RELEASE_TAG
|
||||||
|
export MOZ_SOURCE_REPO=$RELEASE_REPO
|
||||||
|
# need to remove default en-US firefox-l10n.js before it gets
|
||||||
|
# populated into browser's omni.ja; it only contains general.useragent.locale
|
||||||
|
# which should be loaded from each language pack (set in firefox.js)
|
||||||
|
rm dist/bin/browser/defaults/preferences/firefox-l10n.js
|
||||||
|
make -C browser/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0
|
||||||
|
#DEBUG (break the build if searchplugins are missing / temporary)
|
||||||
|
grep amazondotcom dist/firefox/browser/omni.ja
|
||||||
|
# copy tree into RPM_BUILD_ROOT
|
||||||
|
mkdir -p %{buildroot}%{progdir}
|
||||||
|
cp -rf $RPM_BUILD_DIR/obj/dist/%{srcname}/* %{buildroot}%{progdir}
|
||||||
|
%if %localize
|
||||||
|
mkdir -p %{buildroot}%{progdir}/browser/extensions
|
||||||
|
cp -rf $RPM_BUILD_DIR/langpacks_artifacts/* %{buildroot}%{progdir}/browser/extensions/
|
||||||
|
%endif
|
||||||
|
mkdir -p %{buildroot}%{progdir}/distribution/extensions
|
||||||
|
mkdir -p %{buildroot}%{progdir}/browser/defaults/preferences/
|
||||||
|
# renaming executables (for regular vs. ESR)
|
||||||
|
%if "%{srcname}" != "%{progname}"
|
||||||
|
mv %{buildroot}%{progdir}/%{srcname} %{buildroot}%{progdir}/%{progname}
|
||||||
|
mv %{buildroot}%{progdir}/%{srcname}-bin %{buildroot}%{progdir}/%{progname}-bin
|
||||||
|
%endif
|
||||||
|
# install gre prefs
|
||||||
|
install -m 644 %{SOURCE13} %{buildroot}%{progdir}/defaults/pref/
|
||||||
|
# install browser prefs
|
||||||
|
install -m 644 %{SOURCE9} %{buildroot}%{progdir}/browser/defaults/preferences/firefox.js
|
||||||
|
|
||||||
|
# remove some executable permissions
|
||||||
|
find %{buildroot}%{progdir} \
|
||||||
|
-name "*.js" -o \
|
||||||
|
-name "*.jsm" -o \
|
||||||
|
-name "*.rdf" -o \
|
||||||
|
-name "*.properties" -o \
|
||||||
|
-name "*.dtd" -o \
|
||||||
|
-name "*.txt" -o \
|
||||||
|
-name "*.xml" -o \
|
||||||
|
-name "*.css" \
|
||||||
|
-exec chmod a-x {} +
|
||||||
|
# remove mkdir.done files from installed base
|
||||||
|
find %{buildroot}%{progdir} -type f -name ".mkdir.done" -delete
|
||||||
|
# overwrite the mozilla start-script and link it to /usr/bin
|
||||||
|
mkdir --parents %{buildroot}/usr/bin
|
||||||
|
sed "s:%%PREFIX:%{_prefix}:g
|
||||||
|
s:%%PROGDIR:%{progdir}:g
|
||||||
|
s:%%APPNAME:%{progname}:g
|
||||||
|
s:%%WAYLAND_SUPPORTED:%{wayland_supported}:g
|
||||||
|
s:%%PROFILE:.mozilla/firefox:g" \
|
||||||
|
%{SOURCE3} > %{buildroot}%{progdir}/%{progname}.sh
|
||||||
|
chmod 755 %{buildroot}%{progdir}/%{progname}.sh
|
||||||
|
ln -sf ../..%{progdir}/%{progname}.sh %{buildroot}%{_bindir}/%{progname}
|
||||||
|
# desktop file
|
||||||
|
mkdir -p %{buildroot}%{_datadir}/applications
|
||||||
|
sed "s:%%NAME:%{appname}:g
|
||||||
|
s:%%EXEC:%{progname}:g
|
||||||
|
s:%%ICON:%{progname}:g
|
||||||
|
s:%%WMCLASS:%{progname}%{major}:g" \
|
||||||
|
%{SOURCE1} > %{buildroot}%{_datadir}/applications/%{desktop_file_name}.desktop
|
||||||
|
%suse_update_desktop_file %{desktop_file_name} Network WebBrowser GTK
|
||||||
|
# additional mime-types
|
||||||
|
mkdir -p %{buildroot}%{_datadir}/mime/packages
|
||||||
|
cp %{SOURCE8} %{buildroot}%{_datadir}/mime/packages/%{progname}.xml
|
||||||
|
# appdata
|
||||||
|
mkdir -p %{buildroot}%{_datadir}/metainfo
|
||||||
|
sed "s:firefox.desktop:%{desktop_file_name}:g" \
|
||||||
|
%{SOURCE15} > %{buildroot}%{_datadir}/metainfo/%{desktop_file_name}.appdata.xml
|
||||||
|
# install man-page
|
||||||
|
mkdir -p %{buildroot}%{_mandir}/man1/
|
||||||
|
cp %{SOURCE11} %{buildroot}%{_mandir}/man1/%{progname}.1
|
||||||
|
# install GNOME Shell search provider
|
||||||
|
mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
|
||||||
|
cp %{SOURCE17} %{buildroot}%{_datadir}/gnome-shell/search-providers
|
||||||
|
##########
|
||||||
|
# ADDONS
|
||||||
|
#
|
||||||
|
mkdir -p %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_appid}
|
||||||
|
mkdir -p %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_appid}
|
||||||
|
# Install symbolic icon for GNOME
|
||||||
|
%if %branding
|
||||||
|
for size in 16 22 24 32 48 64 128 256; do
|
||||||
|
%else
|
||||||
|
for size in 16 32 48; do
|
||||||
|
%endif
|
||||||
|
mkdir -p %{buildroot}%{gnome_dir}/share/icons/hicolor/${size}x${size}/apps/
|
||||||
|
cp %{buildroot}%{progdir}/browser/chrome/icons/default/default$size.png \
|
||||||
|
%{buildroot}%{gnome_dir}/share/icons/hicolor/${size}x${size}/apps/%{progname}.png
|
||||||
|
done
|
||||||
|
# excludes
|
||||||
|
rm -f %{buildroot}%{progdir}/updater.ini
|
||||||
|
rm -f %{buildroot}%{progdir}/removed-files
|
||||||
|
rm -f %{buildroot}%{progdir}/README.txt
|
||||||
|
rm -f %{buildroot}%{progdir}/old-homepage-default.properties
|
||||||
|
rm -f %{buildroot}%{progdir}/run-mozilla.sh
|
||||||
|
rm -f %{buildroot}%{progdir}/LICENSE
|
||||||
|
rm -f %{buildroot}%{progdir}/precomplete
|
||||||
|
rm -f %{buildroot}%{progdir}/update-settings.ini
|
||||||
|
%if 0%{?devpkg}
|
||||||
|
# devel
|
||||||
|
mkdir -p %{buildroot}%{_bindir}
|
||||||
|
install -m 755 %SOURCE12 %{buildroot}%{_bindir}
|
||||||
|
# inspired by mandriva
|
||||||
|
mkdir -p %{buildroot}%{_rpmmacrodir}
|
||||||
|
cat <<'FIN' >%{buildroot}%{_rpmmacrodir}/macros.%{progname}
|
||||||
|
# Macros from %%{name} package
|
||||||
|
%%firefox_major %{major}
|
||||||
|
%%firefox_version %{version}
|
||||||
|
%%firefox_mainver %{mainver}
|
||||||
|
%%firefox_mozillapath %%{_libdir}/%{progname}
|
||||||
|
%%firefox_pluginsdir %%{_libdir}/mozilla/plugins
|
||||||
|
%%firefox_appid \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
|
||||||
|
%%firefox_extdir %%(if [ "%%_target_cpu" = "noarch" ]; then echo %%{_datadir}/mozilla/extensions/%%{firefox_appid}; else echo %%{_libdir}/mozilla/extensions/%%{firefox_appid}; fi)
|
||||||
|
|
||||||
|
%%firefox_ext_install() \
|
||||||
|
extdir="%%{buildroot}%%{firefox_extdir}/`mozilla-get-app-id '%%1'`" \
|
||||||
|
mkdir -p "$extdir" \
|
||||||
|
%%{__unzip} -q -d "$extdir" "%%1" \
|
||||||
|
%%{nil}
|
||||||
|
FIN
|
||||||
|
%endif
|
||||||
|
# fdupes
|
||||||
|
%fdupes %{buildroot}%{progdir}
|
||||||
|
%fdupes %{buildroot}%{_datadir}
|
||||||
|
|
||||||
|
%post
|
||||||
|
# update mime and desktop database
|
||||||
|
%mime_database_post
|
||||||
|
%desktop_database_post
|
||||||
|
%icon_theme_cache_post
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%icon_theme_cache_postun
|
||||||
|
%desktop_database_postun
|
||||||
|
%mime_database_postun
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%files
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir %{progdir}
|
||||||
|
%dir %{progdir}/browser/
|
||||||
|
%dir %{progdir}/browser/chrome/
|
||||||
|
%{progdir}/browser/defaults
|
||||||
|
%{progdir}/browser/features/
|
||||||
|
%{progdir}/browser/chrome/icons
|
||||||
|
%{progdir}/browser/omni.ja
|
||||||
|
%dir %{progdir}/distribution/
|
||||||
|
%{progdir}/distribution/extensions/
|
||||||
|
%{progdir}/defaults/
|
||||||
|
%{progdir}/gmp-clearkey/
|
||||||
|
%attr(755,root,root) %{progdir}/%{progname}.sh
|
||||||
|
%{progdir}/%{progname}
|
||||||
|
%{progdir}/%{progname}-bin
|
||||||
|
%{progdir}/application.ini
|
||||||
|
%{progdir}/dependentlibs.list
|
||||||
|
%{progdir}/*.so
|
||||||
|
%{progdir}/glxtest
|
||||||
|
%if 0%{wayland_supported}
|
||||||
|
%{progdir}/vaapitest
|
||||||
|
%endif
|
||||||
|
%ifarch aarch64 riscv64 %arm
|
||||||
|
%{progdir}/v4l2test
|
||||||
|
%endif
|
||||||
|
%{progdir}/omni.ja
|
||||||
|
%{progdir}/fonts/
|
||||||
|
%{progdir}/pingsender
|
||||||
|
%{progdir}/platform.ini
|
||||||
|
%if %crashreporter
|
||||||
|
%{progdir}/crashreporter
|
||||||
|
#%{progdir}/crashreporter.ini
|
||||||
|
#%{progdir}/Throbber-small.gif
|
||||||
|
%{progdir}/minidump-analyzer
|
||||||
|
#%{progdir}/browser/crashreporter-override.ini
|
||||||
|
%endif
|
||||||
|
%{_datadir}/applications/%{desktop_file_name}.desktop
|
||||||
|
%{_datadir}/mime/packages/%{progname}.xml
|
||||||
|
%dir %{_datadir}/gnome-shell
|
||||||
|
%dir %{_datadir}/gnome-shell/search-providers
|
||||||
|
%{_datadir}/gnome-shell/search-providers/*.ini
|
||||||
|
%dir %{_datadir}/mozilla
|
||||||
|
%dir %{_datadir}/mozilla/extensions
|
||||||
|
%dir %{_datadir}/mozilla/extensions/%{firefox_appid}
|
||||||
|
%dir %{_libdir}/mozilla
|
||||||
|
%dir %{_libdir}/mozilla/extensions
|
||||||
|
%dir %{_libdir}/mozilla/extensions/%{firefox_appid}
|
||||||
|
%{gnome_dir}/share/icons/hicolor/
|
||||||
|
%{_bindir}/%{progname}
|
||||||
|
%doc %{_mandir}/man1/%{progname}.1.gz
|
||||||
|
%{_datadir}/metainfo/
|
||||||
|
|
||||||
|
%if 0%{?devpkg}
|
||||||
|
%files devel
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_bindir}/mozilla-get-app-id
|
||||||
|
%{_rpmmacrodir}/macros.%{progname}
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%if %localize
|
||||||
|
%files translations-common -f %{_tmppath}/translations.common
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir %{progdir}
|
||||||
|
%dir %{progdir}/browser/extensions/
|
||||||
|
|
||||||
|
%files translations-other -f %{_tmppath}/translations.other
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir %{progdir}
|
||||||
|
%dir %{progdir}/browser/extensions/
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# this package does not need to provide files but is needed to fulfill
|
||||||
|
# requirements if no other branding package is to be installed
|
||||||
|
%files branding-upstream
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir %{progdir}
|
||||||
|
|
||||||
|
%changelog
|
52
_constraints
Normal file
52
_constraints
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<constraints>
|
||||||
|
<hardware>
|
||||||
|
<jobs>4</jobs>
|
||||||
|
<disk>
|
||||||
|
<size unit="G">26</size>
|
||||||
|
</disk>
|
||||||
|
<physicalmemory>
|
||||||
|
<size unit="G">15</size>
|
||||||
|
</physicalmemory>
|
||||||
|
</hardware>
|
||||||
|
<hostlabel exclude="true">SLOW_CPU</hostlabel>
|
||||||
|
<overwrite>
|
||||||
|
<conditions>
|
||||||
|
<arch>armv6l</arch>
|
||||||
|
<arch>armv7l</arch>
|
||||||
|
</conditions>
|
||||||
|
<hardware>
|
||||||
|
<disk>
|
||||||
|
<size unit="G">12</size>
|
||||||
|
</disk>
|
||||||
|
<physicalmemory>
|
||||||
|
<size unit="G">5</size>
|
||||||
|
</physicalmemory>
|
||||||
|
</hardware>
|
||||||
|
</overwrite>
|
||||||
|
<!-- LTO disabled - less RAM -->
|
||||||
|
<overwrite>
|
||||||
|
<conditions>
|
||||||
|
<arch>aarch64</arch>
|
||||||
|
</conditions>
|
||||||
|
<hardware>
|
||||||
|
<cpu>
|
||||||
|
<flag>asimdrdm</flag>
|
||||||
|
</cpu>
|
||||||
|
<physicalmemory>
|
||||||
|
<size unit="G">14</size>
|
||||||
|
</physicalmemory>
|
||||||
|
</hardware>
|
||||||
|
</overwrite>
|
||||||
|
<overwrite>
|
||||||
|
<conditions>
|
||||||
|
<arch>ppc64le</arch>
|
||||||
|
<arch>s390x</arch>
|
||||||
|
</conditions>
|
||||||
|
<hardware>
|
||||||
|
<physicalmemory>
|
||||||
|
<size unit="G">8</size>
|
||||||
|
</physicalmemory>
|
||||||
|
</hardware>
|
||||||
|
</overwrite>
|
||||||
|
</constraints>
|
575
create-tar.sh
Normal file
575
create-tar.sh
Normal file
@ -0,0 +1,575 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
# Exit script on CTRL+C
|
||||||
|
trap "exit" INT
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
print_usage_and_exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_required_tools
|
||||||
|
|
||||||
|
# Sourcing the given tar_stamps-file to have the variables available
|
||||||
|
TAR_STAMP="$1"
|
||||||
|
source "$TAR_STAMP" || print_usage_and_exit
|
||||||
|
|
||||||
|
set_internal_variables
|
||||||
|
|
||||||
|
check_what_to_do_with_source_tarballs
|
||||||
|
download_upstream_source_tarballs
|
||||||
|
|
||||||
|
if [ -z ${SKIP_LOCALES+x} ]; then
|
||||||
|
check_what_to_do_with_locales_tarballs
|
||||||
|
create_locales_tarballs
|
||||||
|
else
|
||||||
|
printf "%-40s: User forced skip (SKIP_LOCALES set)\n" "locales"
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean_up_old_tarballs
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_usage_and_exit() {
|
||||||
|
echo "Usage: create-tar.sh tar_stamps"
|
||||||
|
echo ""
|
||||||
|
echo "Where tar_stamps should look like this:"
|
||||||
|
echo ""
|
||||||
|
cat << EOF
|
||||||
|
# Node ID: 64ee63facd4ff96b3e8590cff559d7e97ac6b061
|
||||||
|
PRODUCT="firefox" # "firefox" or "thunderbird"
|
||||||
|
CHANNEL="esr60"
|
||||||
|
VERSION="60.7.0"
|
||||||
|
VERSION_SUFFIX="esr"
|
||||||
|
RELEASE_TAG="" # Needs only to be set if no tar-ball can be downloaded
|
||||||
|
PREV_VERSION="60.6.3" # Prev. version only needed for locales (leave empty to force l10n-generation)
|
||||||
|
PREV_VERSION_SUFFIX="esr"
|
||||||
|
#SKIP_LOCALES="" # Uncomment to skip l10n-generation
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_required_tools() {
|
||||||
|
# check required tools
|
||||||
|
check_for_binary /usr/bin/hg "mercurial"
|
||||||
|
check_for_binary /usr/bin/jq "jq"
|
||||||
|
which python3 > /dev/null || exit 1
|
||||||
|
|
||||||
|
# use parallel compression, if available
|
||||||
|
compression='-J'
|
||||||
|
pixz -h > /dev/null 2>&1
|
||||||
|
if (($? != 127)); then
|
||||||
|
compression='-Ipixz'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_internal_variables() {
|
||||||
|
# Internal variables
|
||||||
|
BRANCH="releases/mozilla-$CHANNEL"
|
||||||
|
if [ "$PRODUCT" = "firefox" ]; then
|
||||||
|
FF_LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
|
||||||
|
else
|
||||||
|
FF_LOCALE_FILE="thunderbird-$VERSION/browser/locales/l10n-changesets.json"
|
||||||
|
TB_LOCALE_FILE="thunderbird-$VERSION/comm/mail/locales/l10n-changesets.json"
|
||||||
|
FF_PREV_LOCALE_FILE="thunderbird-$PREV_VERSION/browser/locales/l10n-changesets.json"
|
||||||
|
TB_PREV_LOCALE_FILE="thunderbird-$PREV_VERSION/comm/mail/locales/l10n-changesets.json"
|
||||||
|
L10N_STRING_PATTERNS="thunderbird-$VERSION/comm/python/l10n/tbxchannel/l10n_merge.py"
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOURCE_TARBALL="$PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz"
|
||||||
|
PREV_SOURCE_TARBALL="$PRODUCT-$PREV_VERSION$PREV_VERSION_SUFFIX.source.tar.xz"
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
TB_LOCALE_TARBALL="$PRODUCT-$VERSION$VERSION_SUFFIX.strings_all.tar.zst"
|
||||||
|
fi
|
||||||
|
FTP_URL="https://ftp.mozilla.org/pub/$PRODUCT/releases/$VERSION$VERSION_SUFFIX/source"
|
||||||
|
FTP_CANDIDATES_BASE_URL="https://ftp.mozilla.org/pub/%s/candidates"
|
||||||
|
LOCALES_URL="https://product-details.mozilla.org/1.0/l10n"
|
||||||
|
FF_L10N_MONOREPO="https://github.com/mozilla-l10n/firefox-l10n"
|
||||||
|
PRODUCT_URL="https://product-details.mozilla.org/1.0"
|
||||||
|
ALREADY_EXTRACTED_LOCALES_FILE=0
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_ftp_candidates_url() {
|
||||||
|
local CURR_PRODUCT="$1"
|
||||||
|
local VERSION_WITH_SUFFIX="$2"
|
||||||
|
printf "$FTP_CANDIDATES_BASE_URL/$VERSION_WITH_SUFFIX-candidates" "$CURR_PRODUCT"
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_tarball_source () {
|
||||||
|
TARBALL=$1
|
||||||
|
# Print out what is going to be done:
|
||||||
|
if [ -e "$TARBALL" ]; then
|
||||||
|
echo "Reuse existing file"
|
||||||
|
elif wget --spider "$FTP_URL/$TARBALL" 2> /dev/null; then
|
||||||
|
echo "Download file"
|
||||||
|
else
|
||||||
|
local CANDIDATE_TARBALL_LOCATION=""
|
||||||
|
CANDIDATE_TARBALL_LOCATION="$(printf "%s/%s/source/%s" "$(get_ftp_candidates_url "$PRODUCT" "$VERSION$VERSION_SUFFIX")" "$BUILD_ID" "$TARBALL" )"
|
||||||
|
if wget --spider "$CANDIDATE_TARBALL_LOCATION" 2> /dev/null; then
|
||||||
|
echo "Download UNRELEASED candidate ($BUILD_ID)"
|
||||||
|
else
|
||||||
|
echo "Mercurial checkout"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function ask_cont_abort_question() {
|
||||||
|
while true; do
|
||||||
|
read -r -p "$1 [(c)ontinue/(a)bort] " ca
|
||||||
|
case $ca in
|
||||||
|
[Cc]* ) return 0 ;;
|
||||||
|
[Aa]* ) return 1 ;;
|
||||||
|
* ) echo "Please answer c or a.";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_for_binary() {
|
||||||
|
if ! test -x "$1"; then
|
||||||
|
echo "$1 is missing: execute zypper in $2"
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_source_stamp() {
|
||||||
|
local CURR_BUILD_ID="$1"
|
||||||
|
local FTP_CANDIDATES_BASE_URL=$(get_ftp_candidates_url "$PRODUCT" "$VERSION$VERSION_SUFFIX")
|
||||||
|
local FTP_CANDIDATES_JSON_SUFFIX="${CURR_BUILD_ID}/linux-x86_64/en-US/$PRODUCT-$VERSION$VERSION_SUFFIX.json"
|
||||||
|
local BUILD_JSON=$(curl --silent --fail "$FTP_CANDIDATES_BASE_URL/$FTP_CANDIDATES_JSON_SUFFIX") || return 1;
|
||||||
|
local REV=$(echo "$BUILD_JSON" | jq .moz_source_stamp)
|
||||||
|
local SOURCE_REPO=$(echo "$BUILD_JSON" | jq .moz_source_repo)
|
||||||
|
TIMESTAMP=$(echo "$BUILD_JSON" | jq .buildid)
|
||||||
|
echo "Extending $TAR_STAMP with:"
|
||||||
|
echo "RELEASE_REPO=${SOURCE_REPO}"
|
||||||
|
echo "RELEASE_TAG=${REV}"
|
||||||
|
echo "RELEASE_TIMESTAMP=${TIMESTAMP}"
|
||||||
|
# We "remove and add" instead of "replace" in case the entries are not there yet
|
||||||
|
# Removing the old RELEASE_-tags
|
||||||
|
sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP"
|
||||||
|
# Appending the new
|
||||||
|
echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP"
|
||||||
|
echo "RELEASE_TAG=$REV" >> "$TAR_STAMP"
|
||||||
|
echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP"
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_build_number() {
|
||||||
|
local LAST_FOUND=""
|
||||||
|
local CURR_PRODUCT="$1"
|
||||||
|
local VERSION_WITH_SUFFIX="$2"
|
||||||
|
local CURR_BUILD_ID=""
|
||||||
|
local CURR_FTP_BASE_URL=""
|
||||||
|
CURR_BUILD_ID=$(curl --silent "$PRODUCT_URL/$CURR_PRODUCT.json" | jq -e '.["releases"] | .["'$CURR_PRODUCT-$VERSION_WITH_SUFFIX'"] | .["build_number"]')
|
||||||
|
|
||||||
|
# Slow fall-back
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Build number not found in product URL, falling back to slow FTP-parsing." 1>&2
|
||||||
|
CURR_FTP_BASE_URL=$(get_ftp_candidates_url "$CURR_PRODUCT" "$VERSION_WITH_SUFFIX")
|
||||||
|
# Unfortunately, locales-files are not associated to releases, but to builds.
|
||||||
|
# And since we don't know which build was the final build, we grep them all from
|
||||||
|
# the candidates-page, sort them and take the last one which should be the oldest
|
||||||
|
# Error only if not even the first one exists
|
||||||
|
LAST_FOUND=$(curl --silent --fail "$CURR_FTP_BASE_URL/" | grep -o "build[0-9]*/" | sort | uniq | tail -n 1 | cut -d "/" -f 1)
|
||||||
|
else
|
||||||
|
LAST_FOUND="build$CURR_BUILD_ID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$LAST_FOUND" != "" ]; then
|
||||||
|
echo "$LAST_FOUND"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Error: Could not find build-number for $CURR_PRODUCT $VERSION_WITH_SUFFIX !" 1>&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function locales_get() {
|
||||||
|
local CURR_PRODUCT="$1"
|
||||||
|
local TMP_VERSION="$2"
|
||||||
|
local CURR_BUILD_ID="$3"
|
||||||
|
# Make first letter of CURR_PRODUCT upper case
|
||||||
|
CURR_PRODUCT_CAP="${CURR_PRODUCT^}"
|
||||||
|
URL_TO_CHECK="${LOCALES_URL}/${CURR_PRODUCT_CAP}-${TMP_VERSION}"
|
||||||
|
FINAL_URL="${URL_TO_CHECK}-${CURR_BUILD_ID}.json"
|
||||||
|
if wget --quiet --spider "$FINAL_URL"; then
|
||||||
|
echo "$FINAL_URL"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Error: Could not find locales-file (json) for Firefox $TMP_VERSION !" 1>&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function locales_parse_file() {
|
||||||
|
FILE="$1"
|
||||||
|
python3 -c "import json; import sys; \
|
||||||
|
print('\n'.join(['{} {}'.format(key, value['revision']) \
|
||||||
|
for key, value in sorted(json.load(sys.stdin).items())]));" < "$FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
function locales_parse_url() {
|
||||||
|
URL="$1"
|
||||||
|
curl -s "$URL" | python3 -c "import json; import sys; \
|
||||||
|
print('\n'.join(['{} {}'.format(key, value['changeset']) \
|
||||||
|
for key, value in sorted(json.load(sys.stdin)['locales'].items())]));"
|
||||||
|
}
|
||||||
|
|
||||||
|
function extract_locales_file() {
|
||||||
|
if [ $ALREADY_EXTRACTED_LOCALES_FILE -ne 1 ]; then
|
||||||
|
# still need to extract the locale information from the archive
|
||||||
|
echo "extract locale changesets"
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
tar -xf "$SOURCE_TARBALL" "$FF_LOCALE_FILE" "$TB_LOCALE_FILE" "$L10N_STRING_PATTERNS"
|
||||||
|
else
|
||||||
|
tar -xf "$SOURCE_TARBALL" "$FF_LOCALE_FILE"
|
||||||
|
fi
|
||||||
|
ALREADY_EXTRACTED_LOCALES_FILE=1
|
||||||
|
else
|
||||||
|
echo "Skipping locale changeset extraction, as it was already done."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function locales_unchanged() {
|
||||||
|
local CURR_PRODUCT="$1"
|
||||||
|
local CURR_BUILD_ID="$2"
|
||||||
|
local PREV_BUILD_ID=$(get_build_number "$CURR_PRODUCT" "$PREV_VERSION$PREV_VERSION_SUFFIX")
|
||||||
|
# If no json-file for one of the versions can be found, we say "they changed"
|
||||||
|
prev_url=$(locales_get "$CURR_PRODUCT" "$PREV_VERSION$PREV_VERSION_SUFFIX" "$PREV_BUILD_ID") || return 1
|
||||||
|
prev_content=$(locales_parse_url "$prev_url") || exit 1
|
||||||
|
|
||||||
|
curr_url=$(locales_get "$CURR_PRODUCT" "$VERSION$VERSION_SUFFIX" "$CURR_BUILD_ID")
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
# We did not find a locales file upstream on the servers
|
||||||
|
if [ -e "$SOURCE_TARBALL" ]; then
|
||||||
|
# We can find out what the locales are, by extracting the json-file from the tar-ball
|
||||||
|
# instead of getting it from the server
|
||||||
|
extract_locales_file || return 1
|
||||||
|
curr_content=$(locales_parse_file "$FF_LOCALE_FILE") || exit 1
|
||||||
|
else
|
||||||
|
# We can't know what the locales are in the current version
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
curr_content=$(locales_parse_url "$curr_url") || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
diff -y --suppress-common-lines -d <(echo "$prev_content") <(echo "$curr_content")
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_locales_directories() {
|
||||||
|
pattern="$1"
|
||||||
|
|
||||||
|
# This file contains a list of directories, upstream uses to build locales
|
||||||
|
# If it is there, use it. If not, default to all FF + 3 TB-dirs.
|
||||||
|
if [ -e "$L10N_STRING_PATTERNS" ]; then
|
||||||
|
python3 -c "import os; import sys; \
|
||||||
|
sys.path.append(os.path.dirname(\"$L10N_STRING_PATTERNS\")); \
|
||||||
|
from l10n_merge import $pattern; \
|
||||||
|
print(\" \".join([p.strip('*') for p in $pattern]));"
|
||||||
|
else
|
||||||
|
if [ "$pattern" = "GECKO_STRINGS_PATTERNS" ]; then
|
||||||
|
# Default of Firefox: Take all
|
||||||
|
echo "{lang}/"
|
||||||
|
else
|
||||||
|
# Default of Thunderbird: Take those 3 dirs
|
||||||
|
echo "{lang}/calendar/" "{lang}/chat/" "{lang}/mail/"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_and_copy_locales() {
|
||||||
|
locale="$1"
|
||||||
|
source_base="$2"
|
||||||
|
source_template="$3"
|
||||||
|
final_dest="$4"
|
||||||
|
|
||||||
|
# Replace {lang} with the actual language-basedir
|
||||||
|
for template in $source_template; do
|
||||||
|
locale_source=$(echo "$template" | sed "s|{lang}|./$source_base/$locale|g")
|
||||||
|
locale_dest=$(echo "$template" | sed "s|{lang}|./$final_dest/$locale|g")
|
||||||
|
|
||||||
|
# Create intermediary folders
|
||||||
|
for destdir in $locale_dest; do
|
||||||
|
mkdir -p "$destdir"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Copy over FF-files
|
||||||
|
cp -r "$locale_source"/* "$locale_dest"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_what_to_do_with_source_tarballs() {
|
||||||
|
# Get ID
|
||||||
|
BUILD_ID=$(get_build_number "$PRODUCT" "$VERSION$VERSION_SUFFIX")
|
||||||
|
|
||||||
|
# Check what is going to be done and ask for consent
|
||||||
|
for ff in $SOURCE_TARBALL $SOURCE_TARBALL.asc; do
|
||||||
|
printf "%-40s: %s\n" "$ff" "$(check_tarball_source $ff)"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
printf "%-40s: %s\n" "$TB_LOCALE_TARBALL" "$(check_tarball_source $TB_LOCALE_TARBALL)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ask_cont_abort_question "Is this ok?" || exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_what_to_do_with_locales_tarballs() {
|
||||||
|
if [ -e "$TB_LOCALE_TARBALL" ]; then
|
||||||
|
return;
|
||||||
|
fi
|
||||||
|
|
||||||
|
LOCALES_CHANGED=1
|
||||||
|
|
||||||
|
extract_locales_file
|
||||||
|
|
||||||
|
if [ "$PREV_VERSION" != "" ]; then
|
||||||
|
# If we have a previous version, check either FF or (TB and FF)
|
||||||
|
if [ "$PRODUCT" = "firefox" ]; then
|
||||||
|
locales_unchanged "$PRODUCT" "$BUILD_ID"
|
||||||
|
else
|
||||||
|
# Currently, upstream 'forgets' which Firefox-locales get used for which Thunderbird-release upon release
|
||||||
|
# so, instead of parsing upstream JSON-files, we rely on the previous tarball being there and comparing
|
||||||
|
# the lang-files directly
|
||||||
|
# FF_BUILD_ID=$(get_build_number "firefox" "$VERSION$VERSION_SUFFIX")
|
||||||
|
# locales_unchanged "$PRODUCT" "$BUILD_ID" && locales_unchanged "firefox" "$FF_BUILD_ID"
|
||||||
|
if [ -e "$PREV_SOURCE_TARBALL" ]; then
|
||||||
|
echo "extract previous locale changesets"
|
||||||
|
tar -xf "$PREV_SOURCE_TARBALL" "$FF_PREV_LOCALE_FILE" "$TB_PREV_LOCALE_FILE"
|
||||||
|
|
||||||
|
curr_ff_content=$(locales_parse_file "$FF_LOCALE_FILE") || exit 1
|
||||||
|
prev_ff_content=$(locales_parse_file "$FF_PREV_LOCALE_FILE") || exit 1
|
||||||
|
curr_tb_content=$(locales_parse_file "$TB_LOCALE_FILE") || exit 1
|
||||||
|
prev_tb_content=$(locales_parse_file "$TB_PREV_LOCALE_FILE") || exit 1
|
||||||
|
|
||||||
|
diff -y --suppress-common-lines -d <(echo "$prev_ff_content") <(echo "$curr_ff_content") ||
|
||||||
|
diff -y --suppress-common-lines -d <(echo "$prev_tb_content") <(echo "$curr_tb_content")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
LOCALES_CHANGED=$?
|
||||||
|
fi
|
||||||
|
|
||||||
|
# New line for better visibility
|
||||||
|
echo ""
|
||||||
|
if [ $LOCALES_CHANGED -eq 1 ]; then
|
||||||
|
printf "%-40s: Need to download.\n" "locales"
|
||||||
|
ask_cont_abort_question "Is this ok?" || exit 0
|
||||||
|
else
|
||||||
|
printf "%-40s: Did not change. Skipping.\n" "locales"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function download_release_or_candidate_file() {
|
||||||
|
local upstream_file="$1"
|
||||||
|
if [ -e "$upstream_file" ]; then
|
||||||
|
return;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! wget --quiet --show-progress --progress=bar "$FTP_URL/$upstream_file"; then
|
||||||
|
local CANDIDATE_TARBALL_LOCATION=""
|
||||||
|
CANDIDATE_TARBALL_LOCATION="$(printf "%s/%s/source/%s" "$(get_ftp_candidates_url "$PRODUCT" "$VERSION$VERSION_SUFFIX")" "$BUILD_ID" "$upstream_file" )"
|
||||||
|
wget --quiet --show-progress --progress=bar "$CANDIDATE_TARBALL_LOCATION"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function download_upstream_source_tarballs() {
|
||||||
|
# Try to download tar-ball from officiall mozilla-mirror
|
||||||
|
download_release_or_candidate_file "$SOURCE_TARBALL"
|
||||||
|
download_release_or_candidate_file "$SOURCE_TARBALL.asc"
|
||||||
|
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
download_release_or_candidate_file "$TB_LOCALE_TARBALL"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# we might have an upstream archive already and can skip the checkout
|
||||||
|
if [ -e "$SOURCE_TARBALL" ]; then
|
||||||
|
get_source_stamp "$BUILD_ID"
|
||||||
|
else
|
||||||
|
# We are working on a version that is not yet published on the mozilla mirror
|
||||||
|
# so we have to actually check out the repo
|
||||||
|
clone_and_repackage_sources
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function clone_and_repackage_sources() {
|
||||||
|
if [ -d "$PRODUCT-$VERSION" ]; then
|
||||||
|
pushd "$PRODUCT-$VERSION" || exit 1
|
||||||
|
_repourl=$(hg paths)
|
||||||
|
case "$_repourl" in
|
||||||
|
*$BRANCH*)
|
||||||
|
echo "updating previous tree"
|
||||||
|
hg pull
|
||||||
|
popd || exit 1
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "removing obsolete tree"
|
||||||
|
popd || exit 1
|
||||||
|
rm -rf "$PRODUCT-$VERSION"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ ! -d "$PRODUCT-$VERSION" ]; then
|
||||||
|
echo "cloning new $BRANCH..."
|
||||||
|
hg clone "https://hg.mozilla.org/$BRANCH $PRODUCT-$VERSION"
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
hg clone "https://hg.mozilla.org/releases/comm-$CHANNEL" "$PRODUCT-$VERSION/comm"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
pushd "$PRODUCT-$VERSION" || exit 1
|
||||||
|
|
||||||
|
# parse out the Firefox-release tag for this Thunderbird-checkout
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
FF_RELEASE_TAG=$(grep ^GECKO_HEAD_REV ./comm/.gecko_rev.yml | awk -F ' ' '{print $2}') || exit 1
|
||||||
|
echo "Parsed Firefox base ID from .gecko_rev.yml: $FF_RELEASE_TAG"
|
||||||
|
else
|
||||||
|
FF_RELEASE_TAG="$RELEASE_TAG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
hg update --check "$FF_RELEASE_TAG"
|
||||||
|
[ "$FF_RELEASE_TAG" == "default" ] || hg update -r "$FF_RELEASE_TAG"
|
||||||
|
# get repo and source stamp
|
||||||
|
local REV=$(hg -R . parent --template="{node|short}\n")
|
||||||
|
local SOURCE_REPO=$(hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/https:/")
|
||||||
|
TIMESTAMP=$(date +%Y%m%d%H%M%S)
|
||||||
|
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
pushd comm || exit 1
|
||||||
|
hg update --check "$RELEASE_TAG"
|
||||||
|
popd || exit 1
|
||||||
|
rm -rf thunderbird-"${VERSION}"/{,comm/}other-licenses/7zstub
|
||||||
|
fi
|
||||||
|
popd || exit 1
|
||||||
|
|
||||||
|
echo "Extending $TAR_STAMP with:"
|
||||||
|
echo "RELEASE_REPO=${SOURCE_REPO}"
|
||||||
|
echo "RELEASE_TAG=${REV}"
|
||||||
|
echo "RELEASE_TIMESTAMP=${TIMESTAMP}"
|
||||||
|
|
||||||
|
# We "remove and add" instead of "replace" in case the entries are not there yet
|
||||||
|
# Removing the old RELEASE_-tags
|
||||||
|
sed -i "/RELEASE_\(TAG\|REPO\|TIMESTAMP\)=.*/d" "$TAR_STAMP"
|
||||||
|
# Appending the new
|
||||||
|
echo "RELEASE_REPO=$SOURCE_REPO" >> "$TAR_STAMP"
|
||||||
|
echo "RELEASE_TAG=$REV" >> "$TAR_STAMP"
|
||||||
|
echo "RELEASE_TIMESTAMP=$TIMESTAMP" >> "$TAR_STAMP"
|
||||||
|
|
||||||
|
echo "creating archive..."
|
||||||
|
tar "$compression" -cf "$PRODUCT-$VERSION$VERSION_SUFFIX.source.tar.xz" --exclude-vcs "$PRODUCT-$VERSION"
|
||||||
|
ALREADY_EXTRACTED_LOCALES_FILE=1
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_locales_tarballs() {
|
||||||
|
if [ ! -z ${SKIP_LOCALES+x} ]; then
|
||||||
|
echo "Skipping locales-creation."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "$TB_LOCALE_TARBALL" ]; then
|
||||||
|
echo "Repackaging upstream lang-tarball."
|
||||||
|
zstd -dcf "$TB_LOCALE_TARBALL" | xz > "l10n-$VERSION$VERSION_SUFFIX.tar.xz"
|
||||||
|
else
|
||||||
|
if [ "$LOCALES_CHANGED" -ne 0 ]; then
|
||||||
|
clone_and_repackage_locales
|
||||||
|
elif [ -f "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" ]; then
|
||||||
|
# Locales did not change, but the old tar-ball is in this directory
|
||||||
|
# Simply rename it:
|
||||||
|
echo "Moving l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz to l10n-$VERSION$VERSION_SUFFIX.tar.xz"
|
||||||
|
mv "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" "l10n-$VERSION$VERSION_SUFFIX.tar.xz"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function clone_and_repackage_locales() {
|
||||||
|
# l10n
|
||||||
|
FINAL_L10N_BASE="l10n"
|
||||||
|
FF_L10N_BASE="l10n" # Only change this in TB-builds to a separate dir
|
||||||
|
TB_L10N_BASE="l10n_tb"
|
||||||
|
|
||||||
|
# If we are doing Thunderbird, we'll have to checkout both TB and FF l10n-repos
|
||||||
|
# Thunderbird has one single mono-repo, FF has one for each language
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
echo "Fetching Thunderbird locales..."
|
||||||
|
if [ -d "$TB_L10N_BASE/.hg" ]; then
|
||||||
|
pushd "$TB_L10N_BASE/" || exit 1
|
||||||
|
hg pull || exit 1
|
||||||
|
popd || exit 1
|
||||||
|
else
|
||||||
|
hg clone "https://hg.mozilla.org/projects/comm-l10n/" "$TB_L10N_BASE/" || exit 1
|
||||||
|
fi
|
||||||
|
# Just using the first entry here, as all languages have the same changeset
|
||||||
|
tb_changeset=$(jq -r 'to_entries[0]| "\(.key) \(.value|.revision)"' "$TB_LOCALE_FILE" | cut -d " " -f 2)
|
||||||
|
[ "$RELEASE_TAG" == "default" ] || hg -R "$TB_L10N_BASE/" up -C -r "$tb_changeset" || exit 1
|
||||||
|
FF_L10N_BASE="l10n_ff"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This is only relevant for Thunderbird-builds
|
||||||
|
# Here, the relevant directories we need to copy from FF and from TB
|
||||||
|
# are specified in a python-file in the tarball
|
||||||
|
# Is of form '{lang}/Foo/bar/ {lang}/Baz/bar/ ..'
|
||||||
|
ff_locale_template=$(get_locales_directories "GECKO_STRINGS_PATTERNS")
|
||||||
|
tb_locale_template=$(get_locales_directories "COMM_STRINGS_PATTERNS")
|
||||||
|
|
||||||
|
echo "Fetching Browser locales..."
|
||||||
|
if [ -d "$FF_L10N_BASE/.git" ]; then
|
||||||
|
pushd "$FF_L10N_BASE/" || exit 1
|
||||||
|
git fetch -a || exit 1
|
||||||
|
popd || exit 1
|
||||||
|
else
|
||||||
|
git clone "$FF_L10N_MONOREPO" "$FF_L10N_BASE" || exit 1
|
||||||
|
fi
|
||||||
|
# Currently all locales show the same changeset-hash, as they moved to a monorepo. We just take the first one.
|
||||||
|
changeset=$(jq -r 'to_entries[0]| "\(.key) \(.value|.revision)"' "$FF_LOCALE_FILE" | cut -d " " -f 2)
|
||||||
|
[ "$RELEASE_TAG" == "default" ] || git -C "$FF_L10N_BASE/" switch --detach "$changeset" || exit 1
|
||||||
|
|
||||||
|
# No-op, if we are building FF:
|
||||||
|
test ! -d $FINAL_L10N_BASE && mkdir $FINAL_L10N_BASE
|
||||||
|
|
||||||
|
# If we are doing TB, we have to merge both l10n-repos
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ] && test -d "$TB_L10N_BASE/$locale/" ; then
|
||||||
|
jq -r 'to_entries[]| "\(.key) \(.value|.revision)"' "$FF_LOCALE_FILE" | \
|
||||||
|
while read -r locale changeset ; do
|
||||||
|
case $locale in
|
||||||
|
ja-JP-mac|en-US)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
create_and_copy_locales "$locale" "$FF_L10N_BASE" "$ff_locale_template" "$FINAL_L10N_BASE"
|
||||||
|
create_and_copy_locales "$locale" "$TB_L10N_BASE" "$tb_locale_template" "$FINAL_L10N_BASE"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "creating l10n archive..."
|
||||||
|
local TAR_FLAGS="--exclude-vcs"
|
||||||
|
# For reproducable tarballs
|
||||||
|
# Convert TIMESTAMP to ISO-format, so tar can understand it, then set mtime to it
|
||||||
|
local MTIME=$(python3 -c "from datetime import datetime; print(datetime.strptime(${TIMESTAMP}, '%Y%m%d%H%M%S').isoformat())")
|
||||||
|
TAR_FLAGS="$TAR_FLAGS --sort=name --format=posix --pax-option=delete=atime,delete=ctime,exthdr.name=%d/PaxHeaders/%f --numeric-owner --owner=0 --group=0 --mode=go+u,go-w --clamp-mtime --mtime=$MTIME"
|
||||||
|
|
||||||
|
if [ "$PRODUCT" = "thunderbird" ]; then
|
||||||
|
TAR_FLAGS="$TAR_FLAGS --exclude=suite"
|
||||||
|
fi
|
||||||
|
tar "$compression" -cf "l10n-$VERSION$VERSION_SUFFIX.tar.xz" $TAR_FLAGS "$FINAL_L10N_BASE"
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean_up_old_tarballs() {
|
||||||
|
if [ -e "$PREV_SOURCE_TARBALL" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Deleting old sources tarball $PREV_SOURCE_TARBALL"
|
||||||
|
ask_cont_abort_question "Is this ok?" || exit 0
|
||||||
|
rm "$PREV_SOURCE_TARBALL"
|
||||||
|
rm "$PREV_SOURCE_TARBALL.asc"
|
||||||
|
# if old and new lang-tarball are there, delete the old one
|
||||||
|
if [ -f "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz" ] && [ -f "l10n-$VERSION$VERSION_SUFFIX.tar.xz" ]; then
|
||||||
|
rm "l10n-$PREV_VERSION$PREV_VERSION_SUFFIX.tar.xz"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# If we downloaded the upstream zstd-tarball and repackaged it, remove it now
|
||||||
|
if [ -f "$TB_LOCALE_TARBALL" ] && [ -f "l10n-$VERSION$VERSION_SUFFIX.tar.xz" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "Deleting old sources tarball $TB_LOCALE_TARBALL"
|
||||||
|
ask_cont_abort_question "Is this ok?" || exit 0
|
||||||
|
rm "$TB_LOCALE_TARBALL"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
3
firefox-128.0.source.tar.xz
Normal file
3
firefox-128.0.source.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:65271ffefb235ea1e162a081f2074a0f06fce27b2f613f573c126ba8eef95172
|
||||||
|
size 560761840
|
16
firefox-128.0.source.tar.xz.asc
Normal file
16
firefox-128.0.source.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEErdcHlHlwDcrf3VM34207E/PZMnQFAmaG12gACgkQ4207E/PZ
|
||||||
|
MnQ/1xAAzvCP0A4oOfbmmtnOA1QQ5NvUCETU6BGo4oAy3LhYM66ZThKG9KF5A9g2
|
||||||
|
GVQx+19W0Z5BNtgGLxzujWLxPTsxUdgCF65RekrN6AQlTtvXvLBn5WaExK4pHCIT
|
||||||
|
R14RaPumLPCZwL0HaEo4NvZr48AXXOFm9pvgQ4ZhWf2tfRpm1qNp1UIAY2jtGna7
|
||||||
|
o4tVBEHcydqF6BLrmHf5gbKrifW1nL75SBFVoBNESRocdTFENt9RMQgifwqX/f0d
|
||||||
|
vJ+Osu2gd/J4thwailXNIy9TGdW1lEi5TgS3UdNmNpZVYb73JnhcfwyIjI9g93NZ
|
||||||
|
wKbcu/9PEJjNe8XnADA6ULr8Nth6zxfsJhdz60AVoaP6mGApPGx6M1ezW8b7YxcI
|
||||||
|
FxJ2/qv5ExKiXENlISYI+cih/VWuN8nKPtWyCb2whFeAEnNmIlCs+j6hN/c8haZS
|
||||||
|
iQdThG5EqmjCQJyz3AufhULfTmINJk/ABYdpitHfj5EDfe9ggxANRkLvJEZ1ZZTP
|
||||||
|
85bGWlCMg8Tq6/CWHTWvJvytQCHrQci+M/y/4pneaBLXzv3p8Q5e1OOuxzuGA7rB
|
||||||
|
yAW5DnCTK+4wdfgHzmJL4Rjom0PeJZBVHJEljqV1THbTrs4MWuNFJLu2lXNDmAbx
|
||||||
|
Ty1ZAqK4HliEDRh6r70sZY/ecg+UzSyIGqlDzu7RBOjtg4A15vo=
|
||||||
|
=wybs
|
||||||
|
-----END PGP SIGNATURE-----
|
33
firefox-3781e3117706.patch
Normal file
33
firefox-3781e3117706.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User Paul Adenot <paul@paul.cx>
|
||||||
|
# Date 1721290421 0
|
||||||
|
# Node ID 3781e311770684d79c1c8112d18abce258e29e7f
|
||||||
|
# Parent fd4c60ac71c20d0cac519b517f32fc4956e0cfe3
|
||||||
|
Bug 1905018 - Fix logctx type in dovi_rpu stub. r=media-playback-reviewers,alwu
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D216832
|
||||||
|
|
||||||
|
diff --git a/media/ffvpx/libavcodec/dovi_rpu.h b/media/ffvpx/libavcodec/dovi_rpu.h
|
||||||
|
--- a/media/ffvpx/libavcodec/dovi_rpu.h
|
||||||
|
+++ b/media/ffvpx/libavcodec/dovi_rpu.h
|
||||||
|
@@ -5,17 +5,17 @@
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
/* Stubs for dovi_rpu.{c,h} */
|
||||||
|
|
||||||
|
typedef struct AVCtx AVContext;
|
||||||
|
|
||||||
|
typedef struct DOVICtx {
|
||||||
|
int dv_profile;
|
||||||
|
- AVContext* logctx;
|
||||||
|
+ void* logctx;
|
||||||
|
int operating_point;
|
||||||
|
} DOVIContext;
|
||||||
|
|
||||||
|
typedef struct AVDOVICConfRecord {
|
||||||
|
} AVDOVIDecoderConfigurationRecord;
|
||||||
|
|
||||||
|
static void ff_dovi_ctx_unref(DOVIContext* ctx) {}
|
||||||
|
static void ff_dovi_update_cfg(DOVIContext* ctx,
|
||||||
|
|
48
firefox-appdata.xml
Normal file
48
firefox-appdata.xml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
Upstream does not want to ship it https://bugzilla.mozilla.org/show_bug.cgi?id=1071061
|
||||||
|
so maintain a stub in here.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<component>
|
||||||
|
<id type="desktop">firefox.desktop</id>
|
||||||
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
|
<name>Firefox Web Browser</name>
|
||||||
|
<project_license>MPL-2.0</project_license>
|
||||||
|
<summary>Mozilla Firefox Web Browser</summary>
|
||||||
|
<url type="homepage">https://www.mozilla.org/</url>
|
||||||
|
<description>
|
||||||
|
<p>Mozilla Firefox is a standalone web browser, designed for privacy, security, standards
|
||||||
|
compliance and performance. Its functionality can be enhanced via a plethora of extensions.</p>
|
||||||
|
<p>Firefox makes your daily web browsing fun and easy with a number of features, including:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Tabbed browsing</li>
|
||||||
|
<li>Private browsing including do-not-track enabled by default</li>
|
||||||
|
<li>Advanced phishing and malware protection</li>
|
||||||
|
<li>Spell checking</li>
|
||||||
|
<li>Incremental find within pages</li>
|
||||||
|
<li>Live bookmarking and Smart Bookmarks</li>
|
||||||
|
<li>Download manager</li>
|
||||||
|
<li>Location-aware browsing</li>
|
||||||
|
<li>Compliant with modern web standards</li>
|
||||||
|
<li>Modern web development tools</li>
|
||||||
|
<li>Available in a wide number of locales</li>
|
||||||
|
<li>A thriving ecosystem of themes and extensions at https://addons.mozilla.org</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<image height="800" width="1280">https://support.cdn.mozilla.net/media/uploads/gallery/images/2015-05-20-16-04-21-88bff4.png</image>
|
||||||
|
<caption>New tab page with speed dials</caption>
|
||||||
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<image height="439" width="620">https://support.cdn.mozilla.net/media/uploads/gallery/images/2015-12-22-15-15-05-3c0a80.png</image>
|
||||||
|
<caption>Search suggestions from home page</caption>
|
||||||
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<image height="394" width="700">https://addons.cdn.mozilla.net/user-media/previews/full/159/159648.png</image>
|
||||||
|
<caption>Firefox with Adwaita theme</caption>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<update_contact>mdn@lists.mozilla.org</update_contact>
|
||||||
|
</component>
|
50
firefox-branded-icons.patch
Normal file
50
firefox-branded-icons.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de
|
||||||
|
# Parent ebf6598a9309200fcea0cedb08e39161b82a73f9
|
||||||
|
|
||||||
|
diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild
|
||||||
|
--- a/browser/branding/branding-common.mozbuild
|
||||||
|
+++ b/browser/branding/branding-common.mozbuild
|
||||||
|
@@ -26,12 +26,15 @@ def FirefoxBranding():
|
||||||
|
"PrivateBrowsing_70.png",
|
||||||
|
"VisualElements_150.png",
|
||||||
|
"VisualElements_70.png",
|
||||||
|
]
|
||||||
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||||
|
FINAL_TARGET_FILES.chrome.icons.default += [
|
||||||
|
"default128.png",
|
||||||
|
"default16.png",
|
||||||
|
+ "default22.png",
|
||||||
|
+ "default24.png",
|
||||||
|
+ "default256.png",
|
||||||
|
"default32.png",
|
||||||
|
"default48.png",
|
||||||
|
"default64.png",
|
||||||
|
]
|
||||||
|
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
|
||||||
|
--- a/browser/installer/package-manifest.in
|
||||||
|
+++ b/browser/installer/package-manifest.in
|
||||||
|
@@ -216,20 +216,23 @@
|
||||||
|
@RESPATH@/browser/chrome/browser@JAREXT@
|
||||||
|
@RESPATH@/browser/chrome/browser.manifest
|
||||||
|
@RESPATH@/chrome/pdfjs.manifest
|
||||||
|
@RESPATH@/chrome/pdfjs/*
|
||||||
|
@RESPATH@/chrome/toolkit@JAREXT@
|
||||||
|
@RESPATH@/chrome/toolkit.manifest
|
||||||
|
#ifdef MOZ_GTK
|
||||||
|
@RESPATH@/browser/chrome/icons/default/default16.png
|
||||||
|
+@RESPATH@/browser/chrome/icons/default/default22.png
|
||||||
|
+@RESPATH@/browser/chrome/icons/default/default24.png
|
||||||
|
@RESPATH@/browser/chrome/icons/default/default32.png
|
||||||
|
@RESPATH@/browser/chrome/icons/default/default48.png
|
||||||
|
@RESPATH@/browser/chrome/icons/default/default64.png
|
||||||
|
@RESPATH@/browser/chrome/icons/default/default128.png
|
||||||
|
+@RESPATH@/browser/chrome/icons/default/default256.png
|
||||||
|
#endif
|
||||||
|
@RESPATH@/browser/features/*
|
||||||
|
|
||||||
|
; [DevTools Startup Files]
|
||||||
|
@RESPATH@/browser/chrome/devtools-startup@JAREXT@
|
||||||
|
@RESPATH@/browser/chrome/devtools-startup.manifest
|
||||||
|
|
||||||
|
; DevTools
|
302
firefox-kde.patch
Normal file
302
firefox-kde.patch
Normal file
@ -0,0 +1,302 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Martin Sirringhaus <msirringhaus@suse.de>
|
||||||
|
Date: Tue, 8 Aug 2023 16:18:24 +0300
|
||||||
|
Subject: [PATCH] Add KDE integration to Firefox
|
||||||
|
|
||||||
|
Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
|
||||||
|
Bug: https://bugzilla.suse.com/show_bug.cgi?id=170055
|
||||||
|
|
||||||
|
How to apply this patch:
|
||||||
|
|
||||||
|
1. Import and apply it
|
||||||
|
2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
|
||||||
|
3. Find editBookmarkPanelDoneButton
|
||||||
|
4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
|
||||||
|
5. hg qrefresh
|
||||||
|
---
|
||||||
|
browser/components/preferences/main.js | 18 +++
|
||||||
|
browser/components/shell/moz.build | 2 +
|
||||||
|
.../components/shell/nsKDEShellService.cpp | 109 ++++++++++++++++++
|
||||||
|
browser/components/shell/nsKDEShellService.h | 32 +++++
|
||||||
|
.../components/shell/nsUnixShellService.cpp | 22 ++++
|
||||||
|
browser/components/shell/nsUnixShellService.h | 15 +++
|
||||||
|
6 files changed, 198 insertions(+)
|
||||||
|
create mode 100644 browser/components/shell/nsKDEShellService.cpp
|
||||||
|
create mode 100644 browser/components/shell/nsKDEShellService.h
|
||||||
|
create mode 100644 browser/components/shell/nsUnixShellService.cpp
|
||||||
|
create mode 100644 browser/components/shell/nsUnixShellService.h
|
||||||
|
|
||||||
|
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||||
|
--- a/browser/components/preferences/main.js
|
||||||
|
+++ b/browser/components/preferences/main.js
|
||||||
|
@@ -292,16 +292,23 @@ var gMainPane = {
|
||||||
|
}, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.setTimeout(() => {
|
||||||
|
window.requestIdleCallback(pollForDefaultBrowser);
|
||||||
|
}, backoffTimes[this._backoffIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ var env = Components.classes["@mozilla.org/process/environment;1"]
|
||||||
|
+ .getService(Components.interfaces.nsIEnvironment);
|
||||||
|
+ var kde_session = 0;
|
||||||
|
+ if (env.get('KDE_FULL_SESSION') == "true") {
|
||||||
|
+ kde_session = 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
this.initBrowserContainers();
|
||||||
|
this.buildContentProcessCountMenuList();
|
||||||
|
|
||||||
|
this.updateDefaultPerformanceSettingsPref();
|
||||||
|
|
||||||
|
let defaultPerformancePref = Preferences.get(
|
||||||
|
"browser.preferences.defaultPerformanceSettings.enabled"
|
||||||
|
);
|
||||||
|
@@ -1753,16 +1760,27 @@ var gMainPane = {
|
||||||
|
|
||||||
|
// Disable the set default button, so that the user doesn't try to hit it again
|
||||||
|
// while awaiting on setDefaultBrowser
|
||||||
|
let setDefaultButton = document.getElementById("setDefaultButton");
|
||||||
|
setDefaultButton.disabled = true;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await shellSvc.setDefaultBrowser(false);
|
||||||
|
+ if (kde_session == 1) {
|
||||||
|
+ var shellObj = Components.classes["@mozilla.org/file/local;1"]
|
||||||
|
+ .createInstance(Components.interfaces.nsILocalFile);
|
||||||
|
+ shellObj.initWithPath("/usr/bin/kwriteconfig");
|
||||||
|
+ var process = Components.classes["@mozilla.org/process/util;1"]
|
||||||
|
+ .createInstance(Components.interfaces.nsIProcess);
|
||||||
|
+ process.init(shellObj);
|
||||||
|
+ var args = ["--file", "kdeglobals", "--group", "General", "--key",
|
||||||
|
+ "BrowserApplication", "firefox"];
|
||||||
|
+ process.run(false, args, args.length);
|
||||||
|
+ }
|
||||||
|
} catch (ex) {
|
||||||
|
console.error(ex);
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
// Make sure to re-enable the default button when we're finished, regardless of the outcome
|
||||||
|
setDefaultButton.disabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
|
||||||
|
--- a/browser/components/shell/moz.build
|
||||||
|
+++ b/browser/components/shell/moz.build
|
||||||
|
@@ -31,16 +31,18 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "coco
|
||||||
|
]
|
||||||
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||||
|
XPIDL_SOURCES += [
|
||||||
|
"nsIGNOMEShellService.idl",
|
||||||
|
]
|
||||||
|
|
||||||
|
SOURCES += [
|
||||||
|
"nsGNOMEShellService.cpp",
|
||||||
|
+ "nsKDEShellService.cpp",
|
||||||
|
+ "nsUnixShellService.cpp",
|
||||||
|
]
|
||||||
|
if CONFIG["MOZ_ENABLE_DBUS"]:
|
||||||
|
SOURCES += [
|
||||||
|
"nsGNOMEShellDBusHelper.cpp",
|
||||||
|
"nsGNOMEShellSearchProvider.cpp",
|
||||||
|
]
|
||||||
|
include("/ipc/chromium/chromium-config.mozbuild")
|
||||||
|
|
||||||
|
diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/shell/nsKDEShellService.cpp
|
||||||
|
@@ -0,0 +1,108 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
+/* 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
|
||||||
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
+
|
||||||
|
+#include "mozilla/ArrayUtils.h"
|
||||||
|
+
|
||||||
|
+#include "nsCOMPtr.h"
|
||||||
|
+#include "nsKDEShellService.h"
|
||||||
|
+#include "nsShellService.h"
|
||||||
|
+#include "nsKDEUtils.h"
|
||||||
|
+#include "nsIPrefService.h"
|
||||||
|
+#include "nsIProcess.h"
|
||||||
|
+#include "nsIFile.h"
|
||||||
|
+#include "nsServiceManagerUtils.h"
|
||||||
|
+#include "nsComponentManagerUtils.h"
|
||||||
|
+#include "nsIMutableArray.h"
|
||||||
|
+#include "nsISupportsPrimitives.h"
|
||||||
|
+#include "nsArrayUtils.h"
|
||||||
|
+
|
||||||
|
+using namespace mozilla;
|
||||||
|
+
|
||||||
|
+nsresult
|
||||||
|
+nsKDEShellService::Init()
|
||||||
|
+{
|
||||||
|
+ if( !nsKDEUtils::kdeSupport())
|
||||||
|
+ return NS_ERROR_NOT_AVAILABLE;
|
||||||
|
+ return NS_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMPL_ISUPPORTS(nsKDEShellService, nsIGNOMEShellService, nsIShellService)
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::IsDefaultBrowser(bool aForAllTypes,
|
||||||
|
+ bool* aIsDefaultBrowser)
|
||||||
|
+{
|
||||||
|
+ *aIsDefaultBrowser = false;
|
||||||
|
+
|
||||||
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
||||||
|
+ if (!command)
|
||||||
|
+ return NS_ERROR_FAILURE;
|
||||||
|
+
|
||||||
|
+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
||||||
|
+ if (!str)
|
||||||
|
+ return NS_ERROR_FAILURE;
|
||||||
|
+
|
||||||
|
+ str->SetData("ISDEFAULTBROWSER"_ns);
|
||||||
|
+ command->AppendElement( str );
|
||||||
|
+
|
||||||
|
+ if( nsKDEUtils::command( command ))
|
||||||
|
+ *aIsDefaultBrowser = true;
|
||||||
|
+ return NS_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::SetDefaultBrowser(bool aForAllUsers)
|
||||||
|
+{
|
||||||
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
||||||
|
+ if (!command)
|
||||||
|
+ return NS_ERROR_FAILURE;
|
||||||
|
+
|
||||||
|
+ nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
||||||
|
+ nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
||||||
|
+ if (!cmdstr || !paramstr)
|
||||||
|
+ return NS_ERROR_FAILURE;
|
||||||
|
+
|
||||||
|
+ cmdstr->SetData("SETDEFAULTBROWSER"_ns);
|
||||||
|
+ command->AppendElement( cmdstr );
|
||||||
|
+
|
||||||
|
+ paramstr->SetData("ALLTYPES"_ns);
|
||||||
|
+ command->AppendElement( paramstr );
|
||||||
|
+
|
||||||
|
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::GetCanSetDesktopBackground(bool* aResult)
|
||||||
|
+{
|
||||||
|
+ *aResult = true;
|
||||||
|
+ return NS_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::SetDesktopBackground(dom::Element* aElement,
|
||||||
|
+ int32_t aPosition,
|
||||||
|
+ const nsACString& aImageName)
|
||||||
|
+{
|
||||||
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor)
|
||||||
|
+{
|
||||||
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor)
|
||||||
|
+{
|
||||||
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsKDEShellService::IsDefaultForScheme(nsTSubstring<char> const& aScheme, bool* aIsDefaultBrowser)
|
||||||
|
+{
|
||||||
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/shell/nsKDEShellService.h
|
||||||
|
@@ -0,0 +1,32 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
+/* 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
|
||||||
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
+
|
||||||
|
+#ifndef nskdeshellservice_h____
|
||||||
|
+#define nskdeshellservice_h____
|
||||||
|
+
|
||||||
|
+#include "nsIGNOMEShellService.h"
|
||||||
|
+#include "nsToolkitShellService.h"
|
||||||
|
+#include "nsString.h"
|
||||||
|
+#include "mozilla/Attributes.h"
|
||||||
|
+
|
||||||
|
+class nsKDEShellService final : public nsIGNOMEShellService,
|
||||||
|
+ public nsToolkitShellService
|
||||||
|
+{
|
||||||
|
+public:
|
||||||
|
+ nsKDEShellService() : mCheckedThisSession(false) { }
|
||||||
|
+
|
||||||
|
+ NS_DECL_ISUPPORTS
|
||||||
|
+ NS_DECL_NSISHELLSERVICE
|
||||||
|
+ NS_DECL_NSIGNOMESHELLSERVICE
|
||||||
|
+
|
||||||
|
+ nsresult Init();
|
||||||
|
+
|
||||||
|
+private:
|
||||||
|
+ ~nsKDEShellService() {}
|
||||||
|
+
|
||||||
|
+ bool mCheckedThisSession;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif // nskdeshellservice_h____
|
||||||
|
diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/shell/nsUnixShellService.cpp
|
||||||
|
@@ -0,0 +1,22 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
+/* 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
|
||||||
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#include "nsUnixShellService.h"
|
||||||
|
+#include "nsGNOMEShellService.h"
|
||||||
|
+#include "nsKDEShellService.h"
|
||||||
|
+#include "nsKDEUtils.h"
|
||||||
|
+#include "mozilla/ModuleUtils.h"
|
||||||
|
+
|
||||||
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
|
||||||
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init)
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsUnixShellServiceConstructor(REFNSIID aIID, void **aResult)
|
||||||
|
+{
|
||||||
|
+ if( nsKDEUtils::kdeSupport())
|
||||||
|
+ return nsKDEShellServiceConstructor( aIID, aResult );
|
||||||
|
+ return nsGNOMEShellServiceConstructor( aIID, aResult );
|
||||||
|
+}
|
||||||
|
diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/browser/components/shell/nsUnixShellService.h
|
||||||
|
@@ -0,0 +1,15 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
+/* 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
|
||||||
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#ifndef nsunixshellservice_h____
|
||||||
|
+#define nsunixshellservice_h____
|
||||||
|
+
|
||||||
|
+#include "nsIGNOMEShellService.h"
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
|
||||||
|
+
|
||||||
|
+#endif // nsunixshellservice_h____
|
7
firefox-mimeinfo.xml
Normal file
7
firefox-mimeinfo.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||||
|
<mime-type type="application/x-xpinstall">
|
||||||
|
<comment xml:lang="en">Mozilla Cross-Platform Installer Module</comment>
|
||||||
|
<glob pattern="*.xpi" />
|
||||||
|
</mime-type>
|
||||||
|
</mime-info>
|
5
firefox-search-provider.ini
Normal file
5
firefox-search-provider.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Shell Search Provider]
|
||||||
|
DesktopId=firefox.desktop
|
||||||
|
BusName=org.mozilla.firefox.SearchProvider
|
||||||
|
ObjectPath=/org/mozilla/firefox/SearchProvider
|
||||||
|
Version=2
|
141
firefox.1
Normal file
141
firefox.1
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
.TH FIREFOX 1 "November 30, 2017" firefox "Linux User's Manual"
|
||||||
|
.SH NAME
|
||||||
|
firefox \- a Web browser for X11 derived from the Mozilla browser
|
||||||
|
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B firefox
|
||||||
|
[\fIOPTIONS\fR ...] [\fIURL\fR]
|
||||||
|
|
||||||
|
.B firefox-bin
|
||||||
|
[\fIOPTIONS\fR] [\fIURL\fR]
|
||||||
|
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBMozilla Firefox\fR is an open-source web browser, designed for
|
||||||
|
standards compliance, performance and portability.
|
||||||
|
|
||||||
|
.SH USAGE
|
||||||
|
\fBfirefox\fR is a simple shell script that will set up the
|
||||||
|
environment for the actual executable, \fBfirefox-bin\fR.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
A summary of the options supported by \fBfirefox\fR is included below.
|
||||||
|
|
||||||
|
.SS "X11 options"
|
||||||
|
.TP
|
||||||
|
.BI \-\-display= DISPLAY
|
||||||
|
X display to use
|
||||||
|
.TP
|
||||||
|
.B \--sync
|
||||||
|
Make X calls synchronous
|
||||||
|
.TP
|
||||||
|
.B \-\-g-fatal-warnings
|
||||||
|
Make all warnings fatal
|
||||||
|
|
||||||
|
.SS "Firefox options"
|
||||||
|
.TP
|
||||||
|
.B \-h, \-help
|
||||||
|
Show summary of options.
|
||||||
|
.TP
|
||||||
|
.B \-v, \-version
|
||||||
|
Print Firefox version.
|
||||||
|
.TP
|
||||||
|
\fB\-P\fR \fIprofile\fR
|
||||||
|
Start with \fIprofile\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-\-profile\fR \fIpath\fR
|
||||||
|
Start with profile at \fIpath\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-\-migration\fR
|
||||||
|
Start with migration wizard.
|
||||||
|
.TP
|
||||||
|
.B \-\-ProfileManager
|
||||||
|
Start with ProfileManager.
|
||||||
|
.TP
|
||||||
|
\fB\-\-no\-remote\fR
|
||||||
|
Do not accept or send remote commands; implies \fB--new-instance\fR.
|
||||||
|
.TP
|
||||||
|
\fB\-\-new\-instance\fR
|
||||||
|
Open new instance, not a new window in running instance.
|
||||||
|
.TP
|
||||||
|
\fB\-\-UILocale\fR \fIlocale\fR
|
||||||
|
Start with \fIlocale\fR resources as UI Locale.
|
||||||
|
.TP
|
||||||
|
\fB\-\-safe\-mode\fR
|
||||||
|
Disables extensions and themes for this session.
|
||||||
|
.TP
|
||||||
|
\fB\-\-headless\fR
|
||||||
|
Run without a GUI.
|
||||||
|
.TP
|
||||||
|
\fB\-\-marionette\fR
|
||||||
|
Enable remote control server.
|
||||||
|
.TP
|
||||||
|
\fB\-\-browser\fR
|
||||||
|
Open a browser window.
|
||||||
|
.TP
|
||||||
|
\fB\-\-new-window\fR \fIurl\fR
|
||||||
|
Open \fIurl\fR in a new window.
|
||||||
|
.TP
|
||||||
|
\fB\-\-new-tab\fR \fIurl\fR
|
||||||
|
Open \fIurl\fR in a new tab.
|
||||||
|
.TP
|
||||||
|
\fB\-\-private-window\fR \fIurl\fR
|
||||||
|
Open \fIurl\fR in a new private window.
|
||||||
|
.TP
|
||||||
|
\fB\-\-preferences\fR
|
||||||
|
Open Preferences dialog.
|
||||||
|
.TP
|
||||||
|
\fB\-\-screenshot\fR [\fIpath\fR]
|
||||||
|
Save screenshot to \fIpath\fR or in working directory.
|
||||||
|
.TP
|
||||||
|
\fB\-\-window-size\fR \fIwidth\fR[,\fIheight\fR]
|
||||||
|
Width and optionally height of screenshot.
|
||||||
|
.TP
|
||||||
|
\fB\-\-search\fR \fIterm\fR
|
||||||
|
Search \fIterm\fR with your default search engine.
|
||||||
|
.TP
|
||||||
|
|
||||||
|
|
||||||
|
\fB\-\-jsconsole\fR
|
||||||
|
Open the Browser Console.
|
||||||
|
.TP
|
||||||
|
\fB\-\-jsdebugger\fR
|
||||||
|
Open the Browser Toolbox.
|
||||||
|
.TP
|
||||||
|
\fB\-\-wait-for-jsdebugger\fR
|
||||||
|
Spin event loop until JS debugger connects. Enables debugging (some) application startup code paths. Only has an effect when \fI--jsdebugger\fR is also supplied.
|
||||||
|
.TP
|
||||||
|
\fB\-\-devtools\fR
|
||||||
|
Open DevTools on initial load.
|
||||||
|
.TP
|
||||||
|
\fB\-\-start-debugger-server\fR [ws:][\fIport\fR|\fIpath\fR]
|
||||||
|
Start the debugger server on a TCP port or Unix domain socket path. Defaults to TCP port 6000. Use WebSocket protocol if ws: prefix is specified.
|
||||||
|
.TP
|
||||||
|
\fB\-\-recording\fR \fIfile\fR
|
||||||
|
Record drawing for a given URL.
|
||||||
|
.TP
|
||||||
|
\fB\-\-recording-output\fR \fIfile\fR
|
||||||
|
Specify destination file for a drawing recording.
|
||||||
|
.TP
|
||||||
|
\fB\-\-setDefaultBrowser\fR
|
||||||
|
Set this app as the default browser.
|
||||||
|
|
||||||
|
.SH FILES
|
||||||
|
\fI/usr/bin/firefox\fR - shell script wrapping
|
||||||
|
\fBfirefox\fR
|
||||||
|
.br
|
||||||
|
\fI/usr/lib64/firefox/firefox-bin\fR - \fBfirefox\fR
|
||||||
|
executable
|
||||||
|
|
||||||
|
.SH VERSION
|
||||||
|
57.0
|
||||||
|
|
||||||
|
.SH BUGS
|
||||||
|
To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR
|
||||||
|
|
||||||
|
.SH AUTHORS
|
||||||
|
.TP
|
||||||
|
.B The Mozilla Organization
|
||||||
|
.I http://www.mozilla.org/about.html
|
||||||
|
.TP
|
||||||
|
.B Tobias Girstmair
|
||||||
|
.I https://gir.st/
|
10
firefox.js
Normal file
10
firefox.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
pref("intl.locale.requested", "");
|
||||||
|
pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
|
||||||
|
/* Disable DoH by default */
|
||||||
|
pref("network.trr.mode", 5);
|
||||||
|
// do not disable any scope
|
||||||
|
pref("extensions.autoDisableScopes", 0);
|
||||||
|
pref("extensions.shownSelectionUI", true);
|
||||||
|
pref("extensions.langpacks.signatures.required", false);
|
||||||
|
// enable D-Bus inteface for Gnome Shell search
|
||||||
|
pref("browser.gnome-search-provider.enabled", true);
|
1
google-api-key
Normal file
1
google-api-key
Normal file
@ -0,0 +1 @@
|
|||||||
|
AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q
|
3
l10n-128.0.tar.xz
Normal file
3
l10n-128.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:dbeeef6964b694c3c9d905856eb02e0ce3a13ce2047d09b5541b5e45f2ed8c1b
|
||||||
|
size 34286352
|
26
mozilla-aarch64-startup-crash.patch
Normal file
26
mozilla-aarch64-startup-crash.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User msirringhaus@suse.de
|
||||||
|
# Date 1558442998 -7200
|
||||||
|
# Tue May 21 14:49:58 2019 +0200
|
||||||
|
# Node ID 386083b58d8558141901d796ec6919a4aba7ad3a
|
||||||
|
# Parent 76b747f7d113bddbb8593184d81e1bfe5fd51af0
|
||||||
|
bsc#991344 - Rpi3: Firefox crashes after a few seconds of usage
|
||||||
|
bmo#1302554 - ARM/AARCH64: Firefox crashes on NULL nsIChannel** result pointer in nsIOService::NewChannelFromURIWithProxyFlagsInternal()
|
||||||
|
|
||||||
|
diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
|
||||||
|
--- a/netwerk/base/nsIOService.cpp
|
||||||
|
+++ b/netwerk/base/nsIOService.cpp
|
||||||
|
@@ -1159,7 +1159,13 @@ nsresult nsIOService::NewChannelFromURIW
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if defined(__aarch64__)
|
||||||
|
+ if (result) {
|
||||||
|
+ channel.forget(result);
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
channel.forget(result);
|
||||||
|
+#endif
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
1
mozilla-api-key
Normal file
1
mozilla-api-key
Normal file
@ -0,0 +1 @@
|
|||||||
|
4605624048be48fda932495844d16fbb
|
129
mozilla-bmo1504834-part1.patch
Normal file
129
mozilla-bmo1504834-part1.patch
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 125a78208d2cef58191a0328ffe894dd14c6b146
|
||||||
|
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
|
||||||
|
|
||||||
|
diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
|
||||||
|
--- a/gfx/2d/DrawTargetSkia.cpp
|
||||||
|
+++ b/gfx/2d/DrawTargetSkia.cpp
|
||||||
|
@@ -151,17 +151,18 @@ static IntRect CalculateSurfaceBounds(co
|
||||||
|
if (!sampledBounds.ToIntRect(&bounds)) {
|
||||||
|
return surfaceBounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
return surfaceBounds.Intersect(bounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const int kARGBAlphaOffset =
|
||||||
|
- SurfaceFormat::A8R8G8B8_UINT32 == SurfaceFormat::B8G8R8A8 ? 3 : 0;
|
||||||
|
+ 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) {
|
||||||
|
if (aFormat != SurfaceFormat::B8G8R8X8 || aSize.IsEmpty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// We should've initialized the data to be opaque already
|
||||||
|
// On debug builds, verify that this is actually true.
|
||||||
|
diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h
|
||||||
|
--- a/gfx/2d/Types.h
|
||||||
|
+++ b/gfx/2d/Types.h
|
||||||
|
@@ -84,28 +84,21 @@ enum class SurfaceFormat : int8_t {
|
||||||
|
YUV422, // Single plane YUV 4:2:2 interleaved as Y`0 Cb Y`1 Cr.
|
||||||
|
HSV,
|
||||||
|
Lab,
|
||||||
|
Depth,
|
||||||
|
|
||||||
|
// This represents the unknown format.
|
||||||
|
UNKNOWN, // TODO: Replace uses with Maybe<SurfaceFormat>.
|
||||||
|
|
||||||
|
-// 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()
|
||||||
|
+ // The following values are endian-independent synonyms. The _UINT32 suffix
|
||||||
|
+ // indicates that the name reflects the layout when viewed as a uint32_t
|
||||||
|
+ // value.
|
||||||
|
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.
|
||||||
|
//
|
||||||
|
// TODO(aosmond): When everything blocking bug 1581828 has been resolved, we
|
||||||
|
// can make this use R8B8G8A8 and R8B8G8X8 for non-Windows platforms.
|
||||||
|
OS_RGBA = A8R8G8B8_UINT32,
|
||||||
|
OS_RGBX = X8R8G8B8_UINT32
|
||||||
|
};
|
||||||
|
diff --git a/gfx/skia/skia/modules/skcms/skcms.cc b/gfx/skia/skia/modules/skcms/skcms.cc
|
||||||
|
--- a/gfx/skia/skia/modules/skcms/skcms.cc
|
||||||
|
+++ b/gfx/skia/skia/modules/skcms/skcms.cc
|
||||||
|
@@ -26,16 +26,18 @@
|
||||||
|
// it'd be a lot slower. But we want all those headers included so we
|
||||||
|
// can use their features after runtime checks later.
|
||||||
|
#include <smmintrin.h>
|
||||||
|
#include <avxintrin.h>
|
||||||
|
#include <avx2intrin.h>
|
||||||
|
#include <avx512fintrin.h>
|
||||||
|
#include <avx512dqintrin.h>
|
||||||
|
#endif
|
||||||
|
+#else
|
||||||
|
+ #define SKCMS_PORTABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using namespace skcms_private;
|
||||||
|
|
||||||
|
static bool sAllowRuntimeCPUDetection = true;
|
||||||
|
|
||||||
|
void skcms_DisableRuntimeCPUDetection() {
|
||||||
|
sAllowRuntimeCPUDetection = false;
|
||||||
|
@@ -319,30 +321,38 @@ enum {
|
||||||
|
skcms_Signature_sf32 = 0x73663332,
|
||||||
|
// XYZ is also a PCS signature, so it's defined in skcms.h
|
||||||
|
// skcms_Signature_XYZ = 0x58595A20,
|
||||||
|
};
|
||||||
|
|
||||||
|
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
|
||||||
|
- return __builtin_bswap16(be);
|
||||||
|
+ #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
|
||||||
|
- return __builtin_bswap32(be);
|
||||||
|
+ #if defined(_MSC_VER)
|
||||||
|
+ return _byteswap_ulong(be);
|
||||||
|
+ #else
|
||||||
|
+ return __builtin_bswap32(be);
|
||||||
|
+ #endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t read_big_i32(const uint8_t* ptr) {
|
||||||
|
return (int32_t)read_big_u32(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static float read_big_fixed(const uint8_t* ptr) {
|
17
mozilla-bmo1504834-part3.patch
Normal file
17
mozilla-bmo1504834-part3.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 09cd4ac2cc607e85aa572425b824fbab386af607
|
||||||
|
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 --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
|
--- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
|
+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h
|
||||||
|
@@ -210,6 +210,8 @@ namespace SK_OPTS_NS {
|
||||||
|
// ~~~>
|
||||||
|
// a = 1*aa + d(1-1*aa) = aa + d(1-aa)
|
||||||
|
// c = 0*aa + d(1-1*aa) = d(1-aa)
|
||||||
|
+ // TODO: Check this for endian-issues!
|
||||||
|
+ // Do we need to switch 255 to the front for all of those tuples?
|
||||||
|
return (aa & Sk4px(skvx::byte16{0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255}))
|
||||||
|
+ d.approxMulDiv255(aa.inv());
|
||||||
|
};
|
35
mozilla-bmo1512162.patch
Normal file
35
mozilla-bmo1512162.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent f9f5af4c88f2f3172a4f30d7e42bd2131bf24146
|
||||||
|
This fixes a broken build for gcc < 9 on ppc64le.
|
||||||
|
This patch can be removed for newer gcc-versions.
|
||||||
|
|
||||||
|
Index: firefox-115.0/js/xpconnect/src/XPCWrappedNative.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/js/xpconnect/src/XPCWrappedNative.cpp
|
||||||
|
+++ firefox-115.0/js/xpconnect/src/XPCWrappedNative.cpp
|
||||||
|
@@ -1061,7 +1061,11 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||||
|
MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
|
||||||
|
MutableHandleValue srcp) const;
|
||||||
|
|
||||||
|
- MOZ_ALWAYS_INLINE bool GatherAndConvertResults();
|
||||||
|
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||||
|
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||||
|
+ MOZ_ALWAYS_INLINE
|
||||||
|
+#endif
|
||||||
|
+ bool GatherAndConvertResults();
|
||||||
|
|
||||||
|
MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
|
||||||
|
|
||||||
|
@@ -1108,7 +1112,11 @@ class MOZ_STACK_CLASS CallMethodHelper f
|
||||||
|
|
||||||
|
~CallMethodHelper();
|
||||||
|
|
||||||
|
- MOZ_ALWAYS_INLINE bool Call();
|
||||||
|
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
|
||||||
|
+// Work around a compiler bug on ppc64le (bug 1512162).
|
||||||
|
+ MOZ_ALWAYS_INLINE
|
||||||
|
+#endif
|
||||||
|
+ bool Call();
|
||||||
|
|
||||||
|
// Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
|
||||||
|
void trace(JSTracer* aTrc);
|
63
mozilla-bmo1822730.patch
Normal file
63
mozilla-bmo1822730.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Rob Krum <biggestsonicfan@gmail.com>
|
||||||
|
# Date 1695432215 25200
|
||||||
|
# Fri Sep 22 18:23:35 2023 -0700
|
||||||
|
# Node ID e6a8a9f0956d124e8de34eb4bcf09d8e17077d9d
|
||||||
|
# Parent 5dbbabbfaca21d2c5994f95ed095313284611c44
|
||||||
|
Bug 1822730 - Add basic blob protocol handling for blob URIs that contain parsable http/s protocols
|
||||||
|
|
||||||
|
diff --git a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
|
||||||
|
--- a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
|
||||||
|
+++ b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs
|
||||||
|
@@ -216,38 +216,49 @@ export class DownloadLastDir {
|
||||||
|
Services.prefs.setComplexValue(LAST_DIR_PREF, nsIFile, aFile);
|
||||||
|
} else if (Services.prefs.prefHasUserValue(LAST_DIR_PREF)) {
|
||||||
|
Services.prefs.clearUserPref(LAST_DIR_PREF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pre-processor to extract a domain name to be used with the content-prefs
|
||||||
|
- * service. This specially handles data and file URIs so that the download
|
||||||
|
- * dirs are recalled in a more consistent way:
|
||||||
|
+ * service. This specially handles data, file and blob URIs so that the
|
||||||
|
+ * download dirs are recalled in a more consistent way:
|
||||||
|
* - all file:/// URIs share the same folder
|
||||||
|
* - data: URIs share a folder per mime-type. If a mime-type is not
|
||||||
|
* specified text/plain is assumed.
|
||||||
|
* - blob: URIs share the same folder as their origin. This is done by
|
||||||
|
* ContentPrefs already, so we just let the url fall-through.
|
||||||
|
* In any other case the original URL is returned as a string and ContentPrefs
|
||||||
|
* will do its usual parsing.
|
||||||
|
*
|
||||||
|
* @param {string|nsIURI|URL} url The URL to parse
|
||||||
|
* @returns {string} the domain name to use, or the original url.
|
||||||
|
*/
|
||||||
|
#cpsGroupFromURL(url) {
|
||||||
|
if (typeof url == "string") {
|
||||||
|
+ if (url.startsWith("blob:http://") || url.startsWith("blob:https://")) {
|
||||||
|
+ url = url.replace("blob:", "");
|
||||||
|
+ }
|
||||||
|
url = new URL(url);
|
||||||
|
} else if (url instanceof Ci.nsIURI) {
|
||||||
|
url = URL.fromURI(url);
|
||||||
|
}
|
||||||
|
if (!URL.isInstance(url)) {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
+ if (url.protocol == "blob:") {
|
||||||
|
+ if (
|
||||||
|
+ url.href.startsWith("blob:http://") ||
|
||||||
|
+ url.href.startsWith("blob:https://")
|
||||||
|
+ ) {
|
||||||
|
+ return url.href.replace("blob:", "");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (url.protocol == "data:") {
|
||||||
|
return url.href.match(/^data:[^;,]*/i)[0].replace(/:$/, ":text/plain");
|
||||||
|
}
|
||||||
|
if (url.protocol == "file:") {
|
||||||
|
return "file:///";
|
||||||
|
}
|
||||||
|
return url.href;
|
||||||
|
}
|
401
mozilla-bmo1898476.patch
Normal file
401
mozilla-bmo1898476.patch
Normal file
@ -0,0 +1,401 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User stransky <stransky@redhat.com>
|
||||||
|
# Date 1720609192 0
|
||||||
|
# Node ID f9323daf7abeb19f69ac5762a0a442c0dc15636e
|
||||||
|
# Parent 5afadee4e18fc5779d789d9371a3d2d67a29d1da
|
||||||
|
Bug 1898476 [Wayland] Move MozContainerSurfaceLock from MozContainerWayland to MozContainerSurfaceLock module r=emilio
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D214883
|
||||||
|
|
||||||
|
diff --git a/widget/gtk/MozContainerSurfaceLock.cpp b/widget/gtk/MozContainerSurfaceLock.cpp
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/widget/gtk/MozContainerSurfaceLock.cpp
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
+/* 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
|
||||||
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
+
|
||||||
|
+#include "MozContainerSurfaceLock.h"
|
||||||
|
+#include "MozContainer.h"
|
||||||
|
+#include "WidgetUtilsGtk.h"
|
||||||
|
+
|
||||||
|
+using namespace mozilla::widget;
|
||||||
|
+
|
||||||
|
+MozContainerSurfaceLock::MozContainerSurfaceLock(MozContainer* aContainer) {
|
||||||
|
+#ifdef MOZ_WAYLAND
|
||||||
|
+ mContainer = aContainer;
|
||||||
|
+ if (GdkIsWaylandDisplay()) {
|
||||||
|
+ // mSurface can be nullptr if we lock hidden MozContainer and
|
||||||
|
+ // that's correct, MozContainer is still locked.
|
||||||
|
+ mSurface = moz_container_wayland_surface_lock(aContainer);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+MozContainerSurfaceLock::~MozContainerSurfaceLock() {
|
||||||
|
+#ifdef MOZ_WAYLAND
|
||||||
|
+ if (GdkIsWaylandDisplay()) {
|
||||||
|
+ moz_container_wayland_surface_unlock(mContainer, &mSurface);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+struct wl_surface* MozContainerSurfaceLock::GetSurface() { return mSurface; }
|
||||||
|
diff --git a/widget/gtk/MozContainerSurfaceLock.h b/widget/gtk/MozContainerSurfaceLock.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/widget/gtk/MozContainerSurfaceLock.h
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
+/* 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
|
||||||
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
+
|
||||||
|
+#ifndef widget_gtk_MozContainerSurfaceLock_h
|
||||||
|
+#define widget_gtk_MozContainerSurfaceLock_h
|
||||||
|
+
|
||||||
|
+struct wl_surface;
|
||||||
|
+struct _MozContainer;
|
||||||
|
+typedef struct _MozContainer MozContainer;
|
||||||
|
+
|
||||||
|
+class MozContainerSurfaceLock {
|
||||||
|
+ public:
|
||||||
|
+ explicit MozContainerSurfaceLock(MozContainer* aContainer);
|
||||||
|
+ ~MozContainerSurfaceLock();
|
||||||
|
+
|
||||||
|
+ // wl_surface can be nullptr if we lock hidden MozContainer.
|
||||||
|
+ struct wl_surface* GetSurface();
|
||||||
|
+
|
||||||
|
+ private:
|
||||||
|
+#ifdef MOZ_WAYLAND
|
||||||
|
+ MozContainer* mContainer = nullptr;
|
||||||
|
+#endif
|
||||||
|
+ struct wl_surface* mSurface = nullptr;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif // widget_gtk_MozContainerSurfaceLock_h
|
||||||
|
diff --git a/widget/gtk/MozContainerWayland.cpp b/widget/gtk/MozContainerWayland.cpp
|
||||||
|
--- a/widget/gtk/MozContainerWayland.cpp
|
||||||
|
+++ b/widget/gtk/MozContainerWayland.cpp
|
||||||
|
@@ -82,33 +82,16 @@ using namespace mozilla;
|
||||||
|
using namespace mozilla::widget;
|
||||||
|
|
||||||
|
static bool moz_container_wayland_surface_create_locked(
|
||||||
|
const MutexAutoLock& aProofOfLock, MozContainer* container);
|
||||||
|
static void moz_container_wayland_set_opaque_region_locked(
|
||||||
|
const MutexAutoLock& aProofOfLock, MozContainer* container,
|
||||||
|
const LayoutDeviceIntRegion&);
|
||||||
|
|
||||||
|
-// Lock mozcontainer and get wayland surface of it. You need to pair with
|
||||||
|
-// moz_container_wayland_surface_unlock() even
|
||||||
|
-// if moz_container_wayland_surface_lock() fails and returns nullptr.
|
||||||
|
-static struct wl_surface* moz_container_wayland_surface_lock(
|
||||||
|
- MozContainer* container);
|
||||||
|
-static void moz_container_wayland_surface_unlock(MozContainer* container,
|
||||||
|
- struct wl_surface** surface);
|
||||||
|
-
|
||||||
|
-MozContainerSurfaceLock::MozContainerSurfaceLock(MozContainer* aContainer) {
|
||||||
|
- mContainer = aContainer;
|
||||||
|
- mSurface = moz_container_wayland_surface_lock(aContainer);
|
||||||
|
-}
|
||||||
|
-MozContainerSurfaceLock::~MozContainerSurfaceLock() {
|
||||||
|
- moz_container_wayland_surface_unlock(mContainer, &mSurface);
|
||||||
|
-}
|
||||||
|
-struct wl_surface* MozContainerSurfaceLock::GetSurface() { return mSurface; }
|
||||||
|
-
|
||||||
|
// Invalidate gtk wl_surface to commit changes to wl_subsurface.
|
||||||
|
// wl_subsurface changes are effective when parent surface is commited.
|
||||||
|
static void moz_container_wayland_invalidate(MozContainer* container) {
|
||||||
|
LOGWAYLAND("moz_container_wayland_invalidate [%p]\n",
|
||||||
|
(void*)moz_container_get_nsWindow(container));
|
||||||
|
|
||||||
|
GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
|
||||||
|
if (!window) {
|
||||||
|
diff --git a/widget/gtk/MozContainerWayland.h b/widget/gtk/MozContainerWayland.h
|
||||||
|
--- a/widget/gtk/MozContainerWayland.h
|
||||||
|
+++ b/widget/gtk/MozContainerWayland.h
|
||||||
|
@@ -8,16 +8,17 @@
|
||||||
|
#ifndef __MOZ_CONTAINER_WAYLAND_H__
|
||||||
|
#define __MOZ_CONTAINER_WAYLAND_H__
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <functional>
|
||||||
|
#include <vector>
|
||||||
|
#include "mozilla/Mutex.h"
|
||||||
|
#include "WindowSurface.h"
|
||||||
|
+#include "MozContainerSurfaceLock.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MozContainer
|
||||||
|
*
|
||||||
|
* This class serves three purposes in the nsIWidget implementation.
|
||||||
|
*
|
||||||
|
* - It provides objects to receive signals from GTK for events on native
|
||||||
|
* windows.
|
||||||
|
@@ -56,25 +57,22 @@ struct MozContainerWayland {
|
||||||
|
mozilla::Mutex container_lock{"MozContainerWayland::container_lock"};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _MozContainer;
|
||||||
|
struct _MozContainerClass;
|
||||||
|
typedef struct _MozContainer MozContainer;
|
||||||
|
typedef struct _MozContainerClass MozContainerClass;
|
||||||
|
|
||||||
|
-class MozContainerSurfaceLock {
|
||||||
|
- MozContainer* mContainer;
|
||||||
|
- struct wl_surface* mSurface;
|
||||||
|
-
|
||||||
|
- public:
|
||||||
|
- explicit MozContainerSurfaceLock(MozContainer* aContainer);
|
||||||
|
- ~MozContainerSurfaceLock();
|
||||||
|
- struct wl_surface* GetSurface();
|
||||||
|
-};
|
||||||
|
+// Lock mozcontainer and get wayland surface of it. You need to pair with
|
||||||
|
+// moz_container_wayland_surface_unlock() even
|
||||||
|
+// if moz_container_wayland_surface_lock() fails and returns nullptr.
|
||||||
|
+struct wl_surface* moz_container_wayland_surface_lock(MozContainer* container);
|
||||||
|
+void moz_container_wayland_surface_unlock(MozContainer* container,
|
||||||
|
+ struct wl_surface** surface);
|
||||||
|
|
||||||
|
void moz_container_wayland_map(GtkWidget*);
|
||||||
|
gboolean moz_container_wayland_map_event(GtkWidget*, GdkEventAny*);
|
||||||
|
void moz_container_wayland_size_allocate(GtkWidget*, GtkAllocation*);
|
||||||
|
void moz_container_wayland_unmap(GtkWidget*);
|
||||||
|
|
||||||
|
struct wl_egl_window* moz_container_wayland_get_egl_window(
|
||||||
|
MozContainer* container, double scale);
|
||||||
|
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
|
||||||
|
--- a/widget/gtk/moz.build
|
||||||
|
+++ b/widget/gtk/moz.build
|
||||||
|
@@ -28,16 +28,17 @@ if CONFIG["MOZ_WAYLAND"]:
|
||||||
|
if CONFIG["MOZ_ENABLE_VAAPI"]:
|
||||||
|
DIRS += ["vaapitest"]
|
||||||
|
|
||||||
|
if CONFIG["MOZ_ENABLE_V4L2"]:
|
||||||
|
DIRS += ["v4l2test"]
|
||||||
|
|
||||||
|
EXPORTS += [
|
||||||
|
"MozContainer.h",
|
||||||
|
+ "MozContainerSurfaceLock.h",
|
||||||
|
"nsGTKToolkit.h",
|
||||||
|
"nsGtkUtils.h",
|
||||||
|
"nsImageToPixbuf.h",
|
||||||
|
]
|
||||||
|
|
||||||
|
EXPORTS.mozilla += [
|
||||||
|
"GfxInfo.h",
|
||||||
|
"GfxInfoUtils.h",
|
||||||
|
@@ -66,16 +67,17 @@ UNIFIED_SOURCES += [
|
||||||
|
"DMABufLibWrapper.cpp",
|
||||||
|
"DMABufSurface.cpp",
|
||||||
|
"GfxInfo.cpp",
|
||||||
|
"gtk3drawing.cpp",
|
||||||
|
"GtkCompositorWidget.cpp",
|
||||||
|
"IMContextWrapper.cpp",
|
||||||
|
"InProcessGtkCompositorWidget.cpp",
|
||||||
|
"MozContainer.cpp",
|
||||||
|
+ "MozContainerSurfaceLock.cpp",
|
||||||
|
"MPRISServiceHandler.cpp",
|
||||||
|
"NativeKeyBindings.cpp",
|
||||||
|
"NativeMenuGtk.cpp",
|
||||||
|
"NativeMenuSupport.cpp",
|
||||||
|
"nsApplicationChooser.cpp",
|
||||||
|
"nsAppShell.cpp",
|
||||||
|
"nsBidiKeyboard.cpp",
|
||||||
|
"nsClipboard.cpp",
|
||||||
|
@@ -109,16 +111,17 @@ if CONFIG["MOZ_WAYLAND"]:
|
||||||
|
UNIFIED_SOURCES += [
|
||||||
|
"MozContainerWayland.cpp",
|
||||||
|
"nsClipboardWayland.cpp",
|
||||||
|
"nsWaylandDisplay.cpp",
|
||||||
|
"WaylandBuffer.cpp",
|
||||||
|
"WindowSurfaceWaylandMultiBuffer.cpp",
|
||||||
|
]
|
||||||
|
EXPORTS.mozilla.widget += [
|
||||||
|
+ "MozContainerSurfaceLock.h",
|
||||||
|
"MozContainerWayland.h",
|
||||||
|
"nsWaylandDisplay.h",
|
||||||
|
"WaylandBuffer.h",
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG["MOZ_X11"]:
|
||||||
|
UNIFIED_SOURCES += [
|
||||||
|
"nsClipboardX11.cpp",
|
||||||
|
|
||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User stransky <stransky@redhat.com>
|
||||||
|
# Date 1720609193 0
|
||||||
|
# Node ID a264ff9e9f6f87ca0520a884b29c4be90001533e
|
||||||
|
# Parent f9323daf7abeb19f69ac5762a0a442c0dc15636e
|
||||||
|
Bug 1898476 [Wayland] Provide surface lock by GtkCompositorWidget r=emilio
|
||||||
|
|
||||||
|
Depends on D214883
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D214884
|
||||||
|
|
||||||
|
diff --git a/widget/gtk/GtkCompositorWidget.cpp b/widget/gtk/GtkCompositorWidget.cpp
|
||||||
|
--- a/widget/gtk/GtkCompositorWidget.cpp
|
||||||
|
+++ b/widget/gtk/GtkCompositorWidget.cpp
|
||||||
|
@@ -206,10 +206,14 @@ void GtkCompositorWidget::SetRenderingSu
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef MOZ_LOGGING
|
||||||
|
bool GtkCompositorWidget::IsPopup() {
|
||||||
|
return mWidget ? mWidget->IsPopup() : false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+UniquePtr<MozContainerSurfaceLock> GtkCompositorWidget::LockSurface() {
|
||||||
|
+ return mWidget->LockSurface();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace mozilla
|
||||||
|
diff --git a/widget/gtk/GtkCompositorWidget.h b/widget/gtk/GtkCompositorWidget.h
|
||||||
|
--- a/widget/gtk/GtkCompositorWidget.h
|
||||||
|
+++ b/widget/gtk/GtkCompositorWidget.h
|
||||||
|
@@ -5,16 +5,18 @@
|
||||||
|
|
||||||
|
#ifndef widget_gtk_GtkCompositorWidget_h
|
||||||
|
#define widget_gtk_GtkCompositorWidget_h
|
||||||
|
|
||||||
|
#include "GLDefs.h"
|
||||||
|
#include "mozilla/DataMutex.h"
|
||||||
|
#include "mozilla/widget/CompositorWidget.h"
|
||||||
|
#include "WindowSurfaceProvider.h"
|
||||||
|
+#include "mozilla/UniquePtr.h"
|
||||||
|
+#include "MozContainerSurfaceLock.h"
|
||||||
|
|
||||||
|
class nsIWidget;
|
||||||
|
class nsWindow;
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
|
||||||
|
namespace layers {
|
||||||
|
class NativeLayerRootWayland;
|
||||||
|
@@ -91,16 +93,18 @@ class GtkCompositorWidget : public Compo
|
||||||
|
RefPtr<mozilla::layers::NativeLayerRoot> GetNativeLayerRoot() override;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// PlatformCompositorWidgetDelegate Overrides
|
||||||
|
|
||||||
|
void NotifyClientSizeChanged(const LayoutDeviceIntSize& aClientSize) override;
|
||||||
|
GtkCompositorWidget* AsGtkCompositorWidget() override { return this; }
|
||||||
|
|
||||||
|
+ UniquePtr<MozContainerSurfaceLock> LockSurface();
|
||||||
|
+
|
||||||
|
private:
|
||||||
|
#if defined(MOZ_WAYLAND)
|
||||||
|
void ConfigureWaylandBackend();
|
||||||
|
#endif
|
||||||
|
#if defined(MOZ_X11)
|
||||||
|
void ConfigureX11Backend(Window aXWindow, bool aShaped);
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_LOGGING
|
||||||
|
diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
|
||||||
|
--- a/widget/gtk/nsWindow.cpp
|
||||||
|
+++ b/widget/gtk/nsWindow.cpp
|
||||||
|
@@ -10271,8 +10271,15 @@ void nsWindow::SetDragSource(GdkDragCont
|
||||||
|
mSourceDragContext = aSourceDragContext;
|
||||||
|
if (IsPopup() &&
|
||||||
|
(widget::GdkIsWaylandDisplay() || widget::IsXWaylandProtocol())) {
|
||||||
|
if (auto* menuPopupFrame = GetMenuPopupFrame(GetFrame())) {
|
||||||
|
menuPopupFrame->SetIsDragSource(!!aSourceDragContext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+UniquePtr<MozContainerSurfaceLock> nsWindow::LockSurface() {
|
||||||
|
+ if (mIsDestroyed) {
|
||||||
|
+ return nullptr;
|
||||||
|
+ }
|
||||||
|
+ return MakeUnique<MozContainerSurfaceLock>(mContainer);
|
||||||
|
+}
|
||||||
|
diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h
|
||||||
|
--- a/widget/gtk/nsWindow.h
|
||||||
|
+++ b/widget/gtk/nsWindow.h
|
||||||
|
@@ -8,16 +8,17 @@
|
||||||
|
#ifndef __nsWindow_h__
|
||||||
|
#define __nsWindow_h__
|
||||||
|
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
#include "CompositorWidget.h"
|
||||||
|
#include "MozContainer.h"
|
||||||
|
+#include "MozContainerSurfaceLock.h"
|
||||||
|
#include "VsyncSource.h"
|
||||||
|
#include "mozilla/EventForwards.h"
|
||||||
|
#include "mozilla/Maybe.h"
|
||||||
|
#include "mozilla/RefPtr.h"
|
||||||
|
#include "mozilla/TouchEvents.h"
|
||||||
|
#include "mozilla/UniquePtr.h"
|
||||||
|
#include "mozilla/RWLock.h"
|
||||||
|
#include "mozilla/widget/WindowSurface.h"
|
||||||
|
@@ -416,16 +417,18 @@ class nsWindow final : public nsBaseWidg
|
||||||
|
static bool TitlebarUseShapeMask();
|
||||||
|
bool IsRemoteContent() { return HasRemoteContent(); }
|
||||||
|
void NativeMoveResizeWaylandPopupCallback(const GdkRectangle* aFinalSize,
|
||||||
|
bool aFlippedX, bool aFlippedY);
|
||||||
|
static bool IsToplevelWindowTransparent();
|
||||||
|
|
||||||
|
static nsWindow* GetFocusedWindow();
|
||||||
|
|
||||||
|
+ mozilla::UniquePtr<MozContainerSurfaceLock> LockSurface();
|
||||||
|
+
|
||||||
|
#ifdef MOZ_WAYLAND
|
||||||
|
// Use xdg-activation protocol to transfer focus from gFocusWindow to aWindow.
|
||||||
|
static void TransferFocusToWaylandWindow(nsWindow* aWindow);
|
||||||
|
void FocusWaylandWindow(const char* aTokenID);
|
||||||
|
|
||||||
|
bool GetCSDDecorationOffset(int* aDx, int* aDy);
|
||||||
|
bool SetEGLNativeWindowSize(const LayoutDeviceIntSize& aEGLWindowSize);
|
||||||
|
void WaylandDragWorkaround(GdkEventButton* aEvent);
|
||||||
|
|
||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User stransky <stransky@redhat.com>
|
||||||
|
# Date 1720609193 0
|
||||||
|
# Node ID eb230ecdf8eb26a9ed340873b58fe7b71f94f8e8
|
||||||
|
# Parent a264ff9e9f6f87ca0520a884b29c4be90001533e
|
||||||
|
Bug 1898476 [Wayland] Lock Wayland surface before Swap buffers in RenderCompositorEGL r=emilio
|
||||||
|
|
||||||
|
Depends on D214884
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D214885
|
||||||
|
|
||||||
|
diff --git a/gfx/webrender_bindings/RenderCompositorEGL.cpp b/gfx/webrender_bindings/RenderCompositorEGL.cpp
|
||||||
|
--- a/gfx/webrender_bindings/RenderCompositorEGL.cpp
|
||||||
|
+++ b/gfx/webrender_bindings/RenderCompositorEGL.cpp
|
||||||
|
@@ -149,16 +149,26 @@ RenderedFrameId RenderCompositorEGL::End
|
||||||
|
const auto width = right - left;
|
||||||
|
const auto height = bottom - top;
|
||||||
|
|
||||||
|
bufferInvalid.OrWith(
|
||||||
|
gfx::IntRect(left, (GetBufferSize().height - bottom), width, height));
|
||||||
|
}
|
||||||
|
gl()->SetDamage(bufferInvalid);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+#ifdef MOZ_WIDGET_GTK
|
||||||
|
+ // Rendering on Wayland has to be atomic (buffer attach + commit) and
|
||||||
|
+ // wayland surface is also used by main thread so lock it before
|
||||||
|
+ // we paint at SwapBuffers().
|
||||||
|
+ UniquePtr<MozContainerSurfaceLock> lock;
|
||||||
|
+ if (auto* gtkWidget = mWidget->AsGTK()) {
|
||||||
|
+ lock = gtkWidget->LockSurface();
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
gl()->SwapBuffers();
|
||||||
|
return frameId;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderCompositorEGL::Pause() { DestroyEGLSurface(); }
|
||||||
|
|
||||||
|
bool RenderCompositorEGL::Resume() {
|
||||||
|
if (kIsAndroid) {
|
||||||
|
|
29
mozilla-bmo1907511.patch
Normal file
29
mozilla-bmo1907511.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
# HG changeset patch
|
||||||
|
# User stransky <stransky@redhat.com>
|
||||||
|
# Date 1720807971 0
|
||||||
|
# Node ID d8a0164db5db7090fd7549b03dd0391f7151649c
|
||||||
|
# Parent e243955016ffa880296b8d82cf531887dfb3ac22
|
||||||
|
Bug 1907511 [Linux/X11] Check mWindow at GtkCompositorWidget::LockSurface() r=emilio
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D216380
|
||||||
|
|
||||||
|
diff --git a/widget/gtk/GtkCompositorWidget.cpp b/widget/gtk/GtkCompositorWidget.cpp
|
||||||
|
--- a/widget/gtk/GtkCompositorWidget.cpp
|
||||||
|
+++ b/widget/gtk/GtkCompositorWidget.cpp
|
||||||
|
@@ -207,13 +207,13 @@ void GtkCompositorWidget::SetRenderingSu
|
||||||
|
|
||||||
|
#ifdef MOZ_LOGGING
|
||||||
|
bool GtkCompositorWidget::IsPopup() {
|
||||||
|
return mWidget ? mWidget->IsPopup() : false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
UniquePtr<MozContainerSurfaceLock> GtkCompositorWidget::LockSurface() {
|
||||||
|
- return mWidget->LockSurface();
|
||||||
|
+ return mWidget ? mWidget->LockSurface() : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace widget
|
||||||
|
} // namespace mozilla
|
||||||
|
|
33
mozilla-bmo531915.patch
Normal file
33
mozilla-bmo531915.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
# Parent fa8a5832a374ccd7af5db927b992b5d9f15273ef
|
||||||
|
|
||||||
|
diff --git a/modules/fdlibm/src/math_private.h b/modules/fdlibm/src/math_private.h
|
||||||
|
--- a/modules/fdlibm/src/math_private.h
|
||||||
|
+++ b/modules/fdlibm/src/math_private.h
|
||||||
|
@@ -25,19 +25,24 @@
|
||||||
|
|
||||||
|
#include "fdlibm.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Emulate FreeBSD internal double types.
|
||||||
|
* Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#ifdef __i386__
|
||||||
|
+typedef long double __double_t;
|
||||||
|
+typedef long double __float_t;
|
||||||
|
+#else
|
||||||
|
typedef double __double_t;
|
||||||
|
+typedef float __float_t;
|
||||||
|
+#endif
|
||||||
|
typedef __double_t double_t;
|
||||||
|
-typedef float __float_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The original fdlibm code used statements like:
|
||||||
|
* n0 = ((*(int*)&one)>>29)^1; * index of high word *
|
||||||
|
* ix0 = *(n0+(int*)&x); * high word of x *
|
||||||
|
* ix1 = *((1-n0)+(int*)&x); * low word of x *
|
||||||
|
* to dig two 32 bit words out of the 64 bit IEEE floating point
|
||||||
|
* value. That is non-ANSI, and, moreover, the gcc instruction
|
26
mozilla-bmo849632.patch
Normal file
26
mozilla-bmo849632.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 3de59fe1b8708c01e134ce698c4232b8a854f617
|
||||||
|
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
|
||||||
|
|
||||||
|
Index: firefox-115.0/gfx/gl/GLContext.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/gfx/gl/GLContext.h
|
||||||
|
+++ firefox-115.0/gfx/gl/GLContext.h
|
||||||
|
@@ -1560,6 +1560,13 @@ class GLContext : public GenericAtomicRe
|
||||||
|
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;
|
||||||
|
}
|
29
mozilla-bmo998749.patch
Normal file
29
mozilla-bmo998749.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# 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:
|
15
mozilla-fix-aarch64-libopus.patch
Normal file
15
mozilla-fix-aarch64-libopus.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent af2c24874d79cbebb444727ae96f2fefa3f22b47
|
||||||
|
|
||||||
|
diff --git a/media/libopus/silk/arm/arm_silk_map.c b/media/libopus/silk/arm/arm_silk_map.c
|
||||||
|
--- a/media/libopus/silk/arm/arm_silk_map.c
|
||||||
|
+++ b/media/libopus/silk/arm/arm_silk_map.c
|
||||||
|
@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#include "main_FIX.h"
|
||||||
|
+#include "../fixed/main_FIX.h"
|
||||||
|
#include "NSQ.h"
|
||||||
|
#include "SigProc_FIX.h"
|
||||||
|
|
51
mozilla-get-app-id
Normal file
51
mozilla-get-app-id
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
use XML::Simple;
|
||||||
|
|
||||||
|
my $file = shift || die "Usage: $0 [install.rdf|somefile.xpi]\n";
|
||||||
|
my $xml;
|
||||||
|
|
||||||
|
if ($file =~ /\.xpi$/) {
|
||||||
|
use Archive::Zip qw/:ERROR_CODES :CONSTANTS/;
|
||||||
|
my $zip = Archive::Zip->new();
|
||||||
|
if ( $zip->read($file) != AZ_OK ) {
|
||||||
|
die "zip file read error\n";
|
||||||
|
}
|
||||||
|
my $data = $zip->contents("install.rdf");
|
||||||
|
die "missing install.rdf in $file\n" unless $data;
|
||||||
|
$xml = XMLin($data) || die "$!\n";
|
||||||
|
} elsif ($file =~ /install.rdf/) {
|
||||||
|
$xml = XMLin($file) || die "$!\n";
|
||||||
|
} else {
|
||||||
|
die "unsupported file format\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $desc;
|
||||||
|
for my $tag (qw/RDF:Description Description/) {
|
||||||
|
if (exists $xml->{$tag}) {
|
||||||
|
if (ref $xml->{$tag} eq 'ARRAY') {
|
||||||
|
$desc = $xml->{$tag};
|
||||||
|
} else {
|
||||||
|
$desc = [ $xml->{$tag} ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $uuid;
|
||||||
|
my $id;
|
||||||
|
for my $x (@$desc) {
|
||||||
|
if ($x->{"em:id"} =~ /{[[:xdigit:]]+-/) {
|
||||||
|
print STDERR "Warning: multiple uuids!\n" if defined $uuid;
|
||||||
|
$uuid = $x->{"em:id"};
|
||||||
|
} elsif ($x->{"em:id"} =~ /@/) {
|
||||||
|
print STDERR "Warning: multiple ids!\n" if defined $id;
|
||||||
|
$id = $x->{"em:id"};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined $id) {
|
||||||
|
print "$id\n";
|
||||||
|
} elsif (defined $uuid) {
|
||||||
|
print "$uuid\n";
|
||||||
|
} else {
|
||||||
|
exit 1;
|
||||||
|
}
|
1774
mozilla-kde.patch
Normal file
1774
mozilla-kde.patch
Normal file
File diff suppressed because it is too large
Load Diff
25
mozilla-libavcodec58_91.patch
Normal file
25
mozilla-libavcodec58_91.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent fdc16b43f28c2e974929ca702563aaac52799654
|
||||||
|
|
||||||
|
diff --git a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
||||||
|
--- a/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
||||||
|
+++ b/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
|
||||||
|
@@ -44,16 +44,18 @@ static const char* sLibs[] = {
|
||||||
|
"libavcodec.53.dylib",
|
||||||
|
#elif defined(XP_OPENBSD)
|
||||||
|
"libavcodec.so", // OpenBSD hardly controls the major/minor library version
|
||||||
|
// of ffmpeg and update it regulary on ABI/API changes
|
||||||
|
#else
|
||||||
|
"libavcodec.so.61",
|
||||||
|
"libavcodec.so.60",
|
||||||
|
"libavcodec.so.59",
|
||||||
|
+ "libavcodec.so.58.134",
|
||||||
|
+ "libavcodec.so.58.91",
|
||||||
|
"libavcodec.so.58",
|
||||||
|
"libavcodec-ffmpeg.so.58",
|
||||||
|
"libavcodec-ffmpeg.so.57",
|
||||||
|
"libavcodec-ffmpeg.so.56",
|
||||||
|
"libavcodec.so.57",
|
||||||
|
"libavcodec.so.56",
|
||||||
|
"libavcodec.so.55",
|
||||||
|
"libavcodec.so.54",
|
33
mozilla-nongnome-proxies.patch
Normal file
33
mozilla-nongnome-proxies.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Wolfgang Rosenauer
|
||||||
|
# Date 1558442915 -7200
|
||||||
|
# Tue May 21 14:48:35 2019 +0200
|
||||||
|
# Node ID 6bcf2dfebc1ea2aa34e5cc61152709fc8e409dc5
|
||||||
|
# Parent 715f01d61df8627117e6aefca540f0c1bba45011
|
||||||
|
Do not use gconf for proxy settings if not running within Gnome
|
||||||
|
Index: toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||||
|
===================================================================
|
||||||
|
RCS file: /cvsroot/mozilla/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp,v
|
||||||
|
retrieving revision 1.1
|
||||||
|
|
||||||
|
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||||
|
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||||
|
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
|
||||||
|
@@ -52,10 +52,13 @@ nsUnixSystemProxySettings::GetMainThread
|
||||||
|
}
|
||||||
|
|
||||||
|
void nsUnixSystemProxySettings::Init() {
|
||||||
|
- mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
|
||||||
|
- if (mGSettings) {
|
||||||
|
- mGSettings->GetCollectionForSchema("org.gnome.system.proxy"_ns,
|
||||||
|
- getter_AddRefs(mProxySettings));
|
||||||
|
+ const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
|
||||||
|
+ if (sessionType && !strcmp(sessionType, "gnome")) {
|
||||||
|
+ mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
|
||||||
|
+ if (mGSettings) {
|
||||||
|
+ mGSettings->GetCollectionForSchema("org.gnome.system.proxy"_ns,
|
||||||
|
+ getter_AddRefs(mProxySettings));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
18
mozilla-ntlm-full-path.patch
Normal file
18
mozilla-ntlm-full-path.patch
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Petr Cerny <pcerny@novell.com>
|
||||||
|
# Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
|
||||||
|
# Parent 1c6a565013e4c5f3494f964269783939cd5ed0b8
|
||||||
|
Bug 634334 - call to the ntlm_auth helper fails
|
||||||
|
|
||||||
|
diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
|
||||||
|
--- a/extensions/auth/nsAuthSambaNTLM.cpp
|
||||||
|
+++ b/extensions/auth/nsAuthSambaNTLM.cpp
|
||||||
|
@@ -160,7 +160,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",
|
13
mozilla-partial-revert-1768632.patch
Normal file
13
mozilla-partial-revert-1768632.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Index: firefox-102.4.0/mfbt/EnumSet.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-102.4.0.orig/mfbt/EnumSet.h
|
||||||
|
+++ firefox-102.4.0/mfbt/EnumSet.h
|
||||||
|
@@ -326,7 +326,7 @@ class EnumSet {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- static constexpr size_t kMaxBits = MaxBits();
|
||||||
|
+ static constexpr size_t kMaxBits = EnumSet().MaxBits();
|
||||||
|
|
||||||
|
Serialized mBitField;
|
||||||
|
|
124
mozilla-pgo.patch
Normal file
124
mozilla-pgo.patch
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Wolfgang Rosenauer <wr@rosenauer.org>
|
||||||
|
# Parent 9959fe2a13a39cbeb98ca1bef2e21caba16717bd
|
||||||
|
|
||||||
|
Index: firefox-115.0/build/moz.configure/lto-pgo.configure
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/build/moz.configure/lto-pgo.configure
|
||||||
|
+++ firefox-115.0/build/moz.configure/lto-pgo.configure
|
||||||
|
@@ -251,8 +251,8 @@ def lto(
|
||||||
|
cflags.append("-flto")
|
||||||
|
ldflags.append("-flto")
|
||||||
|
else:
|
||||||
|
- cflags.append("-flto=thin")
|
||||||
|
- ldflags.append("-flto=thin")
|
||||||
|
+ cflags.append("-flto")
|
||||||
|
+ ldflags.append("-flto")
|
||||||
|
|
||||||
|
if target.os == "Android" and "cross" in values:
|
||||||
|
# Work around https://github.com/rust-lang/rust/issues/90088
|
||||||
|
@@ -268,7 +268,7 @@ def lto(
|
||||||
|
if "full" in values:
|
||||||
|
cflags.append("-flto")
|
||||||
|
else:
|
||||||
|
- cflags.append("-flto=thin")
|
||||||
|
+ cflags.append("-flto")
|
||||||
|
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
||||||
|
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
||||||
|
cflags.append("-fuse-ld=lld")
|
||||||
|
Index: firefox-115.0/build/pgo/profileserver.py
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/build/pgo/profileserver.py
|
||||||
|
+++ firefox-115.0/build/pgo/profileserver.py
|
||||||
|
@@ -11,7 +11,7 @@ import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import mozcrash
|
||||||
|
-from mozbuild.base import BinaryNotFoundException, MozbuildObject
|
||||||
|
+from mozbuild.base import BinaryNotFoundException, MozbuildObject, BuildEnvironmentNotFoundException
|
||||||
|
from mozfile import TemporaryDirectory
|
||||||
|
from mozhttpd import MozHttpd
|
||||||
|
from mozprofile import FirefoxProfile, Preferences
|
||||||
|
@@ -87,9 +87,22 @@ if __name__ == "__main__":
|
||||||
|
locations = ServerLocations()
|
||||||
|
locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
|
||||||
|
|
||||||
|
- old_profraw_files = glob.glob("*.profraw")
|
||||||
|
- for f in old_profraw_files:
|
||||||
|
- os.remove(f)
|
||||||
|
+ using_gcc = False
|
||||||
|
+ try:
|
||||||
|
+ if build.config_environment.substs.get('CC_TYPE') == 'gcc':
|
||||||
|
+ using_gcc = True
|
||||||
|
+ except BuildEnvironmentNotFoundException:
|
||||||
|
+ pass
|
||||||
|
+
|
||||||
|
+ if using_gcc:
|
||||||
|
+ for dirpath, _, filenames in os.walk('.'):
|
||||||
|
+ for f in filenames:
|
||||||
|
+ if f.endswith('.gcda'):
|
||||||
|
+ os.remove(os.path.join(dirpath, f))
|
||||||
|
+ else:
|
||||||
|
+ old_profraw_files = glob.glob('*.profraw')
|
||||||
|
+ for f in old_profraw_files:
|
||||||
|
+ os.remove(f)
|
||||||
|
|
||||||
|
with TemporaryDirectory() as profilePath:
|
||||||
|
# TODO: refactor this into mozprofile
|
||||||
|
@@ -213,6 +226,10 @@ if __name__ == "__main__":
|
||||||
|
print("Firefox exited successfully, but produced a crashreport")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
+ print('Copying profile data....')
|
||||||
|
+ os.system('pwd');
|
||||||
|
+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;');
|
||||||
|
+
|
||||||
|
llvm_profdata = env.get("LLVM_PROFDATA")
|
||||||
|
if llvm_profdata:
|
||||||
|
profraw_files = glob.glob("*.profraw")
|
||||||
|
Index: firefox-115.0/build/unix/mozconfig.unix
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/build/unix/mozconfig.unix
|
||||||
|
+++ firefox-115.0/build/unix/mozconfig.unix
|
||||||
|
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
|
||||||
|
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
||||||
|
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
||||||
|
|
||||||
|
+ if [ -n "$MOZ_PGO" ]; then
|
||||||
|
+ if [ -z "$USE_ARTIFACT" ]; then
|
||||||
|
+ ac_add_options --enable-lto
|
||||||
|
+ fi
|
||||||
|
+ export AR="$topsrcdir/gcc/bin/gcc-ar"
|
||||||
|
+ export NM="$topsrcdir/gcc/bin/gcc-nm"
|
||||||
|
+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
# We want to make sure we use binutils and other binaries in the tooltool
|
||||||
|
# package.
|
||||||
|
mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$MOZ_FETCHES_DIR/binutils/bin:$PATH"
|
||||||
|
Index: firefox-115.0/extensions/spellcheck/src/moz.build
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/extensions/spellcheck/src/moz.build
|
||||||
|
+++ firefox-115.0/extensions/spellcheck/src/moz.build
|
||||||
|
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
|
||||||
|
"mozInlineSpellChecker.h",
|
||||||
|
"mozSpellChecker.h",
|
||||||
|
]
|
||||||
|
+
|
||||||
|
+CXXFLAGS += ['-fno-devirtualize']
|
||||||
|
Index: firefox-115.0/toolkit/components/terminator/nsTerminator.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/toolkit/components/terminator/nsTerminator.cpp
|
||||||
|
+++ firefox-115.0/toolkit/components/terminator/nsTerminator.cpp
|
||||||
|
@@ -460,6 +460,11 @@ void nsTerminator::StartWatchdog() {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ // Disable watchdog for PGO train builds - writting profile information at
|
||||||
|
+ // exit may take time and it is better to make build hang rather than
|
||||||
|
+ // silently produce poorly performing binary.
|
||||||
|
+ crashAfterMS = INT32_MAX;
|
||||||
|
+
|
||||||
|
UniquePtr<Options> options(new Options());
|
||||||
|
// crashAfterTicks is guaranteed to be > 0 as
|
||||||
|
// crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS
|
15
mozilla-reduce-rust-debuginfo.patch
Normal file
15
mozilla-reduce-rust-debuginfo.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 135d931b3e674a670473f69f8c079e741ac63643
|
||||||
|
|
||||||
|
diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure
|
||||||
|
--- a/build/moz.configure/rust.configure
|
||||||
|
+++ b/build/moz.configure/rust.configure
|
||||||
|
@@ -668,7 +668,7 @@ def rust_compile_flags(
|
||||||
|
debug_assertions = False
|
||||||
|
|
||||||
|
if debug_symbols:
|
||||||
|
- debug_info = "2"
|
||||||
|
+ debug_info = '1'
|
||||||
|
|
||||||
|
opts = []
|
||||||
|
|
16
mozilla-rust-disable-future-incompat.patch
Normal file
16
mozilla-rust-disable-future-incompat.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 83a5e219b271976ee9dfa46b74ecc1c1c6d49f94
|
||||||
|
|
||||||
|
Index: firefox-128.0/Cargo.toml
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/Cargo.toml
|
||||||
|
+++ firefox-128.0/Cargo.toml
|
||||||
|
@@ -236,3 +236,8 @@ mio_0_8 = { package = "mio", git = "http
|
||||||
|
# Patch `gpu-descriptor` 0.3.0 to remove unnecessary `allocator-api2` dep.:
|
||||||
|
# Still waiting for the now-merged <https://github.com/zakarumych/gpu-descriptor/pull/40> to be released.
|
||||||
|
gpu-descriptor = { git = "https://github.com/zakarumych/gpu-descriptor", rev = "7b71a4e47c81903ad75e2c53deb5ab1310f6ff4d" }
|
||||||
|
+
|
||||||
|
+# Package code v0.1.4 uses code "that will be rejected by a future version of Rust"
|
||||||
|
+# Shut up such messages for now to make the build succeed
|
||||||
|
+[future-incompat-report]
|
||||||
|
+frequency = "never"
|
33
mozilla-s390-context.patch
Normal file
33
mozilla-s390-context.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User msirringhaus@suse.de
|
||||||
|
# Date 1558452408 -7200
|
||||||
|
# Tue May 21 17:26:48 2019 +0200
|
||||||
|
# Node ID 602e92722e765a3c238d3b96b26c0c8063b5eeb4
|
||||||
|
# Parent 783ceb006fcdabe5ad23bd561362e721c7ed5f8c
|
||||||
|
[mq]: mozilla-s390-context.patch
|
||||||
|
|
||||||
|
diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
|
||||||
|
--- a/js/src/wasm/WasmSignalHandlers.cpp
|
||||||
|
+++ b/js/src/wasm/WasmSignalHandlers.cpp
|
||||||
|
@@ -174,6 +174,10 @@ using mozilla::DebugOnly;
|
||||||
|
# define FP_sig(p) ((p)->uc_mcontext.gregs[REG_FPRS])
|
||||||
|
# define SP_sig(p) ((p)->uc_mcontext.gregs[REG_SP])
|
||||||
|
# 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])
|
||||||
|
@@ -416,6 +420,10 @@ struct macos_aarch64_context {
|
||||||
|
# define FP_sig(p) RFP_sig(p)
|
||||||
|
# define SP_sig(p) R03_sig(p)
|
||||||
|
# define LR_sig(p) RRA_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)
|
||||||
|
# elif defined(__riscv)
|
||||||
|
# define PC_sig(p) RPC_sig(p)
|
||||||
|
# define FP_sig(p) RFP_sig(p)
|
590
mozilla-silence-no-return-type.patch
Normal file
590
mozilla-silence-no-return-type.patch
Normal file
@ -0,0 +1,590 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent af0655f894a27ef60aa8438af7939a5ebc498df0
|
||||||
|
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/include/codec/SkEncodedOrigin.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/include/codec/SkEncodedOrigin.h
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/include/codec/SkEncodedOrigin.h
|
||||||
|
@@ -41,6 +41,7 @@ static inline SkMatrix SkEncodedOriginTo
|
||||||
|
case kLeftBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, -1, 0, h, 0, 0, 1);
|
||||||
|
}
|
||||||
|
SK_ABORT("Unexpected origin");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h
|
||||||
|
@@ -301,6 +301,7 @@ static inline bool GrTextureTypeHasRestr
|
||||||
|
default:
|
||||||
|
SK_ABORT("Unexpected texture type");
|
||||||
|
}
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/core/SkDescriptor.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/core/SkDescriptor.cpp
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/core/SkDescriptor.cpp
|
||||||
|
@@ -26,6 +26,7 @@ std::unique_ptr<SkDescriptor> SkDescript
|
||||||
|
void SkDescriptor::operator delete(void* p) { ::operator delete(p); }
|
||||||
|
void* SkDescriptor::operator new(size_t) {
|
||||||
|
SK_ABORT("Descriptors are created with placement new.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SkDescriptor::flatten(SkWriteBuffer& buffer) const {
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/core/SkGeometry.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/core/SkGeometry.h
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/core/SkGeometry.h
|
||||||
|
@@ -281,6 +281,7 @@ static inline bool SkCubicIsDegenerate(S
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
SK_ABORT("Invalid SkCubicType");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline const char* SkCubicTypeName(SkCubicType type) {
|
||||||
|
@@ -293,6 +294,7 @@ static inline const char* SkCubicTypeNam
|
||||||
|
case SkCubicType::kLineOrPoint: return "kLineOrPoint";
|
||||||
|
}
|
||||||
|
SK_ABORT("Invalid SkCubicType");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the cubic classification.
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/core/SkTextBlob.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/core/SkTextBlob.cpp
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/core/SkTextBlob.cpp
|
||||||
|
@@ -213,6 +213,7 @@ void SkTextBlob::operator delete(void* p
|
||||||
|
|
||||||
|
void* SkTextBlob::operator new(size_t) {
|
||||||
|
SK_ABORT("All blobs are created by placement new.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* SkTextBlob::operator new(size_t, void* p) {
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/core/SkTypeface_remote.h
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h
|
||||||
|
@@ -108,12 +108,14 @@ public:
|
||||||
|
bool isLogging() const {return fIsLogging;}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
- int onGetUPEM() const override { SK_ABORT("Should never be called."); }
|
||||||
|
+ int onGetUPEM() const override { SK_ABORT("Should never be called."); SkUNREACHABLE; }
|
||||||
|
std::unique_ptr<SkStreamAsset> onOpenStream(int* ttcIndex) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
bool onGlyphMaskNeedsCurrentColor() const override {
|
||||||
|
return fGlyphMaskNeedsCurrentColor;
|
||||||
|
@@ -121,10 +123,12 @@ protected:
|
||||||
|
int onGetVariationDesignPosition(SkFontArguments::VariationPosition::Coordinate coordinates[],
|
||||||
|
int coordinateCount) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
int onGetVariationDesignParameters(SkFontParameters::Variation::Axis parameters[],
|
||||||
|
int parameterCount) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
void onGetFamilyName(SkString* familyName) const override {
|
||||||
|
// Used by SkStrikeCache::DumpMemoryStatistics.
|
||||||
|
@@ -132,15 +136,19 @@ protected:
|
||||||
|
}
|
||||||
|
bool onGetPostScriptName(SkString*) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
int onGetTableTags(SkFontTableTag tags[]) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
size_t onGetTableData(SkFontTableTag, size_t offset, size_t length, void* data) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
std::unique_ptr<SkScalerContext> onCreateScalerContext(
|
||||||
|
const SkScalerContextEffects& effects, const SkDescriptor* desc) const override
|
||||||
|
@@ -154,20 +162,25 @@ protected:
|
||||||
|
}
|
||||||
|
void onGetFontDescriptor(SkFontDescriptor*, bool*) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
void getGlyphToUnicodeMap(SkUnichar*) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void getPostScriptGlyphNames(SkString*) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<SkAdvancedTypefaceMetrics> onGetAdvancedMetrics() const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
void onCharsToGlyphs(const SkUnichar* chars, int count, SkGlyphID glyphs[]) const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
int onCountGlyphs() const override {
|
||||||
|
return this->glyphCount();
|
||||||
|
@@ -175,6 +188,7 @@ protected:
|
||||||
|
|
||||||
|
void* onGetCTFontRef() const override {
|
||||||
|
SK_ABORT("Should never be called.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp
|
||||||
|
@@ -799,6 +799,7 @@ sk_sp<SkSpecialImage> cpu_blur(const ski
|
||||||
|
return maker;
|
||||||
|
}
|
||||||
|
SK_ABORT("Sigma is out of range.");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
};
|
||||||
|
|
||||||
|
PassMaker* makerX = makeMaker(sigma.width());
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp
|
||||||
|
@@ -69,6 +69,7 @@ void SkFontMgr_Indirect::onGetFamilyName
|
||||||
|
|
||||||
|
sk_sp<SkFontStyleSet> SkFontMgr_Indirect::onCreateStyleSet(int index) const {
|
||||||
|
SK_ABORT("Not implemented");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
sk_sp<SkFontStyleSet> SkFontMgr_Indirect::onMatchFamily(const char familyName[]) const {
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/sksl/SkSLOperator.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/sksl/SkSLOperator.cpp
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/sksl/SkSLOperator.cpp
|
||||||
|
@@ -51,7 +51,7 @@ OperatorPrecedence Operator::getBinaryPr
|
||||||
|
case Kind::BITWISEXOREQ: // fall through
|
||||||
|
case Kind::BITWISEOREQ: return OperatorPrecedence::kAssignment;
|
||||||
|
case Kind::COMMA: return OperatorPrecedence::kSequence;
|
||||||
|
- default: SK_ABORT("unsupported binary operator");
|
||||||
|
+ default: SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/sksl/ir/SkSLType.h
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/sksl/ir/SkSLType.h
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/sksl/ir/SkSLType.h
|
||||||
|
@@ -468,6 +468,7 @@ public:
|
||||||
|
|
||||||
|
virtual SkSpan<const Field> fields() const {
|
||||||
|
SK_ABORT("Internal error: not a struct");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Index: firefox-128.0/gfx/skia/skia/src/utils/SkShadowUtils.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/gfx/skia/skia/src/utils/SkShadowUtils.cpp
|
||||||
|
+++ firefox-128.0/gfx/skia/skia/src/utils/SkShadowUtils.cpp
|
||||||
|
@@ -140,6 +140,7 @@ struct SpotVerticesFactory {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
SK_ABORT("Uninitialized occluder type?");
|
||||||
|
+ SkUNREACHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
sk_sp<SkVertices> makeVertices(const SkPath& path, const SkMatrix& ctm,
|
||||||
|
Index: firefox-128.0/intl/icu/source/i18n/number_rounding.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/intl/icu/source/i18n/number_rounding.cpp
|
||||||
|
+++ firefox-128.0/intl/icu/source/i18n/number_rounding.cpp
|
||||||
|
@@ -287,6 +287,7 @@ FractionPrecision Precision::constructFr
|
||||||
|
settings.fMaxFrac = static_cast<digits_t>(maxFrac);
|
||||||
|
settings.fMinSig = -1;
|
||||||
|
settings.fMaxSig = -1;
|
||||||
|
+ settings.fPriority = UNUM_ROUNDING_PRIORITY_RELAXED;
|
||||||
|
PrecisionUnion union_;
|
||||||
|
union_.fracSig = settings;
|
||||||
|
return {RND_FRACTION, union_};
|
||||||
|
@@ -298,6 +299,7 @@ Precision Precision::constructSignifican
|
||||||
|
settings.fMaxFrac = -1;
|
||||||
|
settings.fMinSig = static_cast<digits_t>(minSig);
|
||||||
|
settings.fMaxSig = static_cast<digits_t>(maxSig);
|
||||||
|
+ settings.fPriority = UNUM_ROUNDING_PRIORITY_RELAXED;
|
||||||
|
PrecisionUnion union_;
|
||||||
|
union_.fracSig = settings;
|
||||||
|
return {RND_SIGNIFICANT, union_};
|
||||||
|
Index: firefox-128.0/js/src/irregexp/imported/regexp-parser.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/js/src/irregexp/imported/regexp-parser.cc
|
||||||
|
+++ firefox-128.0/js/src/irregexp/imported/regexp-parser.cc
|
||||||
|
@@ -2781,6 +2781,7 @@ bool MayContainStrings(ClassSetOperandTy
|
||||||
|
if (operand->IsClassRanges()) return false;
|
||||||
|
return operand->AsClassSetExpression()->may_contain_strings();
|
||||||
|
}
|
||||||
|
+ UNREACHABLE();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/api/adaptation/resource.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/api/adaptation/resource.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/api/adaptation/resource.cc
|
||||||
|
@@ -22,6 +22,7 @@ const char* ResourceUsageStateToString(R
|
||||||
|
return "kUnderuse";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
ResourceListener::~ResourceListener() {}
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/api/rtp_parameters.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/api/rtp_parameters.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/api/rtp_parameters.cc
|
||||||
|
@@ -33,6 +33,7 @@ const char* DegradationPreferenceToStrin
|
||||||
|
return "balanced";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
const double kDefaultBitratePriority = 1.0;
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/api/video/video_frame_buffer.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/api/video/video_frame_buffer.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/api/video/video_frame_buffer.cc
|
||||||
|
@@ -106,6 +106,8 @@ const char* VideoFrameBufferTypeToString
|
||||||
|
default:
|
||||||
|
RTC_DCHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
+ RTC_DCHECK_NOTREACHED();
|
||||||
|
+ return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int I420BufferInterface::ChromaWidth() const {
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_codec.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/api/video_codecs/video_codec.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/api/video_codecs/video_codec.cc
|
||||||
|
@@ -162,6 +162,7 @@ const char* CodecTypeToPayloadString(Vid
|
||||||
|
return kPayloadNameH265;
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
VideoCodecType PayloadStringToCodecType(const std::string& name) {
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc
|
||||||
|
@@ -189,6 +189,7 @@ class VideoEncoderSoftwareFallbackWrappe
|
||||||
|
return fallback_encoder_.get();
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Updates encoder with last observed parameters, such as callbacks, rates,
|
||||||
|
@@ -382,6 +383,7 @@ int32_t VideoEncoderSoftwareFallbackWrap
|
||||||
|
return fallback_encoder_->Encode(frame, frame_types);
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return WEBRTC_VIDEO_CODEC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t VideoEncoderSoftwareFallbackWrapper::EncodeWithMainEncoder(
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc
|
||||||
|
@@ -169,6 +169,7 @@ const char* Adaptation::StatusToString(A
|
||||||
|
return "kRejectedByConstraint";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
Adaptation::Adaptation(int validation_id,
|
||||||
|
@@ -391,6 +392,7 @@ VideoStreamAdapter::RestrictionsOrState
|
||||||
|
return Adaptation::Status::kAdaptationDisabled;
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return Adaptation::Status::kAdaptationDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
Adaptation VideoStreamAdapter::GetAdaptationDown() {
|
||||||
|
@@ -473,6 +475,7 @@ VideoStreamAdapter::GetAdaptationDownSte
|
||||||
|
return Adaptation::Status::kAdaptationDisabled;
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return Adaptation::Status::kAdaptationDisabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
VideoStreamAdapter::RestrictionsOrState VideoStreamAdapter::DecreaseResolution(
|
||||||
|
@@ -626,6 +629,8 @@ Adaptation VideoStreamAdapter::GetAdaptD
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return RestrictionsOrStateToAdaptation(
|
||||||
|
+ Adaptation::Status::kAdaptationDisabled, input_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
VideoStreamAdapter::RestrictionsOrState
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/call/rtp_payload_params.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/call/rtp_payload_params.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/call/rtp_payload_params.cc
|
||||||
|
@@ -406,7 +406,7 @@ absl::optional<FrameDependencyStructure>
|
||||||
|
case VideoCodecType::kVideoCodecH265:
|
||||||
|
return absl::nullopt;
|
||||||
|
}
|
||||||
|
- RTC_DCHECK_NOTREACHED() << "Unsupported codec.";
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RtpPayloadParams::GenericToGeneric(int64_t shared_frame_id,
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/call/video_send_stream.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/call/video_send_stream.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/call/video_send_stream.cc
|
||||||
|
@@ -30,6 +30,7 @@ const char* StreamTypeToString(VideoSend
|
||||||
|
return "flexfec";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/media/base/codec.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/media/base/codec.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/media/base/codec.cc
|
||||||
|
@@ -262,6 +262,7 @@ bool Codec::Matches(const Codec& codec)
|
||||||
|
case Type::kVideo:
|
||||||
|
return IsSameCodecSpecific(name, params, codec.name, codec.params);
|
||||||
|
}
|
||||||
|
+ return false; // unreached
|
||||||
|
};
|
||||||
|
|
||||||
|
return matches_id && matches_type_specific();
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc
|
||||||
|
@@ -378,7 +378,7 @@ std::unique_ptr<ClippingPredictor> Creat
|
||||||
|
config.reference_window_delay, config.clipping_threshold,
|
||||||
|
/*adaptive_step_estimation=*/false);
|
||||||
|
}
|
||||||
|
- RTC_DCHECK_NOTREACHED();
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace webrtc
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc
|
||||||
|
@@ -48,6 +48,7 @@ constexpr absl::string_view MetricNamePr
|
||||||
|
case InputVolumeType::kRecommended:
|
||||||
|
return "WebRTC.Audio.Apm.RecommendedInputVolume.";
|
||||||
|
}
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
metrics::Histogram* CreateVolumeHistogram(InputVolumeType input_volume_type) {
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc
|
||||||
|
@@ -60,6 +60,8 @@ rtc::FunctionView<float(float)> GetActiv
|
||||||
|
case ActivationFunction::kSigmoidApproximated:
|
||||||
|
return ::rnnoise::SigmoidApproximated;
|
||||||
|
}
|
||||||
|
+ // supposed to be never reached apparently therefore returning bogus
|
||||||
|
+ return ::rnnoise::TansigApproximated;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc
|
||||||
|
@@ -101,6 +101,7 @@ GainControl::Mode Agc1ConfigModeToInterf
|
||||||
|
return GainControl::kFixedDigital;
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return GainControl::kAdaptiveAnalog;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MinimizeProcessingForUnusedOutput() {
|
||||||
|
@@ -168,7 +169,7 @@ int AudioFormatValidityToErrorCode(Audio
|
||||||
|
case AudioFormatValidity::kInvalidChannelCount:
|
||||||
|
return AudioProcessing::kBadNumberChannelsError;
|
||||||
|
}
|
||||||
|
- RTC_DCHECK(false);
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns an AudioProcessing::Error together with the best possible option for
|
||||||
|
@@ -2425,6 +2426,7 @@ void AudioProcessingImpl::InitializeNois
|
||||||
|
return NsConfig::SuppressionLevel::k21dB;
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return NsConfig::SuppressionLevel::k6dB;
|
||||||
|
};
|
||||||
|
|
||||||
|
NsConfig cfg;
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc
|
||||||
|
@@ -32,6 +32,7 @@ std::string NoiseSuppressionLevelToStrin
|
||||||
|
return "VeryHigh";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GainController1ModeToString(const Agc1Config::Mode& mode) {
|
||||||
|
@@ -44,6 +45,7 @@ std::string GainController1ModeToString(
|
||||||
|
return "FixedDigital";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc
|
||||||
|
@@ -53,6 +53,7 @@ std::string GetVadModeLabel(TransientSup
|
||||||
|
case TransientSuppressor::VadMode::kNoVad:
|
||||||
|
return "no VAD";
|
||||||
|
}
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
|
||||||
|
@@ -95,6 +95,8 @@ BandwidthLimitedCause GetBandwidthLimite
|
||||||
|
case LossBasedState::kDelayBasedEstimate:
|
||||||
|
return BandwidthLimitedCause::kDelayBasedLimited;
|
||||||
|
}
|
||||||
|
+ // just return something by default
|
||||||
|
+ return BandwidthLimitedCause::kLossLimitedBwe;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc
|
||||||
|
@@ -44,6 +44,7 @@ ScreenCastPortal::CaptureSourceType Scre
|
||||||
|
case CaptureType::kAnyScreenContent:
|
||||||
|
return ScreenCastPortal::CaptureSourceType::kAnyScreenContent;
|
||||||
|
}
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
ScreenCastPortal::ScreenCastPortal(CaptureType type, PortalNotifier* notifier)
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/pacing/bitrate_prober.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/pacing/bitrate_prober.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/pacing/bitrate_prober.cc
|
||||||
|
@@ -84,6 +84,7 @@ bool BitrateProber::ReadyToSetActiveStat
|
||||||
|
return packet_size >=
|
||||||
|
std::min(RecommendedMinProbeSize(), config_.min_packet_size.Get());
|
||||||
|
}
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BitrateProber::OnIncomingPacket(DataSize packet_size) {
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc
|
||||||
|
@@ -46,6 +46,7 @@ std::unique_ptr<VideoRtpDepacketizer> Cr
|
||||||
|
return std::make_unique<VideoRtpDepacketizerGeneric>();
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace webrtc
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc
|
||||||
|
@@ -138,6 +138,7 @@ bool IsNonVolatile(RTPExtensionType type
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HasBweExtension(const RtpHeaderExtensionMap& extensions_map) {
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc
|
||||||
|
@@ -110,6 +110,7 @@ size_t BufferToIndex(Vp8BufferReference
|
||||||
|
case Vp8FrameConfig::Vp8BufferReference::kNone:
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
+ RTC_CHECK_NOTREACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc
|
||||||
|
@@ -30,6 +30,7 @@ TemporalLayersChecker::CreateTemporalLay
|
||||||
|
return std::make_unique<TemporalLayersChecker>(num_temporal_layers);
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
TemporalLayersChecker::TemporalLayersChecker(int num_temporal_layers)
|
||||||
|
Index: firefox-128.0/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc
|
||||||
|
===================================================================
|
||||||
|
--- firefox-128.0.orig/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc
|
||||||
|
+++ firefox-128.0/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc
|
||||||
|
@@ -64,6 +64,7 @@ std::string ToString(VideoAdaptationReas
|
||||||
|
return "cpu";
|
||||||
|
}
|
||||||
|
RTC_CHECK_NOTREACHED();
|
||||||
|
+ return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<bool> GetActiveLayersFlags(const VideoCodec& codec) {
|
405
mozilla.keyring
Normal file
405
mozilla.keyring
Normal file
@ -0,0 +1,405 @@
|
|||||||
|
This file contains the public PGP key that is used to sign builds and
|
||||||
|
artifacts of Mozilla projects (such as Firefox and Thunderbird).
|
||||||
|
|
||||||
|
Please realize that this file itself or the public key servers may be
|
||||||
|
compromised. You are encouraged to validate the authenticity of these keys in
|
||||||
|
an out-of-band manner.
|
||||||
|
|
||||||
|
Mozilla users: pgp < KEY
|
||||||
|
|
||||||
|
pub rsa4096 2015-07-17 [SC]
|
||||||
|
14F26682D0916CDD81E37B6D61B7B526D98F0353
|
||||||
|
uid [ full ] Mozilla Software Releases <release@mozilla.com>
|
||||||
|
sub rsa4096 2015-07-17 [S] [expired: 2017-07-16]
|
||||||
|
sub rsa4096 2017-06-22 [S] [expired: 2019-06-22]
|
||||||
|
sub rsa4096 2019-05-30 [S] [expired: 2021-05-29]
|
||||||
|
sub rsa4096 2021-05-17 [S] [expired: 2023-05-17]
|
||||||
|
sub rsa4096 2023-05-05 [S] [expires: 2025-05-04]
|
||||||
|
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
fxyRMB5BEeLY0+qVPyvOxpXEGnlSHYmdIS4=
|
||||||
|
=ZEQW
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
210
mozilla.sh.in
Normal file
210
mozilla.sh.in
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# ***** BEGIN LICENSE BLOCK *****
|
||||||
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
# http://www.mozilla.org/MPL/
|
||||||
|
#
|
||||||
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
# for the specific language governing rights and limitations under the
|
||||||
|
# License.
|
||||||
|
#
|
||||||
|
# The Original Code is mozilla.org Code.
|
||||||
|
#
|
||||||
|
# The Initial Developer of the Original Code is
|
||||||
|
# Netscape Communications Corporation.
|
||||||
|
# Portions created by the Initial Developer are Copyright (C) 1998
|
||||||
|
# the Initial Developer. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
# Wolfgang Rosenauer <wolfgang.rosenauer@suse.de>
|
||||||
|
# <wr@rosenauer.org>
|
||||||
|
#
|
||||||
|
# Alternatively, the contents of this file may be used under the terms of
|
||||||
|
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
# of those above. If you wish to allow use of your version of this file only
|
||||||
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
# use your version of this file under the terms of the MPL, indicate your
|
||||||
|
# decision by deleting the provisions above and replace them with the notice
|
||||||
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
# the provisions above, a recipient may use your version of this file under
|
||||||
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
#
|
||||||
|
# ***** END LICENSE BLOCK *****
|
||||||
|
|
||||||
|
##
|
||||||
|
## Usage:
|
||||||
|
##
|
||||||
|
## $ mozilla [args]
|
||||||
|
##
|
||||||
|
## This script is meant to run a mozilla program from the mozilla
|
||||||
|
## rpm installation.
|
||||||
|
##
|
||||||
|
## The script will setup all the environment voodoo needed to make
|
||||||
|
## mozilla work.
|
||||||
|
|
||||||
|
cmdname=`basename $0`
|
||||||
|
|
||||||
|
##
|
||||||
|
## Variables
|
||||||
|
##
|
||||||
|
MOZ_DIST_BIN="%PREFIX"
|
||||||
|
MOZ_DIST_LIB="%PROGDIR"
|
||||||
|
MOZ_APPNAME="%APPNAME"
|
||||||
|
MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME"
|
||||||
|
MOZ_LANGPACKS_DIR="$MOZ_DIST_LIB/langpacks"
|
||||||
|
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
||||||
|
|
||||||
|
MOZ_APP_LAUNCHER="$MOZ_DIST_LIB/$MOZ_APPNAME.sh"
|
||||||
|
if [ "$0" = "$MOZ_APP_LAUNCHER" ]; then
|
||||||
|
[ -h "/usr/bin/$MOZ_APPNAME" ] && \
|
||||||
|
_link=$(readlink -f "/usr/bin/$MOZ_APPNAME")
|
||||||
|
if [ "$_link" = "$MOZ_APP_LAUNCHER" ]; then
|
||||||
|
export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
export MOZ_APP_LAUNCHER="/usr/bin/$MOZ_APPNAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
MOZILLA_FIVE_HOME="$MOZ_DIST_LIB"
|
||||||
|
export MOZILLA_FIVE_HOME
|
||||||
|
LD_LIBRARY_PATH=$MOZ_DIST_LIB${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
|
||||||
|
export LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
# needed for SUN Java under Xorg >= 7.2
|
||||||
|
export LIBXCB_ALLOW_SLOPPY_LOCK=1
|
||||||
|
|
||||||
|
# disable Gnome crash dialog (doesn't make sense anyway)
|
||||||
|
export GNOME_DISABLE_CRASH_DIALOG=1
|
||||||
|
|
||||||
|
# Wayland
|
||||||
|
# Only supported on newer systems
|
||||||
|
WAYLAND_SUPPORTED=%WAYLAND_SUPPORTED
|
||||||
|
|
||||||
|
# $XDG_SESSION_TYPE should contain either x11 or wayland
|
||||||
|
if [ $WAYLAND_SUPPORTED -eq 1 ] && [ "$XDG_SESSION_TYPE" = "wayland" ] && [ -z "$MOZ_ENABLE_WAYLAND" ]; then
|
||||||
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
##
|
||||||
|
## Use D-Bus remote exclusively when there's Wayland display.
|
||||||
|
##
|
||||||
|
if [ "$WAYLAND_DISPLAY" ]; then
|
||||||
|
export MOZ_DBUS_REMOTE=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# xinput2 (boo#1173320)
|
||||||
|
. /etc/os-release
|
||||||
|
if [ "$ID" = "opensuse-tumbleweed" ]; then
|
||||||
|
export MOZ_USE_XINPUT2=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
##
|
||||||
|
## To disable the use of Firefox localization handling for
|
||||||
|
## the home profile, set MOZ_DISABLE_LANGPACKS=1
|
||||||
|
## in your environment before launching Firefox.
|
||||||
|
## currently disabled by default since langpacks
|
||||||
|
## are shipped as app sideloading addons
|
||||||
|
##
|
||||||
|
#
|
||||||
|
MOZ_DISABLE_LANGPACKS=1
|
||||||
|
export MOZ_DISABLE_LANGPACKS
|
||||||
|
#
|
||||||
|
|
||||||
|
##
|
||||||
|
## Automatically installed langpacks are tracked by .suse-langpack-install
|
||||||
|
## config file.
|
||||||
|
##
|
||||||
|
SUSE_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.suse-langpack-install"
|
||||||
|
|
||||||
|
# MOZ_DISABLE_LANGPACKS disables language packs completely
|
||||||
|
MOZILLA_DOWN=0
|
||||||
|
if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
|
||||||
|
if [ -x $MOZ_PROGRAM ]; then
|
||||||
|
# Is firefox running?
|
||||||
|
/bin/pidof %APPNAME% > /dev/null 2>&1
|
||||||
|
MOZILLA_DOWN=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Modify language pack configuration only when firefox is not running
|
||||||
|
# and language packs are not disabled
|
||||||
|
if [ $MOZILLA_DOWN -ne 0 ]; then
|
||||||
|
# Clear already installed langpacks
|
||||||
|
mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR
|
||||||
|
if [ -f $SUSE_LANGPACK_CONFIG ]; then
|
||||||
|
rm `cat $SUSE_LANGPACK_CONFIG` > /dev/null 2>&1
|
||||||
|
rm $SUSE_LANGPACK_CONFIG > /dev/null 2>&1
|
||||||
|
# remove all empty langpacks dirs while they block installation of langpacks
|
||||||
|
rmdir $MOZ_EXTENSIONS_PROFILE_DIR/langpack* > /dev/null 2>&1
|
||||||
|
fi
|
||||||
|
# Get locale from system
|
||||||
|
CURRENT_LOCALE=$LC_ALL
|
||||||
|
CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES}
|
||||||
|
CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG}
|
||||||
|
# Try with a local variant first, then without a local variant
|
||||||
|
SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g" | sed "s|\..*||g"`
|
||||||
|
MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g" | sed "s|\..*||g"`
|
||||||
|
create_langpack_link() {
|
||||||
|
local language=$*
|
||||||
|
local langpack=langpack-${language}@firefox.mozilla.org.xpi
|
||||||
|
if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then
|
||||||
|
rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||||
|
# If the target file is a symlink (the fallback langpack),
|
||||||
|
# install the original file instead of the fallback one
|
||||||
|
if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then
|
||||||
|
langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack`
|
||||||
|
fi
|
||||||
|
ln -s $MOZ_LANGPACKS_DIR/$langpack \
|
||||||
|
$MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||||
|
echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $SUSE_LANGPACK_CONFIG
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
create_langpack_link $MOZLOCALE || create_langpack_link $SHORTMOZLOCALE || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
moz_debug=0
|
||||||
|
script_args=""
|
||||||
|
pass_arg_count=0
|
||||||
|
while [ $# -gt $pass_arg_count ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
-d | --debugger)
|
||||||
|
moz_debugger=$2;
|
||||||
|
if [ "${moz_debugger}" != "" ]; then
|
||||||
|
shift 2
|
||||||
|
moz_debug=1
|
||||||
|
else
|
||||||
|
echo "-d requires an argument"
|
||||||
|
exit 1
|
||||||
|
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
|
||||||
|
|
||||||
|
if [ $moz_debug -eq 1 ]; then
|
||||||
|
tmpfile=`mktemp /tmp/mozargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; }
|
||||||
|
trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15
|
||||||
|
echo "set args ${1+"$@"}" > $tmpfile
|
||||||
|
echo "run" >> $tmpfile
|
||||||
|
echo "$moz_debugger $MOZ_PROGRAM -x $tmpfile"
|
||||||
|
exec $moz_debugger "$MOZ_PROGRAM" -x $tmpfile
|
||||||
|
else
|
||||||
|
exec $MOZ_PROGRAM "$@"
|
||||||
|
fi
|
34
one_swizzle_to_rule_them_all.patch
Normal file
34
one_swizzle_to_rule_them_all.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User M. Sirringhaus <msirringhaus@suse.de>
|
||||||
|
# Date 1645518286 -3600
|
||||||
|
# Tue Feb 22 09:24:46 2022 +0100
|
||||||
|
# Node ID 494640792b4677f6462e95b90a54a4e22aeb738b
|
||||||
|
# Parent 81832d035e101471dcf52dd91de287268add7a91
|
||||||
|
imported patch one_swizzle_to_rule_them_all.patch
|
||||||
|
|
||||||
|
Index: firefox-115.0/gfx/webrender_bindings/RenderCompositorSWGL.cpp
|
||||||
|
===================================================================
|
||||||
|
--- firefox-115.0.orig/gfx/webrender_bindings/RenderCompositorSWGL.cpp
|
||||||
|
+++ firefox-115.0/gfx/webrender_bindings/RenderCompositorSWGL.cpp
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
#include "RenderCompositorSWGL.h"
|
||||||
|
|
||||||
|
#include "mozilla/gfx/Logging.h"
|
||||||
|
+#include "mozilla/gfx/Swizzle.h"
|
||||||
|
#include "mozilla/widget/CompositorWidget.h"
|
||||||
|
|
||||||
|
#ifdef MOZ_WIDGET_GTK
|
||||||
|
@@ -242,6 +243,13 @@ void RenderCompositorSWGL::CommitMappedB
|
||||||
|
}
|
||||||
|
mDT->Flush();
|
||||||
|
|
||||||
|
+#if MOZ_BIG_ENDIAN()
|
||||||
|
+ // One swizzle to rule them all.
|
||||||
|
+ gfx::SwizzleData(mMappedData, mMappedStride, gfx::SurfaceFormat::B8G8R8A8,
|
||||||
|
+ mMappedData, mMappedStride, gfx::SurfaceFormat::A8R8G8B8,
|
||||||
|
+ mDT->GetSize());
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
// Done with the DT. Hand it back to the widget and clear out any trace of it.
|
||||||
|
mWidget->EndRemoteDrawingInRegion(mDT, mDirtyRegion);
|
||||||
|
mDirtyRegion.SetEmpty();
|
1
spellcheck.js
Normal file
1
spellcheck.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
pref("spellchecker.dictionary_path", "/usr/share/myspell");
|
29
svg-rendering.patch
Normal file
29
svg-rendering.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User M. Sirringhaus <msirringhaus@suse.de>
|
||||||
|
# Date 1645518286 -3600
|
||||||
|
# Tue Feb 22 09:24:46 2022 +0100
|
||||||
|
# Node ID 81832d035e101471dcf52dd91de287268add7a91
|
||||||
|
# Parent 66f7ce16eb4965108687280e5443edd610631efb
|
||||||
|
imported patch svg-rendering.patch
|
||||||
|
|
||||||
|
diff --git a/image/imgFrame.cpp b/image/imgFrame.cpp
|
||||||
|
--- a/image/imgFrame.cpp
|
||||||
|
+++ b/image/imgFrame.cpp
|
||||||
|
@@ -372,6 +372,17 @@ nsresult imgFrame::InitWithDrawable(gfxD
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if MOZ_BIG_ENDIAN()
|
||||||
|
+ if (aBackend == gfx::BackendType::SKIA && canUseDataSurface) {
|
||||||
|
+ // SKIA is lying about what format it returns on big endian
|
||||||
|
+ for (int ii=0; ii < mRawSurface->GetSize().Height()*mRawSurface->Stride() / 4; ++ii) {
|
||||||
|
+ uint32_t *vals = (uint32_t*)(mRawSurface->GetData());
|
||||||
|
+ uint32_t val = ((vals[ii] << 8) & 0xFF00FF00 ) | ((vals[ii] >> 8) & 0xFF00FF );
|
||||||
|
+ vals[ii] = (val << 16) | (val >> 16);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
if (!canUseDataSurface) {
|
||||||
|
// We used an offscreen surface, which is an "optimized" surface from
|
||||||
|
// imgFrame's perspective.
|
10
tar_stamps
Normal file
10
tar_stamps
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
PRODUCT="firefox"
|
||||||
|
CHANNEL="release"
|
||||||
|
VERSION="128.0"
|
||||||
|
VERSION_SUFFIX=""
|
||||||
|
PREV_VERSION="127.0.2"
|
||||||
|
PREV_VERSION_SUFFIX=""
|
||||||
|
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
|
||||||
|
RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release"
|
||||||
|
RELEASE_TAG="14b32d530926c66251f10fe2410184f7cc7de839"
|
||||||
|
RELEASE_TIMESTAMP="20240704121409"
|
Loading…
Reference in New Issue
Block a user